alepha 0.14.2 → 0.14.4
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 +1 -1
- 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 +706 -785
- 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 +58 -137
- 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 +29 -108
- 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 +504 -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 +277 -351
- 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 +787 -852
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +827 -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 +128 -128
- 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/bin/index.d.ts +1 -2
- package/dist/bin/index.js +0 -1
- package/dist/bin/index.js.map +1 -1
- package/dist/cli/index.d.ts +252 -131
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +595 -395
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +46 -11
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +99 -19
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +40 -22
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +45 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +40 -22
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +40 -22
- package/dist/core/index.native.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/logger/index.d.ts +1 -1
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +12 -2
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/index.d.ts +59 -195
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +201 -430
- package/dist/orm/index.js.map +1 -1
- package/dist/security/index.d.ts +1 -1
- 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.d.ts +12 -0
- package/dist/server/cache/index.d.ts.map +1 -1
- package/dist/server/cache/index.js +55 -2
- package/dist/server/cache/index.js.map +1 -1
- package/dist/server/compress/index.d.ts +6 -0
- package/dist/server/compress/index.d.ts.map +1 -1
- package/dist/server/compress/index.js +38 -1
- package/dist/server/compress/index.js.map +1 -1
- package/dist/server/core/index.browser.js +2 -2
- package/dist/server/core/index.browser.js.map +1 -1
- package/dist/server/core/index.d.ts +10 -10
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +7 -4
- package/dist/server/core/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/static/index.d.ts.map +1 -1
- package/dist/server/static/index.js +4 -0
- package/dist/server/static/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 +9 -5
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/vite/index.d.ts +101 -106
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +574 -503
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.d.ts +7 -7
- 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 +9 -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 +25 -6
- package/src/cli/atoms/buildOptions.ts +88 -0
- package/src/cli/commands/build.ts +32 -69
- package/src/cli/commands/db.ts +0 -4
- package/src/cli/commands/dev.ts +34 -10
- package/src/cli/commands/gen/changelog.spec.ts +315 -0
- package/src/cli/commands/{changelog.ts → gen/changelog.ts} +9 -9
- package/src/cli/commands/gen/env.ts +53 -0
- package/src/cli/commands/gen/openapi.ts +71 -0
- package/src/cli/commands/gen/resource.ts +15 -0
- package/src/cli/commands/gen.ts +24 -0
- package/src/cli/commands/init.ts +2 -1
- package/src/cli/commands/root.ts +12 -3
- package/src/cli/commands/test.ts +0 -1
- package/src/cli/commands/typecheck.ts +5 -0
- package/src/cli/commands/verify.ts +1 -1
- package/src/cli/defineConfig.ts +49 -7
- package/src/cli/index.ts +2 -2
- package/src/cli/services/AlephaCliUtils.ts +105 -55
- 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/helpers/Runner.ts +1 -1
- package/src/command/primitives/$command.spec.ts +1588 -0
- package/src/command/primitives/$command.ts +0 -6
- package/src/command/providers/CliProvider.ts +75 -27
- package/src/core/Alepha.ts +87 -0
- 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/index.ts +15 -3
- 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/mcp/transports/StdioMcpTransport.ts +1 -1
- 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.ts +2 -8
- 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/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 +394 -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 +1125 -0
- package/src/server/cache/providers/ServerCacheProvider.ts +94 -9
- package/src/server/compress/providers/ServerCompressProvider.spec.ts +31 -0
- package/src/server/compress/providers/ServerCompressProvider.ts +63 -2
- 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/helpers/ServerReply.ts +2 -2
- 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 +14 -2
- 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/static/providers/ServerStaticProvider.ts +10 -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 +19 -12
- 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/helpers/importViteReact.ts +13 -0
- package/src/vite/index.ts +1 -21
- package/src/vite/plugins/viteAlephaDev.ts +32 -5
- package/src/vite/plugins/viteAlephaSsrPreload.ts +222 -0
- package/src/vite/tasks/buildClient.ts +11 -0
- package/src/vite/tasks/buildServer.ts +47 -3
- package/src/vite/tasks/devServer.ts +69 -0
- package/src/vite/tasks/index.ts +2 -1
- 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/assets/viteConfigTs.ts +0 -14
- package/src/cli/commands/run.ts +0 -24
- package/src/vite/plugins/viteAlepha.ts +0 -37
- package/src/vite/plugins/viteAlephaBuild.ts +0 -281
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { type Static, t } from "alepha";
|
|
2
|
+
import { $atom } from "../../core/primitives/$atom.ts";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Build options atom for CLI build command.
|
|
6
|
+
*
|
|
7
|
+
* Defines the available build configuration options with their defaults.
|
|
8
|
+
* Options can be overridden via vite.config.ts or CLI flags.
|
|
9
|
+
*/
|
|
10
|
+
export const buildOptions = $atom({
|
|
11
|
+
name: "alepha.build.options",
|
|
12
|
+
description: "Build configuration options",
|
|
13
|
+
schema: t.object({
|
|
14
|
+
/**
|
|
15
|
+
* Generate build stats report.
|
|
16
|
+
*/
|
|
17
|
+
stats: t.optional(t.boolean({ default: false })),
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Vercel deployment configuration.
|
|
21
|
+
*/
|
|
22
|
+
vercel: t.optional(
|
|
23
|
+
t.object({
|
|
24
|
+
projectName: t.optional(t.string()),
|
|
25
|
+
orgId: t.optional(t.string()),
|
|
26
|
+
projectId: t.optional(t.string()),
|
|
27
|
+
config: t.optional(
|
|
28
|
+
t.object({
|
|
29
|
+
crons: t.optional(
|
|
30
|
+
t.array(
|
|
31
|
+
t.object({
|
|
32
|
+
path: t.string(),
|
|
33
|
+
schedule: t.string(),
|
|
34
|
+
}),
|
|
35
|
+
),
|
|
36
|
+
),
|
|
37
|
+
}),
|
|
38
|
+
),
|
|
39
|
+
}),
|
|
40
|
+
),
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Cloudflare Workers deployment configuration.
|
|
44
|
+
*/
|
|
45
|
+
cloudflare: t.optional(
|
|
46
|
+
t.object({
|
|
47
|
+
config: t.optional(t.json()),
|
|
48
|
+
}),
|
|
49
|
+
),
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Docker deployment configuration.
|
|
53
|
+
*/
|
|
54
|
+
docker: t.optional(
|
|
55
|
+
t.object({
|
|
56
|
+
/**
|
|
57
|
+
* Docker image name to use in the Dockerfile.
|
|
58
|
+
* @default "node:24-alpine"
|
|
59
|
+
*/
|
|
60
|
+
image: t.optional(t.string({ default: "node:24-alpine" })),
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Command to run in the Docker container.
|
|
64
|
+
* @default "node"
|
|
65
|
+
*/
|
|
66
|
+
command: t.optional(t.string({ default: "node" })),
|
|
67
|
+
}),
|
|
68
|
+
),
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Sitemap generation configuration.
|
|
72
|
+
*/
|
|
73
|
+
sitemap: t.optional(
|
|
74
|
+
t.object({
|
|
75
|
+
/**
|
|
76
|
+
* Base URL for sitemap entries.
|
|
77
|
+
*/
|
|
78
|
+
hostname: t.string(),
|
|
79
|
+
}),
|
|
80
|
+
),
|
|
81
|
+
}),
|
|
82
|
+
default: {},
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Type for build options.
|
|
87
|
+
*/
|
|
88
|
+
export type BuildOptions = Static<typeof buildOptions.schema>;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { access, readFile, unlink, writeFile } from "node:fs/promises";
|
|
2
|
-
import { createRequire } from "node:module";
|
|
3
2
|
import { join } from "node:path";
|
|
4
|
-
import { $inject,
|
|
3
|
+
import { $inject, $use, t } from "alepha";
|
|
5
4
|
import { $command } from "alepha/command";
|
|
6
5
|
import { $logger } from "alepha/logger";
|
|
7
6
|
import {
|
|
@@ -15,15 +14,17 @@ import {
|
|
|
15
14
|
generateVercel,
|
|
16
15
|
prerenderPages,
|
|
17
16
|
} from "alepha/vite";
|
|
18
|
-
import
|
|
17
|
+
import { buildOptions } from "../atoms/buildOptions.ts";
|
|
19
18
|
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
20
19
|
|
|
21
20
|
export class BuildCommand {
|
|
22
21
|
protected readonly log = $logger();
|
|
23
22
|
protected readonly utils = $inject(AlephaCliUtils);
|
|
23
|
+
protected readonly options = $use(buildOptions);
|
|
24
24
|
|
|
25
25
|
public readonly build = $command({
|
|
26
26
|
name: "build",
|
|
27
|
+
mode: "production",
|
|
27
28
|
description: "Build the project for production",
|
|
28
29
|
args: t.optional(
|
|
29
30
|
t.text({ title: "path", description: "Filepath to build" }),
|
|
@@ -61,13 +62,11 @@ export class BuildCommand {
|
|
|
61
62
|
process.env.NODE_ENV = "production";
|
|
62
63
|
|
|
63
64
|
if (await this.utils.hasExpo(root)) {
|
|
64
|
-
// will
|
|
65
|
-
// 1. ensure "expo prebuild" is run
|
|
65
|
+
// will come soon
|
|
66
66
|
return;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
await this.utils.ensureConfig(root, {
|
|
70
|
-
viteConfigTs: true,
|
|
71
70
|
tsconfigJson: true,
|
|
72
71
|
});
|
|
73
72
|
|
|
@@ -77,25 +76,13 @@ export class BuildCommand {
|
|
|
77
76
|
const distDir = "dist";
|
|
78
77
|
const clientDir = "public";
|
|
79
78
|
|
|
80
|
-
await this.utils.ensureDependency(root, "vite", {
|
|
81
|
-
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
await run.rm("dist", {
|
|
85
|
-
alias: "clean dist",
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
const vite: typeof Vite = createRequire(import.meta.url)("vite");
|
|
89
|
-
const config = await vite.resolveConfig({}, "build", "production");
|
|
90
|
-
const alephaPlugin: any = config.plugins.find(
|
|
91
|
-
(it) => it.name === "alepha:build",
|
|
92
|
-
);
|
|
93
|
-
const viteAlephaBuildOptions = alephaPlugin?.[OPTIONS] || {};
|
|
79
|
+
await this.utils.ensureDependency(root, "vite", { run });
|
|
80
|
+
await run.rm("dist", { alias: "clean dist" });
|
|
94
81
|
|
|
82
|
+
const options = this.options;
|
|
95
83
|
await this.utils.loadEnv(root, [".env", ".env.production"]);
|
|
96
84
|
|
|
97
|
-
const stats = flags.stats ??
|
|
98
|
-
const hasServer = viteAlephaBuildOptions.serverEntry !== false;
|
|
85
|
+
const stats = flags.stats ?? options.stats ?? false;
|
|
99
86
|
|
|
100
87
|
let hasClient = false;
|
|
101
88
|
try {
|
|
@@ -105,13 +92,7 @@ export class BuildCommand {
|
|
|
105
92
|
// No index.html
|
|
106
93
|
}
|
|
107
94
|
|
|
108
|
-
//
|
|
109
|
-
const clientOptions =
|
|
110
|
-
typeof viteAlephaBuildOptions.client === "object"
|
|
111
|
-
? viteAlephaBuildOptions.client
|
|
112
|
-
: {};
|
|
113
|
-
|
|
114
|
-
// Build client
|
|
95
|
+
// Build client (precompress always enabled)
|
|
115
96
|
if (hasClient) {
|
|
116
97
|
await run({
|
|
117
98
|
name: "vite build client",
|
|
@@ -120,7 +101,7 @@ export class BuildCommand {
|
|
|
120
101
|
silent: true,
|
|
121
102
|
dist: `${distDir}/${clientDir}`,
|
|
122
103
|
stats,
|
|
123
|
-
precompress:
|
|
104
|
+
precompress: true,
|
|
124
105
|
}),
|
|
125
106
|
});
|
|
126
107
|
}
|
|
@@ -129,7 +110,6 @@ export class BuildCommand {
|
|
|
129
110
|
await run({
|
|
130
111
|
name: "vite build server",
|
|
131
112
|
handler: async () => {
|
|
132
|
-
// Check if client template exists
|
|
133
113
|
let clientBuilt = false;
|
|
134
114
|
try {
|
|
135
115
|
await readFile(`${distDir}/${clientDir}/index.html`, "utf-8");
|
|
@@ -147,7 +127,7 @@ export class BuildCommand {
|
|
|
147
127
|
});
|
|
148
128
|
|
|
149
129
|
// Server will handle index.html if both client & server are built
|
|
150
|
-
if (clientBuilt
|
|
130
|
+
if (clientBuilt) {
|
|
151
131
|
await unlink(`${distDir}/${clientDir}/index.html`);
|
|
152
132
|
}
|
|
153
133
|
},
|
|
@@ -163,9 +143,8 @@ export class BuildCommand {
|
|
|
163
143
|
|
|
164
144
|
if (hasClient) {
|
|
165
145
|
// Generate sitemap
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
if (sitemapBaseUrl) {
|
|
146
|
+
const sitemapHostname = flags.sitemap ?? options.sitemap?.hostname;
|
|
147
|
+
if (sitemapHostname) {
|
|
169
148
|
await run({
|
|
170
149
|
name: "add sitemap",
|
|
171
150
|
handler: async () => {
|
|
@@ -173,73 +152,57 @@ export class BuildCommand {
|
|
|
173
152
|
`${distDir}/${clientDir}/sitemap.xml`,
|
|
174
153
|
await generateSitemap({
|
|
175
154
|
entry: `${distDir}/index.js`,
|
|
176
|
-
baseUrl:
|
|
155
|
+
baseUrl: sitemapHostname,
|
|
177
156
|
}),
|
|
178
157
|
);
|
|
179
158
|
},
|
|
180
159
|
});
|
|
181
160
|
}
|
|
182
161
|
|
|
183
|
-
// Pre-render static pages
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
});
|
|
195
|
-
},
|
|
196
|
-
});
|
|
197
|
-
}
|
|
162
|
+
// Pre-render static pages (always enabled)
|
|
163
|
+
await run({
|
|
164
|
+
name: "pre-render pages",
|
|
165
|
+
handler: async () => {
|
|
166
|
+
await prerenderPages({
|
|
167
|
+
dist: `${distDir}/${clientDir}`,
|
|
168
|
+
entry: `${distDir}/index.js`,
|
|
169
|
+
compress: true,
|
|
170
|
+
});
|
|
171
|
+
},
|
|
172
|
+
});
|
|
198
173
|
}
|
|
199
174
|
|
|
200
175
|
// Generate deployment configurations
|
|
201
|
-
if (flags.vercel ||
|
|
202
|
-
const config =
|
|
203
|
-
typeof viteAlephaBuildOptions.vercel === "object"
|
|
204
|
-
? viteAlephaBuildOptions.vercel
|
|
205
|
-
: {};
|
|
176
|
+
if (flags.vercel || options.vercel) {
|
|
206
177
|
await run({
|
|
207
178
|
name: "add Vercel config",
|
|
208
179
|
handler: () =>
|
|
209
180
|
generateVercel({
|
|
210
181
|
distDir,
|
|
211
182
|
clientDir,
|
|
212
|
-
config,
|
|
183
|
+
config: options.vercel,
|
|
213
184
|
}),
|
|
214
185
|
});
|
|
215
186
|
}
|
|
216
187
|
|
|
217
|
-
if (flags.cloudflare ||
|
|
218
|
-
const config =
|
|
219
|
-
typeof viteAlephaBuildOptions.cloudflare === "boolean"
|
|
220
|
-
? {}
|
|
221
|
-
: viteAlephaBuildOptions.cloudflare;
|
|
188
|
+
if (flags.cloudflare || options.cloudflare) {
|
|
222
189
|
await run({
|
|
223
190
|
name: "add Cloudflare config",
|
|
224
191
|
handler: () =>
|
|
225
192
|
generateCloudflare({
|
|
226
193
|
distDir,
|
|
227
|
-
config,
|
|
194
|
+
config: options.cloudflare?.config,
|
|
228
195
|
}),
|
|
229
196
|
});
|
|
230
197
|
}
|
|
231
198
|
|
|
232
|
-
if (flags.docker ||
|
|
233
|
-
const dockerConfig =
|
|
234
|
-
typeof viteAlephaBuildOptions.docker === "object"
|
|
235
|
-
? viteAlephaBuildOptions.docker
|
|
236
|
-
: {};
|
|
199
|
+
if (flags.docker || options.docker) {
|
|
237
200
|
await run({
|
|
238
201
|
name: "add Docker config",
|
|
239
202
|
handler: () =>
|
|
240
203
|
generateDocker({
|
|
241
204
|
distDir,
|
|
242
|
-
...
|
|
205
|
+
...options.docker,
|
|
243
206
|
}),
|
|
244
207
|
});
|
|
245
208
|
}
|
package/src/cli/commands/db.ts
CHANGED
|
@@ -134,7 +134,6 @@ export class DbCommand {
|
|
|
134
134
|
protected readonly generate = $command({
|
|
135
135
|
name: "generate",
|
|
136
136
|
description: "Generate migration files based on current database schema",
|
|
137
|
-
summary: false,
|
|
138
137
|
args: t.optional(
|
|
139
138
|
t.text({
|
|
140
139
|
title: "path",
|
|
@@ -173,7 +172,6 @@ export class DbCommand {
|
|
|
173
172
|
protected readonly push = $command({
|
|
174
173
|
name: "push",
|
|
175
174
|
description: "Push database schema changes directly to the database",
|
|
176
|
-
summary: false,
|
|
177
175
|
args: t.optional(
|
|
178
176
|
t.text({
|
|
179
177
|
title: "path",
|
|
@@ -200,7 +198,6 @@ export class DbCommand {
|
|
|
200
198
|
protected readonly migrate = $command({
|
|
201
199
|
name: "migrate",
|
|
202
200
|
description: "Apply pending database migrations",
|
|
203
|
-
summary: false,
|
|
204
201
|
args: t.optional(
|
|
205
202
|
t.text({
|
|
206
203
|
title: "path",
|
|
@@ -227,7 +224,6 @@ export class DbCommand {
|
|
|
227
224
|
protected readonly studio = $command({
|
|
228
225
|
name: "studio",
|
|
229
226
|
description: "Launch Drizzle Studio database browser",
|
|
230
|
-
summary: false,
|
|
231
227
|
args: t.optional(
|
|
232
228
|
t.text({
|
|
233
229
|
title: "path",
|
package/src/cli/commands/dev.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { access } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { $inject, t } from "alepha";
|
|
3
|
+
import { $inject, Alepha, t } from "alepha";
|
|
4
4
|
import { $command } from "alepha/command";
|
|
5
5
|
import { $logger } from "alepha/logger";
|
|
6
|
-
import { boot } from "alepha/vite";
|
|
6
|
+
import { boot, devServer } from "alepha/vite";
|
|
7
7
|
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
8
8
|
|
|
9
9
|
export class DevCommand {
|
|
10
10
|
protected readonly log = $logger();
|
|
11
11
|
protected readonly utils = $inject(AlephaCliUtils);
|
|
12
|
+
protected readonly alepha = $inject(Alepha);
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Will run the project in watch mode.
|
|
@@ -24,7 +25,6 @@ export class DevCommand {
|
|
|
24
25
|
const expo = await this.utils.hasExpo(root);
|
|
25
26
|
|
|
26
27
|
await this.utils.ensureConfig(root, {
|
|
27
|
-
viteConfigTs: !expo,
|
|
28
28
|
tsconfigJson: true,
|
|
29
29
|
});
|
|
30
30
|
|
|
@@ -36,22 +36,46 @@ export class DevCommand {
|
|
|
36
36
|
const entry = await boot.getServerEntry(root, args);
|
|
37
37
|
this.log.trace("Entry file found", { entry });
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
this.
|
|
43
|
-
let cmd =
|
|
39
|
+
const isFullstack = await this.isFullstackProject(root);
|
|
40
|
+
|
|
41
|
+
if (!isFullstack) {
|
|
42
|
+
const exe = (await this.isBunProject(root)) ? "bun" : "tsx";
|
|
43
|
+
let cmd = `${exe} --watch`;
|
|
44
44
|
if (await this.utils.exists(root, ".env")) {
|
|
45
45
|
cmd += " --env-file=./.env";
|
|
46
46
|
}
|
|
47
47
|
cmd += ` ${entry}`;
|
|
48
|
-
await this.utils.exec(cmd
|
|
48
|
+
await this.utils.exec(cmd, {
|
|
49
|
+
global: exe === "bun",
|
|
50
|
+
});
|
|
49
51
|
return;
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
// Ensure vite is installed before running
|
|
53
55
|
await this.utils.ensureDependency(root, "vite");
|
|
54
|
-
|
|
56
|
+
|
|
57
|
+
await devServer();
|
|
55
58
|
},
|
|
56
59
|
});
|
|
60
|
+
|
|
61
|
+
protected async isBunProject(root: string): Promise<boolean> {
|
|
62
|
+
if (this.alepha.isBun()) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
await access(join(root, "bun.lock"));
|
|
67
|
+
return true;
|
|
68
|
+
} catch {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
protected async isFullstackProject(root: string): Promise<boolean> {
|
|
74
|
+
try {
|
|
75
|
+
await access(join(root, "index.html"));
|
|
76
|
+
return true;
|
|
77
|
+
} catch {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
57
81
|
}
|