alepha 0.19.1 → 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/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 +207 -207
- 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 +978 -913
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +160 -112
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +135 -135
- 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 -140
- package/dist/cli/core/index.d.ts.map +1 -1
- package/dist/cli/core/index.js +279 -89
- 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.d.ts +18 -17
- package/dist/orm/postgres/index.d.ts.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 +1 -1
- 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 +36 -14
- 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/{services → __tests__}/SessionService.spec.ts +67 -0
- package/src/api/users/{jobs → __tests__}/UserJobs.spec.ts +1 -1
- package/src/api/users/entities/users.ts +9 -3
- package/src/api/users/index.ts +23 -4
- package/src/api/users/primitives/$realm.ts +6 -4
- package/src/api/users/providers/RealmProvider.ts +1 -1
- package/src/api/users/services/RegistrationService.ts +1 -1
- package/src/api/users/services/SessionService.ts +92 -5
- 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 +2 -8
- 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 +54 -66
- package/src/cli/core/services/PackageManagerUtils.ts +8 -3
- package/src/cli/core/services/ProjectScaffolder.ts +18 -18
- 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/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 +1 -1
- 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/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/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/{controllers → __tests__}/FileController.spec.ts +0 -0
- /package/src/api/files/{jobs → __tests__}/FileJobs.spec.ts +0 -0
- /package/src/api/files/{services → __tests__}/FileService.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/{primitives → __tests__}/$realm.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/{providers → __tests__}/RealmProvider.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,9 +586,9 @@ 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",
|
|
597
594
|
"@types/bun": "^1.3.11",
|
|
@@ -603,15 +600,15 @@ var devDependencies = {
|
|
|
603
600
|
"cron-schedule": "^6.0.0",
|
|
604
601
|
"drizzle-kit": "^0.31.10",
|
|
605
602
|
"jose": "^6.2.2",
|
|
606
|
-
"jsdom": "^29.0.
|
|
607
|
-
"nodemailer": "^8.0.
|
|
603
|
+
"jsdom": "^29.0.1",
|
|
604
|
+
"nodemailer": "^8.0.4",
|
|
608
605
|
"openid-client": "^6.8.2",
|
|
609
606
|
"prom-client": "^15.1.3",
|
|
610
607
|
"react": "^19.2.4",
|
|
611
608
|
"react-dom": "^19.2.4",
|
|
612
609
|
"swagger-ui-dist": "^5.32.1",
|
|
613
|
-
"tsdown": "^0.21.
|
|
614
|
-
"vitest": "^4.1.
|
|
610
|
+
"tsdown": "^0.21.7",
|
|
611
|
+
"vitest": "^4.1.2"
|
|
615
612
|
};
|
|
616
613
|
const version = JSON.parse(readFileSync(new URL("../../../package.json", import.meta.url), "utf-8")).version;
|
|
617
614
|
//#endregion
|
|
@@ -864,7 +861,8 @@ var PackageManagerUtils = class {
|
|
|
864
861
|
generatePackageJsonContent(modes) {
|
|
865
862
|
const alephaDeps = devDependencies;
|
|
866
863
|
const dependencies = { alepha: `^${version}` };
|
|
867
|
-
const devDependencies$1 = {
|
|
864
|
+
const devDependencies$1 = {};
|
|
865
|
+
if (!(modes.react && !modes.ui)) devDependencies$1["drizzle-kit"] = alephaDeps["drizzle-kit"];
|
|
868
866
|
if (!modes.isPackage) {
|
|
869
867
|
devDependencies$1["@biomejs/biome"] = alephaDeps["@biomejs/biome"];
|
|
870
868
|
if (modes.test) devDependencies$1.vitest = alephaDeps.vitest;
|
|
@@ -956,12 +954,6 @@ export default defineConfig({
|
|
|
956
954
|
// runtime: "node",
|
|
957
955
|
// },
|
|
958
956
|
//
|
|
959
|
-
// platform: {
|
|
960
|
-
// environments: {
|
|
961
|
-
// production: { adapter: "cloudflare" },
|
|
962
|
-
// },
|
|
963
|
-
// },
|
|
964
|
-
//
|
|
965
957
|
// env: {
|
|
966
958
|
// VITE_BUILD_DATE: new Date().toISOString(),
|
|
967
959
|
// VITE_VERSION: pkg.version,
|
|
@@ -1275,13 +1267,45 @@ export default defineConfig({
|
|
|
1275
1267
|
`;
|
|
1276
1268
|
};
|
|
1277
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
|
|
1278
1289
|
//#region ../../src/cli/core/templates/webAppRouterTs.ts
|
|
1279
1290
|
const webAppRouterTs = (options) => {
|
|
1280
1291
|
const imports = [];
|
|
1281
1292
|
const classMembers = [];
|
|
1282
1293
|
if (options.ui) imports.push("import { $ui } from \"@alepha/ui\";");
|
|
1283
1294
|
if (options.auth) imports.push("import { $uiAuth } from \"@alepha/ui/auth\";");
|
|
1284
|
-
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
|
+
}
|
|
1285
1309
|
imports.push("import { $page } from \"alepha/react/router\";");
|
|
1286
1310
|
if (options.api) {
|
|
1287
1311
|
imports.push("import { $client } from \"alepha/server/links\";");
|
|
@@ -1291,7 +1315,69 @@ const webAppRouterTs = (options) => {
|
|
|
1291
1315
|
if (options.ui) {
|
|
1292
1316
|
classMembers.push(" ui = $ui();");
|
|
1293
1317
|
if (options.auth) classMembers.push(" uiAuth = $uiAuth();");
|
|
1294
|
-
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
|
+
});`);
|
|
1295
1381
|
classMembers.push(` layout = $page({
|
|
1296
1382
|
parent: this.ui.root,
|
|
1297
1383
|
children: () => [this.home],
|
|
@@ -1497,6 +1583,7 @@ var ProjectScaffolder = class {
|
|
|
1497
1583
|
admin: opts.admin
|
|
1498
1584
|
}), opts.force);
|
|
1499
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);
|
|
1500
1587
|
await this.ensureFile(root, "src/main.browser.ts", mainBrowserTs(), opts.force);
|
|
1501
1588
|
}
|
|
1502
1589
|
/**
|
|
@@ -1520,21 +1607,20 @@ var ProjectScaffolder = class {
|
|
|
1520
1607
|
root = this.fs.join(root, args);
|
|
1521
1608
|
await this.fs.mkdir(root, { force: true });
|
|
1522
1609
|
}
|
|
1523
|
-
if (flags.
|
|
1524
|
-
if (flags.auth) {
|
|
1610
|
+
if (flags.saas) {
|
|
1525
1611
|
flags.api = true;
|
|
1526
1612
|
flags.ui = true;
|
|
1527
1613
|
}
|
|
1528
1614
|
if (flags.ui) flags.react = true;
|
|
1529
1615
|
if (flags.tailwind) flags.react = true;
|
|
1530
|
-
if ((flags.
|
|
1616
|
+
if ((flags.saas || flags.api || flags.ui || flags.react || flags.tailwind) && !flags.force) {
|
|
1531
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.`);
|
|
1532
1618
|
}
|
|
1533
1619
|
const workspace = await this.pm.getWorkspaceContext(root);
|
|
1534
1620
|
let agentType = false;
|
|
1535
1621
|
if (!workspace.isPackage) agentType = await this.utils.isInstalledAsync("claude") ? "claude" : "agents";
|
|
1536
1622
|
const isExpo = await this.pm.hasExpo(root);
|
|
1537
|
-
const adminEmail = flags.
|
|
1623
|
+
const adminEmail = flags.saas ? await this.utils.getGitEmail() : void 0;
|
|
1538
1624
|
const force = !!flags.force;
|
|
1539
1625
|
await run({
|
|
1540
1626
|
name: "ensuring configuration files",
|
|
@@ -1557,15 +1643,15 @@ var ProjectScaffolder = class {
|
|
|
1557
1643
|
force
|
|
1558
1644
|
});
|
|
1559
1645
|
if (flags.api) await this.ensureApiProject(root, {
|
|
1560
|
-
auth: !!flags.
|
|
1646
|
+
auth: !!flags.saas,
|
|
1561
1647
|
adminEmail,
|
|
1562
1648
|
force
|
|
1563
1649
|
});
|
|
1564
1650
|
if (flags.react && !isExpo) await this.ensureWebProject(root, {
|
|
1565
1651
|
api: !!flags.api,
|
|
1566
1652
|
ui: !!flags.ui,
|
|
1567
|
-
auth: !!flags.
|
|
1568
|
-
admin: !!flags.
|
|
1653
|
+
auth: !!flags.saas,
|
|
1654
|
+
admin: !!flags.saas,
|
|
1569
1655
|
tailwind: !!flags.tailwind,
|
|
1570
1656
|
force
|
|
1571
1657
|
});
|
|
@@ -1722,6 +1808,12 @@ var BuildClientTask = class extends BuildTask {
|
|
|
1722
1808
|
mode: "production",
|
|
1723
1809
|
logLevel: opts.silent ? "silent" : void 0,
|
|
1724
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
|
+
] },
|
|
1725
1817
|
publicDir: "public",
|
|
1726
1818
|
build: {
|
|
1727
1819
|
outDir: opts.dist,
|
|
@@ -2193,6 +2285,7 @@ var BuildServerTask = class extends BuildTask {
|
|
|
2193
2285
|
name: "build server",
|
|
2194
2286
|
handler: async () => {
|
|
2195
2287
|
await this.buildServer({
|
|
2288
|
+
root: ctx.root,
|
|
2196
2289
|
entry: ctx.entry.server,
|
|
2197
2290
|
distDir,
|
|
2198
2291
|
clientDir: clientBuilt ? publicDir : void 0,
|
|
@@ -2225,6 +2318,12 @@ var BuildServerTask = class extends BuildTask {
|
|
|
2225
2318
|
mode: "production",
|
|
2226
2319
|
logLevel: opts.silent ? "silent" : void 0,
|
|
2227
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
|
+
] },
|
|
2228
2327
|
publicDir: false,
|
|
2229
2328
|
ssr: {
|
|
2230
2329
|
noExternal: true,
|
|
@@ -2267,7 +2366,7 @@ var BuildServerTask = class extends BuildTask {
|
|
|
2267
2366
|
const externals = [];
|
|
2268
2367
|
if (Array.isArray(resolvedConfig?.ssr?.external)) externals.push(...resolvedConfig.ssr.external);
|
|
2269
2368
|
await this.generateExternals(opts.distDir, externals);
|
|
2270
|
-
const entryFile = this.extractEntryFromBundle(opts.entry, result);
|
|
2369
|
+
const entryFile = this.extractEntryFromBundle(opts.root, opts.entry, result);
|
|
2271
2370
|
let manifest = "";
|
|
2272
2371
|
let manifestData;
|
|
2273
2372
|
if (opts.clientDir) {
|
|
@@ -2340,8 +2439,8 @@ var BuildServerTask = class extends BuildTask {
|
|
|
2340
2439
|
};
|
|
2341
2440
|
return stripped;
|
|
2342
2441
|
}
|
|
2343
|
-
extractEntryFromBundle(entry, result) {
|
|
2344
|
-
const entryFilePath = isAbsolute(entry) ? entry : join(
|
|
2442
|
+
extractEntryFromBundle(root, entry, result) {
|
|
2443
|
+
const entryFilePath = isAbsolute(entry) ? entry : join(root, entry);
|
|
2345
2444
|
const normalizedEntryPath = entryFilePath.replace(/\\/g, "/");
|
|
2346
2445
|
const entryFile = (Array.isArray(result) ? result[0] : result).output.find((it) => "facadeModuleId" in it && it.facadeModuleId === normalizedEntryPath)?.fileName;
|
|
2347
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.`);
|
|
@@ -2608,7 +2707,7 @@ var BuildCommand = class {
|
|
|
2608
2707
|
scaffolder = $inject(ProjectScaffolder);
|
|
2609
2708
|
boot = $inject(AppEntryProvider);
|
|
2610
2709
|
viteBuildProvider = $inject(ViteBuildProvider);
|
|
2611
|
-
options = $
|
|
2710
|
+
options = $state(buildOptions);
|
|
2612
2711
|
/**
|
|
2613
2712
|
* Build pipeline: tasks run sequentially in this order.
|
|
2614
2713
|
* Each task self-guards (checks target, hasClient, etc.).
|
|
@@ -3114,7 +3213,30 @@ var ViteDevServerProvider = class {
|
|
|
3114
3213
|
isReloading = false;
|
|
3115
3214
|
needsBrowserReload = false;
|
|
3116
3215
|
currentReloadPromise = null;
|
|
3117
|
-
|
|
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
|
+
}
|
|
3118
3240
|
/**
|
|
3119
3241
|
* Initialize the dev server and load Alepha.
|
|
3120
3242
|
*/
|
|
@@ -3138,10 +3260,8 @@ var ViteDevServerProvider = class {
|
|
|
3138
3260
|
try {
|
|
3139
3261
|
await this.alepha?.start();
|
|
3140
3262
|
await this.listen();
|
|
3141
|
-
|
|
3142
|
-
this.
|
|
3143
|
-
this.server.bindCLIShortcuts({ print: true });
|
|
3144
|
-
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)}`);
|
|
3145
3265
|
} catch (err) {
|
|
3146
3266
|
this.hasError = true;
|
|
3147
3267
|
this.currentError = err instanceof Error ? err : new Error(String(err));
|
|
@@ -3173,6 +3293,7 @@ var ViteDevServerProvider = class {
|
|
|
3173
3293
|
if (viteReact && !this.options.noViteReactPlugin) plugins.push(viteReact());
|
|
3174
3294
|
plugins.push(this.viteUtils.createTsconfigPathsPlugin());
|
|
3175
3295
|
plugins.push(this.viteUtils.createSsrPreloadPlugin());
|
|
3296
|
+
plugins.push(...this.extraVitePlugins);
|
|
3176
3297
|
plugins.push(this.createAlephaPlugin());
|
|
3177
3298
|
let port;
|
|
3178
3299
|
if (process.env.SERVER_PORT) port = Number(process.env.SERVER_PORT);
|
|
@@ -3184,6 +3305,12 @@ var ViteDevServerProvider = class {
|
|
|
3184
3305
|
root: this.options.root,
|
|
3185
3306
|
plugins,
|
|
3186
3307
|
appType: "custom",
|
|
3308
|
+
resolve: { dedupe: [
|
|
3309
|
+
"react",
|
|
3310
|
+
"react-dom",
|
|
3311
|
+
"react/jsx-runtime",
|
|
3312
|
+
"react/jsx-dev-runtime"
|
|
3313
|
+
] },
|
|
3187
3314
|
server: { port },
|
|
3188
3315
|
optimizeDeps: { entries: [...this.options.entry.browser ? [this.options.entry.browser] : []] }
|
|
3189
3316
|
});
|
|
@@ -3230,28 +3357,6 @@ var ViteDevServerProvider = class {
|
|
|
3230
3357
|
return {
|
|
3231
3358
|
name: "alepha",
|
|
3232
3359
|
configureServer: (server) => {
|
|
3233
|
-
if (!this.options.noDevtools) try {
|
|
3234
|
-
this.devtoolsAssetsPath = join(dirname(createRequire(import.meta.url).resolve("@alepha/devtools/package.json")), "assets/ui");
|
|
3235
|
-
process.env.VITE_ALEPHA_DEVTOOLS = "true";
|
|
3236
|
-
} catch {
|
|
3237
|
-
this.log.debug("@alepha/devtools not installed, skipping devtools");
|
|
3238
|
-
}
|
|
3239
|
-
if (this.devtoolsAssetsPath) {
|
|
3240
|
-
const assetsPath = this.devtoolsAssetsPath;
|
|
3241
|
-
server.middlewares.use(async (req, res, next) => {
|
|
3242
|
-
if (!(req.url || "/").startsWith("/__devtools") || !req.headers.accept?.includes("text/html")) return next();
|
|
3243
|
-
const indexPath = join(assetsPath, "index.html");
|
|
3244
|
-
try {
|
|
3245
|
-
let html = await readFile(indexPath, "utf-8");
|
|
3246
|
-
html = html.replace("<head>", `<head><script type="module" src="/@vite/client"><\/script>`);
|
|
3247
|
-
res.writeHead(200, { "content-type": "text/html" });
|
|
3248
|
-
res.end(html);
|
|
3249
|
-
} catch (err) {
|
|
3250
|
-
this.log.error("Failed to serve devtools UI", err);
|
|
3251
|
-
next();
|
|
3252
|
-
}
|
|
3253
|
-
});
|
|
3254
|
-
}
|
|
3255
3360
|
server.hot.on("connection", () => {
|
|
3256
3361
|
if (this.currentError) setTimeout(() => this.sendErrorOverlay(this.currentError), 50);
|
|
3257
3362
|
});
|
|
@@ -3401,12 +3506,7 @@ var ViteDevServerProvider = class {
|
|
|
3401
3506
|
}
|
|
3402
3507
|
const alepha = this.getLoadedAlepha();
|
|
3403
3508
|
alepha.store.set("alepha.vite.server", this.server);
|
|
3404
|
-
|
|
3405
|
-
const mod = await this.server.ssrLoadModule("@alepha/devtools");
|
|
3406
|
-
alepha.with(mod.AlephaDevtools);
|
|
3407
|
-
} catch (err) {
|
|
3408
|
-
this.log.warn("Failed to load @alepha/devtools", err);
|
|
3409
|
-
}
|
|
3509
|
+
for (const hook of this.alephaLoadedHooks) await hook(alepha, this.server);
|
|
3410
3510
|
this.alepha = alepha;
|
|
3411
3511
|
await this.setupAlepha();
|
|
3412
3512
|
this.hasError = false;
|
|
@@ -3563,10 +3663,12 @@ var ViteDevServerProvider = class {
|
|
|
3563
3663
|
/**
|
|
3564
3664
|
* Log a formatted error with stack trace.
|
|
3565
3665
|
*/
|
|
3566
|
-
logError(title,
|
|
3666
|
+
logError(title, err) {
|
|
3567
3667
|
const c = this.colors;
|
|
3568
3668
|
console.log();
|
|
3569
3669
|
console.log(c.set("RED", ` ✗ ${title}`));
|
|
3670
|
+
this.logErrorWithCause(err);
|
|
3671
|
+
console.log();
|
|
3570
3672
|
console.log(c.set("GREY_DARK", " Waiting for file changes to retry..."));
|
|
3571
3673
|
console.log();
|
|
3572
3674
|
}
|
|
@@ -3601,32 +3703,122 @@ var DevCommand = class {
|
|
|
3601
3703
|
alepha = $inject(Alepha);
|
|
3602
3704
|
viteDevServer = $inject(ViteDevServerProvider);
|
|
3603
3705
|
boot = $inject(AppEntryProvider);
|
|
3604
|
-
options = $
|
|
3706
|
+
options = $state(devOptions);
|
|
3605
3707
|
/**
|
|
3606
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.
|
|
3607
3712
|
*/
|
|
3608
3713
|
dev = $command({
|
|
3609
3714
|
name: "dev",
|
|
3610
3715
|
mode: true,
|
|
3611
3716
|
description: "Run the project in development mode",
|
|
3612
|
-
flags: t.object({
|
|
3613
|
-
"no-devtools": t.optional(t.boolean({ description: "Disable devtools" })),
|
|
3614
|
-
"no-vite-react-plugin": t.optional(t.boolean({ description: "Disable Vite React plugin" }))
|
|
3615
|
-
}),
|
|
3717
|
+
flags: t.object({ only: t.optional(t.string({ description: "Run only specific apps (comma-separated: --only api,companion)" })) }),
|
|
3616
3718
|
handler: async ({ root, flags }) => {
|
|
3617
|
-
await this.
|
|
3618
|
-
|
|
3619
|
-
this.
|
|
3620
|
-
const options = this.options;
|
|
3621
|
-
await this.viteDevServer.init({
|
|
3622
|
-
root,
|
|
3623
|
-
entry,
|
|
3624
|
-
noDevtools: flags["no-devtools"] ?? options.noDevtools ?? false,
|
|
3625
|
-
noViteReactPlugin: flags["no-vite-react-plugin"] ?? options.noViteReactPlugin ?? false
|
|
3626
|
-
});
|
|
3627
|
-
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);
|
|
3628
3722
|
}
|
|
3629
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
|
+
}
|
|
3630
3822
|
};
|
|
3631
3823
|
//#endregion
|
|
3632
3824
|
//#region ../../src/cli/core/atoms/changelogOptions.ts
|
|
@@ -3737,7 +3929,7 @@ var ChangelogCommand = class {
|
|
|
3737
3929
|
log = $logger();
|
|
3738
3930
|
git = $inject(GitProvider);
|
|
3739
3931
|
parser = $inject(GitMessageParser);
|
|
3740
|
-
config = $
|
|
3932
|
+
config = $state(changelogOptions);
|
|
3741
3933
|
/**
|
|
3742
3934
|
* Format a single commit line.
|
|
3743
3935
|
* Example: `- **cli**: add new command (\`abc1234\`)`
|
|
@@ -3967,8 +4159,7 @@ var InitCommand = class {
|
|
|
3967
4159
|
description: "Include React dependencies and web module (src/web/)"
|
|
3968
4160
|
})),
|
|
3969
4161
|
ui: t.optional(t.boolean({ description: "Include @alepha/ui (components, auth portal, admin portal)" })),
|
|
3970
|
-
|
|
3971
|
-
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." })),
|
|
3972
4163
|
tailwind: t.optional(t.boolean({ description: "Include Tailwind CSS with Vite plugin. Implies --react" })),
|
|
3973
4164
|
test: t.optional(t.boolean({ description: "Include Vitest and create test directory" })),
|
|
3974
4165
|
force: t.optional(t.boolean({
|
|
@@ -4109,7 +4300,6 @@ var VerifyCommand = class {
|
|
|
4109
4300
|
description: "Verify the Alepha project",
|
|
4110
4301
|
handler: async ({ root, run }) => {
|
|
4111
4302
|
await run("alepha clean");
|
|
4112
|
-
await run("alepha format");
|
|
4113
4303
|
await run("alepha lint");
|
|
4114
4304
|
await run("alepha typecheck");
|
|
4115
4305
|
if ((await this.pm.readPackageJson(root)).devDependencies?.vitest) await run("alepha test");
|