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
package/dist/orm/core/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "./
|
|
1
|
+
import "./rolldown-runtime-B4FMCO8f.js";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
|
-
import { $atom, $context, $env, $hook, $inject, $mode, $module, $state, Alepha, AlephaError, KIND, Primitive, SchemaValidator, createMiddleware, createPagination, createPrimitive, pageQuerySchema, pageSchema, pageSchema as pageSchema$1,
|
|
3
|
+
import { $atom, $context, $env, $hook, $inject, $mode, $module, $state, Alepha, AlephaError, KIND, Primitive, SchemaValidator, createMiddleware, createPagination, createPrimitive, pageQuerySchema, pageSchema, pageSchema as pageSchema$1, z } from "alepha";
|
|
4
4
|
import { AlephaDateTime, DateTimeProvider } from "alepha/datetime";
|
|
5
5
|
import { mkdir, stat } from "node:fs/promises";
|
|
6
6
|
import { $logger } from "alepha/logger";
|
|
@@ -41,8 +41,8 @@ var DbError = class extends AlephaError {
|
|
|
41
41
|
* - `d1://BINDING_NAME` — Cloudflare D1
|
|
42
42
|
* - `hyperdrive://BINDING_NAME` — Cloudflare Hyperdrive
|
|
43
43
|
*/
|
|
44
|
-
const databaseEnvSchema =
|
|
45
|
-
DATABASE_URL:
|
|
44
|
+
const databaseEnvSchema = z.object({
|
|
45
|
+
DATABASE_URL: z.text().optional(),
|
|
46
46
|
/**
|
|
47
47
|
* Enable or disable push-based schema synchronization (drizzle-kit push).
|
|
48
48
|
*
|
|
@@ -50,7 +50,7 @@ const databaseEnvSchema = t.object({
|
|
|
50
50
|
* Set to `false` in development to skip automatic schema sync
|
|
51
51
|
* (e.g. when managing migrations manually).
|
|
52
52
|
*/
|
|
53
|
-
DATABASE_SYNC:
|
|
53
|
+
DATABASE_SYNC: z.boolean().optional()
|
|
54
54
|
});
|
|
55
55
|
//#endregion
|
|
56
56
|
//#region ../../src/orm/core/providers/DrizzleKitProvider.ts
|
|
@@ -516,25 +516,26 @@ const PG_SERIAL = Symbol.for("Alepha.Postgres.Serial");
|
|
|
516
516
|
//#region ../../src/orm/core/schemas/insertSchema.ts
|
|
517
517
|
const insertSchema = (obj) => {
|
|
518
518
|
const newProperties = {};
|
|
519
|
-
for (const key in obj.
|
|
520
|
-
const prop = obj.
|
|
519
|
+
for (const key in obj.shape) {
|
|
520
|
+
const prop = obj.shape[key];
|
|
521
521
|
if (PG_GENERATED in prop) continue;
|
|
522
|
-
if (PG_DEFAULT in prop || PG_ORGANIZATION in prop) newProperties[key] =
|
|
522
|
+
if (PG_DEFAULT in prop || PG_ORGANIZATION in prop) newProperties[key] = prop.optional();
|
|
523
|
+
else if (z.schema.isOptional(prop)) newProperties[key] = z.schema.unwrap(prop).nullable().optional();
|
|
523
524
|
else newProperties[key] = prop;
|
|
524
525
|
}
|
|
525
|
-
return
|
|
526
|
+
return z.object(newProperties);
|
|
526
527
|
};
|
|
527
528
|
//#endregion
|
|
528
529
|
//#region ../../src/orm/core/schemas/updateSchema.ts
|
|
529
530
|
const updateSchema = (schema) => {
|
|
530
531
|
const newProperties = {};
|
|
531
|
-
for (const key in schema.
|
|
532
|
-
const prop = schema.
|
|
532
|
+
for (const key in schema.shape) {
|
|
533
|
+
const prop = schema.shape[key];
|
|
533
534
|
if (PG_GENERATED in prop) continue;
|
|
534
|
-
if (
|
|
535
|
+
if (z.schema.isOptional(prop)) newProperties[key] = z.union([prop, z.null()]).optional();
|
|
535
536
|
else newProperties[key] = prop;
|
|
536
537
|
}
|
|
537
|
-
return
|
|
538
|
+
return z.object(newProperties);
|
|
538
539
|
};
|
|
539
540
|
//#endregion
|
|
540
541
|
//#region ../../src/orm/core/primitives/$entity.ts
|
|
@@ -543,15 +544,15 @@ const updateSchema = (schema) => {
|
|
|
543
544
|
*
|
|
544
545
|
* @example
|
|
545
546
|
* ```ts
|
|
546
|
-
* import {
|
|
547
|
+
* import { z } from "alepha";
|
|
547
548
|
* import { $entity } from "alepha/orm";
|
|
548
549
|
*
|
|
549
550
|
* const userEntity = $entity({
|
|
550
551
|
* name: "users",
|
|
551
|
-
* schema:
|
|
552
|
+
* schema: z.object({
|
|
552
553
|
* id: pg.primaryKey(),
|
|
553
|
-
* name:
|
|
554
|
-
* email:
|
|
554
|
+
* name: z.text(),
|
|
555
|
+
* email: z.email(),
|
|
555
556
|
* }),
|
|
556
557
|
* });
|
|
557
558
|
* ```
|
|
@@ -585,11 +586,15 @@ var EntityPrimitive = class EntityPrimitive {
|
|
|
585
586
|
get schema() {
|
|
586
587
|
return this.options.schema;
|
|
587
588
|
}
|
|
589
|
+
_insertSchema;
|
|
588
590
|
get insertSchema() {
|
|
589
|
-
|
|
591
|
+
this._insertSchema ??= insertSchema(this.options.schema);
|
|
592
|
+
return this._insertSchema;
|
|
590
593
|
}
|
|
594
|
+
_updateSchema;
|
|
591
595
|
get updateSchema() {
|
|
592
|
-
|
|
596
|
+
this._updateSchema ??= updateSchema(this.options.schema);
|
|
597
|
+
return this._updateSchema;
|
|
593
598
|
}
|
|
594
599
|
};
|
|
595
600
|
$entity[KIND] = EntityPrimitive;
|
|
@@ -602,11 +607,11 @@ $entity[KIND] = EntityPrimitive;
|
|
|
602
607
|
*
|
|
603
608
|
* @example
|
|
604
609
|
* ```ts
|
|
605
|
-
* import {
|
|
610
|
+
* import { z } from "alepha";
|
|
606
611
|
* import { PG_UPDATED_AT } from "../constants/PG_SYMBOLS";
|
|
607
612
|
*
|
|
608
613
|
* export const updatedAtSchema = pgAttr(
|
|
609
|
-
*
|
|
614
|
+
* z.datetime(), PG_UPDATED_AT,
|
|
610
615
|
* );
|
|
611
616
|
* ```
|
|
612
617
|
*/
|
|
@@ -619,8 +624,8 @@ const pgAttr = (type, attr, value) => {
|
|
|
619
624
|
*/
|
|
620
625
|
const getAttrFields = (schema, name) => {
|
|
621
626
|
const fields = [];
|
|
622
|
-
for (const key of Object.keys(schema.
|
|
623
|
-
const value = schema.
|
|
627
|
+
for (const key of Object.keys(schema.shape)) {
|
|
628
|
+
const value = schema.shape[key];
|
|
624
629
|
if (name in value) fields.push({
|
|
625
630
|
type: value,
|
|
626
631
|
key,
|
|
@@ -636,20 +641,20 @@ var DatabaseTypeProvider = class {
|
|
|
636
641
|
/**
|
|
637
642
|
* Creates a primary key with an identity column.
|
|
638
643
|
*/
|
|
639
|
-
identityPrimaryKey = (identity
|
|
644
|
+
identityPrimaryKey = (identity) => pgAttr(pgAttr(pgAttr(z.integer(), PG_PRIMARY_KEY), PG_IDENTITY, identity), PG_DEFAULT);
|
|
640
645
|
/**
|
|
641
646
|
* Creates a primary key with a big identity column. (default)
|
|
642
647
|
*/
|
|
643
|
-
bigIdentityPrimaryKey = (identity
|
|
648
|
+
bigIdentityPrimaryKey = (identity) => pgAttr(pgAttr(pgAttr(z.int64(), PG_PRIMARY_KEY), PG_IDENTITY, identity), PG_DEFAULT);
|
|
644
649
|
/**
|
|
645
650
|
* Creates a primary key with a UUID column.
|
|
646
651
|
*/
|
|
647
|
-
uuidPrimaryKey = () => pgAttr(pgAttr(
|
|
648
|
-
primaryKey(type,
|
|
649
|
-
if (!type ||
|
|
650
|
-
if (
|
|
651
|
-
if (
|
|
652
|
-
if (
|
|
652
|
+
uuidPrimaryKey = () => pgAttr(pgAttr(z.uuid(), PG_PRIMARY_KEY), PG_DEFAULT);
|
|
653
|
+
primaryKey(type, _options, identity) {
|
|
654
|
+
if (!type || z.schema.isInteger(type)) return pgAttr(pgAttr(pgAttr(z.integer(), PG_PRIMARY_KEY), PG_IDENTITY, identity), PG_DEFAULT);
|
|
655
|
+
if (z.schema.isString(type) && z.schema.format(type) === "uuid") return pgAttr(pgAttr(z.uuid(), PG_PRIMARY_KEY), PG_DEFAULT);
|
|
656
|
+
if (z.schema.isNumber(type) && z.schema.format(type) === "int64") return pgAttr(pgAttr(pgAttr(z.number(), PG_PRIMARY_KEY), PG_IDENTITY, identity), PG_DEFAULT);
|
|
657
|
+
if (z.schema.isBigInt(type)) return pgAttr(pgAttr(pgAttr(z.bigint(), PG_PRIMARY_KEY), PG_IDENTITY, identity), PG_DEFAULT);
|
|
653
658
|
throw new AlephaError(`Unsupported type for primary key: ${type}`);
|
|
654
659
|
}
|
|
655
660
|
/**
|
|
@@ -670,21 +675,21 @@ var DatabaseTypeProvider = class {
|
|
|
670
675
|
* @see {@link RepositoryPrimitive#save}
|
|
671
676
|
* @see {@link PgVersionMismatchError}
|
|
672
677
|
*/
|
|
673
|
-
version = (
|
|
678
|
+
version = () => this.default(pgAttr(z.integer(), PG_VERSION), 0);
|
|
674
679
|
/**
|
|
675
680
|
* Creates a column Created At. So just a datetime column with a default value of the current timestamp.
|
|
676
681
|
*/
|
|
677
|
-
createdAt = (
|
|
682
|
+
createdAt = () => pgAttr(pgAttr(z.datetime(), PG_CREATED_AT), PG_DEFAULT);
|
|
678
683
|
/**
|
|
679
684
|
* Creates a column Updated At. Like createdAt, but it is updated on every update of the row.
|
|
680
685
|
*/
|
|
681
|
-
updatedAt = (
|
|
686
|
+
updatedAt = () => pgAttr(pgAttr(z.datetime(), PG_UPDATED_AT), PG_DEFAULT);
|
|
682
687
|
/**
|
|
683
688
|
* Creates a column Deleted At for soft delete functionality.
|
|
684
689
|
* This is used to mark rows as deleted without actually removing them from the database.
|
|
685
690
|
* The column is nullable - NULL means not deleted, timestamp means deleted.
|
|
686
691
|
*/
|
|
687
|
-
deletedAt = (
|
|
692
|
+
deletedAt = () => pgAttr(z.datetime().optional(), PG_DELETED_AT);
|
|
688
693
|
/**
|
|
689
694
|
* Creates an organization column for multi-tenant row scoping.
|
|
690
695
|
*
|
|
@@ -693,17 +698,24 @@ var DatabaseTypeProvider = class {
|
|
|
693
698
|
*
|
|
694
699
|
* @param options.nullable - When `false`, the column is NOT NULL in the database and
|
|
695
700
|
* the ORM rejects inserts that arrive without an organization context.
|
|
696
|
-
* Defaults to `true` (nullable)
|
|
697
|
-
* to
|
|
701
|
+
* Defaults to `true` (nullable) — unless `strict` is set, which flips the
|
|
702
|
+
* default to non-nullable. NULL rows are visible to every tenant (the
|
|
703
|
+
* historic "global row" semantics) only when the column is nullable AND
|
|
704
|
+
* not strict.
|
|
705
|
+
* @param options.strict - Fail-closed tenant scoping for security-sensitive
|
|
706
|
+
* tables. Refuses reads/writes with no resolved tenant (instead of a
|
|
707
|
+
* fail-open "see/write everything") and drops the `OR org IS NULL` escape
|
|
708
|
+
* so a scoped tenant never sees global rows. Defaults to `false`.
|
|
698
709
|
*/
|
|
699
710
|
organization = (options) => {
|
|
700
|
-
|
|
711
|
+
const strict = options?.strict ?? false;
|
|
712
|
+
return pgAttr(options?.nullable ?? !strict ? z.uuid().optional() : z.uuid(), PG_ORGANIZATION, { strict });
|
|
701
713
|
};
|
|
702
714
|
/**
|
|
703
715
|
* Creates a reference to another table or schema. Basically a foreign key.
|
|
704
716
|
*/
|
|
705
717
|
ref = (type, ref, actions) => {
|
|
706
|
-
const finalActions = actions ?? { onDelete:
|
|
718
|
+
const finalActions = actions ?? { onDelete: z.schema.isOptional(type) ? "set null" : "cascade" };
|
|
707
719
|
return this.attr(type, PG_REF, {
|
|
708
720
|
ref,
|
|
709
721
|
actions: finalActions
|
|
@@ -713,8 +725,8 @@ var DatabaseTypeProvider = class {
|
|
|
713
725
|
* Creates a page schema for a given object schema.
|
|
714
726
|
* It's used by {@link Repository#paginate} method.
|
|
715
727
|
*/
|
|
716
|
-
page = (resource
|
|
717
|
-
return pageSchema$1(resource
|
|
728
|
+
page = (resource) => {
|
|
729
|
+
return pageSchema$1(resource);
|
|
718
730
|
};
|
|
719
731
|
};
|
|
720
732
|
/**
|
|
@@ -751,16 +763,16 @@ const db = new DatabaseTypeProvider();
|
|
|
751
763
|
*/
|
|
752
764
|
const alephaSequences = $entity({
|
|
753
765
|
name: "alepha_sequences",
|
|
754
|
-
schema:
|
|
755
|
-
id: db.primaryKey(
|
|
766
|
+
schema: z.object({
|
|
767
|
+
id: db.primaryKey(z.uuid()),
|
|
756
768
|
createdAt: db.createdAt(),
|
|
757
769
|
updatedAt: db.updatedAt(),
|
|
758
|
-
name:
|
|
759
|
-
scope:
|
|
770
|
+
name: z.text({ description: "Sequence primitive name (from $sequence's property key)." }),
|
|
771
|
+
scope: z.text({
|
|
760
772
|
description: "Caller-provided sub-scope. Defaults to 'default' for the unscoped form.",
|
|
761
773
|
default: "default"
|
|
762
774
|
}),
|
|
763
|
-
value:
|
|
775
|
+
value: z.integer().describe("Current counter value, advanced atomically on each call.")
|
|
764
776
|
}),
|
|
765
777
|
indexes: [{
|
|
766
778
|
columns: ["name", "scope"],
|
|
@@ -803,7 +815,8 @@ var DbColumnNotFoundError = class DbColumnNotFoundError extends DbError {
|
|
|
803
815
|
if (pgMatch) {
|
|
804
816
|
const column = pgMatch[1];
|
|
805
817
|
const table = pgMatch[2];
|
|
806
|
-
|
|
818
|
+
const msg = table ? `Column '${column}' does not exist in table '${table}'` : `Column '${column}' does not exist`;
|
|
819
|
+
return new DbColumnNotFoundError(msg, error, {
|
|
807
820
|
column,
|
|
808
821
|
table
|
|
809
822
|
});
|
|
@@ -812,7 +825,8 @@ var DbColumnNotFoundError = class DbColumnNotFoundError extends DbError {
|
|
|
812
825
|
if (sqliteMatch) {
|
|
813
826
|
const table = sqliteMatch[1];
|
|
814
827
|
const column = sqliteMatch[2];
|
|
815
|
-
|
|
828
|
+
const msg = table ? `Column '${column}' does not exist in table '${table}'` : `Column '${column}' does not exist`;
|
|
829
|
+
return new DbColumnNotFoundError(msg, error, {
|
|
816
830
|
column,
|
|
817
831
|
table
|
|
818
832
|
});
|
|
@@ -1112,7 +1126,7 @@ var PgRelationManager = class {
|
|
|
1112
1126
|
const childJoins = joins.filter((j) => j.parent === joinPath);
|
|
1113
1127
|
let joinSchema = join.schema;
|
|
1114
1128
|
if (childJoins.length > 0) joinSchema = this.buildSchemaWithJoins(join.schema, joins, joinPath);
|
|
1115
|
-
schema.properties[join.key] =
|
|
1129
|
+
schema.properties[join.key] = joinSchema.optional();
|
|
1116
1130
|
}
|
|
1117
1131
|
return schema;
|
|
1118
1132
|
}
|
|
@@ -1167,8 +1181,16 @@ var QueryManager = class {
|
|
|
1167
1181
|
dialect: options.dialect
|
|
1168
1182
|
});
|
|
1169
1183
|
}).filter((it) => it != null);
|
|
1170
|
-
if (key === "and")
|
|
1171
|
-
|
|
1184
|
+
if (key === "and") {
|
|
1185
|
+
const combined = and(...operations);
|
|
1186
|
+
if (combined) conditions.push(combined);
|
|
1187
|
+
continue;
|
|
1188
|
+
}
|
|
1189
|
+
if (key === "or") {
|
|
1190
|
+
const combined = or(...operations);
|
|
1191
|
+
if (combined) conditions.push(combined);
|
|
1192
|
+
continue;
|
|
1193
|
+
}
|
|
1172
1194
|
}
|
|
1173
1195
|
if (key === "not") {
|
|
1174
1196
|
const where = this.toSQL(operator, {
|
|
@@ -1555,19 +1577,11 @@ var Repository = class Repository {
|
|
|
1555
1577
|
try {
|
|
1556
1578
|
let rows = await builder.execute();
|
|
1557
1579
|
let schema = this.entity.schema;
|
|
1558
|
-
if (columns) schema =
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
...schema,
|
|
1562
|
-
properties: { ...schema.properties }
|
|
1563
|
-
};
|
|
1564
|
-
return this.relationManager.mapRowWithJoins(row[this.tableName], row, rowSchema, joins);
|
|
1565
|
-
});
|
|
1580
|
+
if (columns) schema = schema.pick(Object.fromEntries(columns.map((c) => [c, true])));
|
|
1581
|
+
const joinedSchema = joins.length ? this.relationManager.buildSchemaWithJoins(schema, joins) : null;
|
|
1582
|
+
if (joins.length) rows = rows.map((row) => this.relationManager.mapRowWithJoins(row[this.tableName], row, schema, joins));
|
|
1566
1583
|
rows = rows.map((row) => {
|
|
1567
|
-
if (joins
|
|
1568
|
-
const joinedSchema = this.relationManager.buildSchemaWithJoins(schema, joins);
|
|
1569
|
-
return this.cleanWithJoins(row, joinedSchema, joins);
|
|
1570
|
-
}
|
|
1584
|
+
if (joinedSchema) return this.cleanWithJoins(row, joinedSchema, joins);
|
|
1571
1585
|
return this.clean(row, schema);
|
|
1572
1586
|
});
|
|
1573
1587
|
await this.alepha.events.emit("repository:read:after", {
|
|
@@ -1623,10 +1637,10 @@ var Repository = class Repository {
|
|
|
1623
1637
|
};
|
|
1624
1638
|
const tasks = [];
|
|
1625
1639
|
tasks.push(this.findMany({
|
|
1640
|
+
...query,
|
|
1626
1641
|
offset,
|
|
1627
1642
|
limit: limit + 1,
|
|
1628
|
-
orderBy
|
|
1629
|
-
...query
|
|
1643
|
+
orderBy
|
|
1630
1644
|
}, opts).then((it) => {
|
|
1631
1645
|
timers.query = this.dateTimeProvider.nowMillis() - timers.query;
|
|
1632
1646
|
return it;
|
|
@@ -2071,7 +2085,8 @@ var Repository = class Repository {
|
|
|
2071
2085
|
if (query.orderBy) {
|
|
2072
2086
|
const clauses = this.queryManager.normalizeOrderBy(query.orderBy);
|
|
2073
2087
|
builder = builder.orderBy(...clauses.map((clause) => {
|
|
2074
|
-
const
|
|
2088
|
+
const colName = clause.column.includes(".") ? clause.column.replace(".", AGG_SEPARATOR) : clause.column;
|
|
2089
|
+
const col = flatFields[colName];
|
|
2075
2090
|
if (!col) throw new AlephaError(`Invalid orderBy column '${clause.column}' in aggregate query`);
|
|
2076
2091
|
return clause.direction === "desc" ? desc(col) : asc(col);
|
|
2077
2092
|
}));
|
|
@@ -2126,16 +2141,24 @@ var Repository = class Repository {
|
|
|
2126
2141
|
withOrganization(where) {
|
|
2127
2142
|
const orgField = this.organizationField();
|
|
2128
2143
|
if (!orgField) return where;
|
|
2144
|
+
const strict = orgField.data?.strict === true;
|
|
2129
2145
|
const value = this.resolveOrganizationValue();
|
|
2130
|
-
if (!value)
|
|
2131
|
-
|
|
2146
|
+
if (!value) {
|
|
2147
|
+
if (strict) throw new AlephaError(`Refusing to query tenant-scoped entity '${this.tableName}' with no resolved tenant/organization in context (strict tenancy).`);
|
|
2148
|
+
return where;
|
|
2149
|
+
}
|
|
2150
|
+
return { and: [where, strict ? { [orgField.key]: { eq: value } } : { or: [{ [orgField.key]: { eq: value } }, { [orgField.key]: { isNull: true } }] }] };
|
|
2132
2151
|
}
|
|
2133
2152
|
stampOrganization(data) {
|
|
2134
2153
|
const orgField = this.organizationField();
|
|
2135
2154
|
if (!orgField) return;
|
|
2136
|
-
if (data[orgField.key]
|
|
2155
|
+
if (orgField.key in data && data[orgField.key] !== void 0) return;
|
|
2137
2156
|
const value = this.resolveOrganizationValue();
|
|
2138
|
-
if (value)
|
|
2157
|
+
if (value) {
|
|
2158
|
+
data[orgField.key] = value;
|
|
2159
|
+
return;
|
|
2160
|
+
}
|
|
2161
|
+
if (orgField.data?.strict === true) throw new AlephaError(`Refusing to insert into tenant-scoped entity '${this.tableName}' with no organization set and no resolved tenant in context (strict tenancy).`);
|
|
2139
2162
|
}
|
|
2140
2163
|
/**
|
|
2141
2164
|
* Resolve the value used for `PG_ORGANIZATION` scoping.
|
|
@@ -2160,7 +2183,7 @@ var Repository = class Repository {
|
|
|
2160
2183
|
* Convert something to valid Pg Insert Value.
|
|
2161
2184
|
*/
|
|
2162
2185
|
cast(data, insert) {
|
|
2163
|
-
const schema = insert ? this.entity.insertSchema :
|
|
2186
|
+
const schema = insert ? this.entity.insertSchema : this.entity.updateSchema.partial();
|
|
2164
2187
|
const sqlValues = {};
|
|
2165
2188
|
const scalarData = {};
|
|
2166
2189
|
for (const key of Object.keys(data)) {
|
|
@@ -2168,8 +2191,12 @@ var Repository = class Repository {
|
|
|
2168
2191
|
if (value != null && isSQLWrapper(value)) sqlValues[key] = value;
|
|
2169
2192
|
else scalarData[key] = value;
|
|
2170
2193
|
}
|
|
2194
|
+
const encoded = this.alepha.codec.encode(schema, scalarData);
|
|
2171
2195
|
return {
|
|
2172
|
-
...
|
|
2196
|
+
...insert ? encoded : Object.keys(scalarData).reduce((acc, key) => {
|
|
2197
|
+
acc[key] = encoded[key];
|
|
2198
|
+
return acc;
|
|
2199
|
+
}, {}),
|
|
2173
2200
|
...sqlValues
|
|
2174
2201
|
};
|
|
2175
2202
|
}
|
|
@@ -2178,12 +2205,17 @@ var Repository = class Repository {
|
|
|
2178
2205
|
*/
|
|
2179
2206
|
clean(row, schema) {
|
|
2180
2207
|
for (const key of Object.keys(schema.properties)) {
|
|
2181
|
-
const
|
|
2208
|
+
const prop = schema.properties[key];
|
|
2209
|
+
const value = z.schema.unwrap(prop);
|
|
2210
|
+
if (row[key] === null && z.schema.isOptional(prop)) {
|
|
2211
|
+
delete row[key];
|
|
2212
|
+
continue;
|
|
2213
|
+
}
|
|
2182
2214
|
if (typeof row[key] === "string") {
|
|
2183
|
-
if (
|
|
2184
|
-
else if (
|
|
2215
|
+
if (z.schema.isDateTime(value)) row[key] = this.dateTimeProvider.of(row[key]).toISOString();
|
|
2216
|
+
else if (z.schema.isDate(value)) row[key] = this.dateTimeProvider.of(`${row[key]}T00:00:00Z`).toISOString().split("T")[0];
|
|
2185
2217
|
}
|
|
2186
|
-
if (typeof row[key] === "bigint" &&
|
|
2218
|
+
if ((typeof row[key] === "bigint" || typeof row[key] === "number") && z.schema.isBigInt(value)) row[key] = String(row[key]);
|
|
2187
2219
|
}
|
|
2188
2220
|
return this.alepha.codec.decode(schema, row);
|
|
2189
2221
|
}
|
|
@@ -2235,7 +2267,7 @@ var Repository = class Repository {
|
|
|
2235
2267
|
* @returns The where clause for the ID.
|
|
2236
2268
|
*/
|
|
2237
2269
|
getWhereId(id) {
|
|
2238
|
-
return { [this.id.key]: { eq:
|
|
2270
|
+
return { [this.id.key]: { eq: z.schema.isString(this.id.type) ? String(id) : Number(id) } };
|
|
2239
2271
|
}
|
|
2240
2272
|
/**
|
|
2241
2273
|
* Find a primary key in the schema.
|
|
@@ -2574,7 +2606,8 @@ var SqliteModelBuilder = class extends ModelBuilder {
|
|
|
2574
2606
|
schemaToSqliteColumns = (tableName, schema, enums, tables) => {
|
|
2575
2607
|
return Object.entries(schema.properties).reduce((columns, [key, value]) => {
|
|
2576
2608
|
let col = this.mapFieldToSqliteColumn(tableName, key, value, enums);
|
|
2577
|
-
|
|
2609
|
+
const defaultValue = z.schema.getDefault(value);
|
|
2610
|
+
if (defaultValue != null) col = col.default(defaultValue);
|
|
2578
2611
|
if (PG_PRIMARY_KEY in value) col = col.primaryKey();
|
|
2579
2612
|
if (PG_REF in value) {
|
|
2580
2613
|
const config = value[PG_REF];
|
|
@@ -2591,55 +2624,56 @@ var SqliteModelBuilder = class extends ModelBuilder {
|
|
|
2591
2624
|
const gen = value[PG_GENERATED];
|
|
2592
2625
|
col = col.generatedAlwaysAs(gen.expression, { mode: gen.mode ?? "virtual" });
|
|
2593
2626
|
}
|
|
2594
|
-
if (schema.
|
|
2627
|
+
if (z.schema.requiredKeys(schema).includes(key)) col = col.notNull();
|
|
2595
2628
|
columns[key] = col;
|
|
2596
2629
|
return columns;
|
|
2597
2630
|
}, {});
|
|
2598
2631
|
};
|
|
2599
2632
|
mapFieldToSqliteColumn = (tableName, fieldName, value, enums) => {
|
|
2600
2633
|
const key = this.toColumnName(fieldName);
|
|
2601
|
-
|
|
2602
|
-
if (
|
|
2634
|
+
value = z.schema.unwrap(value);
|
|
2635
|
+
if (z.schema.isInteger(value)) {
|
|
2603
2636
|
if (PG_SERIAL in value || PG_IDENTITY in value) return pg.integer(key, { mode: "number" }).primaryKey({ autoIncrement: true });
|
|
2604
2637
|
return pg.integer(key);
|
|
2605
2638
|
}
|
|
2606
|
-
if (
|
|
2639
|
+
if (z.schema.isBigInt(value)) {
|
|
2607
2640
|
if (PG_PRIMARY_KEY in value || PG_IDENTITY in value) return pg.integer(key, { mode: "number" }).primaryKey({ autoIncrement: true });
|
|
2608
2641
|
return pg.integer(key, { mode: "number" });
|
|
2609
2642
|
}
|
|
2610
|
-
if (
|
|
2643
|
+
if (z.schema.isNumber(value)) {
|
|
2611
2644
|
if (PG_IDENTITY in value) return pg.integer(key, { mode: "number" }).primaryKey({ autoIncrement: true });
|
|
2612
|
-
return pg.
|
|
2613
|
-
}
|
|
2614
|
-
if (
|
|
2615
|
-
if (
|
|
2616
|
-
if (
|
|
2617
|
-
if (
|
|
2618
|
-
if (
|
|
2619
|
-
if (
|
|
2620
|
-
if (
|
|
2621
|
-
if (
|
|
2622
|
-
if (
|
|
2623
|
-
if (
|
|
2624
|
-
if (
|
|
2625
|
-
if (
|
|
2626
|
-
if (
|
|
2627
|
-
|
|
2628
|
-
|
|
2645
|
+
return pg.real(key);
|
|
2646
|
+
}
|
|
2647
|
+
if (z.schema.isString(value)) return this.mapStringToSqliteColumn(key, value);
|
|
2648
|
+
if (z.schema.isBoolean(value)) return this.sqliteBool(key, value);
|
|
2649
|
+
if (z.schema.isObject(value)) return this.sqliteJson(key, value);
|
|
2650
|
+
if (z.schema.isRecord(value)) return this.sqliteJson(key, value);
|
|
2651
|
+
if (z.schema.isAny(value)) return this.sqliteJson(key, value);
|
|
2652
|
+
if (z.schema.isArray(value)) {
|
|
2653
|
+
if (z.schema.isObject(value.items)) return this.sqliteJson(key, value);
|
|
2654
|
+
if (z.schema.isRecord(value.items)) return this.sqliteJson(key, value);
|
|
2655
|
+
if (z.schema.isAny(value.items)) return this.sqliteJson(key, value);
|
|
2656
|
+
if (z.schema.isString(value.items)) return this.sqliteJson(key, value);
|
|
2657
|
+
if (z.schema.isInteger(value.items)) return this.sqliteJson(key, value);
|
|
2658
|
+
if (z.schema.isNumber(value.items)) return this.sqliteJson(key, value);
|
|
2659
|
+
if (z.schema.isBoolean(value.items)) return this.sqliteJson(key, value);
|
|
2660
|
+
if (z.schema.isEnum(value.items)) return this.sqliteJson(key, value);
|
|
2661
|
+
}
|
|
2662
|
+
if (z.schema.isEnum(value)) return this.mapStringToSqliteColumn(key, value);
|
|
2629
2663
|
throw new AlephaError(`Unsupported schema for field '${tableName}.${fieldName}' (schema: ${JSON.stringify(value)})`);
|
|
2630
2664
|
};
|
|
2631
2665
|
mapStringToSqliteColumn = (key, value) => {
|
|
2632
|
-
if (
|
|
2666
|
+
if (z.schema.format(value) === "uuid") {
|
|
2633
2667
|
if (PG_PRIMARY_KEY in value) return pg.text(key).primaryKey().$defaultFn(() => randomUUID());
|
|
2634
2668
|
return pg.text(key);
|
|
2635
2669
|
}
|
|
2636
|
-
if (
|
|
2637
|
-
if (
|
|
2670
|
+
if (z.schema.format(value) === "binary") return this.sqliteJson(key, value);
|
|
2671
|
+
if (z.schema.format(value) === "date-time") {
|
|
2638
2672
|
if (PG_CREATED_AT in value) return this.sqliteDateTime(key, {}).default(sql$1`(unixepoch('subsec') * 1000)`);
|
|
2639
2673
|
if (PG_UPDATED_AT in value) return this.sqliteDateTime(key, {}).default(sql$1`(unixepoch('subsec') * 1000)`);
|
|
2640
2674
|
return this.sqliteDateTime(key, {});
|
|
2641
2675
|
}
|
|
2642
|
-
if (
|
|
2676
|
+
if (z.schema.format(value) === "date") return this.sqliteDate(key, {});
|
|
2643
2677
|
return pg.text(key);
|
|
2644
2678
|
};
|
|
2645
2679
|
sqliteJson = (name, document) => pg.customType({
|
|
@@ -2677,7 +2711,7 @@ const envSchema$1 = databaseEnvSchema;
|
|
|
2677
2711
|
*/
|
|
2678
2712
|
const bunSqliteOptions = $atom({
|
|
2679
2713
|
name: "alepha.postgres.bun-sqlite.options",
|
|
2680
|
-
schema:
|
|
2714
|
+
schema: z.object({ path: z.string().describe("Filepath or :memory:. If empty, provider will use DATABASE_URL from env.").optional() }),
|
|
2681
2715
|
default: {}
|
|
2682
2716
|
});
|
|
2683
2717
|
/**
|
|
@@ -2780,7 +2814,7 @@ var BunSqliteProvider = class extends DatabaseProvider {
|
|
|
2780
2814
|
*/
|
|
2781
2815
|
var CloudflareD1Provider = class extends DatabaseProvider {
|
|
2782
2816
|
builder = $inject(SqliteModelBuilder);
|
|
2783
|
-
env = $env(
|
|
2817
|
+
env = $env(z.object({ DATABASE_URL: z.string().describe("Expect to be 'd1://binding'") }));
|
|
2784
2818
|
d1;
|
|
2785
2819
|
drizzleDb;
|
|
2786
2820
|
get name() {
|
|
@@ -2877,7 +2911,7 @@ const envSchema = databaseEnvSchema;
|
|
|
2877
2911
|
*/
|
|
2878
2912
|
const nodeSqliteOptions = $atom({
|
|
2879
2913
|
name: "alepha.postgres.node-sqlite.options",
|
|
2880
|
-
schema:
|
|
2914
|
+
schema: z.object({ path: z.string().describe("Filepath or :memory:. If empty, provider will use DATABASE_URL from env.").optional() }),
|
|
2881
2915
|
default: {}
|
|
2882
2916
|
});
|
|
2883
2917
|
/**
|
|
@@ -2983,7 +3017,8 @@ var NodeSqliteProvider = class NodeSqliteProvider extends DatabaseProvider {
|
|
|
2983
3017
|
};
|
|
2984
3018
|
const origPrepare = db.prepare.bind(db);
|
|
2985
3019
|
db.prepare = (sql) => {
|
|
2986
|
-
const
|
|
3020
|
+
const aliased = NodeSqliteProvider.aliasSelectColumns(sql);
|
|
3021
|
+
const stmt = origPrepare(aliased);
|
|
2987
3022
|
if (!stmt.raw) stmt.raw = () => ({
|
|
2988
3023
|
all: (...args) => stmt.all(...args).map((row) => Object.values(row)),
|
|
2989
3024
|
get: (...args) => {
|
|
@@ -3136,7 +3171,7 @@ var DbConnectionError = class DbConnectionError extends DbError {
|
|
|
3136
3171
|
/**
|
|
3137
3172
|
* @deprecated Use `pg.primaryKey()` instead.
|
|
3138
3173
|
*/
|
|
3139
|
-
const legacyIdSchema = pgAttr(pgAttr(pgAttr(
|
|
3174
|
+
const legacyIdSchema = pgAttr(pgAttr(pgAttr(z.integer(), PG_PRIMARY_KEY), PG_SERIAL), PG_DEFAULT);
|
|
3140
3175
|
//#endregion
|
|
3141
3176
|
//#region ../../src/orm/core/primitives/$seed.ts
|
|
3142
3177
|
/**
|