alepha 0.23.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 +247 -235
- 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 -1143
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +456 -392
- 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 +167 -155
- 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 +205 -442
- package/dist/cli/core/index.d.ts.map +1 -1
- package/dist/cli/core/index.js +259 -284
- 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 +8 -34
- package/dist/cli/i18n/index.d.ts.map +1 -1
- package/dist/cli/i18n/index.js +6 -6
- 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 +351 -404
- package/dist/cli/platform-lib/index.d.ts.map +1 -1
- package/dist/cli/platform-lib/index.js +218 -239
- 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 +83 -195
- 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 +27 -90
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +42 -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 -5
- package/dist/react/form/index.d.ts.map +1 -1
- package/dist/react/form/index.js +91 -56
- 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 +4 -5
- package/dist/react/i18n/index.d.ts.map +1 -1
- package/dist/react/i18n/index.js +2 -2
- 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 +60 -24
- package/dist/react/router/index.browser.js.map +1 -1
- package/dist/react/router/index.d.ts +378 -377
- package/dist/react/router/index.d.ts.map +1 -1
- package/dist/react/router/index.js +77 -41
- package/dist/react/router/index.js.map +1 -1
- package/dist/react/sitemap/index.d.ts +0 -1
- package/dist/react/sitemap/index.d.ts.map +1 -1
- package/dist/react/sitemap/index.js.map +1 -1
- 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 +198 -274
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +83 -621
- 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 +72 -5
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/cookies/index.js +103 -9
- 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 +116 -85
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +105 -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 +22 -35
- 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 -10
- 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 -26
- package/src/api/users/providers/RealmProvider.ts +0 -15
- 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 -24
- 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 -76
- 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 -39
- 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/tasks/BuildCloudflareTask.ts +103 -230
- package/src/cli/core/templates/apiHelloResponseSchemaTs.ts +4 -4
- package/src/cli/devtools/atoms/devtoolsOptions.ts +6 -6
- package/src/cli/i18n/atoms/i18nOptions.ts +8 -8
- 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 +13 -14
- 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 +11 -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/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 +2 -2
- package/src/react/form/__tests__/form-submitting-reactive.browser.spec.tsx +5 -5
- 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 +67 -47
- package/src/react/form/services/parseField.ts +66 -27
- package/src/react/i18n/__tests__/Localize.spec.tsx +1 -1
- package/src/react/i18n/providers/I18nProvider.ts +2 -2
- 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/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/primitives/$page.ts +2 -2
- package/src/react/router/providers/ReactBrowserProvider.ts +64 -13
- package/src/react/router/providers/ReactPageProvider.ts +26 -12
- package/src/react/router/providers/ReactServerProvider.ts +13 -15
- package/src/react/sitemap/__tests__/$sitemap.spec.ts +2 -2
- 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/index.ts +0 -3
- 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 +49 -48
- 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 +14 -14
- 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 +13 -5
- 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 +6 -14
- package/src/server/core/primitives/$action.ts +26 -36
- 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/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/src/server/auth/__tests__/authFederationClient.spec.ts +0 -40
- package/src/server/auth/__tests__/federationAssertion.spec.ts +0 -146
- package/src/server/auth/helpers/federationAssertion.ts +0 -74
- package/src/server/auth/primitives/$authFederationBroker.ts +0 -273
- package/src/server/auth/primitives/$authFederationClient.ts +0 -89
- /package/dist/orm/core/{chunk-B4FMCO8f.js → rolldown-runtime-B4FMCO8f.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $inject,
|
|
1
|
+
import { $inject, z } from "alepha";
|
|
2
2
|
import { $command } from "alepha/command";
|
|
3
3
|
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
4
4
|
import { ProjectScaffolder } from "../services/ProjectScaffolder.ts";
|
|
@@ -11,28 +11,25 @@ export class TestCommand {
|
|
|
11
11
|
name: "test",
|
|
12
12
|
description:
|
|
13
13
|
"Run tests using Vitest. Pass a filter to run only matching specs, e.g. `alepha test user` or `alepha test test/auth.spec.ts`",
|
|
14
|
-
args:
|
|
15
|
-
|
|
14
|
+
args: z
|
|
15
|
+
.text({
|
|
16
16
|
title: "filter",
|
|
17
17
|
description: "Only run spec files whose path matches this string",
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
flags:
|
|
21
|
-
config:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
),
|
|
18
|
+
})
|
|
19
|
+
.optional(),
|
|
20
|
+
flags: z.object({
|
|
21
|
+
config: z
|
|
22
|
+
.string()
|
|
23
|
+
.meta({ alias: "c" })
|
|
24
|
+
.describe("Path to Vitest config file")
|
|
25
|
+
.optional(),
|
|
27
26
|
}),
|
|
28
|
-
env:
|
|
29
|
-
VITEST_ARGS:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}),
|
|
35
|
-
),
|
|
27
|
+
env: z.object({
|
|
28
|
+
VITEST_ARGS: z
|
|
29
|
+
.string()
|
|
30
|
+
.describe("Additional arguments to pass to Vitest. E.g., --coverage")
|
|
31
|
+
.default("")
|
|
32
|
+
.optional(),
|
|
36
33
|
}),
|
|
37
34
|
handler: async ({ run, root, flags, env, args }) => {
|
|
38
35
|
await this.scaffolder.ensureConfig(root, {
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { basename } from "node:path";
|
|
2
2
|
import { $inject } from "alepha";
|
|
3
3
|
import { KV_DEFAULT_BINDING } from "alepha/cache";
|
|
4
|
-
import type { ContainerPrimitive } from "alepha/container";
|
|
5
4
|
import { SEND_EMAIL_DEFAULT_BINDING } from "alepha/email/cloudflare";
|
|
6
|
-
import { QUEUE_DEFAULT_BINDING } from "alepha/queue";
|
|
5
|
+
import { QUEUE_DEFAULT_BINDING, QUEUE_DEFAULT_MAX_RETRIES } from "alepha/queue";
|
|
7
6
|
import type { CronProvider, WorkerdCronProvider } from "alepha/scheduler";
|
|
8
7
|
import { FileSystemProvider } from "alepha/system";
|
|
9
8
|
import { ViteUtils } from "../services/ViteUtils.ts";
|
|
@@ -16,6 +15,16 @@ import { BuildTask, type BuildTaskContext } from "./BuildTask.ts";
|
|
|
16
15
|
// here wouldn't match the one the workspace registered.
|
|
17
16
|
const CLOUDFLARE_EMAIL_PROVIDER_NAME = "CloudflareEmailProvider";
|
|
18
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Best-effort Cloudflare zone (registrable domain) for a wildcard Worker route:
|
|
20
|
+
* strip the leading `*.` and any subdomain labels, keep the last two — e.g.
|
|
21
|
+
* `*.club.alepha.dev` → `alepha.dev`, `*.alepha.club` → `alepha.club`. Correct
|
|
22
|
+
* for single-label TLDs (the common case); a multi-label public suffix
|
|
23
|
+
* (`.co.uk`) or a CF subdomain zone needs an explicit `CLOUDFLARE_ZONE`.
|
|
24
|
+
*/
|
|
25
|
+
const deriveZone = (domain: string): string =>
|
|
26
|
+
domain.replace(/^\*\./, "").split(".").slice(-2).join(".");
|
|
27
|
+
|
|
19
28
|
interface WranglerConfig {
|
|
20
29
|
[key: string]: any;
|
|
21
30
|
}
|
|
@@ -82,21 +91,6 @@ export interface BuildManifest {
|
|
|
82
91
|
* app doesn't use Cloudflare email.
|
|
83
92
|
*/
|
|
84
93
|
email?: { binding: string };
|
|
85
|
-
/**
|
|
86
|
-
* `$container()` descriptors — image, port, lifecycle settings.
|
|
87
|
-
* Used both to populate Cloudflare Containers bindings in
|
|
88
|
-
* wrangler.jsonc and (in future) to know which images Rocket should
|
|
89
|
-
* pull on the deploy side.
|
|
90
|
-
*/
|
|
91
|
-
containers: Array<{
|
|
92
|
-
name: string;
|
|
93
|
-
className: string;
|
|
94
|
-
image: string;
|
|
95
|
-
port: number;
|
|
96
|
-
sleepAfter: string;
|
|
97
|
-
instanceType: string;
|
|
98
|
-
maxInstances: number;
|
|
99
|
-
}>;
|
|
100
94
|
/**
|
|
101
95
|
* Every env var the app declares via `$env`, captured from
|
|
102
96
|
* `alepha.dump().env` at build time. The deploy `secrets` step uses this
|
|
@@ -184,13 +178,13 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
184
178
|
};
|
|
185
179
|
|
|
186
180
|
this.enhanceDomain(wrangler);
|
|
181
|
+
this.enhanceServices(wrangler);
|
|
187
182
|
this.enhanceCron(ctx, wrangler);
|
|
188
183
|
this.enhanceDatabase(wrangler);
|
|
189
184
|
this.enhanceR2(wrangler);
|
|
190
185
|
this.enhanceKV(wrangler);
|
|
191
186
|
this.enhanceQueue(wrangler);
|
|
192
187
|
this.enhanceEmail(ctx, wrangler);
|
|
193
|
-
const containers = this.enhanceContainers(ctx, wrangler);
|
|
194
188
|
|
|
195
189
|
await this.fs.writeFile(
|
|
196
190
|
this.fs.join(root, distDir, "wrangler.jsonc"),
|
|
@@ -202,9 +196,9 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
202
196
|
// re-emitting the same data we just read — skip to avoid a redundant
|
|
203
197
|
// write and to keep the original manifest as the canonical record.
|
|
204
198
|
if (!ctx.manifest) {
|
|
205
|
-
await this.writeManifest(ctx, root, distDir, name
|
|
199
|
+
await this.writeManifest(ctx, root, distDir, name);
|
|
206
200
|
}
|
|
207
|
-
await this.writeWorkerEntryPoint(root, distDir
|
|
201
|
+
await this.writeWorkerEntryPoint(root, distDir);
|
|
208
202
|
}
|
|
209
203
|
|
|
210
204
|
/**
|
|
@@ -219,7 +213,6 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
219
213
|
root: string,
|
|
220
214
|
distDir: string,
|
|
221
215
|
name: string,
|
|
222
|
-
containers: ContainerDescriptor[],
|
|
223
216
|
): Promise<void> {
|
|
224
217
|
// Discover the same primitive shapes the enhance* methods read.
|
|
225
218
|
// Errors are silently swallowed — an absent primitive class just
|
|
@@ -309,15 +302,6 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
309
302
|
hasCron: crons.length > 0,
|
|
310
303
|
},
|
|
311
304
|
crons,
|
|
312
|
-
containers: containers.map((c) => ({
|
|
313
|
-
name: c.name,
|
|
314
|
-
className: c.className,
|
|
315
|
-
image: c.image,
|
|
316
|
-
port: c.port,
|
|
317
|
-
sleepAfter: c.sleepAfter,
|
|
318
|
-
instanceType: c.instanceType,
|
|
319
|
-
maxInstances: c.maxInstances,
|
|
320
|
-
})),
|
|
321
305
|
email,
|
|
322
306
|
env,
|
|
323
307
|
};
|
|
@@ -328,6 +312,21 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
328
312
|
);
|
|
329
313
|
}
|
|
330
314
|
|
|
315
|
+
/** Worker-to-worker service bindings, from CLOUDFLARE_SERVICES (JSON). */
|
|
316
|
+
protected enhanceServices(wrangler: WranglerConfig): void {
|
|
317
|
+
const raw = process.env.CLOUDFLARE_SERVICES;
|
|
318
|
+
if (!raw) {
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
const services = JSON.parse(raw) as Array<{
|
|
322
|
+
binding: string;
|
|
323
|
+
service: string;
|
|
324
|
+
}>;
|
|
325
|
+
if (services.length > 0) {
|
|
326
|
+
(wrangler as { services?: unknown }).services = services;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
331
330
|
protected enhanceDomain(wrangler: WranglerConfig): void {
|
|
332
331
|
const domain = process.env.CLOUDFLARE_DOMAIN;
|
|
333
332
|
if (!domain) {
|
|
@@ -335,12 +334,13 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
335
334
|
}
|
|
336
335
|
|
|
337
336
|
if (domain.includes("*")) {
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
337
|
+
// A wildcard is a Worker *Route* (not a Custom Domain), and the CF API
|
|
338
|
+
// keys routes by zone. Default the zone to the registrable domain — the
|
|
339
|
+
// last two labels of the wildcard host (`*.club.alepha.dev` → `alepha.dev`,
|
|
340
|
+
// `*.alepha.club` → `alepha.club`). Set CLOUDFLARE_ZONE explicitly only to
|
|
341
|
+
// override (a subdomain zone, or a multi-label public suffix like `.co.uk`
|
|
342
|
+
// where "last two labels" is wrong).
|
|
343
|
+
const zone = process.env.CLOUDFLARE_ZONE || deriveZone(domain);
|
|
344
344
|
wrangler.routes = [
|
|
345
345
|
{
|
|
346
346
|
pattern: domain.endsWith("/*") ? domain : `${domain}/*`,
|
|
@@ -350,6 +350,22 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
350
350
|
return;
|
|
351
351
|
}
|
|
352
352
|
|
|
353
|
+
// An explicit CLOUDFLARE_ZONE forces a zone *Route* for a non-wildcard
|
|
354
|
+
// host too. Needed when the host is ALSO covered by another Worker's
|
|
355
|
+
// wildcard route on the same zone: Cloudflare evaluates Routes before
|
|
356
|
+
// Custom Domains, but among routes the most specific pattern wins — so
|
|
357
|
+
// `app.club.alepha.dev/*` beats the pooled `*.club.alepha.dev/*`, while a
|
|
358
|
+
// Custom Domain on that host would lose to the wildcard route entirely.
|
|
359
|
+
if (process.env.CLOUDFLARE_ZONE) {
|
|
360
|
+
wrangler.routes = [
|
|
361
|
+
{
|
|
362
|
+
pattern: `${domain}/*`,
|
|
363
|
+
zone_name: process.env.CLOUDFLARE_ZONE,
|
|
364
|
+
},
|
|
365
|
+
];
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
|
|
353
369
|
wrangler.routes = [
|
|
354
370
|
{
|
|
355
371
|
pattern: domain,
|
|
@@ -403,13 +419,15 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
403
419
|
|
|
404
420
|
const [dbName, id] = url.replace("d1://", "").replace("d1:", "").split(":");
|
|
405
421
|
const binding = BuildCloudflareTask.D1_BINDING;
|
|
406
|
-
|
|
422
|
+
// No `jurisdiction` here: unlike r2_buckets, the wrangler D1 binding schema
|
|
423
|
+
// has no jurisdiction field (it warns on the unexpected key). D1 data
|
|
424
|
+
// residency is fixed when the database is created — see CloudflareApi —
|
|
425
|
+
// and the binding just references it by `database_id`.
|
|
407
426
|
wrangler.d1_databases = wrangler.d1_databases || [];
|
|
408
427
|
wrangler.d1_databases.push({
|
|
409
428
|
binding,
|
|
410
429
|
database_name: dbName,
|
|
411
430
|
database_id: id,
|
|
412
|
-
...(jurisdiction ? { jurisdiction } : {}),
|
|
413
431
|
});
|
|
414
432
|
wrangler.vars ??= {};
|
|
415
433
|
wrangler.vars.DATABASE_URL = `d1://${binding}`;
|
|
@@ -479,9 +497,22 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
479
497
|
binding: QUEUE_DEFAULT_BINDING,
|
|
480
498
|
queue: queueName,
|
|
481
499
|
});
|
|
500
|
+
|
|
501
|
+
// The worker's queue handler calls `msg.retry()` on any throw. Cloudflare
|
|
502
|
+
// only gives a failing message somewhere to land if the consumer declares a
|
|
503
|
+
// `dead_letter_queue` — otherwise it burns `max_retries` and DISCARDS the
|
|
504
|
+
// message, with no record and no signal. CF creates the DLQ on demand, so a
|
|
505
|
+
// derived default is safe.
|
|
506
|
+
const maxRetries = Number(process.env.CLOUDFLARE_QUEUE_MAX_RETRIES);
|
|
507
|
+
|
|
482
508
|
wrangler.queues.consumers = wrangler.queues.consumers || [];
|
|
483
509
|
wrangler.queues.consumers.push({
|
|
484
510
|
queue: queueName,
|
|
511
|
+
dead_letter_queue:
|
|
512
|
+
process.env.CLOUDFLARE_QUEUE_DLQ_NAME || `${queueName}-dlq`,
|
|
513
|
+
max_retries: Number.isSafeInteger(maxRetries)
|
|
514
|
+
? maxRetries
|
|
515
|
+
: QUEUE_DEFAULT_MAX_RETRIES,
|
|
485
516
|
});
|
|
486
517
|
}
|
|
487
518
|
|
|
@@ -529,166 +560,28 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
529
560
|
wrangler.send_email.push({ name: binding });
|
|
530
561
|
}
|
|
531
562
|
|
|
532
|
-
/**
|
|
533
|
-
* Discover `$container` primitives and emit the matching Cloudflare
|
|
534
|
-
* Containers bindings, Durable Object bindings, and migrations into
|
|
535
|
-
* `wrangler.jsonc`. The DO class declarations are added later, when
|
|
536
|
-
* the worker entry point is written.
|
|
537
|
-
*
|
|
538
|
-
* Returns the list of container descriptors so
|
|
539
|
-
* `writeWorkerEntryPoint` can emit `export class <NAME> extends
|
|
540
|
-
* Container` declarations referencing them.
|
|
541
|
-
*/
|
|
542
|
-
protected discoverContainers(ctx: BuildTaskContext): ContainerDescriptor[] {
|
|
543
|
-
// String key, not the `$container` factory. The build task runs in
|
|
544
|
-
// the CLI's Node realm, while the workspace's entry module is
|
|
545
|
-
// loaded by Vite — two separate module copies of
|
|
546
|
-
// `alepha/container`. Looking up by `$container[KIND]` (a class
|
|
547
|
-
// reference) would dereference the CLI's ContainerPrimitive class,
|
|
548
|
-
// which never matches the workspace's. The string form iterates
|
|
549
|
-
// the registry by class name and survives the dual-realm — same
|
|
550
|
-
// pattern used for `$bucket`, `$queue`, `scheduler` below.
|
|
551
|
-
const primitives = ctx.alepha.primitives(
|
|
552
|
-
"container",
|
|
553
|
-
) as ContainerPrimitive[];
|
|
554
|
-
return primitives.map((p) => ({
|
|
555
|
-
name: p.name.toUpperCase(),
|
|
556
|
-
className: p.name
|
|
557
|
-
.split(/[^a-zA-Z0-9]/)
|
|
558
|
-
.filter(Boolean)
|
|
559
|
-
.map((s) => s[0]!.toUpperCase() + s.slice(1))
|
|
560
|
-
.join(""),
|
|
561
|
-
image: p.options.image,
|
|
562
|
-
port: p.options.port ?? 3000,
|
|
563
|
-
sleepAfter:
|
|
564
|
-
typeof p.options.sleepAfter === "string" ? p.options.sleepAfter : "15m",
|
|
565
|
-
// `lite` is the post-GA name for what `$container` historically
|
|
566
|
-
// called `dev`. Default to `lite` here and rewrite any
|
|
567
|
-
// explicit `dev` to it on the way out — wrangler warns
|
|
568
|
-
// otherwise.
|
|
569
|
-
instanceType:
|
|
570
|
-
p.options.instanceType === "dev"
|
|
571
|
-
? "lite"
|
|
572
|
-
: (p.options.instanceType ?? "lite"),
|
|
573
|
-
maxInstances: p.options.maxInstances ?? 5,
|
|
574
|
-
envVars: p.options.envVars,
|
|
575
|
-
}));
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
/**
|
|
579
|
-
* Expand a short image ref (e.g. `alepha-rocket:0.1.0`) into the
|
|
580
|
-
* fully-qualified `registry.cloudflare.com/<account>/<image>:<tag>`
|
|
581
|
-
* URL that wrangler validates at deploy time.
|
|
582
|
-
*
|
|
583
|
-
* Cloudflare Containers only pulls from `registry.cloudflare.com`;
|
|
584
|
-
* wrangler accepts either a Dockerfile path or a fully-qualified
|
|
585
|
-
* registry URL in the `image` field — not a bare DockerHub-style
|
|
586
|
-
* name. We let `$container({ image })` callers write the short
|
|
587
|
-
* form (it matches what `wrangler containers push <local>` accepts
|
|
588
|
-
* + matches the local docker tag) and rewrite to the CF registry
|
|
589
|
-
* URL here.
|
|
590
|
-
*
|
|
591
|
-
* Pass-through cases:
|
|
592
|
-
* - already a full URL: starts with `registry.cloudflare.com/`
|
|
593
|
-
* or contains a scheme/`://`
|
|
594
|
-
* - looks like a Dockerfile path: starts with `./` or `/`
|
|
595
|
-
*/
|
|
596
|
-
protected resolveContainerImage(image: string): string {
|
|
597
|
-
if (
|
|
598
|
-
image.startsWith("./") ||
|
|
599
|
-
image.startsWith("/") ||
|
|
600
|
-
image.startsWith("registry.cloudflare.com/") ||
|
|
601
|
-
image.includes("://")
|
|
602
|
-
) {
|
|
603
|
-
return image;
|
|
604
|
-
}
|
|
605
|
-
const accountId = process.env.CLOUDFLARE_ACCOUNT_ID;
|
|
606
|
-
if (!accountId) {
|
|
607
|
-
// No account id — leave the short form and let wrangler error
|
|
608
|
-
// out with a clearer message. This branch fires only in dry
|
|
609
|
-
// builds where the env isn't wired (e.g. `alepha build` without
|
|
610
|
-
// `alepha platform up` around it).
|
|
611
|
-
return image;
|
|
612
|
-
}
|
|
613
|
-
return `registry.cloudflare.com/${accountId}/${image}`;
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
protected enhanceContainers(
|
|
617
|
-
ctx: BuildTaskContext,
|
|
618
|
-
wrangler: WranglerConfig,
|
|
619
|
-
): ContainerDescriptor[] {
|
|
620
|
-
const descriptors: ContainerDescriptor[] = ctx.manifest
|
|
621
|
-
? (ctx.manifest.containers as ContainerDescriptor[])
|
|
622
|
-
: this.discoverContainers(ctx);
|
|
623
|
-
if (descriptors.length === 0) {
|
|
624
|
-
return [];
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
wrangler.containers = wrangler.containers || [];
|
|
628
|
-
wrangler.durable_objects = wrangler.durable_objects || {};
|
|
629
|
-
wrangler.durable_objects.bindings = wrangler.durable_objects.bindings || [];
|
|
630
|
-
wrangler.migrations = wrangler.migrations || [];
|
|
631
|
-
|
|
632
|
-
const newSqliteClasses: string[] = [];
|
|
633
|
-
for (const d of descriptors) {
|
|
634
|
-
wrangler.containers.push({
|
|
635
|
-
class_name: d.className,
|
|
636
|
-
image: this.resolveContainerImage(d.image),
|
|
637
|
-
instance_type: d.instanceType,
|
|
638
|
-
max_instances: d.maxInstances,
|
|
639
|
-
});
|
|
640
|
-
wrangler.durable_objects.bindings.push({
|
|
641
|
-
name: d.name,
|
|
642
|
-
class_name: d.className,
|
|
643
|
-
});
|
|
644
|
-
newSqliteClasses.push(d.className);
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
if (newSqliteClasses.length > 0) {
|
|
648
|
-
wrangler.migrations.push({
|
|
649
|
-
tag: "containers-v1",
|
|
650
|
-
new_sqlite_classes: newSqliteClasses,
|
|
651
|
-
});
|
|
652
|
-
}
|
|
653
|
-
|
|
654
|
-
return descriptors;
|
|
655
|
-
}
|
|
656
|
-
|
|
657
563
|
protected async writeWorkerEntryPoint(
|
|
658
564
|
root: string,
|
|
659
565
|
distDir: string,
|
|
660
|
-
containers: ContainerDescriptor[] = [],
|
|
661
566
|
): Promise<void> {
|
|
662
|
-
// Extend `globalThis.__alepha_CloudflareContainer` instead of
|
|
663
|
-
// importing `@cloudflare/containers` directly. The entry is
|
|
664
|
-
// written AFTER Vite, so any bare specifier in here survives to
|
|
665
|
-
// workerd (which has `no_bundle: true`) and 10021's out. The
|
|
666
|
-
// global is set by a side-effect in `alepha/container`'s
|
|
667
|
-
// workerd entry, which Vite has already inlined into
|
|
668
|
-
// `./index.js`. ESM evaluates top-level imports before the
|
|
669
|
-
// module body, so by the time the `extends` expression below is
|
|
670
|
-
// evaluated, the global is set.
|
|
671
|
-
const containerDeclarations = containers
|
|
672
|
-
.map((c) => {
|
|
673
|
-
const envVars = c.envVars
|
|
674
|
-
? ` envVars = ${JSON.stringify(c.envVars)};\n`
|
|
675
|
-
: "";
|
|
676
|
-
return `export class ${c.className} extends globalThis.__alepha_CloudflareContainer {\n defaultPort = ${c.port};\n sleepAfter = "${c.sleepAfter}";\n${envVars}}`;
|
|
677
|
-
})
|
|
678
|
-
.join("\n\n");
|
|
679
|
-
|
|
680
567
|
const workerCode = `
|
|
681
568
|
import "./index.js";
|
|
682
569
|
|
|
683
|
-
//
|
|
684
|
-
// so background work (notably $job direct dispatch)
|
|
685
|
-
// alive past the response.
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
570
|
+
// Run an invocation inside an Alepha fork carrying THIS invocation's
|
|
571
|
+
// \`executionCtx.waitUntil\`, so background work (notably $job direct dispatch)
|
|
572
|
+
// can keep the isolate alive past the response.
|
|
573
|
+
//
|
|
574
|
+
// It must be the async context, never the shared store: one isolate serves
|
|
575
|
+
// concurrent invocations, so a store slot would let request B overwrite
|
|
576
|
+
// request A's handle — A's background work would then call B's already-returned
|
|
577
|
+
// context ("waitUntil after response") and be silently dropped.
|
|
578
|
+
const withExecutionContext = (executionCtx, fn) => {
|
|
579
|
+
const waitUntil =
|
|
580
|
+
executionCtx && typeof executionCtx.waitUntil === "function"
|
|
581
|
+
? (p) => executionCtx.waitUntil(p)
|
|
582
|
+
: undefined;
|
|
583
|
+
|
|
584
|
+
return __alepha.context.run(fn, { "cloudflare.waitUntil": waitUntil });
|
|
692
585
|
};
|
|
693
586
|
|
|
694
587
|
// Bind the per-invocation Worker \`env\`: keep the full binding (D1, R2, KV, …)
|
|
@@ -704,7 +597,6 @@ export default {
|
|
|
704
597
|
const ctx = { req: request, res: undefined };
|
|
705
598
|
|
|
706
599
|
bindEnv(env);
|
|
707
|
-
setWaitUntil(executionCtx);
|
|
708
600
|
|
|
709
601
|
try {
|
|
710
602
|
await __alepha.start();
|
|
@@ -713,14 +605,15 @@ export default {
|
|
|
713
605
|
return new Response("Internal Server Error", { status: 500 });
|
|
714
606
|
}
|
|
715
607
|
|
|
716
|
-
await
|
|
608
|
+
await withExecutionContext(executionCtx, () =>
|
|
609
|
+
__alepha.events.emit("web:request", ctx),
|
|
610
|
+
);
|
|
717
611
|
|
|
718
612
|
return ctx.res;
|
|
719
613
|
},
|
|
720
614
|
|
|
721
615
|
scheduled: async (event, env, executionCtx) => {
|
|
722
616
|
bindEnv(env);
|
|
723
|
-
setWaitUntil(executionCtx);
|
|
724
617
|
|
|
725
618
|
try {
|
|
726
619
|
await __alepha.start();
|
|
@@ -729,15 +622,16 @@ export default {
|
|
|
729
622
|
throw err;
|
|
730
623
|
}
|
|
731
624
|
|
|
732
|
-
await
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
625
|
+
await withExecutionContext(executionCtx, () =>
|
|
626
|
+
__alepha.events.emit("cloudflare:scheduled", {
|
|
627
|
+
cron: event.cron,
|
|
628
|
+
scheduledTime: event.scheduledTime,
|
|
629
|
+
}),
|
|
630
|
+
);
|
|
736
631
|
},
|
|
737
632
|
|
|
738
633
|
queue: async (batch, env, executionCtx) => {
|
|
739
634
|
bindEnv(env);
|
|
740
|
-
setWaitUntil(executionCtx);
|
|
741
635
|
|
|
742
636
|
try {
|
|
743
637
|
await __alepha.start();
|
|
@@ -746,44 +640,23 @@ export default {
|
|
|
746
640
|
throw err;
|
|
747
641
|
}
|
|
748
642
|
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
643
|
+
await withExecutionContext(executionCtx, async () => {
|
|
644
|
+
for (const msg of batch.messages) {
|
|
645
|
+
try {
|
|
646
|
+
await __alepha.events.emit("cloudflare:queue", msg.body);
|
|
647
|
+
msg.ack();
|
|
648
|
+
} catch (e) {
|
|
649
|
+
msg.retry();
|
|
650
|
+
}
|
|
755
651
|
}
|
|
756
|
-
}
|
|
652
|
+
});
|
|
757
653
|
},
|
|
758
654
|
};
|
|
759
655
|
`.trim();
|
|
760
656
|
|
|
761
|
-
const containerBlock =
|
|
762
|
-
containers.length > 0 ? `${containerDeclarations}\n\n` : "";
|
|
763
|
-
|
|
764
657
|
await this.fs.writeFile(
|
|
765
658
|
this.fs.join(root, distDir, "main.cloudflare.js"),
|
|
766
|
-
`${this.warningComment}\n${
|
|
659
|
+
`${this.warningComment}\n${workerCode}`.trim(),
|
|
767
660
|
);
|
|
768
661
|
}
|
|
769
662
|
}
|
|
770
|
-
|
|
771
|
-
interface ContainerDescriptor {
|
|
772
|
-
name: string;
|
|
773
|
-
className: string;
|
|
774
|
-
image: string;
|
|
775
|
-
port: number;
|
|
776
|
-
sleepAfter: string;
|
|
777
|
-
/**
|
|
778
|
-
* Cloudflare Containers instance class.
|
|
779
|
-
*
|
|
780
|
-
* `dev` is the wrangler-pre-GA name; the platform accepts it but
|
|
781
|
-
* emits a deprecation warning telling you to use `lite`. We
|
|
782
|
-
* silently translate at write time (see `discoverContainers`
|
|
783
|
-
* default + `enhanceContainers` write) so older
|
|
784
|
-
* `$container({ instanceType: "dev" })` declarations keep working.
|
|
785
|
-
*/
|
|
786
|
-
instanceType: "dev" | "lite" | "basic" | "standard";
|
|
787
|
-
maxInstances: number;
|
|
788
|
-
envVars?: Record<string, string>;
|
|
789
|
-
}
|
|
@@ -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
|
/**
|
|
@@ -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
|
/**
|