alepha 0.14.1 → 0.14.3
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 +3 -3
- package/dist/api/audits/index.browser.js +5 -5
- package/dist/api/audits/index.browser.js.map +1 -1
- package/dist/api/audits/index.d.ts +784 -784
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/audits/index.js +13 -13
- package/dist/api/audits/index.js.map +1 -1
- package/dist/api/files/index.browser.js +5 -5
- package/dist/api/files/index.browser.js.map +1 -1
- package/dist/api/files/index.d.ts +57 -57
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +71 -71
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.browser.js +5 -5
- package/dist/api/jobs/index.browser.js.map +1 -1
- package/dist/api/jobs/index.d.ts +165 -165
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/jobs/index.js +10 -10
- package/dist/api/jobs/index.js.map +1 -1
- package/dist/api/notifications/index.browser.js +10 -10
- package/dist/api/notifications/index.browser.js.map +1 -1
- package/dist/api/notifications/index.d.ts +583 -171
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/notifications/index.js +12 -12
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/parameters/index.browser.js +163 -10
- package/dist/api/parameters/index.browser.js.map +1 -1
- package/dist/api/parameters/index.d.ts +281 -276
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/parameters/index.js +196 -91
- package/dist/api/parameters/index.js.map +1 -1
- package/dist/api/users/index.browser.js +19 -19
- package/dist/api/users/index.browser.js.map +1 -1
- package/dist/api/users/index.d.ts +778 -764
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +831 -596
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.browser.js +6 -6
- package/dist/api/verifications/index.browser.js.map +1 -1
- package/dist/api/verifications/index.d.ts +125 -125
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/api/verifications/index.js +6 -6
- package/dist/api/verifications/index.js.map +1 -1
- package/dist/batch/index.js.map +1 -1
- package/dist/bin/index.d.ts +1 -2
- package/dist/bin/index.js +0 -1
- package/dist/bin/index.js.map +1 -1
- package/dist/cache/core/index.js.map +1 -1
- package/dist/cli/index.d.ts +249 -218
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +951 -821
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +40 -0
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +97 -17
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +14 -18
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +29 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +21 -24
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +21 -24
- package/dist/core/index.native.js.map +1 -1
- package/dist/datetime/index.js.map +1 -1
- package/dist/fake/index.js +195 -168
- package/dist/fake/index.js.map +1 -1
- package/dist/file/index.d.ts +8 -0
- package/dist/file/index.d.ts.map +1 -1
- package/dist/file/index.js +3 -0
- package/dist/file/index.js.map +1 -1
- package/dist/lock/redis/index.js.map +1 -1
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/index.browser.js +26 -5
- package/dist/orm/index.browser.js.map +1 -1
- package/dist/orm/index.d.ts +146 -121
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +49 -24
- package/dist/orm/index.js.map +1 -1
- package/dist/redis/index.js.map +1 -1
- package/dist/retry/index.js.map +1 -1
- package/dist/router/index.js.map +1 -1
- package/dist/scheduler/index.d.ts +6 -6
- package/dist/scheduler/index.js.map +1 -1
- package/dist/security/index.d.ts +29 -29
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +1 -1
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +171 -155
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +0 -1
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cache/index.js.map +1 -1
- package/dist/server/compress/index.d.ts.map +1 -1
- package/dist/server/compress/index.js +2 -0
- package/dist/server/compress/index.js.map +1 -1
- package/dist/server/cookies/index.browser.js.map +1 -1
- package/dist/server/cookies/index.js.map +1 -1
- package/dist/server/core/index.browser.js.map +1 -1
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +1 -1
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/health/index.d.ts +17 -17
- package/dist/server/helmet/index.js.map +1 -1
- package/dist/server/links/index.browser.js +22 -6
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +46 -44
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +24 -41
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/multipart/index.js.map +1 -1
- package/dist/server/rate-limit/index.js.map +1 -1
- package/dist/server/security/index.js.map +1 -1
- package/dist/server/swagger/index.d.ts +2 -1
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js +8 -3
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/thread/index.js.map +1 -1
- package/dist/topic/core/index.js.map +1 -1
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +12 -4
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.browser.js.map +1 -1
- package/dist/websocket/index.js.map +1 -1
- package/package.json +7 -7
- package/src/api/audits/controllers/{AuditController.ts → AdminAuditController.ts} +5 -6
- package/src/api/audits/entities/audits.ts +5 -5
- package/src/api/audits/index.browser.ts +1 -1
- package/src/api/audits/index.ts +3 -3
- package/src/api/audits/primitives/$audit.spec.ts +276 -0
- package/src/api/audits/services/AuditService.spec.ts +495 -0
- package/src/api/files/__tests__/$bucket.spec.ts +91 -0
- package/src/api/files/controllers/AdminFileStatsController.spec.ts +166 -0
- package/src/api/files/controllers/{StorageStatsController.ts → AdminFileStatsController.ts} +2 -2
- package/src/api/files/controllers/FileController.spec.ts +558 -0
- package/src/api/files/controllers/FileController.ts +4 -5
- package/src/api/files/entities/files.ts +5 -5
- package/src/api/files/index.browser.ts +1 -1
- package/src/api/files/index.ts +4 -4
- package/src/api/files/jobs/FileJobs.spec.ts +52 -0
- package/src/api/files/services/FileService.spec.ts +109 -0
- package/src/api/jobs/__tests__/JobController.spec.ts +343 -0
- package/src/api/jobs/controllers/{JobController.ts → AdminJobController.ts} +2 -2
- package/src/api/jobs/entities/jobExecutions.ts +5 -5
- package/src/api/jobs/index.ts +3 -3
- package/src/api/jobs/primitives/$job.spec.ts +476 -0
- package/src/api/notifications/controllers/{NotificationController.ts → AdminNotificationController.ts} +4 -5
- package/src/api/notifications/entities/notifications.ts +5 -5
- package/src/api/notifications/index.browser.ts +1 -1
- package/src/api/notifications/index.ts +4 -4
- package/src/api/parameters/controllers/{ConfigController.ts → AdminConfigController.ts} +46 -107
- package/src/api/parameters/entities/parameters.ts +7 -17
- package/src/api/parameters/index.ts +3 -3
- package/src/api/parameters/primitives/$config.spec.ts +356 -0
- package/src/api/parameters/schemas/activateConfigBodySchema.ts +12 -0
- package/src/api/parameters/schemas/checkScheduledResponseSchema.ts +8 -0
- package/src/api/parameters/schemas/configCurrentResponseSchema.ts +13 -0
- package/src/api/parameters/schemas/configHistoryResponseSchema.ts +9 -0
- package/src/api/parameters/schemas/configNameParamSchema.ts +10 -0
- package/src/api/parameters/schemas/configNamesResponseSchema.ts +8 -0
- package/src/api/parameters/schemas/configTreeNodeSchema.ts +13 -0
- package/src/api/parameters/schemas/configVersionParamSchema.ts +9 -0
- package/src/api/parameters/schemas/configVersionResponseSchema.ts +9 -0
- package/src/api/parameters/schemas/configsByStatusResponseSchema.ts +9 -0
- package/src/api/parameters/schemas/createConfigVersionBodySchema.ts +24 -0
- package/src/api/parameters/schemas/index.ts +15 -0
- package/src/api/parameters/schemas/parameterResponseSchema.ts +26 -0
- package/src/api/parameters/schemas/parameterStatusSchema.ts +13 -0
- package/src/api/parameters/schemas/rollbackConfigBodySchema.ts +15 -0
- package/src/api/parameters/schemas/statusParamSchema.ts +9 -0
- package/src/api/users/__tests__/EmailVerification.spec.ts +369 -0
- package/src/api/users/__tests__/PasswordReset.spec.ts +550 -0
- package/src/api/users/controllers/AdminIdentityController.spec.ts +365 -0
- package/src/api/users/controllers/{IdentityController.ts → AdminIdentityController.ts} +3 -4
- package/src/api/users/controllers/AdminSessionController.spec.ts +274 -0
- package/src/api/users/controllers/{SessionController.ts → AdminSessionController.ts} +3 -4
- package/src/api/users/controllers/AdminUserController.spec.ts +372 -0
- package/src/api/users/controllers/AdminUserController.ts +116 -0
- package/src/api/users/controllers/UserController.ts +4 -107
- package/src/api/users/controllers/UserRealmController.ts +3 -0
- package/src/api/users/entities/identities.ts +6 -6
- package/src/api/users/entities/sessions.ts +6 -6
- package/src/api/users/entities/users.ts +9 -9
- package/src/api/users/index.ts +13 -6
- package/src/api/users/primitives/$userRealm.ts +13 -8
- package/src/api/users/services/CredentialService.spec.ts +509 -0
- package/src/api/users/services/CredentialService.ts +46 -0
- package/src/api/users/services/IdentityService.ts +15 -0
- package/src/api/users/services/RegistrationService.spec.ts +630 -0
- package/src/api/users/services/RegistrationService.ts +18 -0
- package/src/api/users/services/SessionService.spec.ts +301 -0
- package/src/api/users/services/SessionService.ts +110 -1
- package/src/api/users/services/UserService.ts +67 -2
- package/src/api/verifications/__tests__/CodeVerification.spec.ts +318 -0
- package/src/api/verifications/__tests__/LinkVerification.spec.ts +279 -0
- package/src/api/verifications/entities/verifications.ts +6 -6
- package/src/api/verifications/jobs/VerificationJobs.spec.ts +50 -0
- package/src/batch/__tests__/startup-buffering.spec.ts +458 -0
- package/src/batch/primitives/$batch.spec.ts +766 -0
- package/src/batch/providers/BatchProvider.spec.ts +786 -0
- package/src/bin/index.ts +0 -1
- package/src/bucket/__tests__/shared.ts +194 -0
- package/src/bucket/primitives/$bucket.spec.ts +104 -0
- package/src/bucket/providers/FileStorageProvider.spec.ts +13 -0
- package/src/bucket/providers/LocalFileStorageProvider.spec.ts +77 -0
- package/src/bucket/providers/MemoryFileStorageProvider.spec.ts +82 -0
- package/src/cache/core/__tests__/shared.ts +377 -0
- package/src/cache/core/primitives/$cache.spec.ts +111 -0
- package/src/cache/redis/__tests__/cache-redis.spec.ts +70 -0
- package/src/cli/apps/AlephaCli.ts +54 -16
- package/src/cli/apps/AlephaPackageBuilderCli.ts +2 -1
- package/src/cli/assets/appRouterTs.ts +1 -1
- package/src/cli/commands/{ViteCommands.ts → build.ts} +2 -105
- package/src/cli/commands/clean.ts +14 -0
- package/src/cli/commands/{DrizzleCommands.ts → db.ts} +10 -117
- package/src/cli/commands/{DeployCommands.ts → deploy.ts} +1 -1
- package/src/cli/commands/dev.ts +69 -0
- package/src/cli/commands/format.ts +17 -0
- package/src/cli/commands/gen/changelog.spec.ts +315 -0
- package/src/cli/commands/{ChangelogCommands.ts → gen/changelog.ts} +16 -31
- package/src/cli/commands/gen/openapi.ts +71 -0
- package/src/cli/commands/gen.ts +18 -0
- package/src/cli/commands/{CoreCommands.ts → init.ts} +4 -40
- package/src/cli/commands/lint.ts +17 -0
- package/src/cli/commands/root.ts +41 -0
- package/src/cli/commands/run.ts +24 -0
- package/src/cli/commands/test.ts +42 -0
- package/src/cli/commands/typecheck.ts +24 -0
- package/src/cli/commands/{VerifyCommands.ts → verify.ts} +1 -13
- package/src/cli/defineConfig.ts +10 -1
- package/src/cli/index.ts +17 -7
- package/src/cli/services/AlephaCliUtils.ts +71 -32
- package/src/cli/services/GitMessageParser.ts +1 -1
- package/src/command/helpers/Asker.spec.ts +127 -0
- package/src/command/helpers/Runner.spec.ts +126 -0
- package/src/command/primitives/$command.spec.ts +1588 -0
- package/src/command/providers/CliProvider.ts +74 -24
- package/src/core/Alepha.ts +52 -4
- package/src/core/__tests__/Alepha-emit.spec.ts +22 -0
- package/src/core/__tests__/Alepha-graph.spec.ts +93 -0
- package/src/core/__tests__/Alepha-has.spec.ts +41 -0
- package/src/core/__tests__/Alepha-inject.spec.ts +93 -0
- package/src/core/__tests__/Alepha-register.spec.ts +81 -0
- package/src/core/__tests__/Alepha-start.spec.ts +176 -0
- package/src/core/__tests__/Alepha-with.spec.ts +14 -0
- package/src/core/__tests__/TypeBox-usecases.spec.ts +35 -0
- package/src/core/__tests__/TypeBoxLocale.spec.ts +15 -0
- package/src/core/__tests__/descriptor.spec.ts +34 -0
- package/src/core/__tests__/fixtures/A.ts +5 -0
- package/src/core/__tests__/pagination.spec.ts +77 -0
- package/src/core/helpers/jsonSchemaToTypeBox.ts +2 -2
- package/src/core/primitives/$atom.spec.ts +43 -0
- package/src/core/primitives/$hook.spec.ts +130 -0
- package/src/core/primitives/$inject.spec.ts +175 -0
- package/src/core/primitives/$module.spec.ts +115 -0
- package/src/core/providers/CodecManager.spec.ts +740 -0
- package/src/core/providers/EventManager.spec.ts +762 -0
- package/src/core/providers/EventManager.ts +4 -0
- package/src/core/providers/StateManager.spec.ts +365 -0
- package/src/core/providers/TypeProvider.spec.ts +1607 -0
- package/src/core/providers/TypeProvider.ts +20 -26
- package/src/datetime/primitives/$interval.spec.ts +103 -0
- package/src/datetime/providers/DateTimeProvider.spec.ts +86 -0
- package/src/email/primitives/$email.spec.ts +175 -0
- package/src/email/providers/LocalEmailProvider.spec.ts +341 -0
- package/src/fake/__tests__/keyName.example.ts +40 -0
- package/src/fake/__tests__/keyName.spec.ts +152 -0
- package/src/fake/__tests__/module.example.ts +32 -0
- package/src/fake/providers/FakeProvider.spec.ts +438 -0
- package/src/file/providers/FileSystemProvider.ts +8 -0
- package/src/file/providers/NodeFileSystemProvider.spec.ts +418 -0
- package/src/file/providers/NodeFileSystemProvider.ts +5 -0
- package/src/file/services/FileDetector.spec.ts +591 -0
- package/src/lock/core/__tests__/shared.ts +190 -0
- package/src/lock/core/providers/MemoryLockProvider.spec.ts +25 -0
- package/src/lock/redis/providers/RedisLockProvider.spec.ts +25 -0
- package/src/logger/__tests__/SimpleFormatterProvider.spec.ts +109 -0
- package/src/logger/primitives/$logger.spec.ts +108 -0
- package/src/logger/services/Logger.spec.ts +295 -0
- package/src/mcp/__tests__/errors.spec.ts +175 -0
- package/src/mcp/__tests__/integration.spec.ts +450 -0
- package/src/mcp/helpers/jsonrpc.spec.ts +380 -0
- package/src/mcp/primitives/$prompt.spec.ts +468 -0
- package/src/mcp/primitives/$resource.spec.ts +390 -0
- package/src/mcp/primitives/$tool.spec.ts +406 -0
- package/src/mcp/providers/McpServerProvider.spec.ts +797 -0
- package/src/orm/__tests__/$repository-crud.spec.ts +276 -0
- package/src/orm/__tests__/$repository-hooks.spec.ts +325 -0
- package/src/orm/__tests__/$repository-orderBy.spec.ts +128 -0
- package/src/orm/__tests__/$repository-pagination-sort.spec.ts +149 -0
- package/src/orm/__tests__/$repository-save.spec.ts +37 -0
- package/src/orm/__tests__/ModelBuilder-integration.spec.ts +490 -0
- package/src/orm/__tests__/ModelBuilder-types.spec.ts +186 -0
- package/src/orm/__tests__/PostgresProvider.spec.ts +46 -0
- package/src/orm/__tests__/delete-returning.spec.ts +256 -0
- package/src/orm/__tests__/deletedAt.spec.ts +80 -0
- package/src/orm/__tests__/enums.spec.ts +315 -0
- package/src/orm/__tests__/execute.spec.ts +72 -0
- package/src/orm/__tests__/fixtures/bigEntitySchema.ts +65 -0
- package/src/orm/__tests__/fixtures/userEntitySchema.ts +27 -0
- package/src/orm/__tests__/joins.spec.ts +1114 -0
- package/src/orm/__tests__/page.spec.ts +287 -0
- package/src/orm/__tests__/primaryKey.spec.ts +87 -0
- package/src/orm/__tests__/query-date-encoding.spec.ts +402 -0
- package/src/orm/__tests__/ref-auto-onDelete.spec.ts +156 -0
- package/src/orm/__tests__/references.spec.ts +102 -0
- package/src/orm/__tests__/security.spec.ts +710 -0
- package/src/orm/__tests__/sqlite.spec.ts +111 -0
- package/src/orm/__tests__/string-operators.spec.ts +429 -0
- package/src/orm/__tests__/timestamps.spec.ts +388 -0
- package/src/orm/__tests__/validation.spec.ts +183 -0
- package/src/orm/__tests__/version.spec.ts +64 -0
- package/src/orm/helpers/parseQueryString.spec.ts +196 -0
- package/src/orm/index.browser.ts +1 -1
- package/src/orm/index.ts +10 -6
- package/src/orm/primitives/$repository.spec.ts +137 -0
- package/src/orm/primitives/$sequence.spec.ts +29 -0
- package/src/orm/primitives/$transaction.spec.ts +82 -0
- package/src/orm/providers/{PostgresTypeProvider.ts → DatabaseTypeProvider.ts} +25 -3
- package/src/orm/providers/drivers/BunPostgresProvider.ts +3 -3
- package/src/orm/providers/drivers/BunSqliteProvider.ts +1 -1
- package/src/orm/providers/drivers/CloudflareD1Provider.ts +1 -1
- package/src/orm/providers/drivers/DatabaseProvider.ts +1 -1
- package/src/orm/providers/drivers/NodePostgresProvider.ts +3 -3
- package/src/orm/providers/drivers/NodeSqliteProvider.ts +1 -1
- package/src/orm/providers/drivers/PglitePostgresProvider.ts +2 -2
- package/src/orm/services/ModelBuilder.spec.ts +575 -0
- package/src/orm/services/Repository.spec.ts +137 -0
- package/src/queue/core/__tests__/shared.ts +143 -0
- package/src/queue/core/providers/MemoryQueueProvider.spec.ts +23 -0
- package/src/queue/core/providers/WorkerProvider.spec.ts +378 -0
- package/src/queue/redis/providers/RedisQueueProvider.spec.ts +23 -0
- package/src/redis/__tests__/redis.spec.ts +58 -0
- package/src/retry/primitives/$retry.spec.ts +234 -0
- package/src/retry/providers/RetryProvider.spec.ts +438 -0
- package/src/router/__tests__/match.spec.ts +252 -0
- package/src/router/providers/RouterProvider.spec.ts +197 -0
- package/src/scheduler/__tests__/$scheduler-cron.spec.ts +25 -0
- package/src/scheduler/__tests__/$scheduler-interval.spec.ts +25 -0
- package/src/scheduler/__tests__/shared.ts +77 -0
- package/src/security/__tests__/bug-1-wildcard-after-start.spec.ts +229 -0
- package/src/security/__tests__/bug-2-password-validation.spec.ts +245 -0
- package/src/security/__tests__/bug-3-regex-vulnerability.spec.ts +407 -0
- package/src/security/__tests__/bug-4-oauth2-validation.spec.ts +439 -0
- package/src/security/__tests__/multi-layer-permissions.spec.ts +522 -0
- package/src/security/primitives/$permission.spec.ts +30 -0
- package/src/security/primitives/$permission.ts +2 -2
- package/src/security/primitives/$realm.spec.ts +101 -0
- package/src/security/primitives/$role.spec.ts +52 -0
- package/src/security/primitives/$serviceAccount.spec.ts +61 -0
- package/src/security/providers/SecurityProvider.spec.ts +350 -0
- package/src/server/auth/providers/ServerAuthProvider.ts +0 -2
- package/src/server/cache/providers/ServerCacheProvider.spec.ts +942 -0
- package/src/server/compress/providers/ServerCompressProvider.spec.ts +31 -0
- package/src/server/compress/providers/ServerCompressProvider.ts +2 -0
- package/src/server/cookies/providers/ServerCookiesProvider.spec.ts +253 -0
- package/src/server/core/__tests__/ServerRouterProvider-getRoutes.spec.ts +334 -0
- package/src/server/core/__tests__/ServerRouterProvider-requestId.spec.ts +129 -0
- package/src/server/core/primitives/$action.spec.ts +191 -0
- package/src/server/core/primitives/$route.spec.ts +65 -0
- package/src/server/core/providers/ServerBodyParserProvider.spec.ts +93 -0
- package/src/server/core/providers/ServerLoggerProvider.spec.ts +100 -0
- package/src/server/core/providers/ServerProvider.ts +3 -1
- package/src/server/core/services/HttpClient.spec.ts +123 -0
- package/src/server/core/services/UserAgentParser.spec.ts +111 -0
- package/src/server/cors/providers/ServerCorsProvider.spec.ts +481 -0
- package/src/server/health/providers/ServerHealthProvider.spec.ts +22 -0
- package/src/server/helmet/providers/ServerHelmetProvider.spec.ts +105 -0
- package/src/server/links/__tests__/$action.spec.ts +238 -0
- package/src/server/links/__tests__/fixtures/CrudApp.ts +122 -0
- package/src/server/links/__tests__/requestId.spec.ts +120 -0
- package/src/server/links/primitives/$remote.spec.ts +228 -0
- package/src/server/links/providers/LinkProvider.spec.ts +54 -0
- package/src/server/links/providers/LinkProvider.ts +49 -3
- package/src/server/links/providers/ServerLinksProvider.ts +1 -53
- package/src/server/links/schemas/apiLinksResponseSchema.ts +7 -0
- package/src/server/metrics/providers/ServerMetricsProvider.spec.ts +25 -0
- package/src/server/multipart/providers/ServerMultipartProvider.spec.ts +528 -0
- package/src/server/proxy/primitives/$proxy.spec.ts +87 -0
- package/src/server/rate-limit/__tests__/ActionRateLimit.spec.ts +211 -0
- package/src/server/rate-limit/providers/ServerRateLimitProvider.spec.ts +344 -0
- package/src/server/security/__tests__/BasicAuth.spec.ts +684 -0
- package/src/server/security/__tests__/ServerSecurityProvider-realm.spec.ts +388 -0
- package/src/server/security/providers/ServerSecurityProvider.spec.ts +123 -0
- package/src/server/static/primitives/$serve.spec.ts +193 -0
- package/src/server/swagger/__tests__/ui.spec.ts +52 -0
- package/src/server/swagger/primitives/$swagger.spec.ts +193 -0
- package/src/server/swagger/providers/ServerSwaggerProvider.ts +18 -8
- package/src/sms/primitives/$sms.spec.ts +165 -0
- package/src/sms/providers/LocalSmsProvider.spec.ts +224 -0
- package/src/sms/providers/MemorySmsProvider.spec.ts +193 -0
- package/src/thread/primitives/$thread.spec.ts +186 -0
- package/src/topic/core/__tests__/shared.ts +144 -0
- package/src/topic/core/providers/MemoryTopicProvider.spec.ts +23 -0
- package/src/topic/redis/providers/RedisTopicProvider.spec.ts +23 -0
- package/src/vite/plugins/viteAlephaDev.ts +16 -4
- package/src/vite/tasks/runAlepha.ts +7 -1
- package/src/websocket/__tests__/$websocket-new.spec.ts +195 -0
- package/src/websocket/primitives/$channel.spec.ts +30 -0
- package/src/cli/commands/BiomeCommands.ts +0 -29
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { access, readFile, unlink, writeFile } from "node:fs/promises";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
-
import { $
|
|
4
|
+
import { $inject, OPTIONS, t } from "alepha";
|
|
5
5
|
import { $command } from "alepha/command";
|
|
6
6
|
import { $logger } from "alepha/logger";
|
|
7
7
|
import {
|
|
@@ -18,78 +18,10 @@ import {
|
|
|
18
18
|
import type * as Vite from "vite";
|
|
19
19
|
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
20
20
|
|
|
21
|
-
export class
|
|
21
|
+
export class BuildCommand {
|
|
22
22
|
protected readonly log = $logger();
|
|
23
23
|
protected readonly utils = $inject(AlephaCliUtils);
|
|
24
24
|
|
|
25
|
-
protected readonly env = $env(
|
|
26
|
-
t.object({
|
|
27
|
-
VITEST_ARGS: t.string({ default: "" }),
|
|
28
|
-
}),
|
|
29
|
-
);
|
|
30
|
-
|
|
31
|
-
public readonly run = $command({
|
|
32
|
-
name: "run",
|
|
33
|
-
hide: true,
|
|
34
|
-
description: "Run a TypeScript file directly",
|
|
35
|
-
flags: t.object({
|
|
36
|
-
watch: t.optional(
|
|
37
|
-
t.boolean({ description: "Watch file for changes", alias: "w" }),
|
|
38
|
-
),
|
|
39
|
-
}),
|
|
40
|
-
summary: false,
|
|
41
|
-
args: t.text({ title: "path", description: "Filepath to run" }),
|
|
42
|
-
handler: async ({ args, flags, root }) => {
|
|
43
|
-
await this.utils.ensureTsConfig(root);
|
|
44
|
-
await this.utils.exec(`tsx ${flags.watch ? "watch " : ""}${args}`);
|
|
45
|
-
},
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Will run the project in watch mode.
|
|
50
|
-
*
|
|
51
|
-
* - If an index.html file is found in the project root, it will run Vite in dev mode.
|
|
52
|
-
* - Otherwise, it will look for a server entry file and run it with tsx in watch mode.
|
|
53
|
-
*/
|
|
54
|
-
public readonly dev = $command({
|
|
55
|
-
name: "dev",
|
|
56
|
-
description: "Run the project in development mode",
|
|
57
|
-
args: t.optional(t.text({ title: "path", description: "Filepath to run" })),
|
|
58
|
-
handler: async ({ args, root }) => {
|
|
59
|
-
const expo = await this.utils.hasExpo(root);
|
|
60
|
-
|
|
61
|
-
await this.utils.ensureConfig(root, {
|
|
62
|
-
viteConfigTs: !expo,
|
|
63
|
-
tsconfigJson: true,
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
if (expo) {
|
|
67
|
-
await this.utils.exec(`expo start`);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const entry = await boot.getServerEntry(root, args);
|
|
72
|
-
this.log.trace("Entry file found", { entry });
|
|
73
|
-
|
|
74
|
-
try {
|
|
75
|
-
await access(join(root, "index.html"));
|
|
76
|
-
} catch {
|
|
77
|
-
this.log.trace("No index.html found, running entry file with tsx");
|
|
78
|
-
let cmd = "tsx --watch";
|
|
79
|
-
if (await this.utils.exists(root, ".env")) {
|
|
80
|
-
cmd += ` --env-file=./.env`;
|
|
81
|
-
}
|
|
82
|
-
cmd += ` ${entry}`;
|
|
83
|
-
await this.utils.exec(cmd);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// Ensure vite is installed before running
|
|
88
|
-
await this.utils.ensureDependency(root, "vite");
|
|
89
|
-
await this.utils.exec(`vite`);
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
|
-
|
|
93
25
|
public readonly build = $command({
|
|
94
26
|
name: "build",
|
|
95
27
|
description: "Build the project for production",
|
|
@@ -313,39 +245,4 @@ export class ViteCommands {
|
|
|
313
245
|
}
|
|
314
246
|
},
|
|
315
247
|
});
|
|
316
|
-
|
|
317
|
-
public readonly test = $command({
|
|
318
|
-
name: "test",
|
|
319
|
-
description: "Run tests using Vitest",
|
|
320
|
-
flags: t.object({
|
|
321
|
-
config: t.optional(
|
|
322
|
-
t.string({
|
|
323
|
-
description: "Path to Vitest config file",
|
|
324
|
-
alias: "c",
|
|
325
|
-
}),
|
|
326
|
-
),
|
|
327
|
-
}),
|
|
328
|
-
env: t.object({
|
|
329
|
-
VITEST_ARGS: t.optional(
|
|
330
|
-
t.string({
|
|
331
|
-
default: "",
|
|
332
|
-
description:
|
|
333
|
-
"Additional arguments to pass to Vitest. E.g., --coverage",
|
|
334
|
-
}),
|
|
335
|
-
),
|
|
336
|
-
}),
|
|
337
|
-
handler: async ({ root, flags, env }) => {
|
|
338
|
-
await this.utils.ensureConfig(root, {
|
|
339
|
-
tsconfigJson: true,
|
|
340
|
-
viteConfigTs: true,
|
|
341
|
-
});
|
|
342
|
-
|
|
343
|
-
// Ensure vitest is installed before running
|
|
344
|
-
await this.utils.ensureDependency(root, "vitest");
|
|
345
|
-
|
|
346
|
-
const config = flags.config ? `--config=${flags.config}` : "";
|
|
347
|
-
|
|
348
|
-
await this.utils.exec(`vitest run ${config} ${env.VITEST_ARGS}`);
|
|
349
|
-
},
|
|
350
|
-
});
|
|
351
248
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { $command } from "alepha/command";
|
|
2
|
+
|
|
3
|
+
export class CleanCommand {
|
|
4
|
+
/**
|
|
5
|
+
* Clean the project, removing the "dist" directory
|
|
6
|
+
*/
|
|
7
|
+
public readonly clean = $command({
|
|
8
|
+
name: "clean",
|
|
9
|
+
description: "Clean the project",
|
|
10
|
+
handler: async ({ run }) => {
|
|
11
|
+
await run.rm("./dist");
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
}
|
|
@@ -25,14 +25,14 @@ const drizzleCommandFlags = t.object({
|
|
|
25
25
|
),
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
-
export class
|
|
29
|
-
log = $logger();
|
|
30
|
-
utils = $inject(AlephaCliUtils);
|
|
28
|
+
export class DbCommand {
|
|
29
|
+
protected readonly log = $logger();
|
|
30
|
+
protected readonly utils = $inject(AlephaCliUtils);
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* Check if database migrations are up to date.
|
|
34
34
|
*/
|
|
35
|
-
check = $command({
|
|
35
|
+
protected readonly check = $command({
|
|
36
36
|
name: "check-migrations",
|
|
37
37
|
description: "Check if database migration files are up to date",
|
|
38
38
|
args: t.optional(
|
|
@@ -74,7 +74,7 @@ export class DrizzleCommands {
|
|
|
74
74
|
).catch(() => null);
|
|
75
75
|
|
|
76
76
|
if (!journalFile) {
|
|
77
|
-
this.log.info(
|
|
77
|
+
this.log.info("No migration journal found.");
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
80
80
|
|
|
@@ -130,14 +130,8 @@ export class DrizzleCommands {
|
|
|
130
130
|
|
|
131
131
|
/**
|
|
132
132
|
* Generate database migration files
|
|
133
|
-
*
|
|
134
|
-
* - Loads the Alepha instance from the specified entry file.
|
|
135
|
-
* - Retrieves all repository primitives to gather database models.
|
|
136
|
-
* - Creates temporary entity definitions based on the current database schema.
|
|
137
|
-
* - Writes these definitions to a temporary schema file. (node_modules/.db/entities.ts)
|
|
138
|
-
* - Invokes Drizzle Kit's CLI to generate migration files based on the current schema.
|
|
139
133
|
*/
|
|
140
|
-
generate = $command({
|
|
134
|
+
protected readonly generate = $command({
|
|
141
135
|
name: "generate",
|
|
142
136
|
description: "Generate migration files based on current database schema",
|
|
143
137
|
summary: false,
|
|
@@ -175,13 +169,8 @@ export class DrizzleCommands {
|
|
|
175
169
|
|
|
176
170
|
/**
|
|
177
171
|
* Push database schema changes directly to the database
|
|
178
|
-
*
|
|
179
|
-
* - Loads the Alepha instance from the specified entry file.
|
|
180
|
-
* - Retrieves all repository primitives to gather database models.
|
|
181
|
-
* - Creates temporary entity definitions and Drizzle config.
|
|
182
|
-
* - Invokes Drizzle Kit's push command to apply schema changes directly.
|
|
183
172
|
*/
|
|
184
|
-
push = $command({
|
|
173
|
+
protected readonly push = $command({
|
|
185
174
|
name: "push",
|
|
186
175
|
description: "Push database schema changes directly to the database",
|
|
187
176
|
summary: false,
|
|
@@ -207,13 +196,8 @@ export class DrizzleCommands {
|
|
|
207
196
|
|
|
208
197
|
/**
|
|
209
198
|
* Apply pending database migrations
|
|
210
|
-
*
|
|
211
|
-
* - Loads the Alepha instance from the specified entry file.
|
|
212
|
-
* - Retrieves all repository primitives to gather database models.
|
|
213
|
-
* - Creates temporary entity definitions and Drizzle config.
|
|
214
|
-
* - Invokes Drizzle Kit's migrate command to apply pending migrations.
|
|
215
199
|
*/
|
|
216
|
-
migrate = $command({
|
|
200
|
+
protected readonly migrate = $command({
|
|
217
201
|
name: "migrate",
|
|
218
202
|
description: "Apply pending database migrations",
|
|
219
203
|
summary: false,
|
|
@@ -239,13 +223,8 @@ export class DrizzleCommands {
|
|
|
239
223
|
|
|
240
224
|
/**
|
|
241
225
|
* Launch Drizzle Studio database browser
|
|
242
|
-
*
|
|
243
|
-
* - Loads the Alepha instance from the specified entry file.
|
|
244
|
-
* - Retrieves all repository primitives to gather database models.
|
|
245
|
-
* - Creates temporary entity definitions and Drizzle config.
|
|
246
|
-
* - Invokes Drizzle Kit's studio command to launch the web-based database browser.
|
|
247
226
|
*/
|
|
248
|
-
studio = $command({
|
|
227
|
+
protected readonly studio = $command({
|
|
249
228
|
name: "studio",
|
|
250
229
|
description: "Launch Drizzle Studio database browser",
|
|
251
230
|
summary: false,
|
|
@@ -272,7 +251,7 @@ export class DrizzleCommands {
|
|
|
272
251
|
/**
|
|
273
252
|
* Parent command for database operations.
|
|
274
253
|
*/
|
|
275
|
-
db = $command({
|
|
254
|
+
public readonly db = $command({
|
|
276
255
|
name: "db",
|
|
277
256
|
description: "Database management commands",
|
|
278
257
|
children: [this.check, this.generate, this.push, this.migrate, this.studio],
|
|
@@ -283,11 +262,6 @@ export class DrizzleCommands {
|
|
|
283
262
|
|
|
284
263
|
/**
|
|
285
264
|
* Run a drizzle-kit command for all database providers in an Alepha instance.
|
|
286
|
-
*
|
|
287
|
-
* Iterates through all repository providers, prepares Drizzle config for each,
|
|
288
|
-
* and executes the specified drizzle-kit command.
|
|
289
|
-
*
|
|
290
|
-
* @param options - Configuration including command to run, flags, and logging
|
|
291
265
|
*/
|
|
292
266
|
public async runDrizzleKitCommand(options: {
|
|
293
267
|
root: string;
|
|
@@ -365,12 +339,6 @@ export class DrizzleCommands {
|
|
|
365
339
|
|
|
366
340
|
/**
|
|
367
341
|
* Prepare Drizzle configuration files for a database provider.
|
|
368
|
-
*
|
|
369
|
-
* Creates temporary entities.js and drizzle.config.js files needed
|
|
370
|
-
* for Drizzle Kit commands to run properly.
|
|
371
|
-
*
|
|
372
|
-
* @param options - Configuration options including kit, provider info, and paths
|
|
373
|
-
* @returns Path to the generated drizzle.config.js file
|
|
374
342
|
*/
|
|
375
343
|
public async prepareDrizzleConfig(options: {
|
|
376
344
|
kit: any;
|
|
@@ -473,79 +441,4 @@ export class DrizzleCommands {
|
|
|
473
441
|
options.rootDir,
|
|
474
442
|
);
|
|
475
443
|
}
|
|
476
|
-
|
|
477
|
-
// /**
|
|
478
|
-
// * Drop database schema (development only)
|
|
479
|
-
// *
|
|
480
|
-
// * @experimental
|
|
481
|
-
// */
|
|
482
|
-
// drop = $command({
|
|
483
|
-
// name: "db:drop",
|
|
484
|
-
// description: "Drop database schema (development only)",
|
|
485
|
-
// summary: false,
|
|
486
|
-
// args: t.optional(
|
|
487
|
-
// t.text({
|
|
488
|
-
// title: "path",
|
|
489
|
-
// description: "Path to the Alepha server entry file",
|
|
490
|
-
// }),
|
|
491
|
-
// ),
|
|
492
|
-
// flags: drizzleCommandFlags,
|
|
493
|
-
// handler: async ({ flags }) => {
|
|
494
|
-
// // TODO: Implement db:drop
|
|
495
|
-
// this.log.warn("db:drop is not yet implemented");
|
|
496
|
-
// if (flags.provider) {
|
|
497
|
-
// this.log.info(`Provider filter: ${flags.provider}`);
|
|
498
|
-
// }
|
|
499
|
-
// },
|
|
500
|
-
// });
|
|
501
|
-
//
|
|
502
|
-
// /**
|
|
503
|
-
// * Seed database with initial data
|
|
504
|
-
// *
|
|
505
|
-
// * @experimental
|
|
506
|
-
// */
|
|
507
|
-
// seed = $command({
|
|
508
|
-
// name: "db:seed",
|
|
509
|
-
// description: "Seed database with initial data",
|
|
510
|
-
// summary: false,
|
|
511
|
-
// args: t.optional(
|
|
512
|
-
// t.text({
|
|
513
|
-
// title: "path",
|
|
514
|
-
// description: "Path to the Alepha server entry file",
|
|
515
|
-
// }),
|
|
516
|
-
// ),
|
|
517
|
-
// flags: drizzleCommandFlags,
|
|
518
|
-
// handler: async ({ flags }) => {
|
|
519
|
-
// // TODO: Implement db:seed
|
|
520
|
-
// this.log.warn("db:seed is not yet implemented");
|
|
521
|
-
// if (flags.provider) {
|
|
522
|
-
// this.log.info(`Provider filter: ${flags.provider}`);
|
|
523
|
-
// }
|
|
524
|
-
// },
|
|
525
|
-
// });
|
|
526
|
-
//
|
|
527
|
-
// /**
|
|
528
|
-
// * Show pending database migrations status
|
|
529
|
-
// *
|
|
530
|
-
// * @experimental
|
|
531
|
-
// */
|
|
532
|
-
// status = $command({
|
|
533
|
-
// name: "db:status",
|
|
534
|
-
// description: "Show pending database migrations status",
|
|
535
|
-
// summary: false,
|
|
536
|
-
// args: t.optional(
|
|
537
|
-
// t.text({
|
|
538
|
-
// title: "path",
|
|
539
|
-
// description: "Path to the Alepha server entry file",
|
|
540
|
-
// }),
|
|
541
|
-
// ),
|
|
542
|
-
// flags: drizzleCommandFlags,
|
|
543
|
-
// handler: async ({ flags }) => {
|
|
544
|
-
// // TODO: Implement db:status
|
|
545
|
-
// this.log.warn("db:status is not yet implemented");
|
|
546
|
-
// if (flags.provider) {
|
|
547
|
-
// this.log.info(`Provider filter: ${flags.provider}`);
|
|
548
|
-
// }
|
|
549
|
-
// },
|
|
550
|
-
// });
|
|
551
444
|
}
|
|
@@ -4,7 +4,7 @@ import { $command } from "alepha/command";
|
|
|
4
4
|
import { $logger } from "alepha/logger";
|
|
5
5
|
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
6
6
|
|
|
7
|
-
export class
|
|
7
|
+
export class DeployCommand {
|
|
8
8
|
protected readonly log = $logger();
|
|
9
9
|
protected readonly utils = $inject(AlephaCliUtils);
|
|
10
10
|
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { access } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { $inject, Alepha, t } from "alepha";
|
|
4
|
+
import { $command } from "alepha/command";
|
|
5
|
+
import { $logger } from "alepha/logger";
|
|
6
|
+
import { boot } from "alepha/vite";
|
|
7
|
+
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
8
|
+
|
|
9
|
+
export class DevCommand {
|
|
10
|
+
protected readonly log = $logger();
|
|
11
|
+
protected readonly utils = $inject(AlephaCliUtils);
|
|
12
|
+
protected readonly alepha = $inject(Alepha);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Will run the project in watch mode.
|
|
16
|
+
*
|
|
17
|
+
* - If an index.html file is found in the project root, it will run Vite in dev mode.
|
|
18
|
+
* - Otherwise, it will look for a server entry file and run it with tsx in watch mode.
|
|
19
|
+
*/
|
|
20
|
+
public readonly dev = $command({
|
|
21
|
+
name: "dev",
|
|
22
|
+
description: "Run the project in development mode",
|
|
23
|
+
args: t.optional(t.text({ title: "path", description: "Filepath to run" })),
|
|
24
|
+
handler: async ({ args, root }) => {
|
|
25
|
+
const expo = await this.utils.hasExpo(root);
|
|
26
|
+
|
|
27
|
+
await this.utils.ensureConfig(root, {
|
|
28
|
+
viteConfigTs: !expo,
|
|
29
|
+
tsconfigJson: true,
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
if (expo) {
|
|
33
|
+
await this.utils.exec("expo start");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const entry = await boot.getServerEntry(root, args);
|
|
38
|
+
this.log.trace("Entry file found", { entry });
|
|
39
|
+
|
|
40
|
+
const isFullstack = await this.isFullstackProject(root);
|
|
41
|
+
|
|
42
|
+
if (!isFullstack) {
|
|
43
|
+
const exe = this.alepha.isBun() ? "bun" : "tsx";
|
|
44
|
+
let cmd = `${exe} --watch`;
|
|
45
|
+
if (await this.utils.exists(root, ".env")) {
|
|
46
|
+
cmd += " --env-file=./.env";
|
|
47
|
+
}
|
|
48
|
+
cmd += ` ${entry}`;
|
|
49
|
+
await this.utils.exec(cmd, {
|
|
50
|
+
global: exe === "bun",
|
|
51
|
+
});
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Ensure vite is installed before running
|
|
56
|
+
await this.utils.ensureDependency(root, "vite");
|
|
57
|
+
await this.utils.exec("vite");
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
protected async isFullstackProject(root: string): Promise<boolean> {
|
|
62
|
+
try {
|
|
63
|
+
await access(join(root, "index.html"));
|
|
64
|
+
return true;
|
|
65
|
+
} catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { $inject } from "alepha";
|
|
2
|
+
import { $command } from "alepha/command";
|
|
3
|
+
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
4
|
+
|
|
5
|
+
export class FormatCommand {
|
|
6
|
+
protected readonly utils = $inject(AlephaCliUtils);
|
|
7
|
+
|
|
8
|
+
public readonly format = $command({
|
|
9
|
+
name: "format",
|
|
10
|
+
description: "Format the codebase using Biome",
|
|
11
|
+
handler: async ({ root }) => {
|
|
12
|
+
await this.utils.ensureConfig(root, { biomeJson: true });
|
|
13
|
+
await this.utils.ensureDependency(root, "@biomejs/biome");
|
|
14
|
+
await this.utils.exec("biome format --fix");
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|