alepha 0.19.0 → 0.19.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +6 -9
- package/dist/api/audits/index.d.ts +378 -346
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/files/index.d.ts +216 -184
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +5 -1
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.d.ts +528 -496
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/jobs/index.js +3 -3
- package/dist/api/jobs/index.js.map +1 -1
- package/dist/api/keys/index.d.ts +202 -202
- package/dist/api/keys/index.d.ts.map +1 -1
- package/dist/api/notifications/index.d.ts +152 -152
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/organizations/index.browser.js +48 -0
- package/dist/api/organizations/index.browser.js.map +1 -0
- package/dist/api/organizations/index.d.ts +516 -0
- package/dist/api/organizations/index.d.ts.map +1 -0
- package/dist/api/organizations/index.js +202 -0
- package/dist/api/organizations/index.js.map +1 -0
- package/dist/api/parameters/index.d.ts +391 -358
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/parameters/index.js +5 -1
- package/dist/api/parameters/index.js.map +1 -1
- package/dist/api/users/index.browser.js +7 -5
- package/dist/api/users/index.browser.js.map +1 -1
- package/dist/api/users/index.d.ts +989 -931
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +292 -146
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +132 -132
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/api/verifications/index.js +2 -2
- package/dist/api/verifications/index.js.map +1 -1
- package/dist/batch/index.d.ts +6 -6
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/billing/index.d.ts +1048 -0
- package/dist/billing/index.d.ts.map +1 -0
- package/dist/billing/index.js +713 -0
- package/dist/billing/index.js.map +1 -0
- package/dist/bin/index.js +0 -2
- package/dist/bin/index.js.map +1 -1
- package/dist/bucket/index.d.ts +10 -10
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/bucket/index.js +2 -2
- package/dist/bucket/index.js.map +1 -1
- package/dist/cache/core/index.d.ts +9 -9
- package/dist/cache/core/index.d.ts.map +1 -1
- package/dist/cache/core/index.js +2 -2
- package/dist/cache/core/index.js.map +1 -1
- package/dist/cache/core/index.workerd.js +2 -2
- package/dist/cache/core/index.workerd.js.map +1 -1
- package/dist/cache/redis/index.d.ts +6 -6
- package/dist/cache/redis/index.d.ts.map +1 -1
- package/dist/cache/redis/index.js +2 -2
- package/dist/cache/redis/index.js.map +1 -1
- package/dist/cli/config/index.d.ts +12 -2
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js +4 -0
- package/dist/cli/config/index.js.map +1 -1
- package/dist/cli/core/index.d.ts +183 -139
- package/dist/cli/core/index.d.ts.map +1 -1
- package/dist/cli/core/index.js +283 -86
- package/dist/cli/core/index.js.map +1 -1
- package/dist/cli/devtools/index.d.ts +45 -0
- package/dist/cli/devtools/index.d.ts.map +1 -0
- package/dist/cli/devtools/index.js +170 -0
- package/dist/cli/devtools/index.js.map +1 -0
- package/dist/cli/platform/index.d.ts +383 -492
- package/dist/cli/platform/index.d.ts.map +1 -1
- package/dist/cli/platform/index.js +42 -511
- package/dist/cli/platform/index.js.map +1 -1
- package/dist/cli/vendor/index.d.ts +196 -0
- package/dist/cli/vendor/index.d.ts.map +1 -0
- package/dist/cli/vendor/index.js +384 -0
- package/dist/cli/vendor/index.js.map +1 -0
- package/dist/command/index.d.ts +18 -18
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +2 -2
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +4 -4
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +10 -10
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +4 -4
- package/dist/core/index.native.js.map +1 -1
- package/dist/core/index.workerd.js +4 -4
- package/dist/core/index.workerd.js.map +1 -1
- package/dist/crypto/index.d.ts +7 -7
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/datetime/index.d.ts +4 -4
- package/dist/datetime/index.d.ts.map +1 -1
- package/dist/email/brevo/index.d.ts +4 -4
- package/dist/email/brevo/index.d.ts.map +1 -1
- package/dist/email/core/index.d.ts +15 -11
- package/dist/email/core/index.d.ts.map +1 -1
- package/dist/email/core/index.js +12 -35
- package/dist/email/core/index.js.map +1 -1
- package/dist/email/smtp/index.d.ts +12 -12
- package/dist/email/smtp/index.d.ts.map +1 -1
- package/dist/email/smtp/index.js +7 -4
- package/dist/email/smtp/index.js.map +1 -1
- package/dist/fake/index.d.ts +4 -8
- package/dist/fake/index.d.ts.map +1 -1
- package/dist/fake/index.js +55 -889
- package/dist/fake/index.js.map +1 -1
- package/dist/lock/core/index.d.ts +13 -13
- package/dist/lock/core/index.d.ts.map +1 -1
- package/dist/lock/core/index.js +2 -2
- package/dist/lock/core/index.js.map +1 -1
- package/dist/lock/redis/index.d.ts +4 -4
- package/dist/lock/redis/index.d.ts.map +1 -1
- package/dist/logger/index.d.ts +16 -15
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +5 -2
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +11 -11
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +2 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/core/index.browser.js +11 -1
- package/dist/orm/core/index.browser.js.map +1 -1
- package/dist/orm/core/index.bun.js +53 -16
- package/dist/orm/core/index.bun.js.map +1 -1
- package/dist/orm/core/index.d.ts +95 -51
- package/dist/orm/core/index.d.ts.map +1 -1
- package/dist/orm/core/index.js +55 -14
- package/dist/orm/core/index.js.map +1 -1
- package/dist/orm/postgres/index.bun.js +17 -11
- package/dist/orm/postgres/index.bun.js.map +1 -1
- package/dist/orm/postgres/index.d.ts +21 -15
- package/dist/orm/postgres/index.d.ts.map +1 -1
- package/dist/orm/postgres/index.js +19 -13
- package/dist/orm/postgres/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +14 -14
- package/dist/queue/core/index.d.ts.map +1 -1
- package/dist/queue/core/index.js +2 -2
- package/dist/queue/core/index.js.map +1 -1
- package/dist/queue/core/index.workerd.js +2 -2
- package/dist/queue/core/index.workerd.js.map +1 -1
- package/dist/queue/redis/index.d.ts +4 -4
- package/dist/queue/redis/index.d.ts.map +1 -1
- package/dist/queue/redis/index.js +2 -2
- package/dist/queue/redis/index.js.map +1 -1
- package/dist/react/auth/index.d.ts +9 -9
- package/dist/react/auth/index.d.ts.map +1 -1
- package/dist/react/core/index.d.ts +6 -6
- package/dist/react/core/index.d.ts.map +1 -1
- package/dist/react/core/index.js +5 -4
- package/dist/react/core/index.js.map +1 -1
- package/dist/react/form/index.d.ts +4 -4
- package/dist/react/form/index.d.ts.map +1 -1
- package/dist/react/head/index.d.ts +4 -4
- package/dist/react/head/index.d.ts.map +1 -1
- package/dist/react/i18n/index.d.ts +9 -9
- package/dist/react/i18n/index.d.ts.map +1 -1
- package/dist/react/intro/index.d.ts +2 -2
- package/dist/react/intro/index.d.ts.map +1 -1
- package/dist/react/intro/index.js +3 -4
- package/dist/react/intro/index.js.map +1 -1
- package/dist/react/router/index.browser.js +4 -5
- package/dist/react/router/index.browser.js.map +1 -1
- package/dist/react/router/index.d.ts +215 -215
- package/dist/react/router/index.d.ts.map +1 -1
- package/dist/react/router/index.js +6 -7
- package/dist/react/router/index.js.map +1 -1
- package/dist/react/testing/index.d.ts +2 -2
- package/dist/react/testing/index.d.ts.map +1 -1
- package/dist/react/testing/index.js +2 -4
- package/dist/react/testing/index.js.map +1 -1
- package/dist/redis/index.d.ts +19 -19
- package/dist/redis/index.d.ts.map +1 -1
- package/dist/retry/index.d.ts +4 -4
- package/dist/retry/index.d.ts.map +1 -1
- package/dist/scheduler/index.d.ts +13 -13
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +2 -2
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/index.workerd.js +2 -2
- package/dist/scheduler/index.workerd.js.map +1 -1
- package/dist/security/index.browser.js +1 -1
- package/dist/security/index.browser.js.map +1 -1
- package/dist/security/index.d.ts +47 -47
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +9 -12
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +170 -169
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +16 -2
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cookies/index.d.ts +7 -7
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/core/index.d.ts +76 -76
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +23 -17
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +13 -13
- package/dist/server/cors/index.d.ts.map +1 -1
- package/dist/server/cors/index.js +2 -2
- package/dist/server/cors/index.js.map +1 -1
- package/dist/server/etag/index.d.ts +9 -9
- package/dist/server/etag/index.d.ts.map +1 -1
- package/dist/server/health/index.d.ts +20 -20
- package/dist/server/health/index.d.ts.map +1 -1
- package/dist/server/links/index.browser.js +2 -2
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +66 -66
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +4 -4
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts +7 -7
- package/dist/server/metrics/index.d.ts.map +1 -1
- package/dist/server/proxy/index.d.ts +5 -5
- package/dist/server/proxy/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.d.ts +12 -12
- package/dist/server/rate-limit/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.js +2 -2
- package/dist/server/rate-limit/index.js.map +1 -1
- package/dist/server/static/index.d.ts +5 -5
- package/dist/server/static/index.d.ts.map +1 -1
- package/dist/server/swagger/index.d.ts +7 -7
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js +2 -2
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +11 -7
- package/dist/sms/index.d.ts.map +1 -1
- package/dist/sms/index.js +9 -15
- package/dist/sms/index.js.map +1 -1
- package/dist/system/index.d.ts +4 -4
- package/dist/system/index.d.ts.map +1 -1
- package/dist/topic/core/index.d.ts +6 -6
- package/dist/topic/core/index.d.ts.map +1 -1
- package/dist/topic/redis/index.d.ts +7 -7
- package/dist/topic/redis/index.d.ts.map +1 -1
- package/dist/topic/redis/index.js +2 -2
- package/dist/topic/redis/index.js.map +1 -1
- package/dist/websocket/index.d.ts +36 -36
- package/dist/websocket/index.d.ts.map +1 -1
- package/dist/websocket/index.js +2 -2
- package/dist/websocket/index.js.map +1 -1
- package/package.json +37 -32
- package/src/api/files/{controllers → __tests__}/FileController.spec.ts +189 -143
- package/src/api/files/{services → __tests__}/FileService.spec.ts +50 -30
- package/src/api/files/controllers/FileController.ts +6 -0
- package/src/api/jobs/{services → __tests__}/JobService.spec.ts +1 -1
- package/src/api/jobs/providers/JobProvider.ts +3 -3
- package/src/api/keys/{services → __tests__}/ApiKeyService.spec.ts +1 -1
- package/src/api/organizations/__tests__/OrganizationService.spec.ts +193 -0
- package/src/api/organizations/controllers/AdminOrganizationController.ts +103 -0
- package/src/api/organizations/entities/organizations.ts +20 -0
- package/src/api/organizations/index.browser.ts +10 -0
- package/src/api/organizations/index.ts +31 -0
- package/src/api/organizations/schemas/createOrganizationSchema.ts +10 -0
- package/src/api/organizations/schemas/organizationQuerySchema.ts +10 -0
- package/src/api/organizations/schemas/organizationResourceSchema.ts +6 -0
- package/src/api/organizations/schemas/updateOrganizationSchema.ts +7 -0
- package/src/api/organizations/services/OrganizationService.ts +75 -0
- package/src/api/parameters/services/ParameterProvider.ts +6 -1
- package/src/api/users/__tests__/$realm.spec.ts +191 -0
- package/src/api/users/__tests__/RealmProvider.spec.ts +53 -0
- package/src/api/users/__tests__/SessionService.spec.ts +778 -0
- package/src/api/users/{jobs → __tests__}/UserJobs.spec.ts +1 -1
- package/src/api/users/atoms/realmAuthSettingsAtom.ts +24 -0
- package/src/api/users/controllers/RealmController.ts +5 -11
- package/src/api/users/entities/users.ts +9 -3
- package/src/api/users/index.ts +23 -3
- package/src/api/users/primitives/$realm.ts +23 -11
- package/src/api/users/providers/RealmProvider.ts +23 -3
- package/src/api/users/services/RegistrationService.ts +3 -2
- package/src/api/users/services/SessionService.ts +249 -8
- package/src/api/users/services/UserService.ts +1 -1
- package/src/api/verifications/{jobs → __tests__}/VerificationJobs.spec.ts +4 -2
- package/src/api/verifications/parameters/VerificationParameters.ts +2 -2
- package/src/billing/__tests__/BillingService.spec.ts +136 -0
- package/src/billing/__tests__/PaymentMethodService.spec.ts +78 -0
- package/src/billing/controllers/AdminBillingController.ts +149 -0
- package/src/billing/controllers/BillingController.ts +108 -0
- package/src/billing/entities/paymentIntents.ts +34 -0
- package/src/billing/entities/paymentMethods.ts +24 -0
- package/src/billing/entities/refunds.ts +22 -0
- package/src/billing/errors/BillingError.ts +5 -0
- package/src/billing/index.ts +76 -0
- package/src/billing/providers/BillingProvider.ts +79 -0
- package/src/billing/providers/MemoryBillingProvider.ts +139 -0
- package/src/billing/schemas/intentSchemas.ts +60 -0
- package/src/billing/schemas/paymentMethodSchemas.ts +13 -0
- package/src/billing/schemas/refundSchemas.ts +6 -0
- package/src/billing/services/BillingService.ts +325 -0
- package/src/billing/services/PaymentMethodService.ts +82 -0
- package/src/bin/index.ts +0 -2
- package/src/bucket/providers/LocalFileStorageProvider.ts +2 -2
- package/src/cache/core/{primitives → __tests__}/$cache.middleware.spec.ts +1 -1
- package/src/cache/core/{providers → __tests__}/MemoryCacheProvider.spec.ts +1 -1
- package/src/cache/core/primitives/$cache.ts +2 -2
- package/src/cache/redis/providers/RedisCacheProvider.ts +2 -2
- package/src/cli/config/defineConfig.ts +20 -0
- package/src/cli/core/{services → __tests__}/ProjectScaffolder.spec.ts +1 -1
- package/src/cli/core/{commands/gen → __tests__}/changelog.spec.ts +1 -1
- package/src/cli/core/{commands → __tests__}/init.spec.ts +4 -12
- package/src/cli/core/assets.ts +0 -1
- package/src/cli/core/atoms/devOptions.ts +0 -5
- package/src/cli/core/commands/build.ts +2 -2
- package/src/cli/core/commands/dev.ts +165 -30
- package/src/cli/core/commands/gen/changelog.ts +2 -2
- package/src/cli/core/commands/init.ts +2 -7
- package/src/cli/core/commands/verify.ts +0 -1
- package/src/cli/core/providers/AppEntryProvider.ts +2 -2
- package/src/cli/core/providers/ViteDevServerProvider.ts +53 -46
- package/src/cli/core/services/PackageManagerUtils.ts +8 -3
- package/src/cli/core/services/ProjectScaffolder.ts +20 -20
- package/src/cli/core/tasks/BuildClientTask.ts +8 -0
- package/src/cli/core/tasks/BuildServerTask.ts +17 -4
- package/src/cli/core/templates/alephaConfigTs.ts +0 -6
- package/src/cli/core/templates/webAdminDashboardTsx.ts +17 -0
- package/src/cli/core/templates/webAppRouterTs.ts +85 -2
- package/src/cli/devtools/atoms/devtoolsOptions.ts +26 -0
- package/src/cli/devtools/index.ts +194 -0
- package/src/cli/platform/{adapters → __tests__}/CloudflareAdapter.spec.ts +2 -2
- package/src/cli/platform/{providers → __tests__}/GitHubSecretStore.spec.ts +1 -1
- package/src/cli/platform/{services → __tests__}/NamingService.spec.ts +1 -1
- package/src/cli/platform/{providers → __tests__}/PlatformCacheProvider.spec.ts +1 -1
- package/src/cli/platform/{services → __tests__}/PlatformInspector.spec.ts +1 -1
- package/src/cli/platform/{services → __tests__}/PlatformOrchestrator.spec.ts +3 -3
- package/src/cli/platform/{services → __tests__}/SecretFilterService.spec.ts +1 -1
- package/src/cli/platform/{commands → __tests__}/SecretsCommand.spec.ts +1 -1
- package/src/cli/platform/{adapters → __tests__}/VercelAdapter.spec.ts +2 -2
- package/src/cli/platform/atoms/platformOptions.ts +2 -10
- package/src/cli/platform/commands/SecretsCommand.ts +2 -2
- package/src/cli/platform/commands/platform.ts +2 -11
- package/src/cli/platform/index.ts +34 -11
- package/src/cli/platform/services/PlatformInspector.ts +2 -2
- package/src/cli/platform/services/PlatformOrchestrator.ts +0 -9
- package/src/cli/vendor/__tests__/VendorService.spec.ts +407 -0
- package/src/cli/vendor/atoms/vendorOptions.ts +41 -0
- package/src/cli/vendor/commands/VendorCommand.ts +204 -0
- package/src/cli/vendor/index.ts +43 -0
- package/src/cli/vendor/services/VendorService.ts +338 -0
- package/src/command/{providers → __tests__}/CliProvider.spec.ts +1 -1
- package/src/command/{helpers → __tests__}/EnvUtils.spec.ts +1 -1
- package/src/command/providers/CliProvider.ts +2 -2
- package/src/core/{primitives → __tests__}/$atom.spec.ts +2 -2
- package/src/core/{primitives → __tests__}/$memoize.spec.ts +1 -1
- package/src/core/{primitives → __tests__}/$mode.spec.ts +1 -1
- package/src/core/{primitives → __tests__}/$pipeline.spec.ts +1 -1
- package/src/core/{primitives → __tests__}/$scope.spec.ts +2 -2
- package/src/core/{providers → __tests__}/KeylessJsonSchemaCodec.spec.ts +1 -1
- package/src/core/{providers → __tests__}/SchemaValidator.spec.ts +1 -1
- package/src/core/{helpers → __tests__}/jsonSchemaToTypeBox.spec.ts +1 -1
- package/src/core/index.shared.ts +1 -1
- package/src/core/primitives/{$use.ts → $state.ts} +4 -4
- package/src/crypto/{providers → __tests__}/BrowserCryptoProvider.browser.spec.ts +1 -1
- package/src/crypto/{providers → __tests__}/CryptoProvider.spec.ts +1 -1
- package/src/datetime/{primitives → __tests__}/$debounce.spec.ts +1 -1
- package/src/datetime/{primitives → __tests__}/$throttle.spec.ts +1 -1
- package/src/datetime/{primitives → __tests__}/$timeout.spec.ts +1 -1
- package/src/email/brevo/{providers → __tests__}/BrevoEmailProvider.spec.ts +1 -1
- package/src/email/core/{providers → __tests__}/LocalEmailProvider.spec.ts +39 -150
- package/src/email/core/providers/LocalEmailProvider.ts +13 -51
- package/src/email/smtp/providers/NodemailerEmailProvider.ts +2 -2
- package/src/lock/core/{primitives → __tests__}/$lock.middleware.spec.ts +1 -1
- package/src/lock/core/primitives/$lock.ts +2 -2
- package/src/logger/index.ts +10 -4
- package/src/mcp/transports/SseMcpTransport.ts +2 -2
- package/src/orm/__tests__/ModelBuilder-tests.ts +53 -0
- package/src/orm/__tests__/ModelBuilder.spec.ts +80 -0
- package/src/orm/__tests__/organization-tests.ts +200 -0
- package/src/orm/__tests__/organization.spec.ts +103 -0
- package/src/orm/core/{providers/drivers → __tests__}/BunSqliteProvider.bun.spec.ts +5 -2
- package/src/orm/core/constants/PG_SYMBOLS.ts +2 -0
- package/src/orm/core/index.shared.ts +1 -0
- package/src/orm/core/primitives/$entity.ts +31 -0
- package/src/orm/core/providers/DatabaseTypeProvider.ts +11 -0
- package/src/orm/core/providers/DrizzleKitProvider.ts +1 -1
- package/src/orm/core/providers/drivers/BunSqliteProvider.ts +2 -2
- package/src/orm/core/providers/drivers/NodeSqliteProvider.ts +3 -3
- package/src/orm/core/services/ModelBuilder.ts +11 -0
- package/src/orm/core/services/QueryManager.ts +16 -2
- package/src/orm/core/services/Repository.ts +70 -10
- package/src/orm/postgres/{providers → __tests__}/BunPostgresProvider.bun.spec.ts +1 -1
- package/src/orm/postgres/services/PostgresModelBuilder.ts +9 -1
- package/src/queue/core/providers/WorkerProvider.ts +2 -2
- package/src/queue/redis/providers/RedisQueueProvider.ts +2 -2
- package/src/react/core/{hooks → __tests__}/useAction.browser.spec.tsx +1 -1
- package/src/react/core/hooks/useAction.ts +7 -6
- package/src/react/head/{providers → __tests__}/BrowserHeadProvider.browser.spec.ts +1 -1
- package/src/react/head/{helpers → __tests__}/SeoExpander.spec.ts +1 -1
- package/src/react/i18n/{providers → __tests__}/I18nProvider.spec.ts +1 -1
- package/src/react/i18n/{hooks → __tests__}/useI18n.browser.spec.tsx +1 -1
- package/src/react/intro/components/GettingStartedDevtoolsSlide.tsx +3 -6
- package/src/react/router/{providers → __tests__}/ReactBrowserProvider.browser.spec.ts +1 -1
- package/src/react/router/providers/ReactBrowserProvider.ts +2 -2
- package/src/react/router/providers/ReactPageProvider.ts +2 -2
- package/src/react/router/providers/ReactServerProvider.ts +3 -3
- package/src/redis/{providers → __tests__}/BunRedisProvider.bun.spec.ts +4 -4
- package/src/retry/{primitives → __tests__}/$retry.middleware.spec.ts +1 -1
- package/src/router/{TemplatedPathParser.spec.ts → __tests__/TemplatedPathParser.spec.ts} +1 -1
- package/src/scheduler/primitives/$scheduler.ts +2 -2
- package/src/security/{primitives → __tests__}/$secure-browser.spec.ts +1 -1
- package/src/security/{primitives → __tests__}/$secure.spec.ts +1 -1
- package/src/security/primitives/$issuer.ts +1 -1
- package/src/security/providers/JwtProvider.ts +6 -10
- package/src/security/providers/SecurityProvider.ts +6 -11
- package/src/security/schemas/userAccountInfoSchema.ts +3 -3
- package/src/server/auth/providers/ServerAuthProvider.ts +24 -2
- package/src/server/cookies/{services → __tests__}/CookieParser.spec.ts +1 -1
- package/src/server/core/{primitives → __tests__}/$circuit.spec.ts +1 -1
- package/src/server/core/{providers → __tests__}/NodeHttpServerProvider.spec.ts +1 -1
- package/src/server/core/{providers → __tests__}/ServerBodyParserProvider.spec.ts +31 -1
- package/src/server/core/{providers → __tests__}/ServerCompressProvider.spec.ts +1 -1
- package/src/server/core/{providers → __tests__}/ServerHelmetProvider.spec.ts +4 -1
- package/src/server/core/{providers → __tests__}/ServerMultipartProvider.spec.ts +1 -1
- package/src/server/core/{services → __tests__}/ServerRequestParser.spec.ts +1 -1
- package/src/server/core/primitives/$action.ts +2 -2
- package/src/server/core/primitives/$sse.ts +2 -2
- package/src/server/core/providers/ServerBodyParserProvider.ts +21 -12
- package/src/server/core/providers/ServerCompressProvider.ts +2 -2
- package/src/server/core/providers/ServerHelmetProvider.ts +2 -2
- package/src/server/core/providers/ServerMultipartProvider.ts +2 -2
- package/src/server/core/providers/ServerRouterProvider.ts +1 -5
- package/src/server/cors/{primitives → __tests__}/$cors.spec.ts +1 -1
- package/src/server/cors/providers/ServerCorsProvider.ts +2 -2
- package/src/server/links/{services → __tests__}/BatchCollector.spec.ts +1 -1
- package/src/server/links/providers/LinkProvider.ts +2 -2
- package/src/server/links/providers/RemotePrimitiveProvider.ts +2 -2
- package/src/server/links/providers/ServerLinksProvider.ts +2 -2
- package/src/server/rate-limit/{primitives → __tests__}/$rateLimit.spec.ts +1 -1
- package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +2 -2
- package/src/server/swagger/providers/ServerSwaggerProvider.ts +2 -2
- package/src/sms/{providers → __tests__}/LocalSmsProvider.spec.ts +35 -29
- package/src/sms/providers/LocalSmsProvider.ts +13 -24
- package/src/system/{providers → __tests__}/MemoryFileSystemProvider.spec.ts +1 -1
- package/src/system/{providers → __tests__}/MemoryShellProvider.spec.ts +1 -1
- package/src/topic/redis/providers/RedisTopicProvider.ts +2 -2
- package/src/websocket/{services → __tests__}/RoomManager.spec.ts +1 -1
- package/src/websocket/providers/NodeWebSocketServerProvider.ts +2 -2
- package/tsconfig.base.json +1 -0
- package/assets/devtools-ui/200.html +0 -10
- package/assets/devtools-ui/200.html.br +0 -0
- package/assets/devtools-ui/404.html +0 -10
- package/assets/devtools-ui/404.html.br +0 -0
- package/assets/devtools-ui/CNAME +0 -1
- package/assets/devtools-ui/asset.CHpVij2M.css +0 -1
- package/assets/devtools-ui/asset.CHpVij2M.css.br +0 -0
- package/assets/devtools-ui/asset.DJ-i0UDz.css +0 -1
- package/assets/devtools-ui/asset.DJ-i0UDz.css.br +0 -0
- package/assets/devtools-ui/chunk.1jwpJORo.js +0 -1
- package/assets/devtools-ui/chunk.1jwpJORo.js.br +0 -0
- package/assets/devtools-ui/chunk.B0r2wfUL.js +0 -1
- package/assets/devtools-ui/chunk.B0r2wfUL.js.br +0 -0
- package/assets/devtools-ui/chunk.BScN4dVR.js +0 -84
- package/assets/devtools-ui/chunk.BScN4dVR.js.br +0 -0
- package/assets/devtools-ui/chunk.BispuoY4.js +0 -1
- package/assets/devtools-ui/chunk.BispuoY4.js.br +0 -0
- package/assets/devtools-ui/chunk.BtrPUUd7.js +0 -2
- package/assets/devtools-ui/chunk.BtrPUUd7.js.br +0 -0
- package/assets/devtools-ui/chunk.C-KMHgqf.js +0 -1
- package/assets/devtools-ui/chunk.C-KMHgqf.js.br +0 -0
- package/assets/devtools-ui/chunk.C2zQ3CF6.js +0 -7
- package/assets/devtools-ui/chunk.C2zQ3CF6.js.br +0 -0
- package/assets/devtools-ui/chunk.C619McpO.js +0 -1
- package/assets/devtools-ui/chunk.C619McpO.js.br +0 -0
- package/assets/devtools-ui/chunk.C9OsYsVl.js +0 -1
- package/assets/devtools-ui/chunk.C9OsYsVl.js.br +0 -3
- package/assets/devtools-ui/chunk.CAC_-151.js +0 -1
- package/assets/devtools-ui/chunk.CAC_-151.js.br +0 -0
- package/assets/devtools-ui/chunk.CCmesWfx.js +0 -1
- package/assets/devtools-ui/chunk.CCmesWfx.js.br +0 -0
- package/assets/devtools-ui/chunk.CFQDmrcV.js +0 -1
- package/assets/devtools-ui/chunk.CFQDmrcV.js.br +0 -0
- package/assets/devtools-ui/chunk.CgM71Zau.js +0 -1
- package/assets/devtools-ui/chunk.CgM71Zau.js.br +0 -0
- package/assets/devtools-ui/chunk.CmHq336a.js +0 -1
- package/assets/devtools-ui/chunk.CmHq336a.js.br +0 -0
- package/assets/devtools-ui/chunk.CthNMCar.js +0 -1
- package/assets/devtools-ui/chunk.CthNMCar.js.br +0 -0
- package/assets/devtools-ui/chunk.D2brVJP1.js +0 -1
- package/assets/devtools-ui/chunk.D2brVJP1.js.br +0 -0
- package/assets/devtools-ui/chunk.DgBKGkiw.js +0 -1
- package/assets/devtools-ui/chunk.DgBKGkiw.js.br +0 -0
- package/assets/devtools-ui/chunk.NNHHCQsa.js +0 -1
- package/assets/devtools-ui/chunk.NNHHCQsa.js.br +0 -0
- package/assets/devtools-ui/chunk._CDKKWMo.js +0 -1
- package/assets/devtools-ui/chunk._CDKKWMo.js.br +0 -0
- package/assets/devtools-ui/entry.B_nOjAod.js +0 -2
- package/assets/devtools-ui/entry.B_nOjAod.js.br +0 -0
- package/assets/devtools-ui/index.html +0 -10
- package/assets/devtools-ui/index.html.br +0 -0
- package/dist/devtools/index.browser.js +0 -224
- package/dist/devtools/index.browser.js.map +0 -1
- package/dist/devtools/index.d.ts +0 -499
- package/dist/devtools/index.d.ts.map +0 -1
- package/dist/devtools/index.js +0 -782
- package/dist/devtools/index.js.map +0 -1
- package/dist/mqtt/index.d.ts +0 -164
- package/dist/mqtt/index.d.ts.map +0 -1
- package/dist/mqtt/index.js +0 -214
- package/dist/mqtt/index.js.map +0 -1
- package/dist/topic/mqtt/index.d.ts +0 -87
- package/dist/topic/mqtt/index.d.ts.map +0 -1
- package/dist/topic/mqtt/index.js +0 -88
- package/dist/topic/mqtt/index.js.map +0 -1
- package/src/api/users/parameters/UserParameters.ts +0 -23
- package/src/api/users/services/SessionService.spec.ts +0 -303
- package/src/cli/platform/adapters/DockerAdapter.spec.ts +0 -378
- package/src/cli/platform/adapters/DockerAdapter.ts +0 -417
- package/src/cli/platform/services/DockerComposeGenerator.spec.ts +0 -490
- package/src/cli/platform/services/DockerComposeGenerator.ts +0 -353
- package/src/cli/platform/services/DockerSshService.spec.ts +0 -47
- package/src/cli/platform/services/DockerSshService.ts +0 -61
- package/src/devtools/__tests__/DevCollectorProvider.spec.ts +0 -7
- package/src/devtools/assets.ts +0 -6
- package/src/devtools/entities/logs.ts +0 -21
- package/src/devtools/index.browser.ts +0 -11
- package/src/devtools/index.shared.ts +0 -15
- package/src/devtools/index.ts +0 -39
- package/src/devtools/providers/DevToolsMetadataProvider.ts +0 -459
- package/src/devtools/providers/DevToolsProvider.ts +0 -280
- package/src/devtools/schemas/DevActionMetadata.ts +0 -30
- package/src/devtools/schemas/DevAtomMetadata.ts +0 -26
- package/src/devtools/schemas/DevBucketMetadata.ts +0 -11
- package/src/devtools/schemas/DevCacheMetadata.ts +0 -10
- package/src/devtools/schemas/DevEntityMetadata.ts +0 -60
- package/src/devtools/schemas/DevEnvMetadata.ts +0 -22
- package/src/devtools/schemas/DevMetadata.ts +0 -47
- package/src/devtools/schemas/DevModuleMetadata.ts +0 -8
- package/src/devtools/schemas/DevPageMetadata.ts +0 -24
- package/src/devtools/schemas/DevProviderMetadata.ts +0 -10
- package/src/devtools/schemas/DevQueueMetadata.ts +0 -10
- package/src/devtools/schemas/DevRealmMetadata.ts +0 -19
- package/src/devtools/schemas/DevRouteMetadata.ts +0 -8
- package/src/devtools/schemas/DevSchedulerMetadata.ts +0 -11
- package/src/devtools/schemas/DevTopicMetadata.ts +0 -11
- package/src/mqtt/index.ts +0 -32
- package/src/mqtt/providers/MqttClientProvider.ts +0 -63
- package/src/mqtt/providers/MqttJsClientProvider.spec.ts +0 -165
- package/src/mqtt/providers/MqttJsClientProvider.ts +0 -309
- package/src/topic/mqtt/index.ts +0 -30
- package/src/topic/mqtt/providers/MqttTopicProvider.spec.ts +0 -160
- package/src/topic/mqtt/providers/MqttTopicProvider.ts +0 -146
- /package/src/api/audits/{primitives → __tests__}/$audit.spec.ts +0 -0
- /package/src/api/audits/{services → __tests__}/AuditService.spec.ts +0 -0
- /package/src/api/files/{controllers → __tests__}/AdminFileStatsController.spec.ts +0 -0
- /package/src/api/files/{jobs → __tests__}/FileJobs.spec.ts +0 -0
- /package/src/api/jobs/{primitives → __tests__}/$job-middleware.spec.ts +0 -0
- /package/src/api/parameters/{primitives → __tests__}/$parameter.spec.ts +0 -0
- /package/src/api/users/{controllers → __tests__}/AdminIdentityController.spec.ts +0 -0
- /package/src/api/users/{controllers → __tests__}/AdminSessionController.spec.ts +0 -0
- /package/src/api/users/{controllers → __tests__}/AdminUserController.spec.ts +0 -0
- /package/src/api/users/{services → __tests__}/CredentialService.spec.ts +0 -0
- /package/src/api/users/{services → __tests__}/RegistrationService.spec.ts +0 -0
- /package/src/batch/{primitives → __tests__}/$batch.spec.ts +0 -0
- /package/src/batch/{providers → __tests__}/BatchProvider.spec.ts +0 -0
- /package/src/bucket/{primitives → __tests__}/$bucket.spec.ts +0 -0
- /package/src/bucket/{providers → __tests__}/FileStorageProvider.spec.ts +0 -0
- /package/src/bucket/{providers → __tests__}/LocalFileStorageProvider.spec.ts +0 -0
- /package/src/bucket/{providers → __tests__}/MemoryFileStorageProvider.spec.ts +0 -0
- /package/src/cache/core/{primitives → __tests__}/$cache.spec.ts +0 -0
- /package/src/cache/redis/{providers → __tests__}/RedisCacheProvider.spec.ts +0 -0
- /package/src/command/{primitives → __tests__}/$command.spec.ts +0 -0
- /package/src/command/{helpers → __tests__}/Asker.spec.ts +0 -0
- /package/src/command/{helpers → __tests__}/Runner.spec.ts +0 -0
- /package/src/core/{primitives → __tests__}/$context.spec.ts +0 -0
- /package/src/core/{primitives → __tests__}/$env.spec.ts +0 -0
- /package/src/core/{primitives → __tests__}/$hook.spec.ts +0 -0
- /package/src/core/{primitives → __tests__}/$inject.spec.ts +0 -0
- /package/src/core/{primitives → __tests__}/$module.spec.ts +0 -0
- /package/src/core/{providers → __tests__}/CodecManager.spec.ts +0 -0
- /package/src/core/{providers → __tests__}/EventManager.spec.ts +0 -0
- /package/src/core/{providers → __tests__}/StateManager.spec.ts +0 -0
- /package/src/core/{providers → __tests__}/TypeProvider.spec.ts +0 -0
- /package/src/datetime/{primitives → __tests__}/$interval.spec.ts +0 -0
- /package/src/datetime/{providers → __tests__}/DateTimeProvider.spec.ts +0 -0
- /package/src/email/core/{primitives → __tests__}/$email.spec.ts +0 -0
- /package/src/fake/{providers → __tests__}/FakeProvider.spec.ts +0 -0
- /package/src/lock/core/{providers → __tests__}/MemoryLockProvider.spec.ts +0 -0
- /package/src/lock/redis/{providers → __tests__}/RedisLockProvider.spec.ts +0 -0
- /package/src/logger/{primitives → __tests__}/$logger.spec.ts +0 -0
- /package/src/logger/{services → __tests__}/Logger.spec.ts +0 -0
- /package/src/mcp/{primitives → __tests__}/$prompt.spec.ts +0 -0
- /package/src/mcp/{primitives → __tests__}/$resource.spec.ts +0 -0
- /package/src/mcp/{primitives → __tests__}/$tool.spec.ts +0 -0
- /package/src/mcp/{providers → __tests__}/McpServerProvider.spec.ts +0 -0
- /package/src/mcp/{helpers → __tests__}/jsonrpc.spec.ts +0 -0
- /package/src/orm/core/{helpers → __tests__}/parseQueryString.spec.ts +0 -0
- /package/src/queue/core/{primitives → __tests__}/$consumer.spec.ts +0 -0
- /package/src/queue/core/{providers → __tests__}/MemoryQueueProvider.spec.ts +0 -0
- /package/src/queue/core/{providers → __tests__}/WorkerProvider.spec.ts +0 -0
- /package/src/queue/redis/{providers → __tests__}/RedisQueueProvider.spec.ts +0 -0
- /package/src/react/form/{hooks → __tests__}/useForm.browser.spec.tsx +0 -0
- /package/src/react/head/{hooks → __tests__}/useHead.spec.tsx +0 -0
- /package/src/react/i18n/{components → __tests__}/Localize.spec.tsx +0 -0
- /package/src/react/router/{primitives → __tests__}/$page.browser.spec.tsx +0 -0
- /package/src/react/router/{primitives → __tests__}/$page.middleware.spec.tsx +0 -0
- /package/src/react/router/{primitives → __tests__}/$page.spec.tsx +0 -0
- /package/src/react/router/{providers → __tests__}/ReactPreloadProvider.spec.ts +0 -0
- /package/src/react/router/{providers → __tests__}/ReactServerProvider.spec.tsx +0 -0
- /package/src/react/router/{providers → __tests__}/ReactServerTemplateProvider.spec.ts +0 -0
- /package/src/retry/{primitives → __tests__}/$retry.spec.ts +0 -0
- /package/src/retry/{providers → __tests__}/RetryProvider.spec.ts +0 -0
- /package/src/router/{providers → __tests__}/RouterProvider.spec.ts +0 -0
- /package/src/security/{primitives → __tests__}/$issuer.spec.ts +0 -0
- /package/src/security/{primitives → __tests__}/$permission.spec.ts +0 -0
- /package/src/security/{primitives → __tests__}/$role.spec.ts +0 -0
- /package/src/security/{primitives → __tests__}/$serviceAccount.spec.ts +0 -0
- /package/src/security/{providers → __tests__}/SecurityProvider.spec.ts +0 -0
- /package/src/server/cookies/{providers → __tests__}/ServerCookiesProvider.spec.ts +0 -0
- /package/src/server/core/{primitives → __tests__}/$action.spec.ts +0 -0
- /package/src/server/core/{primitives → __tests__}/$middleware.spec.ts +0 -0
- /package/src/server/core/{primitives → __tests__}/$route.spec.ts +0 -0
- /package/src/server/core/{primitives → __tests__}/$sse.spec.ts +0 -0
- /package/src/server/core/{providers → __tests__}/BunHttpServerProvider.bun.spec.ts +0 -0
- /package/src/server/core/{services → __tests__}/HttpClient.spec.ts +0 -0
- /package/src/server/core/{providers → __tests__}/ServerLoggerProvider.spec.ts +0 -0
- /package/src/server/core/{services → __tests__}/UserAgentParser.spec.ts +0 -0
- /package/src/server/cors/{providers → __tests__}/ServerCorsProvider.spec.ts +0 -0
- /package/src/server/etag/{providers → __tests__}/ServerEtagProvider.spec.ts +0 -0
- /package/src/server/health/{providers → __tests__}/ServerHealthProvider.spec.ts +0 -0
- /package/src/server/links/{primitives → __tests__}/$remote.spec.ts +0 -0
- /package/src/server/links/{services → __tests__}/BatchEndpoint.spec.ts +0 -0
- /package/src/server/links/{providers → __tests__}/LinkProvider.spec.ts +0 -0
- /package/src/server/links/{providers → __tests__}/ServerLinksProvider.spec.ts +0 -0
- /package/src/server/metrics/{providers → __tests__}/ServerMetricsProvider.spec.ts +0 -0
- /package/src/server/proxy/{primitives → __tests__}/$proxy.spec.ts +0 -0
- /package/src/server/rate-limit/{providers → __tests__}/ServerRateLimitProvider.spec.ts +0 -0
- /package/src/server/static/{primitives → __tests__}/$serve.spec.ts +0 -0
- /package/src/server/swagger/{primitives → __tests__}/$swagger.spec.ts +0 -0
- /package/src/sms/{primitives → __tests__}/$sms.spec.ts +0 -0
- /package/src/sms/{providers → __tests__}/MemorySmsProvider.spec.ts +0 -0
- /package/src/system/{services → __tests__}/FileDetector.spec.ts +0 -0
- /package/src/system/{providers → __tests__}/NodeFileSystemProvider.spec.ts +0 -0
- /package/src/topic/core/{primitives → __tests__}/$subscriber.spec.ts +0 -0
- /package/src/topic/core/{providers → __tests__}/MemoryTopicProvider.spec.ts +0 -0
- /package/src/topic/redis/{providers → __tests__}/RedisTopicProvider.spec.ts +0 -0
- /package/src/websocket/{primitives → __tests__}/$channel.spec.ts +0 -0
package/dist/cli/core/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
|
-
import { $atom, $hook, $inject, $module, $
|
|
2
|
+
import { $atom, $hook, $inject, $module, $state, Alepha, AlephaError, __alephaRef, t } from "alepha";
|
|
3
3
|
import { $command, CliProvider, EnvUtils, Runner } from "alepha/command";
|
|
4
4
|
import { $logger, ConsoleColorProvider } from "alepha/logger";
|
|
5
5
|
import { FileSystemProvider, ShellProvider } from "alepha/system";
|
|
6
6
|
import { createHash } from "node:crypto";
|
|
7
7
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
8
|
-
import { readFile } from "node:fs/promises";
|
|
8
|
+
import { readFile, readdir, stat } from "node:fs/promises";
|
|
9
9
|
import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
10
10
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
11
11
|
import { analyzer } from "vite-bundle-analyzer";
|
|
@@ -13,7 +13,7 @@ import { KV_DEFAULT_BINDING } from "alepha/cache";
|
|
|
13
13
|
import { QUEUE_DEFAULT_BINDING } from "alepha/queue";
|
|
14
14
|
import { promisify } from "node:util";
|
|
15
15
|
import { brotliCompress, gzip } from "node:zlib";
|
|
16
|
-
import { exec } from "node:child_process";
|
|
16
|
+
import { exec, spawn } from "node:child_process";
|
|
17
17
|
import { ServerSwaggerProvider } from "alepha/server/swagger";
|
|
18
18
|
//#region ../../src/cli/core/atoms/appEntryOptions.ts
|
|
19
19
|
const appEntryOptions = $atom({
|
|
@@ -89,10 +89,7 @@ const buildOptions = $atom({
|
|
|
89
89
|
const devOptions = $atom({
|
|
90
90
|
name: "alepha.cli.dev.options",
|
|
91
91
|
description: "Dev configuration options",
|
|
92
|
-
schema: t.object({
|
|
93
|
-
noDevtools: t.optional(t.boolean({ default: false })),
|
|
94
|
-
noViteReactPlugin: t.optional(t.boolean({ default: false }))
|
|
95
|
-
}),
|
|
92
|
+
schema: t.object({ noViteReactPlugin: t.optional(t.boolean({ default: false })) }),
|
|
96
93
|
default: {}
|
|
97
94
|
});
|
|
98
95
|
//#endregion
|
|
@@ -104,7 +101,7 @@ const devOptions = $atom({
|
|
|
104
101
|
*/
|
|
105
102
|
var AppEntryProvider = class {
|
|
106
103
|
fs = $inject(FileSystemProvider);
|
|
107
|
-
options = $
|
|
104
|
+
options = $state(appEntryOptions);
|
|
108
105
|
serverEntries = [
|
|
109
106
|
"main.server.ts",
|
|
110
107
|
"main.server.tsx",
|
|
@@ -589,11 +586,12 @@ var AlephaCliUtils = class {
|
|
|
589
586
|
//#endregion
|
|
590
587
|
//#region ../../package.json
|
|
591
588
|
var devDependencies = {
|
|
592
|
-
"@biomejs/biome": "^2.4.
|
|
593
|
-
"@electric-sql/pglite": "^0.4.
|
|
594
|
-
"@faker-js/faker": "^10.
|
|
589
|
+
"@biomejs/biome": "^2.4.9",
|
|
590
|
+
"@electric-sql/pglite": "^0.4.2",
|
|
591
|
+
"@faker-js/faker": "^10.4.0",
|
|
595
592
|
"@testing-library/dom": "^10.4.1",
|
|
596
593
|
"@testing-library/react": "^16.3.2",
|
|
594
|
+
"@types/bun": "^1.3.11",
|
|
597
595
|
"@types/node": "^25.5.0",
|
|
598
596
|
"@types/nodemailer": "^7.0.11",
|
|
599
597
|
"@types/react": "^19.2.14",
|
|
@@ -602,15 +600,15 @@ var devDependencies = {
|
|
|
602
600
|
"cron-schedule": "^6.0.0",
|
|
603
601
|
"drizzle-kit": "^0.31.10",
|
|
604
602
|
"jose": "^6.2.2",
|
|
605
|
-
"jsdom": "^29.0.
|
|
606
|
-
"nodemailer": "^8.0.
|
|
603
|
+
"jsdom": "^29.0.1",
|
|
604
|
+
"nodemailer": "^8.0.4",
|
|
607
605
|
"openid-client": "^6.8.2",
|
|
608
606
|
"prom-client": "^15.1.3",
|
|
609
607
|
"react": "^19.2.4",
|
|
610
608
|
"react-dom": "^19.2.4",
|
|
611
609
|
"swagger-ui-dist": "^5.32.1",
|
|
612
|
-
"tsdown": "^0.21.
|
|
613
|
-
"vitest": "^4.1.
|
|
610
|
+
"tsdown": "^0.21.7",
|
|
611
|
+
"vitest": "^4.1.2"
|
|
614
612
|
};
|
|
615
613
|
const version = JSON.parse(readFileSync(new URL("../../../package.json", import.meta.url), "utf-8")).version;
|
|
616
614
|
//#endregion
|
|
@@ -863,7 +861,8 @@ var PackageManagerUtils = class {
|
|
|
863
861
|
generatePackageJsonContent(modes) {
|
|
864
862
|
const alephaDeps = devDependencies;
|
|
865
863
|
const dependencies = { alepha: `^${version}` };
|
|
866
|
-
const devDependencies$1 = {
|
|
864
|
+
const devDependencies$1 = {};
|
|
865
|
+
if (!(modes.react && !modes.ui)) devDependencies$1["drizzle-kit"] = alephaDeps["drizzle-kit"];
|
|
867
866
|
if (!modes.isPackage) {
|
|
868
867
|
devDependencies$1["@biomejs/biome"] = alephaDeps["@biomejs/biome"];
|
|
869
868
|
if (modes.test) devDependencies$1.vitest = alephaDeps.vitest;
|
|
@@ -903,13 +902,7 @@ var PackageManagerUtils = class {
|
|
|
903
902
|
})));
|
|
904
903
|
}
|
|
905
904
|
};
|
|
906
|
-
|
|
907
|
-
//#region ../../src/cli/core/assets.ts
|
|
908
|
-
const packageRoot = join(fileURLToPath(import.meta.url), "../../../..");
|
|
909
|
-
const cliAssets = {
|
|
910
|
-
devtools: join(packageRoot, "assets/devtools-ui"),
|
|
911
|
-
logo: join(packageRoot, "assets/logo.svg")
|
|
912
|
-
};
|
|
905
|
+
const cliAssets = { logo: join(join(fileURLToPath(import.meta.url), "../../../.."), "assets/logo.svg") };
|
|
913
906
|
//#endregion
|
|
914
907
|
//#region ../../src/cli/core/templates/agentMd.ts
|
|
915
908
|
const agentMd = (type) => {
|
|
@@ -961,12 +954,6 @@ export default defineConfig({
|
|
|
961
954
|
// runtime: "node",
|
|
962
955
|
// },
|
|
963
956
|
//
|
|
964
|
-
// platform: {
|
|
965
|
-
// environments: {
|
|
966
|
-
// production: { adapter: "cloudflare" },
|
|
967
|
-
// },
|
|
968
|
-
// },
|
|
969
|
-
//
|
|
970
957
|
// env: {
|
|
971
958
|
// VITE_BUILD_DATE: new Date().toISOString(),
|
|
972
959
|
// VITE_VERSION: pkg.version,
|
|
@@ -1280,13 +1267,45 @@ export default defineConfig({
|
|
|
1280
1267
|
`;
|
|
1281
1268
|
};
|
|
1282
1269
|
//#endregion
|
|
1270
|
+
//#region ../../src/cli/core/templates/webAdminDashboardTsx.ts
|
|
1271
|
+
const webAdminDashboardTsx = () => {
|
|
1272
|
+
return `import { Flex, Text } from "@alepha/ui";
|
|
1273
|
+
|
|
1274
|
+
const AdminDashboard = () => {
|
|
1275
|
+
return (
|
|
1276
|
+
<Flex direction="column" align="center" justify="center" mih="60vh" gap="md">
|
|
1277
|
+
<Text size="xl" fw={600}>
|
|
1278
|
+
Admin Panel
|
|
1279
|
+
</Text>
|
|
1280
|
+
<Text c="dimmed">Welcome to the admin panel.</Text>
|
|
1281
|
+
</Flex>
|
|
1282
|
+
);
|
|
1283
|
+
};
|
|
1284
|
+
|
|
1285
|
+
export default AdminDashboard;
|
|
1286
|
+
`;
|
|
1287
|
+
};
|
|
1288
|
+
//#endregion
|
|
1283
1289
|
//#region ../../src/cli/core/templates/webAppRouterTs.ts
|
|
1284
1290
|
const webAppRouterTs = (options) => {
|
|
1285
1291
|
const imports = [];
|
|
1286
1292
|
const classMembers = [];
|
|
1287
1293
|
if (options.ui) imports.push("import { $ui } from \"@alepha/ui\";");
|
|
1288
1294
|
if (options.auth) imports.push("import { $uiAuth } from \"@alepha/ui/auth\";");
|
|
1289
|
-
if (options.admin)
|
|
1295
|
+
if (options.admin) {
|
|
1296
|
+
imports.push("import { $uiAdmin } from \"@alepha/ui/admin\";");
|
|
1297
|
+
imports.push("import { AdminUserRouter } from \"@alepha/ui/admin-users\";");
|
|
1298
|
+
imports.push("import { AdminSessionRouter } from \"@alepha/ui/admin-sessions\";");
|
|
1299
|
+
imports.push("import { AdminAuditRouter } from \"@alepha/ui/admin-audits\";");
|
|
1300
|
+
imports.push("import { AdminFileRouter } from \"@alepha/ui/admin-files\";");
|
|
1301
|
+
imports.push("import { AdminParameterRouter } from \"@alepha/ui/admin-parameters\";");
|
|
1302
|
+
imports.push("import { AdminJobRouter } from \"@alepha/ui/admin-jobs\";");
|
|
1303
|
+
imports.push("import { AdminApiKeyRouter } from \"@alepha/ui/admin-keys\";");
|
|
1304
|
+
imports.push("import { AdminNotificationRouter } from \"@alepha/ui/admin-notifications\";");
|
|
1305
|
+
imports.push("import { AdminBillingRouter } from \"@alepha/ui/admin-billing\";");
|
|
1306
|
+
imports.push("import { $inject } from \"alepha\";");
|
|
1307
|
+
imports.push("import { IconLayoutDashboard, IconLockPassword, IconCreditCard } from \"@tabler/icons-react\";");
|
|
1308
|
+
}
|
|
1290
1309
|
imports.push("import { $page } from \"alepha/react/router\";");
|
|
1291
1310
|
if (options.api) {
|
|
1292
1311
|
imports.push("import { $client } from \"alepha/server/links\";");
|
|
@@ -1296,7 +1315,69 @@ const webAppRouterTs = (options) => {
|
|
|
1296
1315
|
if (options.ui) {
|
|
1297
1316
|
classMembers.push(" ui = $ui();");
|
|
1298
1317
|
if (options.auth) classMembers.push(" uiAuth = $uiAuth();");
|
|
1299
|
-
if (options.admin) classMembers.push(
|
|
1318
|
+
if (options.admin) classMembers.push(` // ── Admin Domain Routers ──────────────────────────
|
|
1319
|
+
protected users = $inject(AdminUserRouter);
|
|
1320
|
+
protected sessions = $inject(AdminSessionRouter);
|
|
1321
|
+
protected audits = $inject(AdminAuditRouter);
|
|
1322
|
+
protected files = $inject(AdminFileRouter);
|
|
1323
|
+
protected parameters = $inject(AdminParameterRouter);
|
|
1324
|
+
protected jobs = $inject(AdminJobRouter);
|
|
1325
|
+
protected apiKeys = $inject(AdminApiKeyRouter);
|
|
1326
|
+
protected notifications = $inject(AdminNotificationRouter);
|
|
1327
|
+
protected billing = $inject(AdminBillingRouter);
|
|
1328
|
+
|
|
1329
|
+
// ── Admin Panel ─────────────────────────────────
|
|
1330
|
+
admin = $uiAdmin({
|
|
1331
|
+
pages: [
|
|
1332
|
+
this.users.adminUsers,
|
|
1333
|
+
this.sessions.adminSessions,
|
|
1334
|
+
this.audits.adminAudits,
|
|
1335
|
+
this.files.adminFiles,
|
|
1336
|
+
this.parameters.adminParameters,
|
|
1337
|
+
this.jobs.adminJobs,
|
|
1338
|
+
this.apiKeys.adminApiKeys,
|
|
1339
|
+
this.notifications.adminNotifications,
|
|
1340
|
+
this.billing.adminBilling,
|
|
1341
|
+
],
|
|
1342
|
+
sidebarItems: [
|
|
1343
|
+
{
|
|
1344
|
+
label: "Security",
|
|
1345
|
+
children: [
|
|
1346
|
+
{ label: "Identity", icon: IconLockPassword, children: [
|
|
1347
|
+
this.users.adminUsers,
|
|
1348
|
+
this.sessions.adminSessions,
|
|
1349
|
+
this.apiKeys.adminApiKeys,
|
|
1350
|
+
]},
|
|
1351
|
+
this.audits.adminAudits,
|
|
1352
|
+
],
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
label: "System",
|
|
1356
|
+
children: [
|
|
1357
|
+
this.files.adminFiles,
|
|
1358
|
+
this.jobs.adminJobs,
|
|
1359
|
+
this.notifications.adminNotifications,
|
|
1360
|
+
this.parameters.adminParameters,
|
|
1361
|
+
],
|
|
1362
|
+
},
|
|
1363
|
+
{
|
|
1364
|
+
label: "Commerce",
|
|
1365
|
+
icon: IconCreditCard,
|
|
1366
|
+
children: [
|
|
1367
|
+
this.billing.adminBilling,
|
|
1368
|
+
],
|
|
1369
|
+
},
|
|
1370
|
+
],
|
|
1371
|
+
});
|
|
1372
|
+
|
|
1373
|
+
// ── Admin Dashboard ─────────────────────────────
|
|
1374
|
+
adminDashboard = $page({
|
|
1375
|
+
parent: this.admin.adminLayout,
|
|
1376
|
+
path: "/",
|
|
1377
|
+
label: "Dashboard",
|
|
1378
|
+
icon: IconLayoutDashboard,
|
|
1379
|
+
lazy: () => import("./components/AdminDashboard.tsx"),
|
|
1380
|
+
});`);
|
|
1300
1381
|
classMembers.push(` layout = $page({
|
|
1301
1382
|
parent: this.ui.root,
|
|
1302
1383
|
children: () => [this.home],
|
|
@@ -1502,6 +1583,7 @@ var ProjectScaffolder = class {
|
|
|
1502
1583
|
admin: opts.admin
|
|
1503
1584
|
}), opts.force);
|
|
1504
1585
|
await this.ensureFile(root, "src/web/components/Home.tsx", webHomeComponentTsx({ api: opts.api }), opts.force);
|
|
1586
|
+
if (opts.admin) await this.ensureFile(root, "src/web/components/AdminDashboard.tsx", webAdminDashboardTsx(), opts.force);
|
|
1505
1587
|
await this.ensureFile(root, "src/main.browser.ts", mainBrowserTs(), opts.force);
|
|
1506
1588
|
}
|
|
1507
1589
|
/**
|
|
@@ -1525,21 +1607,20 @@ var ProjectScaffolder = class {
|
|
|
1525
1607
|
root = this.fs.join(root, args);
|
|
1526
1608
|
await this.fs.mkdir(root, { force: true });
|
|
1527
1609
|
}
|
|
1528
|
-
if (flags.
|
|
1529
|
-
if (flags.auth) {
|
|
1610
|
+
if (flags.saas) {
|
|
1530
1611
|
flags.api = true;
|
|
1531
1612
|
flags.ui = true;
|
|
1532
1613
|
}
|
|
1533
1614
|
if (flags.ui) flags.react = true;
|
|
1534
1615
|
if (flags.tailwind) flags.react = true;
|
|
1535
|
-
if ((flags.
|
|
1616
|
+
if ((flags.saas || flags.api || flags.ui || flags.react || flags.tailwind) && !flags.force) {
|
|
1536
1617
|
if ((await this.fs.ls(root)).filter((f) => f !== "package.json").length > 0) throw new AlephaError(`Target directory is not empty (${root}). Use --force to overwrite existing files.`);
|
|
1537
1618
|
}
|
|
1538
1619
|
const workspace = await this.pm.getWorkspaceContext(root);
|
|
1539
1620
|
let agentType = false;
|
|
1540
1621
|
if (!workspace.isPackage) agentType = await this.utils.isInstalledAsync("claude") ? "claude" : "agents";
|
|
1541
1622
|
const isExpo = await this.pm.hasExpo(root);
|
|
1542
|
-
const adminEmail = flags.
|
|
1623
|
+
const adminEmail = flags.saas ? await this.utils.getGitEmail() : void 0;
|
|
1543
1624
|
const force = !!flags.force;
|
|
1544
1625
|
await run({
|
|
1545
1626
|
name: "ensuring configuration files",
|
|
@@ -1551,7 +1632,7 @@ var ProjectScaffolder = class {
|
|
|
1551
1632
|
isPackage: workspace.isPackage
|
|
1552
1633
|
},
|
|
1553
1634
|
tsconfigJson: !workspace.config.tsconfigJson,
|
|
1554
|
-
biomeJson:
|
|
1635
|
+
biomeJson: true,
|
|
1555
1636
|
editorconfig: !workspace.config.editorconfig,
|
|
1556
1637
|
agentMd: agentType ? { type: agentType } : false
|
|
1557
1638
|
});
|
|
@@ -1562,15 +1643,15 @@ var ProjectScaffolder = class {
|
|
|
1562
1643
|
force
|
|
1563
1644
|
});
|
|
1564
1645
|
if (flags.api) await this.ensureApiProject(root, {
|
|
1565
|
-
auth: !!flags.
|
|
1646
|
+
auth: !!flags.saas,
|
|
1566
1647
|
adminEmail,
|
|
1567
1648
|
force
|
|
1568
1649
|
});
|
|
1569
1650
|
if (flags.react && !isExpo) await this.ensureWebProject(root, {
|
|
1570
1651
|
api: !!flags.api,
|
|
1571
1652
|
ui: !!flags.ui,
|
|
1572
|
-
auth: !!flags.
|
|
1573
|
-
admin: !!flags.
|
|
1653
|
+
auth: !!flags.saas,
|
|
1654
|
+
admin: !!flags.saas,
|
|
1574
1655
|
tailwind: !!flags.tailwind,
|
|
1575
1656
|
force
|
|
1576
1657
|
});
|
|
@@ -1591,7 +1672,7 @@ var ProjectScaffolder = class {
|
|
|
1591
1672
|
if (flags.test) await this.ensureTestDir(root);
|
|
1592
1673
|
await run(`${pmName} run lint`, {
|
|
1593
1674
|
alias: "running linter",
|
|
1594
|
-
root
|
|
1675
|
+
root
|
|
1595
1676
|
});
|
|
1596
1677
|
if (!workspace.isPackage) {
|
|
1597
1678
|
if (await this.ensureGitRepo(root, { force })) await run("git add .", {
|
|
@@ -1727,6 +1808,12 @@ var BuildClientTask = class extends BuildTask {
|
|
|
1727
1808
|
mode: "production",
|
|
1728
1809
|
logLevel: opts.silent ? "silent" : void 0,
|
|
1729
1810
|
define: { "process.env.NODE_ENV": "\"production\"" },
|
|
1811
|
+
resolve: { dedupe: [
|
|
1812
|
+
"react",
|
|
1813
|
+
"react-dom",
|
|
1814
|
+
"react/jsx-runtime",
|
|
1815
|
+
"react/jsx-dev-runtime"
|
|
1816
|
+
] },
|
|
1730
1817
|
publicDir: "public",
|
|
1731
1818
|
build: {
|
|
1732
1819
|
outDir: opts.dist,
|
|
@@ -2198,6 +2285,7 @@ var BuildServerTask = class extends BuildTask {
|
|
|
2198
2285
|
name: "build server",
|
|
2199
2286
|
handler: async () => {
|
|
2200
2287
|
await this.buildServer({
|
|
2288
|
+
root: ctx.root,
|
|
2201
2289
|
entry: ctx.entry.server,
|
|
2202
2290
|
distDir,
|
|
2203
2291
|
clientDir: clientBuilt ? publicDir : void 0,
|
|
@@ -2230,6 +2318,12 @@ var BuildServerTask = class extends BuildTask {
|
|
|
2230
2318
|
mode: "production",
|
|
2231
2319
|
logLevel: opts.silent ? "silent" : void 0,
|
|
2232
2320
|
define: { "process.env.NODE_ENV": "\"production\"" },
|
|
2321
|
+
resolve: { dedupe: [
|
|
2322
|
+
"react",
|
|
2323
|
+
"react-dom",
|
|
2324
|
+
"react/jsx-runtime",
|
|
2325
|
+
"react/jsx-dev-runtime"
|
|
2326
|
+
] },
|
|
2233
2327
|
publicDir: false,
|
|
2234
2328
|
ssr: {
|
|
2235
2329
|
noExternal: true,
|
|
@@ -2272,7 +2366,7 @@ var BuildServerTask = class extends BuildTask {
|
|
|
2272
2366
|
const externals = [];
|
|
2273
2367
|
if (Array.isArray(resolvedConfig?.ssr?.external)) externals.push(...resolvedConfig.ssr.external);
|
|
2274
2368
|
await this.generateExternals(opts.distDir, externals);
|
|
2275
|
-
const entryFile = this.extractEntryFromBundle(opts.entry, result);
|
|
2369
|
+
const entryFile = this.extractEntryFromBundle(opts.root, opts.entry, result);
|
|
2276
2370
|
let manifest = "";
|
|
2277
2371
|
let manifestData;
|
|
2278
2372
|
if (opts.clientDir) {
|
|
@@ -2345,8 +2439,8 @@ var BuildServerTask = class extends BuildTask {
|
|
|
2345
2439
|
};
|
|
2346
2440
|
return stripped;
|
|
2347
2441
|
}
|
|
2348
|
-
extractEntryFromBundle(entry, result) {
|
|
2349
|
-
const entryFilePath = isAbsolute(entry) ? entry : join(
|
|
2442
|
+
extractEntryFromBundle(root, entry, result) {
|
|
2443
|
+
const entryFilePath = isAbsolute(entry) ? entry : join(root, entry);
|
|
2350
2444
|
const normalizedEntryPath = entryFilePath.replace(/\\/g, "/");
|
|
2351
2445
|
const entryFile = (Array.isArray(result) ? result[0] : result).output.find((it) => "facadeModuleId" in it && it.facadeModuleId === normalizedEntryPath)?.fileName;
|
|
2352
2446
|
if (!entryFile) throw new AlephaError(`Could not find the entry file "${entryFilePath}" in the build output. Please check your entry file and try again.`);
|
|
@@ -2613,7 +2707,7 @@ var BuildCommand = class {
|
|
|
2613
2707
|
scaffolder = $inject(ProjectScaffolder);
|
|
2614
2708
|
boot = $inject(AppEntryProvider);
|
|
2615
2709
|
viteBuildProvider = $inject(ViteBuildProvider);
|
|
2616
|
-
options = $
|
|
2710
|
+
options = $state(buildOptions);
|
|
2617
2711
|
/**
|
|
2618
2712
|
* Build pipeline: tasks run sequentially in this order.
|
|
2619
2713
|
* Each task self-guards (checks target, hasClient, etc.).
|
|
@@ -3119,6 +3213,30 @@ var ViteDevServerProvider = class {
|
|
|
3119
3213
|
isReloading = false;
|
|
3120
3214
|
needsBrowserReload = false;
|
|
3121
3215
|
currentReloadPromise = null;
|
|
3216
|
+
extraVitePlugins = [];
|
|
3217
|
+
alephaLoadedHooks = [];
|
|
3218
|
+
/**
|
|
3219
|
+
* Register an additional Vite plugin.
|
|
3220
|
+
* Must be called before init().
|
|
3221
|
+
*/
|
|
3222
|
+
addVitePlugin(plugin) {
|
|
3223
|
+
this.extraVitePlugins.push(plugin);
|
|
3224
|
+
}
|
|
3225
|
+
/**
|
|
3226
|
+
* Register a hook called after Alepha is loaded/reloaded.
|
|
3227
|
+
*/
|
|
3228
|
+
onAlephaLoaded(hook) {
|
|
3229
|
+
this.alephaLoadedHooks.push(hook);
|
|
3230
|
+
}
|
|
3231
|
+
/**
|
|
3232
|
+
* Trigger a full Alepha reload programmatically.
|
|
3233
|
+
*/
|
|
3234
|
+
reload() {
|
|
3235
|
+
this.hasError = true;
|
|
3236
|
+
this.needsBrowserReload = true;
|
|
3237
|
+
this.changedFiles.add("__manual_reload__");
|
|
3238
|
+
this.scheduleReload();
|
|
3239
|
+
}
|
|
3122
3240
|
/**
|
|
3123
3241
|
* Initialize the dev server and load Alepha.
|
|
3124
3242
|
*/
|
|
@@ -3142,10 +3260,8 @@ var ViteDevServerProvider = class {
|
|
|
3142
3260
|
try {
|
|
3143
3261
|
await this.alepha?.start();
|
|
3144
3262
|
await this.listen();
|
|
3145
|
-
|
|
3146
|
-
this.
|
|
3147
|
-
this.server.bindCLIShortcuts({ print: true });
|
|
3148
|
-
console.log("");
|
|
3263
|
+
const url = `http://localhost:${this.server.config.server.port ?? 5173}/`;
|
|
3264
|
+
(this.alepha?.log ?? this.log).info(`Listening on ${this.colors.set("CYAN", url)}`);
|
|
3149
3265
|
} catch (err) {
|
|
3150
3266
|
this.hasError = true;
|
|
3151
3267
|
this.currentError = err instanceof Error ? err : new Error(String(err));
|
|
@@ -3177,6 +3293,7 @@ var ViteDevServerProvider = class {
|
|
|
3177
3293
|
if (viteReact && !this.options.noViteReactPlugin) plugins.push(viteReact());
|
|
3178
3294
|
plugins.push(this.viteUtils.createTsconfigPathsPlugin());
|
|
3179
3295
|
plugins.push(this.viteUtils.createSsrPreloadPlugin());
|
|
3296
|
+
plugins.push(...this.extraVitePlugins);
|
|
3180
3297
|
plugins.push(this.createAlephaPlugin());
|
|
3181
3298
|
let port;
|
|
3182
3299
|
if (process.env.SERVER_PORT) port = Number(process.env.SERVER_PORT);
|
|
@@ -3188,6 +3305,12 @@ var ViteDevServerProvider = class {
|
|
|
3188
3305
|
root: this.options.root,
|
|
3189
3306
|
plugins,
|
|
3190
3307
|
appType: "custom",
|
|
3308
|
+
resolve: { dedupe: [
|
|
3309
|
+
"react",
|
|
3310
|
+
"react-dom",
|
|
3311
|
+
"react/jsx-runtime",
|
|
3312
|
+
"react/jsx-dev-runtime"
|
|
3313
|
+
] },
|
|
3191
3314
|
server: { port },
|
|
3192
3315
|
optimizeDeps: { entries: [...this.options.entry.browser ? [this.options.entry.browser] : []] }
|
|
3193
3316
|
});
|
|
@@ -3234,19 +3357,6 @@ var ViteDevServerProvider = class {
|
|
|
3234
3357
|
return {
|
|
3235
3358
|
name: "alepha",
|
|
3236
3359
|
configureServer: (server) => {
|
|
3237
|
-
if (!this.options.noDevtools) server.middlewares.use(async (req, res, next) => {
|
|
3238
|
-
if (!(req.url || "/").startsWith("/__devtools") || !req.headers.accept?.includes("text/html")) return next();
|
|
3239
|
-
const indexPath = join(cliAssets.devtools, "index.html");
|
|
3240
|
-
try {
|
|
3241
|
-
let html = await readFile(indexPath, "utf-8");
|
|
3242
|
-
html = html.replace("<head>", `<head><script type="module" src="/@vite/client"><\/script>`);
|
|
3243
|
-
res.writeHead(200, { "content-type": "text/html" });
|
|
3244
|
-
res.end(html);
|
|
3245
|
-
} catch (err) {
|
|
3246
|
-
this.log.error("Failed to serve devtools UI", err);
|
|
3247
|
-
next();
|
|
3248
|
-
}
|
|
3249
|
-
});
|
|
3250
3360
|
server.hot.on("connection", () => {
|
|
3251
3361
|
if (this.currentError) setTimeout(() => this.sendErrorOverlay(this.currentError), 50);
|
|
3252
3362
|
});
|
|
@@ -3396,10 +3506,7 @@ var ViteDevServerProvider = class {
|
|
|
3396
3506
|
}
|
|
3397
3507
|
const alepha = this.getLoadedAlepha();
|
|
3398
3508
|
alepha.store.set("alepha.vite.server", this.server);
|
|
3399
|
-
|
|
3400
|
-
const mod = await this.server.ssrLoadModule("alepha/devtools");
|
|
3401
|
-
alepha.with(mod.AlephaDevtools);
|
|
3402
|
-
}
|
|
3509
|
+
for (const hook of this.alephaLoadedHooks) await hook(alepha, this.server);
|
|
3403
3510
|
this.alepha = alepha;
|
|
3404
3511
|
await this.setupAlepha();
|
|
3405
3512
|
this.hasError = false;
|
|
@@ -3556,10 +3663,12 @@ var ViteDevServerProvider = class {
|
|
|
3556
3663
|
/**
|
|
3557
3664
|
* Log a formatted error with stack trace.
|
|
3558
3665
|
*/
|
|
3559
|
-
logError(title,
|
|
3666
|
+
logError(title, err) {
|
|
3560
3667
|
const c = this.colors;
|
|
3561
3668
|
console.log();
|
|
3562
3669
|
console.log(c.set("RED", ` ✗ ${title}`));
|
|
3670
|
+
this.logErrorWithCause(err);
|
|
3671
|
+
console.log();
|
|
3563
3672
|
console.log(c.set("GREY_DARK", " Waiting for file changes to retry..."));
|
|
3564
3673
|
console.log();
|
|
3565
3674
|
}
|
|
@@ -3594,32 +3703,122 @@ var DevCommand = class {
|
|
|
3594
3703
|
alepha = $inject(Alepha);
|
|
3595
3704
|
viteDevServer = $inject(ViteDevServerProvider);
|
|
3596
3705
|
boot = $inject(AppEntryProvider);
|
|
3597
|
-
options = $
|
|
3706
|
+
options = $state(devOptions);
|
|
3598
3707
|
/**
|
|
3599
3708
|
* Will run the project in watch mode.
|
|
3709
|
+
*
|
|
3710
|
+
* When run from a workspace root (with apps/ directory), spawns all apps in parallel.
|
|
3711
|
+
* When run from an app directory, starts a single Vite dev server.
|
|
3600
3712
|
*/
|
|
3601
3713
|
dev = $command({
|
|
3602
3714
|
name: "dev",
|
|
3603
3715
|
mode: true,
|
|
3604
3716
|
description: "Run the project in development mode",
|
|
3605
|
-
flags: t.object({
|
|
3606
|
-
"no-devtools": t.optional(t.boolean({ description: "Disable devtools" })),
|
|
3607
|
-
"no-vite-react-plugin": t.optional(t.boolean({ description: "Disable Vite React plugin" }))
|
|
3608
|
-
}),
|
|
3717
|
+
flags: t.object({ only: t.optional(t.string({ description: "Run only specific apps (comma-separated: --only api,companion)" })) }),
|
|
3609
3718
|
handler: async ({ root, flags }) => {
|
|
3610
|
-
await this.
|
|
3611
|
-
|
|
3612
|
-
this.
|
|
3613
|
-
const options = this.options;
|
|
3614
|
-
await this.viteDevServer.init({
|
|
3615
|
-
root,
|
|
3616
|
-
entry,
|
|
3617
|
-
noDevtools: flags["no-devtools"] ?? options.noDevtools ?? false,
|
|
3618
|
-
noViteReactPlugin: flags["no-vite-react-plugin"] ?? options.noViteReactPlugin ?? false
|
|
3619
|
-
});
|
|
3620
|
-
await this.viteDevServer.start();
|
|
3719
|
+
const apps = await this.discoverApps(root);
|
|
3720
|
+
if (apps.length > 0) await this.runMultiple(root, apps, flags);
|
|
3721
|
+
else await this.runSingle(root);
|
|
3621
3722
|
}
|
|
3622
3723
|
});
|
|
3724
|
+
/**
|
|
3725
|
+
* Discover apps in the workspace root.
|
|
3726
|
+
*
|
|
3727
|
+
* Looks for directories under apps/ that contain a package.json.
|
|
3728
|
+
* Supports scoped directories (e.g., apps/@passeo/api).
|
|
3729
|
+
* Returns empty array if not in a workspace root.
|
|
3730
|
+
*/
|
|
3731
|
+
async discoverApps(root) {
|
|
3732
|
+
const appsDir = join(root, "apps");
|
|
3733
|
+
if (!await this.fs.exists(appsDir)) return [];
|
|
3734
|
+
const entries = await readdir(appsDir);
|
|
3735
|
+
const apps = [];
|
|
3736
|
+
for (const entry of entries) {
|
|
3737
|
+
const appPath = join(appsDir, entry);
|
|
3738
|
+
const pkgPath = join(appPath, "package.json");
|
|
3739
|
+
if (await this.fs.exists(pkgPath)) {
|
|
3740
|
+
apps.push({
|
|
3741
|
+
name: entry,
|
|
3742
|
+
path: appPath
|
|
3743
|
+
});
|
|
3744
|
+
continue;
|
|
3745
|
+
}
|
|
3746
|
+
if ((await stat(appPath).catch(() => null))?.isDirectory()) {
|
|
3747
|
+
const scopedEntries = await readdir(appPath);
|
|
3748
|
+
for (const scopedEntry of scopedEntries) {
|
|
3749
|
+
const scopedPath = join(appPath, scopedEntry);
|
|
3750
|
+
const scopedPkgPath = join(scopedPath, "package.json");
|
|
3751
|
+
if (await this.fs.exists(scopedPkgPath)) apps.push({
|
|
3752
|
+
name: scopedEntry,
|
|
3753
|
+
path: scopedPath
|
|
3754
|
+
});
|
|
3755
|
+
}
|
|
3756
|
+
}
|
|
3757
|
+
}
|
|
3758
|
+
return apps;
|
|
3759
|
+
}
|
|
3760
|
+
/**
|
|
3761
|
+
* Run a single app (existing behavior).
|
|
3762
|
+
*/
|
|
3763
|
+
async runSingle(root) {
|
|
3764
|
+
await this.scaffolder.ensureConfig(root, { tsconfigJson: true });
|
|
3765
|
+
const entry = await this.boot.getAppEntry(root);
|
|
3766
|
+
this.log.debug("Entry file found", { entry });
|
|
3767
|
+
const options = this.options;
|
|
3768
|
+
await this.viteDevServer.init({
|
|
3769
|
+
root,
|
|
3770
|
+
entry,
|
|
3771
|
+
noViteReactPlugin: options.noViteReactPlugin ?? false
|
|
3772
|
+
});
|
|
3773
|
+
await this.viteDevServer.start();
|
|
3774
|
+
}
|
|
3775
|
+
/**
|
|
3776
|
+
* Run multiple apps in parallel with colored prefixed output.
|
|
3777
|
+
*/
|
|
3778
|
+
async runMultiple(_root, apps, flags) {
|
|
3779
|
+
const only = flags.only;
|
|
3780
|
+
if (only) {
|
|
3781
|
+
const filter = only.split(",").map((s) => s.trim().toLowerCase());
|
|
3782
|
+
apps = apps.filter((app) => filter.includes(app.name.toLowerCase()));
|
|
3783
|
+
}
|
|
3784
|
+
if (apps.length === 0) {
|
|
3785
|
+
this.log.warn("No apps found to run");
|
|
3786
|
+
return;
|
|
3787
|
+
}
|
|
3788
|
+
this.log.debug(`Starting ${apps.length} apps: ${apps.map((a) => a.name).join(", ")}`);
|
|
3789
|
+
const basePort = 5173;
|
|
3790
|
+
const processes = apps.map((app, i) => this.spawnApp(app, basePort + i));
|
|
3791
|
+
const cleanup = () => {
|
|
3792
|
+
for (const proc of processes) proc.kill("SIGTERM");
|
|
3793
|
+
};
|
|
3794
|
+
process.once("SIGINT", cleanup);
|
|
3795
|
+
process.once("SIGTERM", cleanup);
|
|
3796
|
+
await Promise.allSettled(processes.map((proc) => new Promise((resolve) => {
|
|
3797
|
+
proc.on("exit", () => resolve());
|
|
3798
|
+
})));
|
|
3799
|
+
}
|
|
3800
|
+
/**
|
|
3801
|
+
* Spawn a single app process with inherited stdio.
|
|
3802
|
+
*
|
|
3803
|
+
* Each child process gets APP_NAME set, so the Alepha logger
|
|
3804
|
+
* handles prefixing automatically.
|
|
3805
|
+
*/
|
|
3806
|
+
spawnApp(app, port) {
|
|
3807
|
+
const proc = spawn("yarn", ["alepha", "dev"], {
|
|
3808
|
+
cwd: app.path,
|
|
3809
|
+
stdio: "inherit",
|
|
3810
|
+
env: {
|
|
3811
|
+
...process.env,
|
|
3812
|
+
APP_NAME: app.name.toUpperCase(),
|
|
3813
|
+
SERVER_PORT: String(port),
|
|
3814
|
+
FORCE_COLOR: "1"
|
|
3815
|
+
}
|
|
3816
|
+
});
|
|
3817
|
+
proc.on("exit", (code) => {
|
|
3818
|
+
if (code !== 0 && code !== null) this.log.error(`${app.name} exited with code ${code}`);
|
|
3819
|
+
});
|
|
3820
|
+
return proc;
|
|
3821
|
+
}
|
|
3623
3822
|
};
|
|
3624
3823
|
//#endregion
|
|
3625
3824
|
//#region ../../src/cli/core/atoms/changelogOptions.ts
|
|
@@ -3730,7 +3929,7 @@ var ChangelogCommand = class {
|
|
|
3730
3929
|
log = $logger();
|
|
3731
3930
|
git = $inject(GitProvider);
|
|
3732
3931
|
parser = $inject(GitMessageParser);
|
|
3733
|
-
config = $
|
|
3932
|
+
config = $state(changelogOptions);
|
|
3734
3933
|
/**
|
|
3735
3934
|
* Format a single commit line.
|
|
3736
3935
|
* Example: `- **cli**: add new command (\`abc1234\`)`
|
|
@@ -3960,8 +4159,7 @@ var InitCommand = class {
|
|
|
3960
4159
|
description: "Include React dependencies and web module (src/web/)"
|
|
3961
4160
|
})),
|
|
3962
4161
|
ui: t.optional(t.boolean({ description: "Include @alepha/ui (components, auth portal, admin portal)" })),
|
|
3963
|
-
|
|
3964
|
-
admin: t.optional(t.boolean({ description: "Include admin portal ($uiAdmin). Implies --auth" })),
|
|
4162
|
+
saas: t.optional(t.boolean({ description: "Include authentication, admin portal, API, UI, and React. Everything you need for a SaaS app." })),
|
|
3965
4163
|
tailwind: t.optional(t.boolean({ description: "Include Tailwind CSS with Vite plugin. Implies --react" })),
|
|
3966
4164
|
test: t.optional(t.boolean({ description: "Include Vitest and create test directory" })),
|
|
3967
4165
|
force: t.optional(t.boolean({
|
|
@@ -4102,7 +4300,6 @@ var VerifyCommand = class {
|
|
|
4102
4300
|
description: "Verify the Alepha project",
|
|
4103
4301
|
handler: async ({ root, run }) => {
|
|
4104
4302
|
await run("alepha clean");
|
|
4105
|
-
await run("alepha format");
|
|
4106
4303
|
await run("alepha lint");
|
|
4107
4304
|
await run("alepha typecheck");
|
|
4108
4305
|
if ((await this.pm.readPackageJson(root)).devDependencies?.vitest) await run("alepha test");
|