alepha 0.13.7 → 0.14.0
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/README.md +5 -2
- package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
- package/assets/swagger-ui/swagger-ui-standalone-preset.js +1 -1
- package/assets/swagger-ui/swagger-ui.css +1 -1
- package/dist/{api-audits → api/audits}/index.browser.js +4 -4
- package/dist/api/audits/index.browser.js.map +1 -0
- package/dist/{api-audits → api/audits}/index.d.ts +10 -9
- package/dist/api/audits/index.d.ts.map +1 -0
- package/dist/{api-audits → api/audits}/index.js +8 -8
- package/dist/api/audits/index.js.map +1 -0
- package/dist/{api-files → api/files}/index.browser.js +5 -5
- package/dist/api/files/index.browser.js.map +1 -0
- package/dist/{api-files → api/files}/index.d.ts +18 -10
- package/dist/api/files/index.d.ts.map +1 -0
- package/dist/{api-files → api/files}/index.js +10 -10
- package/dist/api/files/index.js.map +1 -0
- package/dist/{api-jobs → api/jobs}/index.browser.js +5 -5
- package/dist/api/jobs/index.browser.js.map +1 -0
- package/dist/{api-jobs → api/jobs}/index.d.ts +168 -167
- package/dist/api/jobs/index.d.ts.map +1 -0
- package/dist/{api-jobs → api/jobs}/index.js +9 -9
- package/dist/api/jobs/index.js.map +1 -0
- package/dist/{api-notifications → api/notifications}/index.browser.js +11 -11
- package/dist/api/notifications/index.browser.js.map +1 -0
- package/dist/api/notifications/index.d.ts +327 -0
- package/dist/api/notifications/index.d.ts.map +1 -0
- package/dist/{api-notifications → api/notifications}/index.js +11 -11
- package/dist/api/notifications/index.js.map +1 -0
- package/dist/{api-parameters → api/parameters}/index.browser.js +2 -2
- package/dist/api/parameters/index.browser.js.map +1 -0
- package/dist/{api-parameters → api/parameters}/index.d.ts +11 -11
- package/dist/api/parameters/index.d.ts.map +1 -0
- package/dist/{api-parameters → api/parameters}/index.js +7 -7
- package/dist/api/parameters/index.js.map +1 -0
- package/dist/{api-users → api/users}/index.browser.js +6 -6
- package/dist/api/users/index.browser.js.map +1 -0
- package/dist/{api-users → api/users}/index.d.ts +836 -836
- package/dist/api/users/index.d.ts.map +1 -0
- package/dist/{api-users → api/users}/index.js +99 -766
- package/dist/api/users/index.js.map +1 -0
- package/dist/{api-verifications → api/verifications}/index.browser.js +5 -5
- package/dist/api/verifications/index.browser.js.map +1 -0
- package/dist/api/verifications/index.d.ts +248 -0
- package/dist/api/verifications/index.d.ts.map +1 -0
- package/dist/{api-verifications → api/verifications}/index.js +11 -11
- package/dist/api/verifications/index.js.map +1 -0
- package/dist/batch/index.d.ts.map +1 -0
- package/dist/bucket/index.d.ts.map +1 -0
- package/dist/cache/{index.d.ts → core/index.d.ts} +4 -4
- package/dist/cache/core/index.d.ts.map +1 -0
- package/dist/cache/{index.js → core/index.js} +5 -5
- package/dist/cache/core/index.js.map +1 -0
- package/dist/{cache-redis → cache/redis}/index.d.ts +2 -2
- package/dist/cache/redis/index.d.ts.map +1 -0
- package/dist/{cache-redis → cache/redis}/index.js +2 -2
- package/dist/cache/redis/index.js.map +1 -0
- package/dist/cli/index.d.ts +78 -58
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +454 -154
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +15 -5
- package/dist/command/index.d.ts.map +1 -0
- package/dist/command/index.js +45 -6
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +1334 -1318
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +75 -71
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +1337 -1321
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +1337 -1321
- package/dist/core/index.native.js.map +1 -1
- package/dist/datetime/index.d.ts.map +1 -0
- package/dist/email/index.d.ts.map +1 -0
- package/dist/fake/index.d.ts.map +1 -0
- package/dist/file/index.d.ts.map +1 -0
- package/dist/lock/{index.d.ts → core/index.d.ts} +5 -5
- package/dist/lock/core/index.d.ts.map +1 -0
- package/dist/lock/{index.js → core/index.js} +5 -5
- package/dist/lock/core/index.js.map +1 -0
- package/dist/{lock-redis → lock/redis}/index.d.ts +2 -2
- package/dist/lock/redis/index.d.ts.map +1 -0
- package/dist/{lock-redis → lock/redis}/index.js +2 -2
- package/dist/lock/redis/index.js.map +1 -0
- package/dist/logger/index.d.ts +1 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +820 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +978 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/orm/index.d.ts +180 -107
- package/dist/orm/index.d.ts.map +1 -0
- package/dist/orm/index.js +260 -174
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +548 -0
- package/dist/queue/core/index.d.ts.map +1 -0
- package/dist/queue/core/index.js +391 -0
- package/dist/queue/core/index.js.map +1 -0
- package/dist/queue/redis/index.d.ts +28 -0
- package/dist/queue/redis/index.d.ts.map +1 -0
- package/dist/queue/redis/index.js +43 -0
- package/dist/queue/redis/index.js.map +1 -0
- package/dist/redis/index.d.ts.map +1 -0
- package/dist/retry/index.d.ts.map +1 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/scheduler/index.d.ts +1 -1
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +1 -393
- package/dist/scheduler/index.js.map +1 -1
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +2 -1413
- package/dist/security/index.js.map +1 -1
- package/dist/{server-auth → server/auth}/index.browser.js +6 -6
- package/dist/server/auth/index.browser.js.map +1 -0
- package/dist/{server-auth → server/auth}/index.d.ts +167 -167
- package/dist/server/auth/index.d.ts.map +1 -0
- package/dist/server/auth/index.js +742 -0
- package/dist/server/auth/index.js.map +1 -0
- package/dist/{server-cache → server/cache}/index.d.ts +2 -2
- package/dist/server/cache/index.d.ts.map +1 -0
- package/dist/{server-cache → server/cache}/index.js +2 -2
- package/dist/server/cache/index.js.map +1 -0
- package/dist/{server-compress → server/compress}/index.d.ts +2 -2
- package/dist/server/compress/index.d.ts.map +1 -0
- package/dist/{server-compress → server/compress}/index.js +2 -2
- package/dist/server/compress/index.js.map +1 -0
- package/dist/{server-cookies → server/cookies}/index.browser.js +3 -3
- package/dist/server/cookies/index.browser.js.map +1 -0
- package/dist/{server-cookies → server/cookies}/index.d.ts +4 -4
- package/dist/server/cookies/index.d.ts.map +1 -0
- package/dist/{server-cookies → server/cookies}/index.js +4 -4
- package/dist/server/cookies/index.js.map +1 -0
- package/dist/server/{index.browser.js → core/index.browser.js} +14 -14
- package/dist/server/core/index.browser.js.map +1 -0
- package/dist/server/{index.d.ts → core/index.d.ts} +36 -36
- package/dist/server/core/index.d.ts.map +1 -0
- package/dist/server/{index.js → core/index.js} +27 -27
- package/dist/server/core/index.js.map +1 -0
- package/dist/{server-cors → server/cors}/index.d.ts +3 -3
- package/dist/server/cors/index.d.ts.map +1 -0
- package/dist/{server-cors → server/cors}/index.js +3 -3
- package/dist/server/cors/index.js.map +1 -0
- package/dist/{server-health → server/health}/index.d.ts +3 -3
- package/dist/server/health/index.d.ts.map +1 -0
- package/dist/{server-health → server/health}/index.js +3 -3
- package/dist/server/health/index.js.map +1 -0
- package/dist/{server-helmet → server/helmet}/index.d.ts +2 -2
- package/dist/server/helmet/index.d.ts.map +1 -0
- package/dist/{server-helmet → server/helmet}/index.js +2 -2
- package/dist/server/helmet/index.js.map +1 -0
- package/dist/{server-links → server/links}/index.browser.js +5 -5
- package/dist/server/links/index.browser.js.map +1 -0
- package/dist/{server-links → server/links}/index.d.ts +40 -40
- package/dist/server/links/index.d.ts.map +1 -0
- package/dist/{server-links → server/links}/index.js +7 -7
- package/dist/server/links/index.js.map +1 -0
- package/dist/{server-metrics → server/metrics}/index.d.ts +2 -2
- package/dist/server/metrics/index.d.ts.map +1 -0
- package/dist/server/metrics/index.js +74 -0
- package/dist/server/metrics/index.js.map +1 -0
- package/dist/{server-multipart → server/multipart}/index.d.ts +2 -2
- package/dist/server/multipart/index.d.ts.map +1 -0
- package/dist/{server-multipart → server/multipart}/index.js +2 -2
- package/dist/server/multipart/index.js.map +1 -0
- package/dist/{server-proxy → server/proxy}/index.d.ts +3 -3
- package/dist/server/proxy/index.d.ts.map +1 -0
- package/dist/{server-proxy → server/proxy}/index.js +3 -3
- package/dist/server/proxy/index.js.map +1 -0
- package/dist/{server-rate-limit → server/rate-limit}/index.d.ts +4 -4
- package/dist/server/rate-limit/index.d.ts.map +1 -0
- package/dist/{server-rate-limit → server/rate-limit}/index.js +4 -4
- package/dist/server/rate-limit/index.js.map +1 -0
- package/dist/{server-security → server/security}/index.browser.js +1 -1
- package/dist/server/security/index.browser.js.map +1 -0
- package/dist/{server-security → server/security}/index.d.ts +4 -4
- package/dist/server/security/index.d.ts.map +1 -0
- package/dist/{server-security → server/security}/index.js +4 -4
- package/dist/server/security/index.js.map +1 -0
- package/dist/{server-static → server/static}/index.d.ts +3 -3
- package/dist/server/static/index.d.ts.map +1 -0
- package/dist/{server-static → server/static}/index.js +3 -3
- package/dist/server/static/index.js.map +1 -0
- package/dist/{server-swagger → server/swagger}/index.d.ts +3 -3
- package/dist/server/swagger/index.d.ts.map +1 -0
- package/dist/{server-swagger → server/swagger}/index.js +4 -4
- package/dist/server/swagger/index.js.map +1 -0
- package/dist/sms/index.d.ts.map +1 -0
- package/dist/thread/index.d.ts.map +1 -0
- package/dist/topic/{index.d.ts → core/index.d.ts} +6 -6
- package/dist/topic/core/index.d.ts.map +1 -0
- package/dist/topic/{index.js → core/index.js} +6 -6
- package/dist/topic/core/index.js.map +1 -0
- package/dist/{topic-redis → topic/redis}/index.d.ts +2 -2
- package/dist/topic/redis/index.d.ts.map +1 -0
- package/dist/{topic-redis → topic/redis}/index.js +2 -2
- package/dist/topic/redis/index.js.map +1 -0
- package/dist/vite/index.d.ts +21 -2
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +48 -19
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.d.ts.map +1 -0
- package/package.json +162 -158
- package/src/{api-files → api/files}/index.ts +1 -0
- package/src/{api-parameters → api/parameters}/index.ts +1 -1
- package/src/{api-users → api/users}/primitives/$userRealm.ts +1 -1
- package/src/{api-users → api/users}/providers/UserRealmProvider.ts +6 -7
- package/src/{api-verifications → api/verifications}/index.ts +2 -0
- package/src/cli/apps/AlephaCli.ts +2 -0
- package/src/cli/apps/AlephaPackageBuilderCli.ts +83 -54
- package/src/cli/assets/appRouterTs.ts +1 -1
- package/src/cli/assets/biomeJson.ts +1 -1
- package/src/cli/assets/indexHtml.ts +1 -1
- package/src/cli/assets/mainBrowserTs.ts +1 -1
- package/src/cli/assets/mainTs.ts +9 -10
- package/src/cli/assets/viteConfigTs.ts +1 -1
- package/src/cli/commands/ChangelogCommands.ts +389 -0
- package/src/cli/commands/CoreCommands.ts +10 -6
- package/src/cli/commands/DrizzleCommands.ts +204 -4
- package/src/cli/commands/VerifyCommands.ts +4 -1
- package/src/cli/commands/ViteCommands.ts +46 -25
- package/src/cli/services/AlephaCliUtils.ts +52 -164
- package/src/command/providers/CliProvider.ts +76 -5
- package/src/core/providers/SchemaValidator.ts +24 -2
- package/src/mcp/errors/McpError.ts +72 -0
- package/src/mcp/helpers/jsonrpc.ts +163 -0
- package/src/mcp/index.ts +132 -0
- package/src/mcp/interfaces/McpTypes.ts +248 -0
- package/src/mcp/primitives/$prompt.ts +188 -0
- package/src/mcp/primitives/$resource.ts +171 -0
- package/src/mcp/primitives/$tool.ts +285 -0
- package/src/mcp/providers/McpServerProvider.ts +382 -0
- package/src/mcp/transports/SseMcpTransport.ts +172 -0
- package/src/mcp/transports/StdioMcpTransport.ts +126 -0
- package/src/orm/index.ts +12 -0
- package/src/orm/providers/drivers/CloudflareD1Provider.ts +164 -0
- package/src/orm/providers/drivers/NodeSqliteProvider.ts +3 -1
- package/src/queue/{index.ts → core/index.ts} +2 -3
- package/src/queue/{primitives → core/primitives}/$queue.ts +17 -162
- package/src/queue/core/providers/MemoryQueueProvider.ts +19 -0
- package/src/queue/core/providers/QueueProvider.ts +23 -0
- package/src/queue/core/providers/WorkerProvider.ts +244 -0
- package/src/queue/redis/providers/RedisQueueProvider.ts +31 -0
- package/src/server/{index.ts → core/index.ts} +1 -0
- package/src/{server-rate-limit → server/rate-limit}/index.ts +1 -1
- package/src/{server-swagger → server/swagger}/providers/ServerSwaggerProvider.ts +1 -0
- package/src/vite/plugins/viteAlephaBuild.ts +8 -2
- package/src/vite/plugins/viteAlephaDev.ts +6 -2
- package/src/vite/tasks/buildServer.ts +1 -1
- package/src/vite/tasks/copyAssets.ts +32 -8
- package/src/vite/tasks/generateCloudflare.ts +43 -15
- package/src/vite/tasks/runAlepha.ts +1 -0
- package/dist/api-audits/index.browser.js.map +0 -1
- package/dist/api-audits/index.js.map +0 -1
- package/dist/api-files/index.browser.js.map +0 -1
- package/dist/api-files/index.js.map +0 -1
- package/dist/api-jobs/index.browser.js.map +0 -1
- package/dist/api-jobs/index.js.map +0 -1
- package/dist/api-notifications/index.browser.js.map +0 -1
- package/dist/api-notifications/index.d.ts +0 -327
- package/dist/api-notifications/index.js.map +0 -1
- package/dist/api-parameters/index.browser.js.map +0 -1
- package/dist/api-parameters/index.js.map +0 -1
- package/dist/api-users/index.browser.js.map +0 -1
- package/dist/api-users/index.js.map +0 -1
- package/dist/api-verifications/index.browser.js.map +0 -1
- package/dist/api-verifications/index.d.ts +0 -229
- package/dist/api-verifications/index.js.map +0 -1
- package/dist/cache/index.js.map +0 -1
- package/dist/cache-redis/index.js.map +0 -1
- package/dist/lock/index.js.map +0 -1
- package/dist/lock-redis/index.js.map +0 -1
- package/dist/queue/index.d.ts +0 -1265
- package/dist/queue/index.js +0 -1037
- package/dist/queue/index.js.map +0 -1
- package/dist/queue-redis/index.d.ts +0 -82
- package/dist/queue-redis/index.js +0 -872
- package/dist/queue-redis/index.js.map +0 -1
- package/dist/server/index.browser.js.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server-auth/index.browser.js.map +0 -1
- package/dist/server-auth/index.js +0 -1973
- package/dist/server-auth/index.js.map +0 -1
- package/dist/server-cache/index.js.map +0 -1
- package/dist/server-compress/index.js.map +0 -1
- package/dist/server-cookies/index.browser.js.map +0 -1
- package/dist/server-cookies/index.js.map +0 -1
- package/dist/server-cors/index.js.map +0 -1
- package/dist/server-health/index.js.map +0 -1
- package/dist/server-helmet/index.js.map +0 -1
- package/dist/server-links/index.browser.js.map +0 -1
- package/dist/server-links/index.js.map +0 -1
- package/dist/server-metrics/index.js +0 -4532
- package/dist/server-metrics/index.js.map +0 -1
- package/dist/server-multipart/index.js.map +0 -1
- package/dist/server-proxy/index.js.map +0 -1
- package/dist/server-rate-limit/index.js.map +0 -1
- package/dist/server-security/index.browser.js.map +0 -1
- package/dist/server-security/index.js.map +0 -1
- package/dist/server-static/index.js.map +0 -1
- package/dist/server-swagger/index.js.map +0 -1
- package/dist/topic/index.js.map +0 -1
- package/dist/topic-redis/index.js.map +0 -1
- package/src/queue/interfaces/QueueJob.ts +0 -459
- package/src/queue/providers/MemoryQueueProvider.ts +0 -850
- package/src/queue/providers/QueueProvider.ts +0 -319
- package/src/queue/providers/WorkerProvider.ts +0 -344
- package/src/queue-redis/providers/RedisQueueProvider.ts +0 -1209
- /package/src/{api-audits → api/audits}/controllers/AuditController.ts +0 -0
- /package/src/{api-audits → api/audits}/entities/audits.ts +0 -0
- /package/src/{api-audits → api/audits}/index.browser.ts +0 -0
- /package/src/{api-audits → api/audits}/index.ts +0 -0
- /package/src/{api-audits → api/audits}/primitives/$audit.ts +0 -0
- /package/src/{api-audits → api/audits}/schemas/auditQuerySchema.ts +0 -0
- /package/src/{api-audits → api/audits}/schemas/auditResourceSchema.ts +0 -0
- /package/src/{api-audits → api/audits}/schemas/createAuditSchema.ts +0 -0
- /package/src/{api-audits → api/audits}/services/AuditService.ts +0 -0
- /package/src/{api-files → api/files}/controllers/FileController.ts +0 -0
- /package/src/{api-files → api/files}/controllers/StorageStatsController.ts +0 -0
- /package/src/{api-files → api/files}/entities/files.ts +0 -0
- /package/src/{api-files → api/files}/index.browser.ts +0 -0
- /package/src/{api-files → api/files}/jobs/FileJobs.ts +0 -0
- /package/src/{api-files → api/files}/schemas/fileQuerySchema.ts +0 -0
- /package/src/{api-files → api/files}/schemas/fileResourceSchema.ts +0 -0
- /package/src/{api-files → api/files}/schemas/storageStatsSchema.ts +0 -0
- /package/src/{api-files → api/files}/services/FileService.ts +0 -0
- /package/src/{api-jobs → api/jobs}/controllers/JobController.ts +0 -0
- /package/src/{api-jobs → api/jobs}/entities/jobExecutions.ts +0 -0
- /package/src/{api-jobs → api/jobs}/index.browser.ts +0 -0
- /package/src/{api-jobs → api/jobs}/index.ts +0 -0
- /package/src/{api-jobs → api/jobs}/primitives/$job.ts +0 -0
- /package/src/{api-jobs → api/jobs}/providers/JobProvider.ts +0 -0
- /package/src/{api-jobs → api/jobs}/schemas/jobExecutionQuerySchema.ts +0 -0
- /package/src/{api-jobs → api/jobs}/schemas/jobExecutionResourceSchema.ts +0 -0
- /package/src/{api-jobs → api/jobs}/schemas/triggerJobSchema.ts +0 -0
- /package/src/{api-jobs → api/jobs}/services/JobService.ts +0 -0
- /package/src/{api-notifications → api/notifications}/controllers/NotificationController.ts +0 -0
- /package/src/{api-notifications → api/notifications}/entities/notifications.ts +0 -0
- /package/src/{api-notifications → api/notifications}/index.browser.ts +0 -0
- /package/src/{api-notifications → api/notifications}/index.ts +0 -0
- /package/src/{api-notifications → api/notifications}/jobs/NotificationJobs.ts +0 -0
- /package/src/{api-notifications → api/notifications}/primitives/$notification.ts +0 -0
- /package/src/{api-notifications → api/notifications}/queues/NotificationQueues.ts +0 -0
- /package/src/{api-notifications → api/notifications}/schemas/notificationContactPreferencesSchema.ts +0 -0
- /package/src/{api-notifications → api/notifications}/schemas/notificationContactSchema.ts +0 -0
- /package/src/{api-notifications → api/notifications}/schemas/notificationCreateSchema.ts +0 -0
- /package/src/{api-notifications → api/notifications}/schemas/notificationQuerySchema.ts +0 -0
- /package/src/{api-notifications → api/notifications}/services/NotificationSenderService.ts +0 -0
- /package/src/{api-notifications → api/notifications}/services/NotificationService.ts +0 -0
- /package/src/{api-parameters → api/parameters}/controllers/ConfigController.ts +0 -0
- /package/src/{api-parameters → api/parameters}/entities/parameters.ts +0 -0
- /package/src/{api-parameters → api/parameters}/index.browser.ts +0 -0
- /package/src/{api-parameters → api/parameters}/primitives/$config.ts +0 -0
- /package/src/{api-parameters → api/parameters}/schedulers/ConfigActivationScheduler.ts +0 -0
- /package/src/{api-parameters → api/parameters}/services/ConfigStore.ts +0 -0
- /package/src/{api-users → api/users}/atoms/realmAuthSettingsAtom.ts +0 -0
- /package/src/{api-users → api/users}/controllers/IdentityController.ts +0 -0
- /package/src/{api-users → api/users}/controllers/SessionController.ts +0 -0
- /package/src/{api-users → api/users}/controllers/UserController.ts +0 -0
- /package/src/{api-users → api/users}/controllers/UserRealmController.ts +0 -0
- /package/src/{api-users → api/users}/entities/identities.ts +0 -0
- /package/src/{api-users → api/users}/entities/sessions.ts +0 -0
- /package/src/{api-users → api/users}/entities/users.ts +0 -0
- /package/src/{api-users → api/users}/index.browser.ts +0 -0
- /package/src/{api-users → api/users}/index.ts +0 -0
- /package/src/{api-users → api/users}/notifications/UserNotifications.ts +0 -0
- /package/src/{api-users → api/users}/schemas/completePasswordResetRequestSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/completeRegistrationRequestSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/createUserSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/identityQuerySchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/identityResourceSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/loginSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/passwordResetIntentResponseSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/registerQuerySchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/registerRequestSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/registerResponseSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/registerSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/registrationIntentResponseSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/resetPasswordSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/sessionQuerySchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/sessionResourceSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/updateUserSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/userQuerySchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/userRealmConfigSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/userResourceSchema.ts +0 -0
- /package/src/{api-users → api/users}/services/CredentialService.ts +0 -0
- /package/src/{api-users → api/users}/services/IdentityService.ts +0 -0
- /package/src/{api-users → api/users}/services/RegistrationService.ts +0 -0
- /package/src/{api-users → api/users}/services/SessionCrudService.ts +0 -0
- /package/src/{api-users → api/users}/services/SessionService.ts +0 -0
- /package/src/{api-users → api/users}/services/UserService.ts +0 -0
- /package/src/{api-verifications → api/verifications}/controllers/VerificationController.ts +0 -0
- /package/src/{api-verifications → api/verifications}/entities/verifications.ts +0 -0
- /package/src/{api-verifications → api/verifications}/index.browser.ts +0 -0
- /package/src/{api-verifications → api/verifications}/jobs/VerificationJobs.ts +0 -0
- /package/src/{api-verifications → api/verifications}/parameters/VerificationParameters.ts +0 -0
- /package/src/{api-verifications → api/verifications}/schemas/requestVerificationCodeResponseSchema.ts +0 -0
- /package/src/{api-verifications → api/verifications}/schemas/validateVerificationCodeResponseSchema.ts +0 -0
- /package/src/{api-verifications → api/verifications}/schemas/verificationSettingsSchema.ts +0 -0
- /package/src/{api-verifications → api/verifications}/schemas/verificationTypeEnumSchema.ts +0 -0
- /package/src/{api-verifications → api/verifications}/services/VerificationService.ts +0 -0
- /package/src/cache/{errors → core/errors}/CacheError.ts +0 -0
- /package/src/cache/{index.ts → core/index.ts} +0 -0
- /package/src/cache/{primitives → core/primitives}/$cache.ts +0 -0
- /package/src/cache/{providers → core/providers}/CacheProvider.ts +0 -0
- /package/src/cache/{providers → core/providers}/MemoryCacheProvider.ts +0 -0
- /package/src/{cache-redis → cache/redis}/index.ts +0 -0
- /package/src/{cache-redis → cache/redis}/providers/RedisCacheProvider.ts +0 -0
- /package/src/lock/{index.ts → core/index.ts} +0 -0
- /package/src/lock/{primitives → core/primitives}/$lock.ts +0 -0
- /package/src/lock/{providers → core/providers}/LockProvider.ts +0 -0
- /package/src/lock/{providers → core/providers}/LockTopicProvider.ts +0 -0
- /package/src/lock/{providers → core/providers}/MemoryLockProvider.ts +0 -0
- /package/src/{lock-redis → lock/redis}/index.ts +0 -0
- /package/src/{lock-redis → lock/redis}/providers/RedisLockProvider.ts +0 -0
- /package/src/queue/{primitives → core/primitives}/$consumer.ts +0 -0
- /package/src/{queue-redis → queue/redis}/index.ts +0 -0
- /package/src/{server-auth → server/auth}/constants/routes.ts +0 -0
- /package/src/{server-auth → server/auth}/index.browser.ts +0 -0
- /package/src/{server-auth → server/auth}/index.shared.ts +0 -0
- /package/src/{server-auth → server/auth}/index.ts +0 -0
- /package/src/{server-auth → server/auth}/primitives/$auth.ts +0 -0
- /package/src/{server-auth → server/auth}/primitives/$authApple.ts +0 -0
- /package/src/{server-auth → server/auth}/primitives/$authCredentials.ts +0 -0
- /package/src/{server-auth → server/auth}/primitives/$authGithub.ts +0 -0
- /package/src/{server-auth → server/auth}/primitives/$authGoogle.ts +0 -0
- /package/src/{server-auth → server/auth}/providers/ServerAuthProvider.ts +0 -0
- /package/src/{server-auth → server/auth}/schemas/authenticationProviderSchema.ts +0 -0
- /package/src/{server-auth → server/auth}/schemas/tokenResponseSchema.ts +0 -0
- /package/src/{server-auth → server/auth}/schemas/tokensSchema.ts +0 -0
- /package/src/{server-auth → server/auth}/schemas/userinfoResponseSchema.ts +0 -0
- /package/src/{server-cache → server/cache}/index.ts +0 -0
- /package/src/{server-cache → server/cache}/providers/ServerCacheProvider.ts +0 -0
- /package/src/{server-compress → server/compress}/index.ts +0 -0
- /package/src/{server-compress → server/compress}/providers/ServerCompressProvider.ts +0 -0
- /package/src/{server-cookies → server/cookies}/index.browser.ts +0 -0
- /package/src/{server-cookies → server/cookies}/index.ts +0 -0
- /package/src/{server-cookies → server/cookies}/primitives/$cookie.browser.ts +0 -0
- /package/src/{server-cookies → server/cookies}/primitives/$cookie.ts +0 -0
- /package/src/{server-cookies → server/cookies}/providers/ServerCookiesProvider.ts +0 -0
- /package/src/{server-cookies → server/cookies}/services/CookieParser.ts +0 -0
- /package/src/server/{constants → core/constants}/routeMethods.ts +0 -0
- /package/src/server/{errors → core/errors}/BadRequestError.ts +0 -0
- /package/src/server/{errors → core/errors}/ConflictError.ts +0 -0
- /package/src/server/{errors → core/errors}/ForbiddenError.ts +0 -0
- /package/src/server/{errors → core/errors}/HttpError.ts +0 -0
- /package/src/server/{errors → core/errors}/NotFoundError.ts +0 -0
- /package/src/server/{errors → core/errors}/UnauthorizedError.ts +0 -0
- /package/src/server/{errors → core/errors}/ValidationError.ts +0 -0
- /package/src/server/{helpers → core/helpers}/ServerReply.ts +0 -0
- /package/src/server/{helpers → core/helpers}/isMultipart.ts +0 -0
- /package/src/server/{index.browser.ts → core/index.browser.ts} +0 -0
- /package/src/server/{index.shared.ts → core/index.shared.ts} +0 -0
- /package/src/server/{interfaces → core/interfaces}/ServerRequest.ts +0 -0
- /package/src/server/{primitives → core/primitives}/$action.ts +0 -0
- /package/src/server/{primitives → core/primitives}/$route.ts +0 -0
- /package/src/server/{providers → core/providers}/BunHttpServerProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/NodeHttpServerProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/ServerBodyParserProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/ServerLoggerProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/ServerNotReadyProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/ServerProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/ServerRouterProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/ServerTimingProvider.ts +0 -0
- /package/src/server/{schemas → core/schemas}/errorSchema.ts +0 -0
- /package/src/server/{schemas → core/schemas}/okSchema.ts +0 -0
- /package/src/server/{services → core/services}/HttpClient.ts +0 -0
- /package/src/server/{services → core/services}/ServerRequestParser.ts +0 -0
- /package/src/server/{services → core/services}/UserAgentParser.ts +0 -0
- /package/src/{server-cors → server/cors}/index.ts +0 -0
- /package/src/{server-cors → server/cors}/primitives/$cors.ts +0 -0
- /package/src/{server-cors → server/cors}/providers/ServerCorsProvider.ts +0 -0
- /package/src/{server-health → server/health}/index.ts +0 -0
- /package/src/{server-health → server/health}/providers/ServerHealthProvider.ts +0 -0
- /package/src/{server-health → server/health}/schemas/healthSchema.ts +0 -0
- /package/src/{server-helmet → server/helmet}/index.ts +0 -0
- /package/src/{server-helmet → server/helmet}/providers/ServerHelmetProvider.ts +0 -0
- /package/src/{server-links → server/links}/index.browser.ts +0 -0
- /package/src/{server-links → server/links}/index.ts +0 -0
- /package/src/{server-links → server/links}/primitives/$client.ts +0 -0
- /package/src/{server-links → server/links}/primitives/$remote.ts +0 -0
- /package/src/{server-links → server/links}/providers/LinkProvider.ts +0 -0
- /package/src/{server-links → server/links}/providers/RemotePrimitiveProvider.ts +0 -0
- /package/src/{server-links → server/links}/providers/ServerLinksProvider.ts +0 -0
- /package/src/{server-links → server/links}/schemas/apiLinksResponseSchema.ts +0 -0
- /package/src/{server-metrics → server/metrics}/index.ts +0 -0
- /package/src/{server-metrics → server/metrics}/providers/ServerMetricsProvider.ts +0 -0
- /package/src/{server-multipart → server/multipart}/index.ts +0 -0
- /package/src/{server-multipart → server/multipart}/providers/ServerMultipartProvider.ts +0 -0
- /package/src/{server-proxy → server/proxy}/index.ts +0 -0
- /package/src/{server-proxy → server/proxy}/primitives/$proxy.ts +0 -0
- /package/src/{server-proxy → server/proxy}/providers/ServerProxyProvider.ts +0 -0
- /package/src/{server-rate-limit → server/rate-limit}/primitives/$rateLimit.ts +0 -0
- /package/src/{server-rate-limit → server/rate-limit}/providers/ServerRateLimitProvider.ts +0 -0
- /package/src/{server-security → server/security}/index.browser.ts +0 -0
- /package/src/{server-security → server/security}/index.ts +0 -0
- /package/src/{server-security → server/security}/primitives/$basicAuth.ts +0 -0
- /package/src/{server-security → server/security}/providers/ServerBasicAuthProvider.ts +0 -0
- /package/src/{server-security → server/security}/providers/ServerSecurityProvider.ts +0 -0
- /package/src/{server-static → server/static}/index.ts +0 -0
- /package/src/{server-static → server/static}/primitives/$serve.ts +0 -0
- /package/src/{server-static → server/static}/providers/ServerStaticProvider.ts +0 -0
- /package/src/{server-swagger → server/swagger}/index.ts +0 -0
- /package/src/{server-swagger → server/swagger}/primitives/$swagger.ts +0 -0
- /package/src/topic/{errors → core/errors}/TopicTimeoutError.ts +0 -0
- /package/src/topic/{index.ts → core/index.ts} +0 -0
- /package/src/topic/{primitives → core/primitives}/$subscriber.ts +0 -0
- /package/src/topic/{primitives → core/primitives}/$topic.ts +0 -0
- /package/src/topic/{providers → core/providers}/MemoryTopicProvider.ts +0 -0
- /package/src/topic/{providers → core/providers}/TopicProvider.ts +0 -0
- /package/src/{topic-redis → topic/redis}/index.ts +0 -0
- /package/src/{topic-redis → topic/redis}/providers/RedisTopicProvider.ts +0 -0
|
@@ -5,7 +5,6 @@ import { $inject, Alepha, AlephaError } from "alepha";
|
|
|
5
5
|
import type { RunnerMethod } from "alepha/command";
|
|
6
6
|
import { FileSystemProvider } from "alepha/file";
|
|
7
7
|
import { $logger } from "alepha/logger";
|
|
8
|
-
import type { DrizzleKitProvider, RepositoryProvider } from "alepha/orm";
|
|
9
8
|
import { boot } from "alepha/vite";
|
|
10
9
|
import { tsImport } from "tsx/esm/api";
|
|
11
10
|
import { appRouterTs } from "../assets/appRouterTs.ts";
|
|
@@ -196,6 +195,14 @@ export class AlephaCliUtils {
|
|
|
196
195
|
|
|
197
196
|
const devDependencies: Record<string, string> = {};
|
|
198
197
|
|
|
198
|
+
const scripts: Record<string, string> = {
|
|
199
|
+
dev: "alepha dev",
|
|
200
|
+
build: "alepha build",
|
|
201
|
+
lint: "alepha lint",
|
|
202
|
+
typecheck: "alepha typecheck",
|
|
203
|
+
verify: "alepha verify",
|
|
204
|
+
};
|
|
205
|
+
|
|
199
206
|
if (modes.ui) {
|
|
200
207
|
dependencies["@alepha/ui"] = `^${version}`;
|
|
201
208
|
modes.react = true;
|
|
@@ -212,11 +219,7 @@ export class AlephaCliUtils {
|
|
|
212
219
|
type: "module",
|
|
213
220
|
dependencies,
|
|
214
221
|
devDependencies,
|
|
215
|
-
scripts
|
|
216
|
-
dev: "alepha dev",
|
|
217
|
-
build: "alepha build",
|
|
218
|
-
verify: "alepha verify",
|
|
219
|
-
},
|
|
222
|
+
scripts,
|
|
220
223
|
};
|
|
221
224
|
}
|
|
222
225
|
|
|
@@ -234,16 +237,14 @@ export class AlephaCliUtils {
|
|
|
234
237
|
public async ensurePackageJson(
|
|
235
238
|
root: string,
|
|
236
239
|
modes: DependencyModes,
|
|
237
|
-
): Promise<
|
|
240
|
+
): Promise<object> {
|
|
238
241
|
const packageJsonPath = join(root, "package.json");
|
|
239
242
|
try {
|
|
240
243
|
await access(packageJsonPath);
|
|
241
244
|
} catch (error) {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
);
|
|
246
|
-
return;
|
|
245
|
+
const obj = this.generatePackageJsonContent(modes);
|
|
246
|
+
await writeFile(packageJsonPath, JSON.stringify(obj, null, 2));
|
|
247
|
+
return obj;
|
|
247
248
|
}
|
|
248
249
|
|
|
249
250
|
const content = await readFile(packageJsonPath, "utf8");
|
|
@@ -261,6 +262,8 @@ export class AlephaCliUtils {
|
|
|
261
262
|
Object.assign(packageJson.scripts, newPackageJson.scripts);
|
|
262
263
|
|
|
263
264
|
await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
265
|
+
|
|
266
|
+
return packageJson;
|
|
264
267
|
}
|
|
265
268
|
|
|
266
269
|
public async ensureConfig(
|
|
@@ -273,8 +276,8 @@ export class AlephaCliUtils {
|
|
|
273
276
|
biomeJson?: boolean;
|
|
274
277
|
editorconfig?: boolean;
|
|
275
278
|
},
|
|
276
|
-
) {
|
|
277
|
-
const tasks: Promise<void>[] = [];
|
|
279
|
+
): Promise<Array<void | object>> {
|
|
280
|
+
const tasks: Promise<void | object>[] = [];
|
|
278
281
|
|
|
279
282
|
if (opts.packageJson) {
|
|
280
283
|
tasks.push(
|
|
@@ -300,7 +303,7 @@ export class AlephaCliUtils {
|
|
|
300
303
|
tasks.push(this.ensureEditorConfig(root));
|
|
301
304
|
}
|
|
302
305
|
|
|
303
|
-
await Promise.all(tasks);
|
|
306
|
+
return await Promise.all(tasks);
|
|
304
307
|
}
|
|
305
308
|
|
|
306
309
|
/**
|
|
@@ -491,159 +494,33 @@ ${models.map((it: string) => `export const ${it} = models["${it}"];`).join("\n")
|
|
|
491
494
|
}
|
|
492
495
|
|
|
493
496
|
/**
|
|
494
|
-
*
|
|
495
|
-
*
|
|
496
|
-
* Creates temporary entities.js and drizzle.config.js files needed
|
|
497
|
-
* for Drizzle Kit commands to run properly.
|
|
497
|
+
* Load environment variables from a .env file.
|
|
498
498
|
*
|
|
499
|
-
*
|
|
500
|
-
*
|
|
499
|
+
* Reads the .env file in the specified root directory and sets
|
|
500
|
+
* the environment variables in process.env.
|
|
501
501
|
*/
|
|
502
|
-
public async
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
);
|
|
523
|
-
|
|
524
|
-
const config: Record<string, any> = {
|
|
525
|
-
schema: entitiesJsPath,
|
|
526
|
-
out: `./migrations/${options.providerName}`,
|
|
527
|
-
dialect: options.dialect,
|
|
528
|
-
dbCredentials: {
|
|
529
|
-
url: options.providerUrl,
|
|
530
|
-
},
|
|
531
|
-
};
|
|
532
|
-
|
|
533
|
-
if (options.dialect === "sqlite") {
|
|
534
|
-
let url = options.providerUrl;
|
|
535
|
-
url = url.replace("sqlite://", "").replace("file://", "");
|
|
536
|
-
url = join(options.rootDir, url);
|
|
537
|
-
|
|
538
|
-
config.dbCredentials = {
|
|
539
|
-
url,
|
|
540
|
-
};
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
if (options.providerName === "pglite") {
|
|
544
|
-
config.driver = "pglite";
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
const drizzleConfigJs = `export default ${JSON.stringify(config, null, 2)}`;
|
|
548
|
-
|
|
549
|
-
return await this.writeConfigFile(
|
|
550
|
-
"drizzle.config.js",
|
|
551
|
-
drizzleConfigJs,
|
|
552
|
-
options.rootDir,
|
|
553
|
-
);
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
public async loadEnvFile(root: string): Promise<void> {
|
|
557
|
-
const envPath = join(root, ".env");
|
|
558
|
-
try {
|
|
559
|
-
const envContent = await readFile(envPath, "utf8");
|
|
560
|
-
const lines = envContent.split("\n");
|
|
561
|
-
for (const line of lines) {
|
|
562
|
-
const [key, ...rest] = line.split("=");
|
|
563
|
-
if (key) {
|
|
564
|
-
const value = rest.join("=");
|
|
565
|
-
process.env[key.trim()] = value.trim();
|
|
502
|
+
public async loadEnvFile(
|
|
503
|
+
root: string,
|
|
504
|
+
files: string[] = [".env"],
|
|
505
|
+
): Promise<void> {
|
|
506
|
+
for (const it of files) {
|
|
507
|
+
for (const file of [it, `${it}.local`]) {
|
|
508
|
+
const envPath = join(root, file);
|
|
509
|
+
try {
|
|
510
|
+
const envContent = await readFile(envPath, "utf8");
|
|
511
|
+
const lines = envContent.split("\n");
|
|
512
|
+
for (const line of lines) {
|
|
513
|
+
const [key, ...rest] = line.split("=");
|
|
514
|
+
if (key) {
|
|
515
|
+
const value = rest.join("=");
|
|
516
|
+
process.env[key.trim()] = value.trim();
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
this.log.debug(`Loaded environment variables from ${envPath}`);
|
|
520
|
+
} catch {
|
|
521
|
+
this.log.debug(`No ${file} file found at ${envPath}, skipping load.`);
|
|
566
522
|
}
|
|
567
523
|
}
|
|
568
|
-
this.log.debug(`Loaded environment variables from ${envPath}`);
|
|
569
|
-
} catch {
|
|
570
|
-
this.log.debug(`No .env file found at ${envPath}, skipping load.`);
|
|
571
|
-
}
|
|
572
|
-
}
|
|
573
|
-
|
|
574
|
-
/**
|
|
575
|
-
* Run a drizzle-kit command for all database providers in an Alepha instance.
|
|
576
|
-
*
|
|
577
|
-
* Iterates through all repository providers, prepares Drizzle config for each,
|
|
578
|
-
* and executes the specified drizzle-kit command.
|
|
579
|
-
*
|
|
580
|
-
* @param options - Configuration including command to run, flags, and logging
|
|
581
|
-
*/
|
|
582
|
-
public async runDrizzleKitCommand(options: {
|
|
583
|
-
root: string;
|
|
584
|
-
args?: string;
|
|
585
|
-
command: string;
|
|
586
|
-
commandFlags?: string;
|
|
587
|
-
provider?: string;
|
|
588
|
-
logMessage: (providerName: string, dialect: string) => string;
|
|
589
|
-
}): Promise<void> {
|
|
590
|
-
const rootDir = options.root;
|
|
591
|
-
|
|
592
|
-
await this.loadEnvFile(rootDir);
|
|
593
|
-
|
|
594
|
-
this.log.debug(`Using project root: ${rootDir}`);
|
|
595
|
-
|
|
596
|
-
const { alepha, entry } = await this.loadAlephaFromServerEntryFile(
|
|
597
|
-
rootDir,
|
|
598
|
-
options.args,
|
|
599
|
-
);
|
|
600
|
-
|
|
601
|
-
const drizzleKitProvider =
|
|
602
|
-
alepha.inject<DrizzleKitProvider>("DrizzleKitProvider");
|
|
603
|
-
const repositoryProvider =
|
|
604
|
-
alepha.inject<RepositoryProvider>("RepositoryProvider");
|
|
605
|
-
const accepted = new Set<string>([]);
|
|
606
|
-
|
|
607
|
-
for (const primitive of repositoryProvider.getRepositories()) {
|
|
608
|
-
const provider = primitive.provider;
|
|
609
|
-
const providerName = provider.name;
|
|
610
|
-
const dialect = provider.dialect;
|
|
611
|
-
|
|
612
|
-
if (accepted.has(providerName)) {
|
|
613
|
-
continue;
|
|
614
|
-
}
|
|
615
|
-
accepted.add(providerName);
|
|
616
|
-
|
|
617
|
-
// Skip if provider filter is set and doesn't match
|
|
618
|
-
if (options.provider && options.provider !== providerName) {
|
|
619
|
-
this.log.debug(
|
|
620
|
-
`Skipping provider '${providerName}' (filter: ${options.provider})`,
|
|
621
|
-
);
|
|
622
|
-
continue;
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
this.log.info("");
|
|
626
|
-
this.log.info(options.logMessage(providerName, dialect));
|
|
627
|
-
|
|
628
|
-
const drizzleConfigJsPath = await this.prepareDrizzleConfig({
|
|
629
|
-
kit: drizzleKitProvider,
|
|
630
|
-
provider,
|
|
631
|
-
providerName,
|
|
632
|
-
providerUrl: provider.url,
|
|
633
|
-
dialect,
|
|
634
|
-
entry,
|
|
635
|
-
rootDir,
|
|
636
|
-
});
|
|
637
|
-
|
|
638
|
-
const flags = options.commandFlags ? ` ${options.commandFlags}` : "";
|
|
639
|
-
await this.exec(
|
|
640
|
-
`drizzle-kit ${options.command} --config=${drizzleConfigJsPath}${flags}`,
|
|
641
|
-
{
|
|
642
|
-
env: {
|
|
643
|
-
NODE_OPTIONS: "--import tsx",
|
|
644
|
-
},
|
|
645
|
-
},
|
|
646
|
-
);
|
|
647
524
|
}
|
|
648
525
|
}
|
|
649
526
|
|
|
@@ -789,6 +666,16 @@ ${models.map((it: string) => `export const ${it} = models["${it}"];`).join("\n")
|
|
|
789
666
|
}
|
|
790
667
|
}
|
|
791
668
|
|
|
669
|
+
/**
|
|
670
|
+
* Check if Expo is present in the project.
|
|
671
|
+
*
|
|
672
|
+
* @param root - The root directory of the project
|
|
673
|
+
* @returns True if expo is in dependencies or devDependencies
|
|
674
|
+
*/
|
|
675
|
+
async hasExpo(root: string): Promise<boolean> {
|
|
676
|
+
return this.hasDependency(root, "expo");
|
|
677
|
+
}
|
|
678
|
+
|
|
792
679
|
/**
|
|
793
680
|
* Install a dependency if it's missing from the project.
|
|
794
681
|
*
|
|
@@ -839,4 +726,5 @@ ${models.map((it: string) => `export const ${it} = models["${it}"];`).join("\n")
|
|
|
839
726
|
export interface DependencyModes {
|
|
840
727
|
react?: boolean;
|
|
841
728
|
ui?: boolean;
|
|
729
|
+
expo?: boolean;
|
|
842
730
|
}
|
|
@@ -146,6 +146,7 @@ export class CliProvider {
|
|
|
146
146
|
argv,
|
|
147
147
|
command.options.args,
|
|
148
148
|
command.name === "",
|
|
149
|
+
command.flags,
|
|
149
150
|
);
|
|
150
151
|
|
|
151
152
|
await this.alepha.context.run(async () => {
|
|
@@ -297,9 +298,12 @@ export class CliProvider {
|
|
|
297
298
|
): Record<string, any> {
|
|
298
299
|
const result: Record<string, any> = {};
|
|
299
300
|
|
|
300
|
-
for (
|
|
301
|
+
for (let i = 0; i < argv.length; i++) {
|
|
302
|
+
const arg = argv[i];
|
|
303
|
+
if (!arg.startsWith("-")) continue;
|
|
304
|
+
|
|
301
305
|
const [rawKey, ...valueParts] = arg.replace(/^-{1,2}/, "").split("=");
|
|
302
|
-
|
|
306
|
+
let value = valueParts.join("=");
|
|
303
307
|
|
|
304
308
|
const def = flagDefs.find((d) => d.aliases.includes(rawKey));
|
|
305
309
|
if (!def) continue;
|
|
@@ -307,6 +311,7 @@ export class CliProvider {
|
|
|
307
311
|
if (t.schema.isBoolean(def.schema)) {
|
|
308
312
|
result[def.key] = true;
|
|
309
313
|
} else if (value) {
|
|
314
|
+
// Value provided via --flag=value syntax
|
|
310
315
|
try {
|
|
311
316
|
if (t.schema.isObject(def.schema) || t.schema.isArray(def.schema)) {
|
|
312
317
|
result[def.key] = JSON.parse(value);
|
|
@@ -317,24 +322,90 @@ export class CliProvider {
|
|
|
317
322
|
throw new CommandError(`Invalid JSON value for flag --${rawKey}`);
|
|
318
323
|
}
|
|
319
324
|
} else {
|
|
320
|
-
|
|
325
|
+
// Check for space-separated value: --flag value
|
|
326
|
+
const nextArg = argv[i + 1];
|
|
327
|
+
if (nextArg && !nextArg.startsWith("-")) {
|
|
328
|
+
value = nextArg;
|
|
329
|
+
try {
|
|
330
|
+
if (t.schema.isObject(def.schema) || t.schema.isArray(def.schema)) {
|
|
331
|
+
result[def.key] = JSON.parse(value);
|
|
332
|
+
} else {
|
|
333
|
+
result[def.key] = value;
|
|
334
|
+
}
|
|
335
|
+
} catch {
|
|
336
|
+
throw new CommandError(`Invalid JSON value for flag --${rawKey}`);
|
|
337
|
+
}
|
|
338
|
+
} else {
|
|
339
|
+
throw new CommandError(`Flag --${rawKey} requires a value.`);
|
|
340
|
+
}
|
|
321
341
|
}
|
|
322
342
|
}
|
|
323
343
|
|
|
324
344
|
return result;
|
|
325
345
|
}
|
|
326
346
|
|
|
347
|
+
/**
|
|
348
|
+
* Get indices of argv elements that are consumed by flags (including space-separated values).
|
|
349
|
+
*/
|
|
350
|
+
protected getFlagConsumedIndices(
|
|
351
|
+
argv: string[],
|
|
352
|
+
flagDefs: { key: string; aliases: string[]; schema: TSchema }[],
|
|
353
|
+
): Set<number> {
|
|
354
|
+
const consumed = new Set<number>();
|
|
355
|
+
|
|
356
|
+
for (let i = 0; i < argv.length; i++) {
|
|
357
|
+
const arg = argv[i];
|
|
358
|
+
if (!arg.startsWith("-")) continue;
|
|
359
|
+
|
|
360
|
+
consumed.add(i);
|
|
361
|
+
|
|
362
|
+
const [rawKey, ...valueParts] = arg.replace(/^-{1,2}/, "").split("=");
|
|
363
|
+
const hasEqualValue = valueParts.length > 0;
|
|
364
|
+
|
|
365
|
+
const def = flagDefs.find((d) => d.aliases.includes(rawKey));
|
|
366
|
+
if (!def) continue;
|
|
367
|
+
|
|
368
|
+
// If not a boolean flag and no = value, the next arg is consumed as the value
|
|
369
|
+
if (!t.schema.isBoolean(def.schema) && !hasEqualValue) {
|
|
370
|
+
const nextArg = argv[i + 1];
|
|
371
|
+
if (nextArg && !nextArg.startsWith("-")) {
|
|
372
|
+
consumed.add(i + 1);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
return consumed;
|
|
378
|
+
}
|
|
379
|
+
|
|
327
380
|
protected parseCommandArgs(
|
|
328
381
|
argv: string[],
|
|
329
382
|
schema?: TSchema,
|
|
330
383
|
isRootCommand = false,
|
|
384
|
+
flagSchema?: TObject,
|
|
331
385
|
): any {
|
|
332
386
|
if (!schema) {
|
|
333
387
|
return undefined;
|
|
334
388
|
}
|
|
335
389
|
|
|
336
|
-
//
|
|
337
|
-
const
|
|
390
|
+
// Get indices consumed by flags (including space-separated values)
|
|
391
|
+
const flagDefs = flagSchema
|
|
392
|
+
? Object.entries(flagSchema.properties).map(([key, value]) => ({
|
|
393
|
+
key,
|
|
394
|
+
aliases: [
|
|
395
|
+
key,
|
|
396
|
+
...((value as any).aliases ??
|
|
397
|
+
((value as any).alias ? [(value as any).alias] : undefined) ??
|
|
398
|
+
[]),
|
|
399
|
+
],
|
|
400
|
+
schema: value as TSchema,
|
|
401
|
+
}))
|
|
402
|
+
: [];
|
|
403
|
+
const consumedIndices = this.getFlagConsumedIndices(argv, flagDefs);
|
|
404
|
+
|
|
405
|
+
// Extract positional arguments (non-flag arguments that aren't consumed as flag values)
|
|
406
|
+
const positionalArgs = argv.filter(
|
|
407
|
+
(arg, idx) => !arg.startsWith("-") && !consumedIndices.has(idx),
|
|
408
|
+
);
|
|
338
409
|
// For root commands, there's no command name to remove; otherwise slice off the command name
|
|
339
410
|
const argsOnly = isRootCommand ? positionalArgs : positionalArgs.slice(1);
|
|
340
411
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { TSchema } from "typebox";
|
|
2
2
|
import { Compile, type Validator } from "typebox/compile";
|
|
3
3
|
import { TypeBoxError } from "../errors/TypeBoxError.ts";
|
|
4
|
-
import
|
|
4
|
+
import { $hook } from "../primitives/$hook.ts";
|
|
5
|
+
import { type Static, t, Value } from "./TypeProvider.ts";
|
|
5
6
|
|
|
6
7
|
export class SchemaValidator {
|
|
7
8
|
protected cache = new Map<TSchema, Validator>();
|
|
9
|
+
protected useEval: boolean = true;
|
|
8
10
|
|
|
9
11
|
/**
|
|
10
12
|
* Validate the value against the provided schema.
|
|
@@ -23,7 +25,11 @@ export class SchemaValidator {
|
|
|
23
25
|
});
|
|
24
26
|
|
|
25
27
|
try {
|
|
26
|
-
|
|
28
|
+
//
|
|
29
|
+
if (!this.useEval) {
|
|
30
|
+
return Value.Parse(schema, newValue);
|
|
31
|
+
}
|
|
32
|
+
return this.getValidator(schema).Parse(newValue) as Static<T>;
|
|
27
33
|
} catch (error: any) {
|
|
28
34
|
if (error.cause?.errors?.[0]) {
|
|
29
35
|
throw new TypeBoxError(error.cause.errors[0]);
|
|
@@ -130,6 +136,22 @@ export class SchemaValidator {
|
|
|
130
136
|
}
|
|
131
137
|
return false;
|
|
132
138
|
};
|
|
139
|
+
|
|
140
|
+
protected onConfigure = $hook({
|
|
141
|
+
on: "configure",
|
|
142
|
+
handler: () => {
|
|
143
|
+
this.useEval = this.canEval();
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
protected canEval(): boolean {
|
|
148
|
+
try {
|
|
149
|
+
Compile(t.object({ test: t.string() })).Parse({ test: "value" });
|
|
150
|
+
return true;
|
|
151
|
+
} catch {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
133
155
|
}
|
|
134
156
|
|
|
135
157
|
export interface ValidateOptions {
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { JsonRpcErrorCodes } from "../helpers/jsonrpc.ts";
|
|
2
|
+
|
|
3
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
4
|
+
|
|
5
|
+
export class McpError extends Error {
|
|
6
|
+
name = "McpError";
|
|
7
|
+
code: number;
|
|
8
|
+
|
|
9
|
+
constructor(
|
|
10
|
+
message: string,
|
|
11
|
+
code: number = JsonRpcErrorCodes.INTERNAL_ERROR,
|
|
12
|
+
) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.code = code;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
19
|
+
|
|
20
|
+
export class McpMethodNotFoundError extends McpError {
|
|
21
|
+
name = "McpMethodNotFoundError";
|
|
22
|
+
|
|
23
|
+
constructor(method: string) {
|
|
24
|
+
super(`Method not found: ${method}`, JsonRpcErrorCodes.METHOD_NOT_FOUND);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
29
|
+
|
|
30
|
+
export class McpToolNotFoundError extends McpError {
|
|
31
|
+
name = "McpToolNotFoundError";
|
|
32
|
+
tool: string;
|
|
33
|
+
|
|
34
|
+
constructor(tool: string) {
|
|
35
|
+
super(`Tool not found: ${tool}`, JsonRpcErrorCodes.METHOD_NOT_FOUND);
|
|
36
|
+
this.tool = tool;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
41
|
+
|
|
42
|
+
export class McpResourceNotFoundError extends McpError {
|
|
43
|
+
name = "McpResourceNotFoundError";
|
|
44
|
+
uri: string;
|
|
45
|
+
|
|
46
|
+
constructor(uri: string) {
|
|
47
|
+
super(`Resource not found: ${uri}`, JsonRpcErrorCodes.METHOD_NOT_FOUND);
|
|
48
|
+
this.uri = uri;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
53
|
+
|
|
54
|
+
export class McpPromptNotFoundError extends McpError {
|
|
55
|
+
name = "McpPromptNotFoundError";
|
|
56
|
+
prompt: string;
|
|
57
|
+
|
|
58
|
+
constructor(prompt: string) {
|
|
59
|
+
super(`Prompt not found: ${prompt}`, JsonRpcErrorCodes.METHOD_NOT_FOUND);
|
|
60
|
+
this.prompt = prompt;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
65
|
+
|
|
66
|
+
export class McpInvalidParamsError extends McpError {
|
|
67
|
+
name = "McpInvalidParamsError";
|
|
68
|
+
|
|
69
|
+
constructor(message: string) {
|
|
70
|
+
super(message, JsonRpcErrorCodes.INVALID_PARAMS);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { AlephaError } from "alepha";
|
|
2
|
+
import type {
|
|
3
|
+
JsonRpcError,
|
|
4
|
+
JsonRpcNotification,
|
|
5
|
+
JsonRpcRequest,
|
|
6
|
+
JsonRpcResponse,
|
|
7
|
+
} from "../interfaces/McpTypes.ts";
|
|
8
|
+
|
|
9
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
10
|
+
// Constants
|
|
11
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
export const JSONRPC_VERSION = "2.0" as const;
|
|
14
|
+
|
|
15
|
+
export const MCP_PROTOCOL_VERSION = "2024-11-05" as const;
|
|
16
|
+
|
|
17
|
+
export const JsonRpcErrorCodes = {
|
|
18
|
+
PARSE_ERROR: -32700,
|
|
19
|
+
INVALID_REQUEST: -32600,
|
|
20
|
+
METHOD_NOT_FOUND: -32601,
|
|
21
|
+
INVALID_PARAMS: -32602,
|
|
22
|
+
INTERNAL_ERROR: -32603,
|
|
23
|
+
} as const;
|
|
24
|
+
|
|
25
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
26
|
+
// Response Builders
|
|
27
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
28
|
+
|
|
29
|
+
export function createResponse(
|
|
30
|
+
id: string | number,
|
|
31
|
+
result: unknown,
|
|
32
|
+
): JsonRpcResponse {
|
|
33
|
+
return {
|
|
34
|
+
jsonrpc: JSONRPC_VERSION,
|
|
35
|
+
id,
|
|
36
|
+
result,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function createErrorResponse(
|
|
41
|
+
id: string | number,
|
|
42
|
+
error: JsonRpcError,
|
|
43
|
+
): JsonRpcResponse {
|
|
44
|
+
return {
|
|
45
|
+
jsonrpc: JSONRPC_VERSION,
|
|
46
|
+
id,
|
|
47
|
+
error,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function createNotification(
|
|
52
|
+
method: string,
|
|
53
|
+
params?: Record<string, unknown>,
|
|
54
|
+
): JsonRpcNotification {
|
|
55
|
+
return {
|
|
56
|
+
jsonrpc: JSONRPC_VERSION,
|
|
57
|
+
method,
|
|
58
|
+
params,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
63
|
+
// Error Builders
|
|
64
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
65
|
+
|
|
66
|
+
export function createParseError(message = "Parse error"): JsonRpcError {
|
|
67
|
+
return {
|
|
68
|
+
code: JsonRpcErrorCodes.PARSE_ERROR,
|
|
69
|
+
message,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export function createInvalidRequestError(
|
|
74
|
+
message = "Invalid request",
|
|
75
|
+
): JsonRpcError {
|
|
76
|
+
return {
|
|
77
|
+
code: JsonRpcErrorCodes.INVALID_REQUEST,
|
|
78
|
+
message,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function createMethodNotFoundError(method: string): JsonRpcError {
|
|
83
|
+
return {
|
|
84
|
+
code: JsonRpcErrorCodes.METHOD_NOT_FOUND,
|
|
85
|
+
message: `Method not found: ${method}`,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function createInvalidParamsError(message: string): JsonRpcError {
|
|
90
|
+
return {
|
|
91
|
+
code: JsonRpcErrorCodes.INVALID_PARAMS,
|
|
92
|
+
message,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function createInternalError(message: string): JsonRpcError {
|
|
97
|
+
return {
|
|
98
|
+
code: JsonRpcErrorCodes.INTERNAL_ERROR,
|
|
99
|
+
message,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
104
|
+
// Message Parsing
|
|
105
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
106
|
+
|
|
107
|
+
export function parseMessage(data: string): JsonRpcRequest {
|
|
108
|
+
let parsed: unknown;
|
|
109
|
+
|
|
110
|
+
try {
|
|
111
|
+
parsed = JSON.parse(data);
|
|
112
|
+
} catch {
|
|
113
|
+
throw new JsonRpcParseError("Invalid JSON");
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (!isValidJsonRpcRequest(parsed)) {
|
|
117
|
+
throw new JsonRpcParseError("Invalid JSON-RPC request");
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return parsed;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export function isValidJsonRpcRequest(value: unknown): value is JsonRpcRequest {
|
|
124
|
+
if (typeof value !== "object" || value === null) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const obj = value as Record<string, unknown>;
|
|
129
|
+
|
|
130
|
+
if (obj.jsonrpc !== JSONRPC_VERSION) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (typeof obj.method !== "string") {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (
|
|
139
|
+
obj.id !== undefined &&
|
|
140
|
+
typeof obj.id !== "string" &&
|
|
141
|
+
typeof obj.id !== "number"
|
|
142
|
+
) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (obj.params !== undefined && typeof obj.params !== "object") {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export function isNotification(request: JsonRpcRequest): boolean {
|
|
154
|
+
return request.id === undefined;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
158
|
+
// Errors
|
|
159
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
160
|
+
|
|
161
|
+
export class JsonRpcParseError extends AlephaError {
|
|
162
|
+
name = "JsonRpcParseError";
|
|
163
|
+
}
|