alepha 0.22.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
- package/assets/swagger-ui/swagger-ui-standalone-preset.js +1 -1
- package/dist/api/audits/index.browser.js +49 -52
- package/dist/api/audits/index.browser.js.map +1 -1
- package/dist/api/audits/index.d.ts +629 -565
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/audits/index.js +206 -98
- package/dist/api/audits/index.js.map +1 -1
- package/dist/api/files/index.browser.js +44 -44
- package/dist/api/files/index.browser.js.map +1 -1
- package/dist/api/files/index.d.ts +292 -293
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +61 -64
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.browser.js +61 -59
- package/dist/api/jobs/index.browser.js.map +1 -1
- package/dist/api/jobs/index.d.ts +546 -347
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/jobs/index.js +165 -86
- package/dist/api/jobs/index.js.map +1 -1
- package/dist/api/keys/index.d.ts +242 -230
- package/dist/api/keys/index.d.ts.map +1 -1
- package/dist/api/keys/index.js +63 -66
- package/dist/api/keys/index.js.map +1 -1
- package/dist/api/notifications/index.browser.js +40 -38
- package/dist/api/notifications/index.browser.js.map +1 -1
- package/dist/api/notifications/index.d.ts +339 -209
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/notifications/index.js +108 -60
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/oauth/index.d.ts +190 -78
- package/dist/api/oauth/index.d.ts.map +1 -1
- package/dist/api/oauth/index.js +290 -68
- package/dist/api/oauth/index.js.map +1 -1
- package/dist/api/organizations/index.browser.js +14 -14
- package/dist/api/organizations/index.browser.js.map +1 -1
- package/dist/api/organizations/index.d.ts +158 -134
- package/dist/api/organizations/index.d.ts.map +1 -1
- package/dist/api/organizations/index.js +18 -18
- package/dist/api/organizations/index.js.map +1 -1
- package/dist/api/parameters/index.browser.js +74 -53
- package/dist/api/parameters/index.browser.js.map +1 -1
- package/dist/api/parameters/index.d.ts +607 -513
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/parameters/index.js +205 -127
- package/dist/api/parameters/index.js.map +1 -1
- package/dist/api/payments/index.d.ts +652 -449
- package/dist/api/payments/index.d.ts.map +1 -1
- package/dist/api/payments/index.js +159 -93
- package/dist/api/payments/index.js.map +1 -1
- package/dist/api/subscriptions/index.d.ts +1032 -762
- package/dist/api/subscriptions/index.d.ts.map +1 -1
- package/dist/api/subscriptions/index.js +166 -185
- package/dist/api/subscriptions/index.js.map +1 -1
- package/dist/api/users/index.browser.js +48 -71
- package/dist/api/users/index.browser.js.map +1 -1
- package/dist/api/users/index.d.ts +1297 -1109
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +454 -369
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.browser.js +17 -17
- package/dist/api/verifications/index.browser.js.map +1 -1
- package/dist/api/verifications/index.d.ts +169 -157
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/api/verifications/index.js +47 -95
- package/dist/api/verifications/index.js.map +1 -1
- package/dist/background/index.d.ts +0 -1
- package/dist/background/index.d.ts.map +1 -1
- package/dist/background/index.js.map +1 -1
- package/dist/background/index.workerd.js.map +1 -1
- package/dist/batch/index.d.ts +0 -1
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/batch/index.js.map +1 -1
- package/dist/bin/index.js +1 -1
- package/dist/bin/index.js.map +1 -1
- package/dist/bucket/index.d.ts +27 -32
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/bucket/index.js +56 -26
- package/dist/bucket/index.js.map +1 -1
- package/dist/bucket/index.workerd.js +52 -24
- package/dist/bucket/index.workerd.js.map +1 -1
- package/dist/cache/core/index.d.ts +4 -6
- package/dist/cache/core/index.d.ts.map +1 -1
- package/dist/cache/core/index.js +4 -10
- package/dist/cache/core/index.js.map +1 -1
- package/dist/cache/core/index.workerd.js +4 -10
- package/dist/cache/core/index.workerd.js.map +1 -1
- package/dist/cache/database/index.d.ts +22 -23
- package/dist/cache/database/index.d.ts.map +1 -1
- package/dist/cache/database/index.js +11 -20
- package/dist/cache/database/index.js.map +1 -1
- package/dist/cache/redis/index.d.ts +3 -4
- 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/captcha/index.d.ts.map +1 -1
- package/dist/captcha/index.js +4 -4
- package/dist/captcha/index.js.map +1 -1
- package/dist/cli/config/index.d.ts +0 -1
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/core/index.d.ts +244 -475
- package/dist/cli/core/index.d.ts.map +1 -1
- package/dist/cli/core/index.js +308 -383
- package/dist/cli/core/index.js.map +1 -1
- package/dist/cli/devtools/index.d.ts +3 -9
- package/dist/cli/devtools/index.d.ts.map +1 -1
- package/dist/cli/devtools/index.js +3 -3
- package/dist/cli/devtools/index.js.map +1 -1
- package/dist/cli/i18n/index.d.ts +20 -39
- package/dist/cli/i18n/index.d.ts.map +1 -1
- package/dist/cli/i18n/index.js +51 -17
- package/dist/cli/i18n/index.js.map +1 -1
- package/dist/cli/platform/index.d.ts +89 -82
- package/dist/cli/platform/index.d.ts.map +1 -1
- package/dist/cli/platform/index.js +27 -33
- package/dist/cli/platform/index.js.map +1 -1
- package/dist/cli/platform-lib/index.d.ts +383 -410
- package/dist/cli/platform-lib/index.d.ts.map +1 -1
- package/dist/cli/platform-lib/index.js +300 -258
- package/dist/cli/platform-lib/index.js.map +1 -1
- package/dist/cli/vendor/index.d.ts +17 -41
- package/dist/cli/vendor/index.d.ts.map +1 -1
- package/dist/cli/vendor/index.js +10 -13
- package/dist/cli/vendor/index.js.map +1 -1
- package/dist/command/index.d.ts +82 -194
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +160 -563
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +845 -859
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +787 -527
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +845 -859
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +845 -859
- package/dist/core/index.native.js.map +1 -1
- package/dist/core/index.workerd.js +845 -859
- package/dist/core/index.workerd.js.map +1 -1
- package/dist/crypto/index.browser.js +1 -1
- package/dist/crypto/index.browser.js.map +1 -1
- package/dist/crypto/index.d.ts +3 -4
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/crypto/index.js +6 -3
- package/dist/crypto/index.js.map +1 -1
- package/dist/datetime/index.d.ts +12 -2
- package/dist/datetime/index.d.ts.map +1 -1
- package/dist/datetime/index.js +6 -1
- package/dist/datetime/index.js.map +1 -1
- package/dist/email/brevo/index.d.ts +0 -1
- package/dist/email/brevo/index.d.ts.map +1 -1
- package/dist/email/brevo/index.js +4 -4
- package/dist/email/brevo/index.js.map +1 -1
- package/dist/email/cloudflare/index.d.ts +0 -1
- package/dist/email/cloudflare/index.d.ts.map +1 -1
- package/dist/email/cloudflare/index.js +2 -2
- package/dist/email/cloudflare/index.js.map +1 -1
- package/dist/email/core/index.d.ts +15 -7
- package/dist/email/core/index.d.ts.map +1 -1
- package/dist/email/core/index.js +14 -5
- package/dist/email/core/index.js.map +1 -1
- package/dist/email/core/index.workerd.js +5 -1
- package/dist/email/core/index.workerd.js.map +1 -1
- package/dist/email/smtp/index.d.ts +8 -9
- package/dist/email/smtp/index.d.ts.map +1 -1
- package/dist/email/smtp/index.js +702 -479
- package/dist/email/smtp/index.js.map +1 -1
- package/dist/fake/index.d.ts +1580 -1238
- package/dist/fake/index.d.ts.map +1 -1
- package/dist/fake/index.js +11728 -32131
- package/dist/fake/index.js.map +1 -1
- package/dist/lock/core/index.d.ts +13 -9
- package/dist/lock/core/index.d.ts.map +1 -1
- package/dist/lock/core/index.js +5 -5
- package/dist/lock/core/index.js.map +1 -1
- package/dist/lock/redis/index.d.ts +0 -1
- package/dist/lock/redis/index.d.ts.map +1 -1
- package/dist/lock/redis/index.js.map +1 -1
- package/dist/logger/index.d.ts +81 -69
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +123 -56
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +36 -90
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +65 -70
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/core/index.browser.js +54 -40
- package/dist/orm/core/index.browser.js.map +1 -1
- package/dist/orm/core/index.bun.js +140 -106
- package/dist/orm/core/index.bun.js.map +1 -1
- package/dist/orm/core/index.d.ts +145 -150
- package/dist/orm/core/index.d.ts.map +1 -1
- package/dist/orm/core/index.js +144 -109
- package/dist/orm/core/index.js.map +1 -1
- package/dist/orm/postgres/index.bun.js +64 -54
- package/dist/orm/postgres/index.bun.js.map +1 -1
- package/dist/orm/postgres/index.d.ts +36 -76
- package/dist/orm/postgres/index.d.ts.map +1 -1
- package/dist/orm/postgres/index.js +67 -57
- package/dist/orm/postgres/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +62 -75
- package/dist/queue/core/index.d.ts.map +1 -1
- package/dist/queue/core/index.js +48 -71
- package/dist/queue/core/index.js.map +1 -1
- package/dist/queue/core/index.workerd.js +48 -71
- package/dist/queue/core/index.workerd.js.map +1 -1
- package/dist/queue/redis/index.d.ts +3 -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.browser.js.map +1 -1
- package/dist/react/auth/index.d.ts +7 -4
- package/dist/react/auth/index.d.ts.map +1 -1
- package/dist/react/auth/index.js.map +1 -1
- package/dist/react/core/index.d.ts +87 -5
- package/dist/react/core/index.d.ts.map +1 -1
- package/dist/react/core/index.js +170 -23
- package/dist/react/core/index.js.map +1 -1
- package/dist/react/form/index.d.ts +4 -6
- package/dist/react/form/index.d.ts.map +1 -1
- package/dist/react/form/index.js +107 -71
- package/dist/react/form/index.js.map +1 -1
- package/dist/react/head/index.browser.js.map +1 -1
- package/dist/react/head/index.d.ts +0 -1
- package/dist/react/head/index.d.ts.map +1 -1
- package/dist/react/head/index.js.map +1 -1
- package/dist/react/i18n/index.d.ts +47 -5
- package/dist/react/i18n/index.d.ts.map +1 -1
- package/dist/react/i18n/index.js +116 -12
- package/dist/react/i18n/index.js.map +1 -1
- package/dist/react/intro/index.d.ts +1 -4
- package/dist/react/intro/index.d.ts.map +1 -1
- package/dist/react/intro/index.js.map +1 -1
- package/dist/react/router/index.browser.js +188 -29
- package/dist/react/router/index.browser.js.map +1 -1
- package/dist/react/router/index.d.ts +480 -372
- package/dist/react/router/index.d.ts.map +1 -1
- package/dist/react/router/index.js +261 -47
- package/dist/react/router/index.js.map +1 -1
- package/dist/react/sitemap/index.browser.js +35 -0
- package/dist/react/sitemap/index.browser.js.map +1 -0
- package/dist/react/sitemap/index.d.ts +91 -0
- package/dist/react/sitemap/index.d.ts.map +1 -0
- package/dist/react/sitemap/index.js +131 -0
- package/dist/react/sitemap/index.js.map +1 -0
- package/dist/react/testing/index.d.ts +4 -5
- package/dist/react/testing/index.d.ts.map +1 -1
- package/dist/react/testing/index.js +41 -15
- package/dist/react/testing/index.js.map +1 -1
- package/dist/react/testing/{chunk-BpyX8vjI.js → rolldown-runtime-Bl3dcgcQ.js} +1 -1
- package/dist/react/ui/index.d.ts +35 -34
- package/dist/react/ui/index.d.ts.map +1 -1
- package/dist/react/ui/index.js +12 -17
- package/dist/react/ui/index.js.map +1 -1
- package/dist/redis/index.bun.js +5 -5
- package/dist/redis/index.bun.js.map +1 -1
- package/dist/redis/index.d.ts +6 -7
- package/dist/redis/index.d.ts.map +1 -1
- package/dist/redis/index.js +6 -6
- package/dist/redis/index.js.map +1 -1
- package/dist/retry/index.d.ts +0 -1
- package/dist/retry/index.d.ts.map +1 -1
- package/dist/retry/index.js.map +1 -1
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js.map +1 -1
- package/dist/scheduler/index.d.ts +4 -12
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +9 -4
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/index.workerd.js +9 -4
- package/dist/scheduler/index.workerd.js.map +1 -1
- package/dist/security/index.browser.js +30 -28
- package/dist/security/index.browser.js.map +1 -1
- package/dist/security/index.d.ts +113 -44
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +452 -37
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.browser.js +19 -19
- package/dist/server/auth/index.browser.js.map +1 -1
- package/dist/server/auth/index.d.ts +215 -187
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +1145 -86
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cookies/index.browser.js +103 -5
- package/dist/server/cookies/index.browser.js.map +1 -1
- package/dist/server/cookies/index.d.ts +86 -4
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/cookies/index.js +121 -8
- package/dist/server/cookies/index.js.map +1 -1
- package/dist/server/core/index.browser.js +22 -27
- package/dist/server/core/index.browser.js.map +1 -1
- package/dist/server/core/index.d.ts +134 -85
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +130 -118
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +9 -10
- package/dist/server/cors/index.d.ts.map +1 -1
- package/dist/server/cors/index.js +14 -26
- package/dist/server/cors/index.js.map +1 -1
- package/dist/server/etag/index.d.ts +2 -3
- package/dist/server/etag/index.d.ts.map +1 -1
- package/dist/server/etag/index.js.map +1 -1
- package/dist/server/health/index.d.ts +18 -19
- package/dist/server/health/index.d.ts.map +1 -1
- package/dist/server/health/index.js +6 -6
- package/dist/server/health/index.js.map +1 -1
- package/dist/server/links/index.browser.js +15 -18
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +66 -67
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +29 -32
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts +0 -1
- package/dist/server/metrics/index.d.ts.map +1 -1
- package/dist/server/metrics/index.js +10 -3
- package/dist/server/metrics/index.js.map +1 -1
- package/dist/server/proxy/index.d.ts +0 -1
- package/dist/server/proxy/index.d.ts.map +1 -1
- package/dist/server/proxy/index.js.map +1 -1
- package/dist/server/rate-limit/index.d.ts +8 -9
- package/dist/server/rate-limit/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.js +6 -12
- package/dist/server/rate-limit/index.js.map +1 -1
- package/dist/server/static/index.d.ts +0 -1
- package/dist/server/static/index.d.ts.map +1 -1
- package/dist/server/static/index.js.map +1 -1
- package/dist/server/swagger/index.d.ts +4 -4
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js +37 -25
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +0 -1
- package/dist/sms/index.d.ts.map +1 -1
- package/dist/sms/index.js.map +1 -1
- package/dist/system/index.browser.js.map +1 -1
- package/dist/system/index.d.ts +0 -1
- package/dist/system/index.d.ts.map +1 -1
- package/dist/system/index.js +2 -1
- package/dist/system/index.js.map +1 -1
- package/dist/system/index.workerd.js.map +1 -1
- package/dist/topic/core/index.d.ts +19 -20
- package/dist/topic/core/index.d.ts.map +1 -1
- package/dist/topic/core/index.js +8 -8
- package/dist/topic/core/index.js.map +1 -1
- package/dist/topic/redis/index.d.ts +3 -4
- 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/package.json +36 -36
- package/src/api/audits/__tests__/AuditJobs.spec.ts +83 -0
- package/src/api/audits/__tests__/AuditService.spec.ts +139 -1
- package/src/api/audits/controllers/AdminAuditController.ts +41 -41
- package/src/api/audits/entities/audits.ts +22 -22
- package/src/api/audits/index.ts +6 -1
- package/src/api/audits/jobs/AuditJobs.ts +29 -0
- package/src/api/audits/parameters/AuditParameters.ts +51 -0
- package/src/api/audits/primitives/$audit.ts +24 -0
- package/src/api/audits/schemas/auditQuerySchema.ts +13 -13
- package/src/api/audits/schemas/createAuditSchema.ts +18 -18
- package/src/api/audits/services/AuditService.ts +79 -7
- package/src/api/files/__tests__/FileController.spec.ts +5 -5
- package/src/api/files/__tests__/FileJobs.spec.ts +6 -0
- package/src/api/files/controllers/FileController.ts +25 -25
- package/src/api/files/entities/files.ts +15 -15
- package/src/api/files/schemas/fileCreatorSummarySchema.ts +7 -7
- package/src/api/files/schemas/fileQuerySchema.ts +9 -9
- package/src/api/files/schemas/fileResourceSchema.ts +7 -9
- package/src/api/files/schemas/storageStatsSchema.ts +13 -13
- package/src/api/jobs/__tests__/$job-hardening.spec.ts +289 -0
- package/src/api/jobs/__tests__/$job.spec.ts +18 -18
- package/src/api/jobs/controllers/AdminJobController.ts +8 -8
- package/src/api/jobs/entities/jobExecutionEntity.ts +29 -19
- package/src/api/jobs/providers/JobProvider.ts +128 -12
- package/src/api/jobs/providers/JobQueueProvider.ts +2 -2
- package/src/api/jobs/schemas/jobConfigAtom.ts +22 -22
- package/src/api/jobs/schemas/jobExecutionQuerySchema.ts +6 -6
- package/src/api/jobs/schemas/jobExecutionResourceSchema.ts +11 -15
- package/src/api/jobs/schemas/jobRegistrationSchema.ts +20 -19
- package/src/api/jobs/schemas/triggerJobSchema.ts +3 -3
- package/src/api/jobs/services/JobService.ts +6 -6
- package/src/api/keys/__tests__/ApiKeyService.spec.ts +2 -2
- package/src/api/keys/controllers/AdminApiKeyController.ts +10 -10
- package/src/api/keys/entities/apiKeyEntity.ts +15 -15
- package/src/api/keys/schemas/adminApiKeyQuerySchema.ts +4 -4
- package/src/api/keys/schemas/adminApiKeyResourceSchema.ts +15 -15
- package/src/api/keys/schemas/createApiKeyBodySchema.ts +5 -5
- package/src/api/keys/schemas/createApiKeyResponseSchema.ts +9 -9
- package/src/api/keys/schemas/listApiKeyResponseSchema.ts +13 -13
- package/src/api/keys/schemas/revokeApiKeyParamsSchema.ts +3 -3
- package/src/api/keys/schemas/revokeApiKeyResponseSchema.ts +3 -3
- package/src/api/notifications/__tests__/AlephaApiNotifications.spec.ts +2 -2
- package/src/api/notifications/controllers/AdminNotificationController.ts +38 -14
- package/src/api/notifications/jobs/NotificationJobs.ts +7 -6
- package/src/api/notifications/primitives/$notification.ts +43 -4
- package/src/api/notifications/schemas/notificationContactPreferencesSchema.ts +4 -4
- package/src/api/notifications/schemas/notificationContactSchema.ts +7 -7
- package/src/api/notifications/schemas/notificationDetailResourceSchema.ts +9 -11
- package/src/api/notifications/schemas/notificationPayloadSchema.ts +11 -9
- package/src/api/notifications/schemas/notificationQuerySchema.ts +6 -6
- package/src/api/notifications/schemas/notificationResourceSchema.ts +14 -14
- package/src/api/notifications/services/NotificationSenderService.ts +38 -2
- package/src/api/oauth/__tests__/OAuthClientService.spec.ts +42 -0
- package/src/api/oauth/__tests__/OAuthController.spec.ts +128 -0
- package/src/api/oauth/controllers/OAuthController.ts +132 -12
- package/src/api/oauth/entities/oauthClientEntity.ts +29 -12
- package/src/api/oauth/helpers/oauthMetadata.ts +1 -0
- package/src/api/oauth/helpers/oidcMetadata.ts +19 -0
- package/src/api/oauth/index.ts +1 -0
- package/src/api/oauth/schemas/authorizeDecisionBodySchema.ts +12 -11
- package/src/api/oauth/schemas/authorizeQuerySchema.ts +12 -10
- package/src/api/oauth/schemas/registerClientBodySchema.ts +10 -11
- package/src/api/oauth/schemas/tokenRequestBodySchema.ts +9 -8
- package/src/api/oauth/services/OAuthClientService.ts +228 -15
- package/src/api/organizations/controllers/AdminOrganizationController.ts +8 -8
- package/src/api/organizations/entities/organizations.ts +6 -6
- package/src/api/organizations/schemas/createOrganizationSchema.ts +5 -5
- package/src/api/organizations/schemas/organizationQuerySchema.ts +4 -4
- package/src/api/organizations/schemas/updateOrganizationSchema.ts +1 -2
- package/src/api/parameters/__tests__/$parameter.spec.ts +229 -50
- package/src/api/parameters/controllers/AdminParameterController.ts +9 -12
- package/src/api/parameters/entities/parameters.ts +29 -16
- package/src/api/parameters/primitives/$parameter.ts +3 -3
- package/src/api/parameters/schemas/activateParameterBodySchema.ts +4 -4
- package/src/api/parameters/schemas/createParameterVersionBodySchema.ts +15 -15
- package/src/api/parameters/schemas/parameterCreatorSummarySchema.ts +7 -7
- package/src/api/parameters/schemas/parameterCurrentResponseSchema.ts +7 -7
- package/src/api/parameters/schemas/parameterHistoryResponseSchema.ts +3 -3
- package/src/api/parameters/schemas/parameterNameParamSchema.ts +2 -3
- package/src/api/parameters/schemas/parameterNamesResponseSchema.ts +3 -3
- package/src/api/parameters/schemas/parameterResponseSchema.ts +3 -3
- package/src/api/parameters/schemas/parameterStatusSchema.ts +2 -2
- package/src/api/parameters/schemas/parameterTreeNodeSchema.ts +6 -6
- package/src/api/parameters/schemas/parameterVersionParamSchema.ts +5 -6
- package/src/api/parameters/schemas/parameterVersionResponseSchema.ts +3 -3
- package/src/api/parameters/schemas/rollbackParameterBodySchema.ts +6 -9
- package/src/api/parameters/services/ParameterProvider.ts +152 -65
- package/src/api/payments/controllers/AdminPaymentController.ts +7 -7
- package/src/api/payments/controllers/MockCheckoutController.ts +79 -28
- package/src/api/payments/controllers/PaymentController.ts +4 -4
- package/src/api/payments/entities/paymentIntents.ts +11 -11
- package/src/api/payments/entities/paymentMethods.ts +11 -11
- package/src/api/payments/entities/refunds.ts +9 -9
- package/src/api/payments/providers/PaymentProvider.ts +18 -0
- package/src/api/payments/schemas/intentSchemas.ts +25 -25
- package/src/api/payments/schemas/paymentMethodSchemas.ts +3 -3
- package/src/api/payments/services/PaymentService.ts +60 -3
- package/src/api/subscriptions/__tests__/SubscriptionService.spec.ts +14 -0
- package/src/api/subscriptions/controllers/AdminSubscriptionController.ts +11 -11
- package/src/api/subscriptions/controllers/SubscriptionController.ts +5 -4
- package/src/api/subscriptions/entities/subscriptionEvents.ts +15 -15
- package/src/api/subscriptions/entities/subscriptions.ts +22 -22
- package/src/api/subscriptions/notifications/SubscriptionNotifications.ts +22 -22
- package/src/api/subscriptions/schemas/cancelSubscriptionSchema.ts +4 -4
- package/src/api/subscriptions/schemas/changePlanSchema.ts +5 -5
- package/src/api/subscriptions/schemas/createSubscriptionSchema.ts +14 -7
- package/src/api/subscriptions/schemas/entitlementsSchema.ts +10 -10
- package/src/api/subscriptions/schemas/mrrSchema.ts +9 -9
- package/src/api/subscriptions/schemas/planDefinitionSchema.ts +21 -21
- package/src/api/subscriptions/schemas/planResourceSchema.ts +19 -19
- package/src/api/subscriptions/schemas/subscriptionQuerySchema.ts +8 -8
- package/src/api/subscriptions/schemas/subscriptionSettingsSchema.ts +7 -7
- package/src/api/subscriptions/schemas/subscriptionStatsSchema.ts +17 -17
- package/src/api/subscriptions/services/SubscriptionConfig.ts +2 -2
- package/src/api/users/__tests__/ApiKeys-integration.spec.ts +11 -11
- package/src/api/users/atoms/realmAuthSettingsAtom.ts +111 -119
- package/src/api/users/controllers/AdminIdentityController.ts +29 -19
- package/src/api/users/controllers/AdminSessionController.ts +37 -27
- package/src/api/users/controllers/AdminUserController.ts +75 -53
- package/src/api/users/controllers/MySessionController.ts +125 -0
- package/src/api/users/controllers/RealmController.ts +9 -9
- package/src/api/users/controllers/UserController.ts +55 -55
- package/src/api/users/entities/identities.ts +8 -8
- package/src/api/users/entities/sessions.ts +17 -17
- package/src/api/users/entities/users.ts +17 -17
- package/src/api/users/index.ts +3 -0
- package/src/api/users/notifications/UserNotifications.ts +76 -24
- package/src/api/users/primitives/$realm.ts +12 -0
- package/src/api/users/schemas/completePasswordResetRequestSchema.ts +8 -12
- package/src/api/users/schemas/completeRegistrationRequestSchema.ts +17 -20
- package/src/api/users/schemas/createUserSchema.ts +2 -2
- package/src/api/users/schemas/identityQuerySchema.ts +4 -4
- package/src/api/users/schemas/identityResourceSchema.ts +3 -2
- package/src/api/users/schemas/loginSchema.ts +4 -4
- package/src/api/users/schemas/passwordResetIntentResponseSchema.ts +6 -8
- package/src/api/users/schemas/realmConfigSchema.ts +10 -10
- package/src/api/users/schemas/registerQuerySchema.ts +6 -6
- package/src/api/users/schemas/registerRequestSchema.ts +21 -43
- package/src/api/users/schemas/registerResponseSchema.ts +2 -2
- package/src/api/users/schemas/registerSchema.ts +13 -31
- package/src/api/users/schemas/registrationIntentResponseSchema.ts +19 -23
- package/src/api/users/schemas/resetPasswordSchema.ts +10 -17
- package/src/api/users/schemas/sessionQuerySchema.ts +3 -3
- package/src/api/users/schemas/sessionResourceSchema.ts +25 -25
- package/src/api/users/schemas/updateUserSchema.ts +3 -4
- package/src/api/users/schemas/userQuerySchema.ts +7 -7
- package/src/api/users/services/RegistrationService.ts +25 -11
- package/src/api/users/services/UserService.ts +12 -6
- package/src/api/verifications/__tests__/CodeVerification.spec.ts +63 -101
- package/src/api/verifications/__tests__/LinkVerification.spec.ts +23 -92
- package/src/api/verifications/controllers/VerificationController.ts +13 -27
- package/src/api/verifications/entities/verifications.ts +13 -14
- package/src/api/verifications/schemas/requestVerificationCodeResponseSchema.ts +17 -14
- package/src/api/verifications/schemas/validateVerificationCodeResponseSchema.ts +9 -10
- package/src/api/verifications/schemas/verificationSettingsSchema.ts +65 -66
- package/src/api/verifications/schemas/verificationTypeEnumSchema.ts +2 -2
- package/src/api/verifications/services/VerificationService.ts +12 -0
- package/src/background/__tests__/BackgroundTaskProvider.spec.ts +36 -0
- package/src/batch/__tests__/$batch.spec.ts +22 -22
- package/src/batch/__tests__/startup-buffering.spec.ts +9 -9
- package/src/bin/index.ts +1 -1
- package/src/bucket/__tests__/TenantScopedBucket.spec.ts +60 -0
- package/src/bucket/providers/LocalFileStorageProvider.ts +14 -6
- package/src/bucket/providers/MemoryFileStorageProvider.ts +18 -7
- package/src/bucket/providers/R2FileStorageProvider.ts +14 -6
- package/src/bucket/providers/S3FileStorageProvider.ts +31 -15
- package/src/cache/core/primitives/$cache.ts +7 -10
- package/src/cache/database/entities/cacheEntries.ts +16 -27
- package/src/cache/database/providers/DatabaseCacheProvider.ts +15 -13
- package/src/cache/redis/providers/RedisCacheProvider.ts +6 -6
- package/src/captcha/providers/TurnstileCaptchaProvider.ts +4 -4
- package/src/cli/core/__tests__/BuildCloudflareTask.spec.ts +178 -0
- package/src/cli/core/__tests__/BuildDockerTask.spec.ts +0 -2
- package/src/cli/core/__tests__/DbCommand.spec.ts +108 -0
- package/src/cli/core/atoms/appEntryOptions.ts +5 -5
- package/src/cli/core/atoms/buildOptions.ts +76 -88
- package/src/cli/core/atoms/changelogOptions.ts +3 -3
- package/src/cli/core/atoms/devOptions.ts +3 -3
- package/src/cli/core/commands/build.ts +36 -49
- package/src/cli/core/commands/db.ts +171 -83
- package/src/cli/core/commands/dev.ts +8 -8
- package/src/cli/core/commands/gen/changelog.ts +12 -14
- package/src/cli/core/commands/gen/env.ts +6 -6
- package/src/cli/core/commands/gen/openapi.ts +6 -6
- package/src/cli/core/commands/init.ts +28 -33
- package/src/cli/core/commands/pack.ts +10 -10
- package/src/cli/core/commands/root.ts +7 -8
- package/src/cli/core/commands/test.ts +17 -20
- package/src/cli/core/index.ts +0 -3
- package/src/cli/core/tasks/BuildCloudflareTask.ts +138 -245
- package/src/cli/core/tasks/BuildPrerenderTask.ts +44 -7
- package/src/cli/core/templates/apiHelloResponseSchemaTs.ts +4 -4
- package/src/cli/devtools/atoms/devtoolsOptions.ts +6 -6
- package/src/cli/i18n/__tests__/I18nCheckService.spec.ts +48 -0
- package/src/cli/i18n/atoms/i18nOptions.ts +8 -8
- package/src/cli/i18n/services/I18nCheckService.ts +65 -11
- package/src/cli/platform/commands/SecretsCommand.ts +24 -25
- package/src/cli/platform/commands/platform.ts +40 -46
- package/src/cli/platform/index.ts +1 -1
- package/src/cli/platform-lib/__tests__/CloudflareAdapter.spec.ts +0 -4
- package/src/cli/platform-lib/__tests__/PlatformInspector.spec.ts +10 -3
- package/src/cli/platform-lib/__tests__/VercelAdapter.spec.ts +0 -2
- package/src/cli/platform-lib/adapters/CloudflareAdapter.ts +141 -50
- package/src/cli/platform-lib/adapters/VercelAdapter.ts +6 -11
- package/src/cli/platform-lib/atoms/platformOptions.ts +46 -25
- package/src/cli/platform-lib/schemas/cloudflare.ts +87 -87
- package/src/cli/platform-lib/schemas/platform.ts +51 -51
- package/src/cli/platform-lib/schemas/vercel.ts +28 -28
- package/src/cli/platform-lib/services/CloudflareApi.ts +5 -5
- package/src/cli/platform-lib/services/VercelApi.ts +4 -4
- package/src/cli/platform-lib/services/VercelCli.ts +6 -15
- package/src/cli/platform-lib/services/WranglerApi.ts +6 -15
- package/src/cli/vendor/atoms/vendorOptions.ts +9 -9
- package/src/cli/vendor/commands/VendorCommand.ts +11 -12
- package/src/command/__tests__/$command.spec.ts +82 -83
- package/src/command/__tests__/Asker.spec.ts +6 -13
- package/src/command/__tests__/CliProvider.spec.ts +136 -149
- package/src/command/__tests__/Runner.spec.ts +86 -110
- package/src/command/helpers/Asker.ts +23 -58
- package/src/command/helpers/Runner.ts +34 -110
- package/src/command/index.ts +4 -9
- package/src/command/primitives/$command.ts +10 -10
- package/src/command/providers/CliProvider.ts +183 -161
- package/src/core/Alepha.ts +62 -13
- package/src/core/__tests__/$atom.spec.ts +52 -3
- package/src/core/__tests__/$computed.spec.ts +129 -0
- package/src/core/__tests__/$env.spec.ts +13 -13
- package/src/core/__tests__/$inject.spec.ts +4 -4
- package/src/core/__tests__/$module.spec.ts +1 -1
- package/src/core/__tests__/Alepha-graph.spec.ts +1 -1
- package/src/core/__tests__/Alepha-parseEnv.spec.ts +32 -32
- package/src/core/__tests__/Alepha-start.spec.ts +3 -3
- package/src/core/__tests__/CodecManager.spec.ts +113 -94
- package/src/core/__tests__/KeylessJsonSchemaCodec.spec.ts +138 -138
- package/src/core/__tests__/SchemaValidator.spec.ts +43 -44
- package/src/core/__tests__/StateManager.persist.browser.spec.ts +87 -0
- package/src/core/__tests__/StateManager.spec.ts +423 -0
- package/src/core/__tests__/TypeBox-usecases.spec.ts +8 -8
- package/src/core/__tests__/TypeProvider.spec.ts +314 -309
- package/src/core/__tests__/dump.spec.ts +6 -6
- package/src/core/__tests__/pagination.spec.ts +4 -4
- package/src/core/__tests__/scoped-after-start.spec.ts +43 -0
- package/src/core/errors/TypeBoxError.ts +10 -4
- package/src/core/helpers/FileLike.ts +5 -5
- package/src/core/helpers/coerceStrings.ts +70 -0
- package/src/core/helpers/jsonSchemaToZod.ts +112 -0
- package/src/core/index.shared.ts +4 -1
- package/src/core/primitives/$atom.ts +95 -27
- package/src/core/primitives/$computed.ts +148 -0
- package/src/core/primitives/$env.ts +5 -5
- package/src/core/primitives/$state.ts +1 -1
- package/src/core/providers/AlsProvider.ts +26 -0
- package/src/core/providers/CodecManager.ts +1 -2
- package/src/core/providers/JsonSchemaCodec.ts +1 -2
- package/src/core/providers/KeylessJsonSchemaCodec.ts +82 -57
- package/src/core/providers/SchemaValidator.ts +48 -158
- package/src/core/providers/StateManager.ts +383 -9
- package/src/core/providers/TypeProvider.ts +80 -734
- package/src/core/providers/ZodProvider.ts +380 -0
- package/src/core/providers/zodAugment.ts +69 -0
- package/src/core/schemas/pageQuerySchema.ts +19 -21
- package/src/core/schemas/pageSchema.ts +47 -57
- package/src/crypto/__tests__/SecretProvider.spec.ts +31 -0
- package/src/crypto/providers/SecretProvider.ts +16 -10
- package/src/datetime/primitives/$throttle.ts +6 -1
- package/src/email/brevo/providers/BrevoEmailProvider.ts +4 -4
- package/src/email/cloudflare/providers/CloudflareEmailProvider.ts +6 -6
- package/src/email/core/index.ts +7 -2
- package/src/email/core/primitives/$email.ts +5 -1
- package/src/email/core/providers/LocalEmailProvider.ts +5 -5
- package/src/email/smtp/providers/NodemailerEmailProvider.ts +41 -52
- package/src/fake/__tests__/FakeProvider.spec.ts +110 -110
- package/src/fake/__tests__/keyName.example.ts +21 -21
- package/src/fake/__tests__/keyName.spec.ts +41 -41
- package/src/fake/__tests__/module.example.ts +8 -8
- package/src/fake/providers/FakeProvider.ts +122 -121
- package/src/lock/core/__tests__/lock-mutual-exclusion.spec.ts +44 -0
- package/src/lock/core/index.ts +1 -0
- package/src/lock/core/primitives/$lock.ts +13 -6
- package/src/logger/__tests__/CliFormatterProvider.spec.ts +76 -0
- package/src/logger/__tests__/Logger.spec.ts +49 -0
- package/src/logger/index.ts +25 -18
- package/src/logger/providers/CliFormatterProvider.ts +75 -0
- package/src/logger/schemas/logEntrySchema.ts +10 -10
- package/src/logger/services/Logger.ts +18 -0
- package/src/mcp/__tests__/$prompt.spec.ts +21 -23
- package/src/mcp/__tests__/$tool.spec.ts +22 -22
- package/src/mcp/__tests__/McpServerProvider.spec.ts +82 -11
- package/src/mcp/__tests__/StreamableHttpMcpTransport.spec.ts +2 -2
- package/src/mcp/__tests__/integration.spec.ts +33 -33
- package/src/mcp/primitives/$prompt.ts +11 -9
- package/src/mcp/primitives/$tool.ts +27 -86
- package/src/mcp/providers/McpServerProvider.ts +55 -0
- package/src/mcp/transports/StreamableHttpMcpTransport.ts +7 -7
- package/src/orm/__tests__/$repository-tests.ts +133 -27
- package/src/orm/__tests__/$repository.spec.ts +23 -0
- package/src/orm/__tests__/$transactional-tests.ts +4 -4
- package/src/orm/__tests__/ModelBuilder-tests.ts +28 -28
- package/src/orm/__tests__/ModelBuilder.spec.ts +124 -106
- package/src/orm/__tests__/QueryManager.spec.ts +5 -5
- package/src/orm/__tests__/delete-returning-tests.ts +11 -11
- package/src/orm/__tests__/deletedAt-tests.ts +3 -3
- package/src/orm/__tests__/enums.spec.ts +29 -25
- package/src/orm/__tests__/execute-tests.ts +8 -8
- package/src/orm/__tests__/fixtures/bigEntitySchema.ts +48 -48
- package/src/orm/__tests__/fixtures/userEntitySchema.ts +6 -6
- package/src/orm/__tests__/joins-tests.ts +30 -30
- package/src/orm/__tests__/organization-tests.ts +105 -3
- package/src/orm/__tests__/organization.spec.ts +46 -0
- package/src/orm/__tests__/orm-errors.spec.ts +10 -10
- package/src/orm/__tests__/orm-next-tests.ts +29 -29
- package/src/orm/__tests__/orm-showcase-tests.ts +9 -9
- package/src/orm/__tests__/primaryKey.spec.ts +4 -4
- package/src/orm/__tests__/query-date-encoding-tests.ts +17 -17
- package/src/orm/__tests__/ref-auto-onDelete.spec.ts +14 -14
- package/src/orm/__tests__/references.spec.ts +7 -7
- package/src/orm/__tests__/security.spec.ts +17 -17
- package/src/orm/__tests__/string-operators-tests.ts +5 -5
- package/src/orm/__tests__/timestamps-tests.ts +14 -14
- package/src/orm/__tests__/validation-tests.ts +5 -5
- package/src/orm/core/__tests__/BunSqliteProvider.bun.spec.ts +8 -8
- package/src/orm/core/constants/PG_SYMBOLS.ts +13 -1
- package/src/orm/core/entities/alephaSequences.ts +8 -8
- package/src/orm/core/helpers/pgAttr.ts +4 -4
- package/src/orm/core/primitives/$entity.ts +10 -6
- package/src/orm/core/providers/DatabaseTypeProvider.ts +46 -53
- package/src/orm/core/providers/drivers/BunSqliteProvider.ts +8 -8
- package/src/orm/core/providers/drivers/CloudflareD1Provider.ts +3 -5
- package/src/orm/core/providers/drivers/NodeSqliteProvider.ts +8 -8
- package/src/orm/core/schemas/databaseEnvSchema.ts +4 -4
- package/src/orm/core/schemas/insertSchema.ts +14 -18
- package/src/orm/core/schemas/legacyIdSchema.ts +2 -2
- package/src/orm/core/schemas/updateSchema.ts +10 -16
- package/src/orm/core/services/PgRelationManager.ts +2 -2
- package/src/orm/core/services/QueryManager.ts +13 -2
- package/src/orm/core/services/Repository.ts +88 -33
- package/src/orm/core/services/SqliteModelBuilder.ts +38 -45
- package/src/orm/postgres/__tests__/BunPostgresProvider.bun.spec.ts +4 -4
- package/src/orm/postgres/providers/CloudflareHyperdriveProvider.ts +4 -6
- package/src/orm/postgres/schemas/postgresEnvSchema.ts +6 -6
- package/src/orm/postgres/services/PostgresModelBuilder.ts +127 -114
- package/src/queue/core/__tests__/$consumer.spec.ts +4 -4
- package/src/queue/core/__tests__/WorkerProvider.spec.ts +4 -4
- package/src/queue/core/__tests__/shared.ts +6 -6
- package/src/queue/core/primitives/$consumer.ts +5 -5
- package/src/queue/core/primitives/$queue.ts +44 -61
- package/src/queue/core/providers/CloudflareQueueProvider.ts +6 -0
- package/src/queue/core/providers/WorkerProvider.ts +17 -14
- package/src/queue/redis/providers/RedisQueueProvider.ts +3 -3
- package/src/react/core/__tests__/ErrorBoundary.browser.spec.tsx +92 -0
- package/src/react/core/__tests__/Router.spec.tsx +4 -4
- package/src/react/core/__tests__/useComputed.browser.spec.tsx +192 -0
- package/src/react/core/__tests__/useQuery.browser.spec.tsx +48 -0
- package/src/react/core/__tests__/useSelector.browser.spec.tsx +105 -0
- package/src/react/core/__tests__/useStore.browser.spec.tsx +113 -0
- package/src/react/core/components/ErrorBoundary.tsx +42 -0
- package/src/react/core/hooks/useAction.ts +56 -19
- package/src/react/core/hooks/useComputed.ts +91 -0
- package/src/react/core/hooks/useSelector.ts +67 -0
- package/src/react/core/hooks/useStore.ts +36 -17
- package/src/react/core/index.ts +3 -0
- package/src/react/core/utils/shallowEqual.ts +36 -0
- package/src/react/form/__tests__/FormModel-submit-loading.spec.ts +71 -0
- package/src/react/form/__tests__/form-submitting-reactive.browser.spec.tsx +96 -0
- package/src/react/form/__tests__/useForm.browser.spec.tsx +54 -54
- package/src/react/form/errors/FormValidationError.ts +0 -2
- package/src/react/form/hooks/useForm.ts +19 -4
- package/src/react/form/hooks/useFormQuerySync.ts +0 -0
- package/src/react/form/services/FormModel.ts +124 -86
- package/src/react/form/services/parseField.ts +66 -27
- package/src/react/i18n/__tests__/I18nProvider.spec.ts +89 -0
- package/src/react/i18n/__tests__/Localize.spec.tsx +1 -1
- package/src/react/i18n/__tests__/locale-routing.spec.ts +107 -0
- package/src/react/i18n/providers/I18nProvider.ts +173 -14
- package/src/react/router/__tests__/$page.browser.spec.tsx +19 -19
- package/src/react/router/__tests__/$page.spec.tsx +21 -21
- package/src/react/router/__tests__/ReactBrowserProvider.browser.spec.ts +87 -1
- package/src/react/router/__tests__/RouterLocaleProvider.spec.ts +127 -0
- package/src/react/router/atoms/ssrManifestAtom.ts +16 -16
- package/src/react/router/components/NestedView.tsx +11 -3
- package/src/react/router/hooks/useQueryParams.ts +1 -1
- package/src/react/router/index.browser.ts +4 -0
- package/src/react/router/index.shared.ts +1 -0
- package/src/react/router/index.ts +9 -0
- package/src/react/router/primitives/$page.ts +2 -2
- package/src/react/router/providers/ReactBrowserProvider.ts +64 -13
- package/src/react/router/providers/ReactBrowserRouterProvider.ts +15 -1
- package/src/react/router/providers/ReactPageProvider.ts +38 -13
- package/src/react/router/providers/ReactServerProvider.ts +105 -16
- package/src/react/router/providers/RootComponentsProvider.ts +13 -0
- package/src/react/router/providers/RouterLocaleProvider.ts +125 -0
- package/src/react/router/providers/__tests__/RootComponentsProvider.spec.ts +15 -0
- package/src/react/router/providers/__tests__/rootComponents.ssr.browser.spec.tsx +67 -0
- package/src/react/sitemap/__tests__/$sitemap.spec.ts +131 -0
- package/src/react/sitemap/index.browser.ts +21 -0
- package/src/react/sitemap/index.ts +25 -0
- package/src/react/sitemap/primitives/$sitemap.browser.ts +26 -0
- package/src/react/sitemap/primitives/$sitemap.ts +196 -0
- package/src/react/ui/atoms/uiAtom.ts +6 -6
- package/src/react/ui/atoms/uiThemeListAtom.ts +7 -7
- package/src/react/ui/hooks/useColorMode.ts +11 -4
- package/src/react/ui/services/SchemaControl.ts +4 -4
- package/src/redis/providers/BunRedisProvider.ts +19 -11
- package/src/redis/providers/NodeRedisProvider.ts +3 -3
- package/src/scheduler/primitives/$scheduler.ts +21 -8
- package/src/security/__tests__/assertRealmScope.spec.ts +29 -0
- package/src/security/atoms/currentTenantAtom.ts +6 -6
- package/src/security/atoms/currentUserAtom.ts +2 -2
- package/src/security/primitives/$issuer.ts +24 -2
- package/src/security/providers/JwtProvider.ts +100 -0
- package/src/security/providers/SecurityProvider.ts +43 -2
- package/src/security/schemas/permissionSchema.ts +19 -19
- package/src/security/schemas/roleSchema.ts +22 -28
- package/src/security/schemas/userAccountInfoSchema.ts +47 -37
- package/src/server/auth/__tests__/appleClientSecret.spec.ts +34 -0
- package/src/server/auth/__tests__/federationRedirectReplay.spec.ts +44 -0
- package/src/server/auth/helpers/appleClientSecret.ts +24 -0
- package/src/server/auth/helpers/jtiReplayGuard.ts +41 -0
- package/src/server/auth/helpers/safeRedirectPath.ts +19 -0
- package/src/server/auth/index.ts +1 -0
- package/src/server/auth/primitives/$auth.ts +6 -6
- package/src/server/auth/primitives/$authApple.ts +10 -10
- package/src/server/auth/primitives/$authFacebook.ts +10 -10
- package/src/server/auth/primitives/$authFranceConnect.ts +10 -10
- package/src/server/auth/primitives/$authGithub.ts +10 -10
- package/src/server/auth/primitives/$authGoogle.ts +10 -10
- package/src/server/auth/primitives/$authMicrosoft.ts +14 -14
- package/src/server/auth/providers/ServerAuthProvider.ts +67 -52
- package/src/server/auth/schemas/authenticationProviderSchema.ts +9 -12
- package/src/server/auth/schemas/tokenResponseSchema.ts +2 -2
- package/src/server/auth/schemas/tokensSchema.ts +16 -16
- package/src/server/auth/schemas/userinfoResponseSchema.ts +3 -3
- package/src/server/cookies/__tests__/AtomCookieBinding.spec.ts +80 -0
- package/src/server/cookies/__tests__/AtomCookiePersistence.browser.spec.ts +169 -0
- package/src/server/cookies/__tests__/AtomCookiePersistence.spec.ts +294 -0
- package/src/server/cookies/__tests__/ServerCookiesProvider.spec.ts +82 -12
- package/src/server/cookies/index.browser.ts +4 -1
- package/src/server/cookies/index.ts +8 -1
- package/src/server/cookies/primitives/$cookie.browser.ts +1 -1
- package/src/server/cookies/primitives/$cookie.ts +16 -0
- package/src/server/cookies/providers/AtomCookiePersistence.browser.ts +133 -0
- package/src/server/cookies/providers/AtomCookiePersistence.ts +148 -0
- package/src/server/cookies/providers/ServerCookiesProvider.ts +32 -4
- package/src/server/cookies/services/CookieParser.ts +6 -1
- package/src/server/core/__tests__/$action.spec.ts +13 -13
- package/src/server/core/__tests__/$middleware.spec.ts +10 -10
- package/src/server/core/__tests__/$route.spec.ts +9 -9
- package/src/server/core/__tests__/$sse.spec.ts +26 -26
- package/src/server/core/__tests__/BunHttpServerProvider.bun.spec.ts +6 -6
- package/src/server/core/__tests__/HttpClient.spec.ts +2 -2
- package/src/server/core/__tests__/NodeHttpServerProvider.spec.ts +15 -3
- package/src/server/core/__tests__/ServerBodyParserProvider.spec.ts +14 -14
- package/src/server/core/__tests__/ServerMultipartProvider.spec.ts +33 -33
- package/src/server/core/__tests__/ServerRouterProvider-errorHandler.spec.ts +5 -1
- package/src/server/core/__tests__/ServerRouterProvider-getRoutes.spec.ts +25 -25
- package/src/server/core/__tests__/ServerRouterProvider-serializationError.spec.ts +9 -5
- package/src/server/core/__tests__/ServerRouterProvider-validationError.spec.ts +56 -24
- package/src/server/core/errors/ValidationError.ts +6 -3
- package/src/server/core/helpers/isMultipart.ts +2 -1
- package/src/server/core/index.ts +5 -2
- package/src/server/core/interfaces/ServerRequest.ts +14 -14
- package/src/server/core/primitives/$action.ts +26 -36
- package/src/server/core/primitives/$route.ts +27 -0
- package/src/server/core/primitives/$sse.ts +3 -3
- package/src/server/core/providers/BunHttpServerProvider.ts +8 -9
- package/src/server/core/providers/NodeHttpServerProvider.ts +8 -9
- package/src/server/core/providers/ServerBodyParserProvider.ts +20 -12
- package/src/server/core/providers/ServerCompressProvider.ts +9 -10
- package/src/server/core/providers/ServerHelmetProvider.ts +26 -27
- package/src/server/core/providers/ServerMultipartProvider.ts +19 -19
- package/src/server/core/providers/ServerRouterProvider.ts +44 -15
- package/src/server/core/schemas/errorSchema.ts +20 -25
- package/src/server/core/schemas/okSchema.ts +9 -14
- package/src/server/core/services/HttpClient.ts +13 -1
- package/src/server/core/services/ServerRequestParser.ts +6 -6
- package/src/server/cors/providers/ServerCorsProvider.ts +26 -28
- package/src/server/health/schemas/healthSchema.ts +6 -6
- package/src/server/links/__tests__/$remote.spec.ts +3 -3
- package/src/server/links/__tests__/BatchEndpoint.spec.ts +9 -9
- package/src/server/links/__tests__/LinkProvider.spec.ts +9 -9
- package/src/server/links/__tests__/ServerLinksProvider.spec.ts +23 -23
- package/src/server/links/__tests__/fixtures/CrudApp.ts +21 -21
- package/src/server/links/atoms/apiLinksAtom.ts +2 -2
- package/src/server/links/atoms/linkOptionsAtom.ts +6 -6
- package/src/server/links/primitives/$remote.ts +3 -3
- package/src/server/links/providers/LinkProvider.ts +3 -3
- package/src/server/links/providers/ServerLinksProvider.ts +20 -20
- package/src/server/links/schemas/apiLinksResponseSchema.ts +23 -23
- package/src/server/proxy/__tests__/$proxy.spec.ts +9 -9
- package/src/server/proxy/providers/ServerProxyProvider.ts +5 -0
- package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +18 -20
- package/src/server/swagger/__tests__/$swagger.spec.ts +91 -94
- package/src/server/swagger/__tests__/ui.spec.ts +3 -3
- package/src/server/swagger/providers/ServerSwaggerProvider.ts +66 -43
- package/src/system/__tests__/NodeShellProvider.spec.ts +46 -0
- package/src/system/providers/NodeShellProvider.ts +4 -1
- package/src/topic/core/__tests__/$subscriber.spec.ts +4 -4
- package/src/topic/core/__tests__/shared.ts +8 -8
- package/src/topic/core/primitives/$subscriber.ts +5 -5
- package/src/topic/core/primitives/$topic.ts +14 -14
- package/src/topic/redis/providers/RedisTopicProvider.ts +3 -3
- package/dist/container/core/index.d.ts +0 -236
- package/dist/container/core/index.d.ts.map +0 -1
- package/dist/container/core/index.js +0 -231
- package/dist/container/core/index.js.map +0 -1
- package/dist/container/core/index.workerd.js +0 -192
- package/dist/container/core/index.workerd.js.map +0 -1
- package/src/cli/core/tasks/BuildSitemapTask.ts +0 -130
- package/src/command/helpers/PrettyAsker.ts +0 -256
- package/src/command/helpers/PrettyPrint.ts +0 -332
- package/src/container/core/__tests__/$container.spec.ts +0 -83
- package/src/container/core/index.ts +0 -50
- package/src/container/core/index.workerd.ts +0 -53
- package/src/container/core/interfaces/ContainerOptions.ts +0 -69
- package/src/container/core/primitives/$container.ts +0 -100
- package/src/container/core/providers/CloudflareContainerProvider.ts +0 -70
- package/src/container/core/providers/ContainerProvider.ts +0 -92
- package/src/container/core/providers/MockContainerProvider.ts +0 -62
- package/src/container/core/providers/NodeContainerProvider.ts +0 -53
- package/src/core/__tests__/jsonSchemaToTypeBox.spec.ts +0 -771
- package/src/core/helpers/jsonSchemaToTypeBox.ts +0 -359
- /package/dist/orm/core/{chunk-B4FMCO8f.js → rolldown-runtime-B4FMCO8f.js} +0 -0
|
@@ -4,11 +4,18 @@ import { FileSystemProvider } from "alepha/system";
|
|
|
4
4
|
import { BuildTask, type BuildTaskContext } from "./BuildTask.ts";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Pre-render static pages defined in the Alepha application.
|
|
7
|
+
* Pre-render static pages and routes defined in the Alepha application.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* routes via `static.entries`
|
|
9
|
+
* Two passes, both writing into `dist/public`:
|
|
10
|
+
* - **pages** — every `$page` with `static: true` is rendered to an HTML file
|
|
11
|
+
* (supports parameterized routes via `static.entries`).
|
|
12
|
+
* - **routes** — every `static` route primitive (a `$route({ static: true })`
|
|
13
|
+
* or a `$sitemap`) is invoked in-process and its body written verbatim to
|
|
14
|
+
* `{path}` (e.g. `sitemap.xml`, `robots.txt`).
|
|
15
|
+
*
|
|
16
|
+
* Both passes read the primitive registry and call a method on the already
|
|
17
|
+
* created primitive instances — no provider is re-injected, so this works in
|
|
18
|
+
* the build's configured-but-not-started container.
|
|
12
19
|
*/
|
|
13
20
|
export class BuildPrerenderTask extends BuildTask {
|
|
14
21
|
protected readonly fs = $inject(FileSystemProvider);
|
|
@@ -22,7 +29,8 @@ export class BuildPrerenderTask extends BuildTask {
|
|
|
22
29
|
}
|
|
23
30
|
|
|
24
31
|
const pages = this.getStaticPages(ctx);
|
|
25
|
-
|
|
32
|
+
const routes = this.getStaticRoutePrimitives(ctx);
|
|
33
|
+
if (pages.length === 0 && routes.length === 0) {
|
|
26
34
|
return;
|
|
27
35
|
}
|
|
28
36
|
|
|
@@ -31,13 +39,18 @@ export class BuildPrerenderTask extends BuildTask {
|
|
|
31
39
|
const dist = this.fs.join(ctx.root, distDir, publicDir);
|
|
32
40
|
|
|
33
41
|
await ctx.run({
|
|
34
|
-
name: "pre-render
|
|
42
|
+
name: "pre-render",
|
|
35
43
|
handler: async () => {
|
|
36
44
|
// TODO: running configure here is a temporary workaround
|
|
37
45
|
if (!ctx.alepha.isConfigured()) {
|
|
38
46
|
await ctx.alepha.events.emit("configure", ctx.alepha);
|
|
39
47
|
}
|
|
40
|
-
|
|
48
|
+
if (pages.length > 0) {
|
|
49
|
+
await this.prerenderFromAlepha(pages, dist);
|
|
50
|
+
}
|
|
51
|
+
if (routes.length > 0) {
|
|
52
|
+
await this.prerenderRoutes(routes, dist);
|
|
53
|
+
}
|
|
41
54
|
},
|
|
42
55
|
});
|
|
43
56
|
}
|
|
@@ -50,6 +63,18 @@ export class BuildPrerenderTask extends BuildTask {
|
|
|
50
63
|
});
|
|
51
64
|
}
|
|
52
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Static route primitives to snapshot: `$route({ static: true })` and every
|
|
68
|
+
* `$sitemap`. Both expose an async `prerender(): { path, body }`.
|
|
69
|
+
*/
|
|
70
|
+
protected getStaticRoutePrimitives(ctx: BuildTaskContext): any[] {
|
|
71
|
+
const routes = (ctx.alepha.primitives("route") as any[]).filter(
|
|
72
|
+
(route) => route.options?.static === true,
|
|
73
|
+
);
|
|
74
|
+
const sitemaps = ctx.alepha.primitives("sitemap") as any[];
|
|
75
|
+
return [...routes, ...sitemaps];
|
|
76
|
+
}
|
|
77
|
+
|
|
53
78
|
protected async prerenderFromAlepha(
|
|
54
79
|
pages: any[],
|
|
55
80
|
dist: string,
|
|
@@ -77,6 +102,18 @@ export class BuildPrerenderTask extends BuildTask {
|
|
|
77
102
|
return count;
|
|
78
103
|
}
|
|
79
104
|
|
|
105
|
+
protected async prerenderRoutes(
|
|
106
|
+
primitives: any[],
|
|
107
|
+
dist: string,
|
|
108
|
+
): Promise<void> {
|
|
109
|
+
for (const primitive of primitives) {
|
|
110
|
+
const { path, body } = await primitive.prerender();
|
|
111
|
+
const filepath = this.fs.join(dist, path);
|
|
112
|
+
await this.fs.mkdir(dirname(filepath));
|
|
113
|
+
await this.fs.writeFile(filepath, body);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
80
117
|
protected async renderFile(
|
|
81
118
|
page: any,
|
|
82
119
|
options: any,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export const apiHelloResponseSchemaTs = () => {
|
|
2
|
-
return `import { type Static,
|
|
2
|
+
return `import { type Static, z } from "alepha";
|
|
3
3
|
|
|
4
|
-
export const helloResponseSchema =
|
|
5
|
-
appName:
|
|
6
|
-
serverTime:
|
|
4
|
+
export const helloResponseSchema = z.object({
|
|
5
|
+
appName: z.text(),
|
|
6
|
+
serverTime: z.datetime(),
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
export type HelloResponse = Static<typeof helloResponseSchema>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $atom, type Static,
|
|
1
|
+
import { $atom, type Static, z } from "alepha";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Devtools configuration atom.
|
|
@@ -8,16 +8,16 @@ import { $atom, type Static, t } from "alepha";
|
|
|
8
8
|
export const devtoolsOptions = $atom({
|
|
9
9
|
name: "alepha.cli.devtools.options",
|
|
10
10
|
description: "Devtools plugin configuration",
|
|
11
|
-
schema:
|
|
12
|
-
|
|
11
|
+
schema: z
|
|
12
|
+
.object({
|
|
13
13
|
/**
|
|
14
14
|
* Hide the floating devtools button in the browser.
|
|
15
15
|
*
|
|
16
16
|
* The devtools UI is still accessible at `/__devtools/`.
|
|
17
17
|
*/
|
|
18
|
-
hideButton:
|
|
19
|
-
})
|
|
20
|
-
|
|
18
|
+
hideButton: z.boolean().default(false).optional(),
|
|
19
|
+
})
|
|
20
|
+
.optional(),
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
/**
|
|
@@ -109,6 +109,54 @@ ${body}
|
|
|
109
109
|
expect(result.unused).toEqual(["home.title"]);
|
|
110
110
|
});
|
|
111
111
|
|
|
112
|
+
it("extracts keys from lazily-imported per-language files", async () => {
|
|
113
|
+
await env.fs.mkdir(`${ROOT}/src/web/i18n`, { recursive: true });
|
|
114
|
+
// Marker file declares `$dictionary` but the keys live in split,
|
|
115
|
+
// markerless per-language files referenced via `lazy: () => import(...)`.
|
|
116
|
+
// A sibling `$page` lazy import must NOT be mistaken for a key file.
|
|
117
|
+
await env.fs.writeFile(
|
|
118
|
+
`${ROOT}/src/web/Router.ts`,
|
|
119
|
+
`import { $dictionary } from "alepha/react/i18n";
|
|
120
|
+
export class Router {
|
|
121
|
+
fr = $dictionary({ lazy: () => import("./i18n/fr.ts"), lang: "fr" });
|
|
122
|
+
en = $dictionary({ lazy: () => import("./i18n/en.ts"), lang: "en" });
|
|
123
|
+
page = $page({ lazy: () => import("./Home.tsx") });
|
|
124
|
+
}
|
|
125
|
+
`,
|
|
126
|
+
);
|
|
127
|
+
await env.fs.writeFile(
|
|
128
|
+
`${ROOT}/src/web/i18n/fr.ts`,
|
|
129
|
+
`export default { "home.title": "Accueil", "home.unused": "Rien" };`,
|
|
130
|
+
);
|
|
131
|
+
await env.fs.writeFile(
|
|
132
|
+
`${ROOT}/src/web/i18n/en.ts`,
|
|
133
|
+
`export default { "home.title": "Home", "home.unused": "Nothing" };`,
|
|
134
|
+
);
|
|
135
|
+
// The only reference — `home.unused` is dead in both languages. The
|
|
136
|
+
// `"home.title": "…"` lines in the sibling language file must not count
|
|
137
|
+
// as references (key files are excluded from the usage corpus).
|
|
138
|
+
await env.fs.writeFile(
|
|
139
|
+
`${ROOT}/src/web/Home.tsx`,
|
|
140
|
+
`export const Home = () => tr("home.title");`,
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
const result = await env.service.check({
|
|
144
|
+
root: ROOT,
|
|
145
|
+
scan: ["src"],
|
|
146
|
+
dynamicPrefixes: [],
|
|
147
|
+
exclude: [],
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
expect(result.totalKeys).toBe(2);
|
|
151
|
+
expect(result.unused).toEqual(["home.unused"]);
|
|
152
|
+
// The resolved language file is treated as a dictionary; the sibling
|
|
153
|
+
// `$page` lazy import is not (it contributed no keys and stays in the
|
|
154
|
+
// usage corpus). `en.ts` is also a dictionary file but adds no *new*
|
|
155
|
+
// keys, so only the first contributor is listed.
|
|
156
|
+
expect(result.dictionaryFiles).toContain(`${ROOT}/src/web/i18n/fr.ts`);
|
|
157
|
+
expect(result.dictionaryFiles).not.toContain(`${ROOT}/src/web/Home.tsx`);
|
|
158
|
+
});
|
|
159
|
+
|
|
112
160
|
it("returns totalKeys=0 when no dictionary is found", async () => {
|
|
113
161
|
await env.fs.mkdir(`${ROOT}/src`, { recursive: true });
|
|
114
162
|
await env.fs.writeFile(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $atom, type Static,
|
|
1
|
+
import { $atom, type Static, z } from "alepha";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* i18n CLI configuration atom.
|
|
@@ -9,15 +9,15 @@ import { $atom, type Static, t } from "alepha";
|
|
|
9
9
|
export const i18nOptions = $atom({
|
|
10
10
|
name: "alepha.cli.i18n.options",
|
|
11
11
|
description: "i18n unused-key check configuration",
|
|
12
|
-
schema:
|
|
13
|
-
|
|
12
|
+
schema: z
|
|
13
|
+
.object({
|
|
14
14
|
/**
|
|
15
15
|
* Directories (relative to the project root) to scan both for
|
|
16
16
|
* `$dictionary(...)` declarations and for translation key usage.
|
|
17
17
|
*
|
|
18
18
|
* @default ["src"]
|
|
19
19
|
*/
|
|
20
|
-
scan:
|
|
20
|
+
scan: z.array(z.text()).optional(),
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Key prefixes that are constructed at runtime (e.g. via template
|
|
@@ -30,7 +30,7 @@ export const i18nOptions = $atom({
|
|
|
30
30
|
*
|
|
31
31
|
* @default []
|
|
32
32
|
*/
|
|
33
|
-
dynamicPrefixes:
|
|
33
|
+
dynamicPrefixes: z.array(z.text()).optional(),
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* Additional path substrings (matched against the full file
|
|
@@ -40,9 +40,9 @@ export const i18nOptions = $atom({
|
|
|
40
40
|
*
|
|
41
41
|
* @default []
|
|
42
42
|
*/
|
|
43
|
-
exclude:
|
|
44
|
-
})
|
|
45
|
-
|
|
43
|
+
exclude: z.array(z.text()).optional(),
|
|
44
|
+
})
|
|
45
|
+
.optional(),
|
|
46
46
|
});
|
|
47
47
|
|
|
48
48
|
/**
|
|
@@ -35,6 +35,22 @@ const KEY_DECLARATION_RE = /"([\w-]+(?:\.[\w-]+)+)"\s*:/g;
|
|
|
35
35
|
*/
|
|
36
36
|
const DICTIONARY_MARKER = "$dictionary";
|
|
37
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Captures the module specifier of a lazily-imported dictionary, i.e. the
|
|
40
|
+
* `"./fr.ts"` in `$dictionary({ lazy: () => import("./fr.ts") })`. Apps
|
|
41
|
+
* commonly split each language into its own file so a session only ships the
|
|
42
|
+
* active locale — those key files carry no `$dictionary` marker, so without
|
|
43
|
+
* this the keys would be invisible to the check.
|
|
44
|
+
*
|
|
45
|
+
* `[^{}]*?` keeps the match inside the `$dictionary` call's own object literal
|
|
46
|
+
* (it stops at the first brace), so unrelated lazy imports in the same file —
|
|
47
|
+
* e.g. a sibling `$page({ lazy: () => import("./Page.tsx") })` or a
|
|
48
|
+
* `$dictionary` whose `lazy` returns an inline `({ default: {…} })` object —
|
|
49
|
+
* are never mistaken for dictionary key files.
|
|
50
|
+
*/
|
|
51
|
+
const DICTIONARY_LAZY_IMPORT_RE =
|
|
52
|
+
/\$dictionary\s*\(\s*\{[^{}]*?import\s*\(\s*["']([^"']+)["']/g;
|
|
53
|
+
|
|
38
54
|
export interface I18nCheckOptions {
|
|
39
55
|
root: string;
|
|
40
56
|
scan: string[];
|
|
@@ -62,11 +78,11 @@ export class I18nCheckService {
|
|
|
62
78
|
* Find unused translation keys.
|
|
63
79
|
*
|
|
64
80
|
* Discovery is fully static: we walk `scan` dirs, identify files
|
|
65
|
-
* that import `$dictionary` (matched via the literal substring)
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* exempted.
|
|
81
|
+
* that import `$dictionary` (matched via the literal substring) plus
|
|
82
|
+
* any per-language files they lazily `import(...)`, extract every
|
|
83
|
+
* `"a.b.c": ...` property key declared across them, then grep the
|
|
84
|
+
* remaining source files for a quoted-literal occurrence of each key.
|
|
85
|
+
* Anything matching a `dynamicPrefixes` entry is exempted.
|
|
70
86
|
*/
|
|
71
87
|
async check(options: I18nCheckOptions): Promise<I18nCheckResult> {
|
|
72
88
|
const { root, scan, dynamicPrefixes, exclude } = options;
|
|
@@ -91,14 +107,31 @@ export class I18nCheckService {
|
|
|
91
107
|
}
|
|
92
108
|
}
|
|
93
109
|
|
|
94
|
-
const dictionaryFiles: string[] = [];
|
|
95
|
-
const allKeys = new Set<string>();
|
|
96
110
|
const fileContents = new Map<string, string>();
|
|
97
|
-
|
|
98
111
|
for (const file of allFiles) {
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
fileContents.set(file, (await this.fs.readFile(file)).toString("utf8"));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// A file is a dictionary if it declares `$dictionary` OR it is the target
|
|
116
|
+
// of a `$dictionary({ lazy: () => import("…") })` (the split per-language
|
|
117
|
+
// key files, which carry no marker of their own). Resolving the lazy
|
|
118
|
+
// targets first lets their keys be extracted below and keeps them out of
|
|
119
|
+
// the usage corpus (their `"key": "value"` lines aren't references).
|
|
120
|
+
const dictionarySet = new Set<string>();
|
|
121
|
+
for (const [file, text] of fileContents) {
|
|
101
122
|
if (!text.includes(DICTIONARY_MARKER)) continue;
|
|
123
|
+
dictionarySet.add(file);
|
|
124
|
+
for (const m of text.matchAll(DICTIONARY_LAZY_IMPORT_RE)) {
|
|
125
|
+
const target = this.resolveImport(file, m[1], fileContents);
|
|
126
|
+
if (target) dictionarySet.add(target);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const dictionaryFiles: string[] = [];
|
|
131
|
+
const allKeys = new Set<string>();
|
|
132
|
+
for (const file of dictionarySet) {
|
|
133
|
+
const text = fileContents.get(file);
|
|
134
|
+
if (!text) continue;
|
|
102
135
|
const before = allKeys.size;
|
|
103
136
|
for (const m of text.matchAll(KEY_DECLARATION_RE)) {
|
|
104
137
|
allKeys.add(m[1]);
|
|
@@ -108,7 +141,6 @@ export class I18nCheckService {
|
|
|
108
141
|
|
|
109
142
|
// Concatenate every non-dictionary file into one corpus so each
|
|
110
143
|
// key is tested with a single regex run rather than O(files × keys).
|
|
111
|
-
const dictionarySet = new Set(dictionaryFiles);
|
|
112
144
|
const corpusParts: string[] = [];
|
|
113
145
|
let scannedFiles = 0;
|
|
114
146
|
for (const [file, text] of fileContents) {
|
|
@@ -141,4 +173,26 @@ export class I18nCheckService {
|
|
|
141
173
|
unused: unused.sort(),
|
|
142
174
|
};
|
|
143
175
|
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Resolve a relative `import("…")` specifier from `fromFile` to an absolute
|
|
179
|
+
* path that was actually scanned. Returns `undefined` for bare/package
|
|
180
|
+
* specifiers or targets outside the scan set. Extensionless specifiers are
|
|
181
|
+
* probed against each supported source extension.
|
|
182
|
+
*/
|
|
183
|
+
protected resolveImport(
|
|
184
|
+
fromFile: string,
|
|
185
|
+
spec: string,
|
|
186
|
+
files: Map<string, string>,
|
|
187
|
+
): string | undefined {
|
|
188
|
+
if (!spec.startsWith(".")) return undefined;
|
|
189
|
+
// `join(file, "..", spec)` drops the filename then applies the relative
|
|
190
|
+
// specifier — i.e. resolves against `fromFile`'s directory.
|
|
191
|
+
const base = this.fs.join(fromFile, "..", spec);
|
|
192
|
+
if (files.has(base)) return base;
|
|
193
|
+
for (const ext of SCAN_EXTS) {
|
|
194
|
+
if (files.has(base + ext)) return base + ext;
|
|
195
|
+
}
|
|
196
|
+
return undefined;
|
|
197
|
+
}
|
|
144
198
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $inject, $state, AlephaError,
|
|
1
|
+
import { $inject, $state, AlephaError, z } from "alepha";
|
|
2
2
|
import {
|
|
3
3
|
GitHubSecretStore,
|
|
4
4
|
NamingService,
|
|
@@ -20,13 +20,13 @@ export class SecretsCommand {
|
|
|
20
20
|
protected readonly filter = $inject(SecretFilterService);
|
|
21
21
|
protected readonly color = $inject(ConsoleColorProvider);
|
|
22
22
|
|
|
23
|
-
protected readonly envFlags =
|
|
24
|
-
env:
|
|
25
|
-
|
|
23
|
+
protected readonly envFlags = z.object({
|
|
24
|
+
env: z
|
|
25
|
+
.text({
|
|
26
26
|
aliases: ["e"],
|
|
27
27
|
description: "Target environment",
|
|
28
|
-
})
|
|
29
|
-
|
|
28
|
+
})
|
|
29
|
+
.optional(),
|
|
30
30
|
});
|
|
31
31
|
|
|
32
32
|
// -----------------------------------------------------------------------
|
|
@@ -38,19 +38,19 @@ export class SecretsCommand {
|
|
|
38
38
|
aliases: ["ls"],
|
|
39
39
|
description:
|
|
40
40
|
"List secret names stored in the remote store for an environment (values are never returned). Use --format=gha to emit a ready-to-paste GitHub Actions env: block.",
|
|
41
|
-
flags:
|
|
42
|
-
env:
|
|
43
|
-
|
|
41
|
+
flags: z.object({
|
|
42
|
+
env: z
|
|
43
|
+
.text({
|
|
44
44
|
aliases: ["e"],
|
|
45
45
|
description: "Target environment",
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
format:
|
|
49
|
-
|
|
46
|
+
})
|
|
47
|
+
.optional(),
|
|
48
|
+
format: z
|
|
49
|
+
.text({
|
|
50
50
|
aliases: ["f"],
|
|
51
51
|
description: "Output format: table (default), gha",
|
|
52
|
-
})
|
|
53
|
-
|
|
52
|
+
})
|
|
53
|
+
.optional(),
|
|
54
54
|
}),
|
|
55
55
|
handler: async ({ flags, root, run }) => {
|
|
56
56
|
const config = await this.inspector.resolveConfig(root);
|
|
@@ -182,18 +182,17 @@ export class SecretsCommand {
|
|
|
182
182
|
name: "apply",
|
|
183
183
|
description:
|
|
184
184
|
"Push secrets from local .env.<env> to the remote store (one upsert per key). Use --dry-run to preview. Existing remote keys not present locally are left untouched — this command never deletes.",
|
|
185
|
-
flags:
|
|
186
|
-
env:
|
|
187
|
-
|
|
185
|
+
flags: z.object({
|
|
186
|
+
env: z
|
|
187
|
+
.text({
|
|
188
188
|
aliases: ["e"],
|
|
189
189
|
description: "Target environment",
|
|
190
|
-
})
|
|
191
|
-
|
|
192
|
-
"dry-run":
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
),
|
|
190
|
+
})
|
|
191
|
+
.optional(),
|
|
192
|
+
"dry-run": z
|
|
193
|
+
.boolean()
|
|
194
|
+
.describe("Preview changes without pushing")
|
|
195
|
+
.optional(),
|
|
197
196
|
}),
|
|
198
197
|
handler: async ({ flags, root, run }) => {
|
|
199
198
|
const config = await this.inspector.resolveConfig(root);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $inject, $state, AlephaError,
|
|
1
|
+
import { $inject, $state, AlephaError, z } from "alepha";
|
|
2
2
|
import { type AppEntry, AppEntryProvider, ViteBuildProvider } from "alepha/cli";
|
|
3
3
|
import {
|
|
4
4
|
CloudflareAdapter,
|
|
@@ -32,30 +32,25 @@ export class PlatformCommand {
|
|
|
32
32
|
/**
|
|
33
33
|
* Common flags for env targeting.
|
|
34
34
|
*/
|
|
35
|
-
protected readonly envFlags =
|
|
36
|
-
env:
|
|
37
|
-
|
|
35
|
+
protected readonly envFlags = z.object({
|
|
36
|
+
env: z
|
|
37
|
+
.text({
|
|
38
38
|
aliases: ["e"],
|
|
39
39
|
description: "Target environment",
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
tenant:
|
|
43
|
-
|
|
40
|
+
})
|
|
41
|
+
.optional(),
|
|
42
|
+
tenant: z
|
|
43
|
+
.text({
|
|
44
44
|
description:
|
|
45
45
|
"Tenant slug (apps with tenancy: optional | required). Names resources <tenant>-<project>-<env> and serves <tenant>.<domain>.",
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
verbose:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
),
|
|
54
|
-
json: t.optional(
|
|
55
|
-
t.boolean({
|
|
56
|
-
description: "Output as JSON",
|
|
57
|
-
}),
|
|
58
|
-
),
|
|
46
|
+
})
|
|
47
|
+
.optional(),
|
|
48
|
+
verbose: z
|
|
49
|
+
.boolean()
|
|
50
|
+
.meta({ aliases: ["v"] })
|
|
51
|
+
.describe("Verbose output")
|
|
52
|
+
.optional(),
|
|
53
|
+
json: z.boolean().describe("Output as JSON").optional(),
|
|
59
54
|
});
|
|
60
55
|
|
|
61
56
|
// -----------------------------------------------------------------------
|
|
@@ -215,14 +210,14 @@ export class PlatformCommand {
|
|
|
215
210
|
name: "up",
|
|
216
211
|
mode: "production",
|
|
217
212
|
description: "Build, migrate, and deploy",
|
|
218
|
-
flags:
|
|
213
|
+
flags: z.object({
|
|
219
214
|
...this.envFlags.properties,
|
|
220
|
-
prebuilt:
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
215
|
+
prebuilt: z
|
|
216
|
+
.boolean()
|
|
217
|
+
.describe(
|
|
218
|
+
"Pre-built mode. Skips the Vite bundle steps; only regenerates the target deploy config (wrangler.jsonc) so it reflects current bindings and per-tenant overrides. Use when `dist/` is already produced upstream (e.g. inside Alepha Rocket).",
|
|
219
|
+
)
|
|
220
|
+
.optional(),
|
|
226
221
|
}),
|
|
227
222
|
handler: async ({ flags, root, run }) => {
|
|
228
223
|
process.env.NODE_ENV = "production";
|
|
@@ -275,15 +270,15 @@ export class PlatformCommand {
|
|
|
275
270
|
protected readonly down = $command({
|
|
276
271
|
name: "down",
|
|
277
272
|
description: "Tear down an environment",
|
|
278
|
-
flags:
|
|
273
|
+
flags: z.object({
|
|
279
274
|
...this.envFlags.properties,
|
|
280
|
-
yes:
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
275
|
+
yes: z
|
|
276
|
+
.boolean()
|
|
277
|
+
.meta({ aliases: ["y"] })
|
|
278
|
+
.describe(
|
|
279
|
+
"Skip the interactive confirmation. Required for non-interactive callers (CI, Alepha Rocket). The caller is responsible for not invoking this accidentally — there's no second chance.",
|
|
280
|
+
)
|
|
281
|
+
.optional(),
|
|
287
282
|
}),
|
|
288
283
|
handler: async ({ flags, root, run, ask }) => {
|
|
289
284
|
if (!flags.env) {
|
|
@@ -635,19 +630,18 @@ export class PlatformCommand {
|
|
|
635
630
|
name: "export",
|
|
636
631
|
description:
|
|
637
632
|
"Export the deployed database to a local snapshot (remote → local dev DB).",
|
|
638
|
-
flags:
|
|
633
|
+
flags: z.object({
|
|
639
634
|
...this.envFlags.properties,
|
|
640
|
-
output:
|
|
641
|
-
|
|
635
|
+
output: z
|
|
636
|
+
.text({
|
|
642
637
|
description:
|
|
643
638
|
"Destination SQLite file. Defaults to the dev DB path (node_modules/.alepha/sqlite.db).",
|
|
644
|
-
})
|
|
645
|
-
|
|
646
|
-
keepSql:
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
),
|
|
639
|
+
})
|
|
640
|
+
.optional(),
|
|
641
|
+
keepSql: z
|
|
642
|
+
.boolean()
|
|
643
|
+
.describe("Keep the intermediate .sql dump file.")
|
|
644
|
+
.optional(),
|
|
651
645
|
}),
|
|
652
646
|
handler: async ({ flags, root, run }) => {
|
|
653
647
|
const config = await this.inspector.resolveConfig(root);
|
|
@@ -64,7 +64,7 @@ export const platform = (options: PlatformOptions) => {
|
|
|
64
64
|
// places. Honors an explicit env override and any non-production-only
|
|
65
65
|
// setup (we don't override prod-set values).
|
|
66
66
|
if (!process.env.PUBLIC_URL) {
|
|
67
|
-
const productionDomain = options
|
|
67
|
+
const productionDomain = options?.environments?.production?.domain;
|
|
68
68
|
if (productionDomain) {
|
|
69
69
|
process.env.PUBLIC_URL = `https://${productionDomain}`;
|
|
70
70
|
}
|
|
@@ -935,8 +935,6 @@ describe("CloudflareAdapter", () => {
|
|
|
935
935
|
const run: any = async (cmd: any) => {
|
|
936
936
|
if (typeof cmd === "string") commands.push(cmd);
|
|
937
937
|
};
|
|
938
|
-
run.pause = () => {};
|
|
939
|
-
run.resume = () => {};
|
|
940
938
|
run.end = () => {};
|
|
941
939
|
|
|
942
940
|
await adapter.exportDb(ctx, run, {
|
|
@@ -977,8 +975,6 @@ function createMockRun(): any {
|
|
|
977
975
|
await task.handler();
|
|
978
976
|
}
|
|
979
977
|
};
|
|
980
|
-
run.pause = () => {};
|
|
981
|
-
run.resume = () => {};
|
|
982
978
|
run.end = () => {};
|
|
983
979
|
return run;
|
|
984
980
|
}
|
|
@@ -5,7 +5,7 @@ import { platformOptions } from "../atoms/platformOptions.ts";
|
|
|
5
5
|
import { PlatformInspector } from "../services/PlatformInspector.ts";
|
|
6
6
|
|
|
7
7
|
describe("PlatformInspector", () => {
|
|
8
|
-
const createTestEnv = (config
|
|
8
|
+
const createTestEnv = (config?: Record<string, any>) => {
|
|
9
9
|
const alepha = Alepha.create().with({
|
|
10
10
|
provide: FileSystemProvider,
|
|
11
11
|
use: MemoryFileSystemProvider,
|
|
@@ -14,7 +14,14 @@ describe("PlatformInspector", () => {
|
|
|
14
14
|
const fs = alepha.inject(MemoryFileSystemProvider);
|
|
15
15
|
const inspector = alepha.inject(PlatformInspector);
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
// Only write the atom when the test actually provides a config —
|
|
18
|
+
// `platformOptions.schema` requires `environments`, so an empty object
|
|
19
|
+
// is not a valid "configured" state. Leaving the atom unset is how a
|
|
20
|
+
// real "no platform config" run looks (falls through to the
|
|
21
|
+
// dist/manifest.json fallback in PlatformInspector.resolveConfig).
|
|
22
|
+
if (config) {
|
|
23
|
+
alepha.set(platformOptions, config as any);
|
|
24
|
+
}
|
|
18
25
|
|
|
19
26
|
return { alepha, fs, inspector };
|
|
20
27
|
};
|
|
@@ -22,7 +29,7 @@ describe("PlatformInspector", () => {
|
|
|
22
29
|
test("throws when platform is not configured in CI", async ({ expect }) => {
|
|
23
30
|
process.env.CI = "1";
|
|
24
31
|
try {
|
|
25
|
-
const { inspector } = createTestEnv(
|
|
32
|
+
const { inspector } = createTestEnv();
|
|
26
33
|
await expect(inspector.resolveConfig("/project")).rejects.toThrowError(
|
|
27
34
|
AlephaError,
|
|
28
35
|
);
|