alepha 0.21.2 → 0.23.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/README.md +0 -1
- package/dist/api/audits/index.browser.js.map +1 -1
- package/dist/api/audits/index.d.ts +393 -403
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/audits/index.js +25 -56
- package/dist/api/audits/index.js.map +1 -1
- package/dist/api/files/index.browser.js +31 -1
- package/dist/api/files/index.browser.js.map +1 -1
- package/dist/api/files/index.d.ts +313 -208
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +152 -42
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.browser.js +2 -2
- package/dist/api/jobs/index.browser.js.map +1 -1
- package/dist/api/jobs/index.d.ts +282 -285
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/jobs/index.js +39 -33
- package/dist/api/jobs/index.js.map +1 -1
- package/dist/api/keys/index.d.ts +217 -222
- package/dist/api/keys/index.d.ts.map +1 -1
- package/dist/api/keys/index.js.map +1 -1
- package/dist/api/notifications/index.browser.js.map +1 -1
- package/dist/api/notifications/index.d.ts +188 -195
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/oauth/index.d.ts +71 -76
- package/dist/api/oauth/index.d.ts.map +1 -1
- package/dist/api/oauth/index.js.map +1 -1
- package/dist/api/organizations/index.browser.js.map +1 -1
- package/dist/api/organizations/index.d.ts +104 -109
- package/dist/api/organizations/index.d.ts.map +1 -1
- package/dist/api/organizations/index.js.map +1 -1
- package/dist/api/parameters/index.browser.js +43 -16
- package/dist/api/parameters/index.browser.js.map +1 -1
- package/dist/api/parameters/index.d.ts +488 -344
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/parameters/index.js +175 -35
- package/dist/api/parameters/index.js.map +1 -1
- package/dist/api/payments/index.d.ts +396 -402
- package/dist/api/payments/index.d.ts.map +1 -1
- package/dist/api/payments/index.js.map +1 -1
- package/dist/api/subscriptions/index.d.ts +644 -652
- package/dist/api/subscriptions/index.d.ts.map +1 -1
- package/dist/api/subscriptions/index.js +1 -1
- package/dist/api/subscriptions/index.js.map +1 -1
- package/dist/api/users/index.browser.js +7 -0
- package/dist/api/users/index.browser.js.map +1 -1
- package/dist/api/users/index.d.ts +1106 -1005
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +307 -64
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.browser.js.map +1 -1
- package/dist/api/verifications/index.d.ts +137 -143
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/api/verifications/index.js.map +1 -1
- package/dist/background/index.d.ts +95 -0
- package/dist/background/index.d.ts.map +1 -0
- package/dist/background/index.js +121 -0
- package/dist/background/index.js.map +1 -0
- package/dist/background/index.workerd.js +110 -0
- package/dist/background/index.workerd.js.map +1 -0
- package/dist/batch/index.d.ts +5 -7
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/batch/index.js.map +1 -1
- package/dist/bin/index.js.map +1 -1
- package/dist/bucket/index.d.ts +76 -54
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/bucket/index.js +58 -11
- package/dist/bucket/index.js.map +1 -1
- package/dist/bucket/index.workerd.js +200 -5
- package/dist/bucket/index.workerd.js.map +1 -1
- package/dist/cache/core/index.d.ts +7 -10
- package/dist/cache/core/index.d.ts.map +1 -1
- package/dist/cache/core/index.js.map +1 -1
- package/dist/cache/core/index.workerd.js.map +1 -1
- package/dist/cache/database/index.d.ts +22 -26
- package/dist/cache/database/index.d.ts.map +1 -1
- package/dist/cache/database/index.js.map +1 -1
- package/dist/cache/redis/index.d.ts +4 -7
- package/dist/cache/redis/index.d.ts.map +1 -1
- package/dist/cache/redis/index.js.map +1 -1
- package/dist/captcha/index.d.ts +3 -6
- package/dist/captcha/index.d.ts.map +1 -1
- package/dist/captcha/index.js.map +1 -1
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js.map +1 -1
- package/dist/cli/core/index.d.ts +458 -249
- package/dist/cli/core/index.d.ts.map +1 -1
- package/dist/cli/core/index.js +372 -660
- package/dist/cli/core/index.js.map +1 -1
- package/dist/cli/devtools/index.d.ts +3 -5
- package/dist/cli/devtools/index.d.ts.map +1 -1
- package/dist/cli/devtools/index.js.map +1 -1
- package/dist/cli/i18n/index.d.ts +20 -17
- package/dist/cli/i18n/index.d.ts.map +1 -1
- package/dist/cli/i18n/index.js +45 -11
- package/dist/cli/i18n/index.js.map +1 -1
- package/dist/cli/platform/index.d.ts +126 -1342
- package/dist/cli/platform/index.d.ts.map +1 -1
- package/dist/cli/platform/index.js +136 -2374
- package/dist/cli/platform/index.js.map +1 -1
- package/dist/cli/platform-lib/index.d.ts +1472 -0
- package/dist/cli/platform-lib/index.d.ts.map +1 -0
- package/dist/cli/platform-lib/index.js +2660 -0
- package/dist/cli/platform-lib/index.js.map +1 -0
- package/dist/cli/vendor/index.d.ts +17 -21
- package/dist/cli/vendor/index.d.ts.map +1 -1
- package/dist/cli/vendor/index.js.map +1 -1
- package/dist/command/index.d.ts +20 -19
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +39 -10
- package/dist/command/index.js.map +1 -1
- package/dist/{containers → container}/core/index.d.ts +13 -15
- package/dist/container/core/index.d.ts.map +1 -0
- package/dist/{containers → container}/core/index.js +23 -14
- package/dist/container/core/index.js.map +1 -0
- package/dist/{containers → container}/core/index.workerd.js +37 -22
- package/dist/container/core/index.workerd.js.map +1 -0
- package/dist/core/index.browser.js +27 -1
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +48 -24
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +27 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +27 -1
- package/dist/core/index.native.js.map +1 -1
- package/dist/core/index.workerd.js +27 -1
- package/dist/core/index.workerd.js.map +1 -1
- package/dist/crypto/index.browser.js.map +1 -1
- package/dist/crypto/index.d.ts +5 -8
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/crypto/index.js.map +1 -1
- package/dist/datetime/index.d.ts +3 -4
- package/dist/datetime/index.d.ts.map +1 -1
- package/dist/datetime/index.js.map +1 -1
- package/dist/email/brevo/index.d.ts +2 -4
- package/dist/email/brevo/index.d.ts.map +1 -1
- package/dist/email/brevo/index.js.map +1 -1
- package/dist/email/cloudflare/index.d.ts +20 -7
- package/dist/email/cloudflare/index.d.ts.map +1 -1
- package/dist/email/cloudflare/index.js +46 -9
- package/dist/email/cloudflare/index.js.map +1 -1
- package/dist/email/core/index.d.ts +6 -9
- package/dist/email/core/index.d.ts.map +1 -1
- package/dist/email/core/index.js.map +1 -1
- package/dist/email/core/index.workerd.js.map +1 -1
- package/dist/email/smtp/index.d.ts +10 -13
- package/dist/email/smtp/index.d.ts.map +1 -1
- package/dist/email/smtp/index.js +107 -32
- package/dist/email/smtp/index.js.map +1 -1
- package/dist/fake/index.d.ts +1 -2
- package/dist/fake/index.d.ts.map +1 -1
- package/dist/fake/index.js.map +1 -1
- package/dist/lock/core/index.d.ts +9 -14
- package/dist/lock/core/index.d.ts.map +1 -1
- package/dist/lock/core/index.js.map +1 -1
- package/dist/lock/redis/index.d.ts +2 -4
- 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 +105 -76
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +196 -174
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +25 -20
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +23 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/core/index.browser.js.map +1 -1
- package/dist/orm/core/index.bun.js +19 -1
- package/dist/orm/core/index.bun.js.map +1 -1
- package/dist/orm/core/index.d.ts +76 -62
- package/dist/orm/core/index.d.ts.map +1 -1
- package/dist/orm/core/index.js +20 -2
- package/dist/orm/core/index.js.map +1 -1
- package/dist/orm/postgres/index.bun.js.map +1 -1
- package/dist/orm/postgres/index.d.ts +28 -20
- package/dist/orm/postgres/index.d.ts.map +1 -1
- package/dist/orm/postgres/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +12 -15
- package/dist/queue/core/index.d.ts.map +1 -1
- package/dist/queue/core/index.js.map +1 -1
- package/dist/queue/core/index.workerd.js.map +1 -1
- package/dist/queue/redis/index.d.ts +3 -5
- package/dist/queue/redis/index.d.ts.map +1 -1
- package/dist/queue/redis/index.js.map +1 -1
- package/dist/react/auth/index.browser.js +9 -2
- package/dist/react/auth/index.browser.js.map +1 -1
- package/dist/react/auth/index.d.ts +14 -9
- package/dist/react/auth/index.d.ts.map +1 -1
- package/dist/react/auth/index.js +9 -2
- package/dist/react/auth/index.js.map +1 -1
- package/dist/react/core/index.d.ts +7 -8
- package/dist/react/core/index.d.ts.map +1 -1
- package/dist/react/core/index.js +6 -3
- package/dist/react/core/index.js.map +1 -1
- package/dist/react/form/index.d.ts +2 -5
- package/dist/react/form/index.d.ts.map +1 -1
- package/dist/react/form/index.js +16 -15
- 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 +2 -4
- 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 +90 -11
- package/dist/react/i18n/index.d.ts.map +1 -1
- package/dist/react/i18n/index.js +147 -11
- package/dist/react/i18n/index.js.map +1 -1
- package/dist/react/intro/index.d.ts +1 -2
- package/dist/react/intro/index.d.ts.map +1 -1
- package/dist/react/intro/index.js +2 -2
- package/dist/react/intro/index.js.map +1 -1
- package/dist/react/router/index.browser.js +193 -24
- package/dist/react/router/index.browser.js.map +1 -1
- package/dist/react/router/index.d.ts +434 -222
- package/dist/react/router/index.d.ts.map +1 -1
- package/dist/react/router/index.js +249 -35
- 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 +92 -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 +1 -2
- package/dist/react/testing/index.d.ts.map +1 -1
- package/dist/react/testing/index.js +16 -17
- package/dist/react/testing/index.js.map +1 -1
- package/dist/react/ui/index.d.ts +20 -25
- package/dist/react/ui/index.d.ts.map +1 -1
- package/dist/react/ui/index.js.map +1 -1
- package/dist/redis/index.bun.js.map +1 -1
- package/dist/redis/index.d.ts +17 -19
- package/dist/redis/index.d.ts.map +1 -1
- package/dist/redis/index.js.map +1 -1
- package/dist/retry/index.d.ts +2 -4
- 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 +10 -13
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/index.workerd.js.map +1 -1
- package/dist/security/index.browser.js.map +1 -1
- package/dist/security/index.d.ts +45 -48
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.browser.js.map +1 -1
- package/dist/server/auth/index.d.ts +272 -173
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +1608 -15
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cookies/index.browser.js.map +1 -1
- package/dist/server/cookies/index.d.ts +20 -7
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/cookies/index.js +22 -3
- package/dist/server/cookies/index.js.map +1 -1
- package/dist/server/core/index.browser.js.map +1 -1
- package/dist/server/core/index.d.ts +106 -73
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +44 -0
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +11 -14
- package/dist/server/cors/index.d.ts.map +1 -1
- package/dist/server/cors/index.js.map +1 -1
- package/dist/server/etag/index.d.ts +6 -9
- 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 -21
- package/dist/server/health/index.d.ts.map +1 -1
- package/dist/server/health/index.js.map +1 -1
- package/dist/server/links/index.browser.js +2 -0
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +63 -67
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +2 -0
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts +5 -7
- package/dist/server/metrics/index.d.ts.map +1 -1
- package/dist/server/metrics/index.js.map +1 -1
- package/dist/server/proxy/index.d.ts +3 -5
- 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 +10 -13
- package/dist/server/rate-limit/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.js.map +1 -1
- package/dist/server/static/index.d.ts +3 -5
- 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 +5 -8
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +3 -5
- 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 +2 -4
- package/dist/system/index.d.ts.map +1 -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 +4 -6
- package/dist/topic/core/index.d.ts.map +1 -1
- package/dist/topic/core/index.js.map +1 -1
- package/dist/topic/redis/index.d.ts +5 -8
- package/dist/topic/redis/index.d.ts.map +1 -1
- package/dist/topic/redis/index.js.map +1 -1
- package/package.json +59 -23
- package/src/api/audits/__tests__/AuditService.spec.ts +18 -110
- package/src/api/audits/controllers/AdminAuditController.ts +14 -0
- package/src/api/audits/services/AuditService.ts +21 -88
- package/src/api/files/__tests__/FileService.spec.ts +207 -2
- package/src/api/files/index.ts +3 -0
- package/src/api/files/schemas/fileCreatorSummarySchema.ts +22 -0
- package/src/api/files/schemas/fileResourceSchema.ts +10 -1
- package/src/api/files/services/FileService.ts +170 -72
- package/src/api/jobs/__tests__/$job.spec.ts +24 -1
- package/src/api/jobs/index.ts +4 -3
- package/src/api/jobs/primitives/$job.ts +7 -3
- package/src/api/jobs/providers/DirectJobDispatcher.ts +17 -36
- package/src/api/jobs/providers/JobProvider.ts +53 -24
- package/src/api/jobs/schemas/jobConfigAtom.ts +1 -1
- package/src/api/jobs/schemas/jobExecutionResourceSchema.ts +4 -1
- package/src/api/keys/schemas/adminApiKeyResourceSchema.ts +3 -1
- package/src/api/parameters/__tests__/$parameter.spec.ts +19 -2
- package/src/api/parameters/audits/ParameterAudits.ts +17 -0
- package/src/api/parameters/controllers/AdminParameterController.ts +95 -19
- package/src/api/parameters/index.ts +3 -0
- package/src/api/parameters/schemas/activateParameterBodySchema.ts +3 -3
- package/src/api/parameters/schemas/createParameterVersionBodySchema.ts +3 -2
- package/src/api/parameters/schemas/parameterCreatorSummarySchema.ts +25 -0
- package/src/api/parameters/schemas/parameterResponseSchema.ts +5 -0
- package/src/api/parameters/schemas/rollbackParameterBodySchema.ts +4 -2
- package/src/api/parameters/services/ParameterProvider.ts +69 -6
- package/src/api/subscriptions/jobs/SubscriptionJobs.ts +1 -1
- package/src/api/users/__tests__/AdminSessionController.spec.ts +37 -0
- package/src/api/users/audits/SessionAudits.ts +33 -0
- package/src/api/users/audits/UserAudits.ts +19 -43
- package/src/api/users/controllers/AdminUserController.ts +66 -1
- package/src/api/users/controllers/RealmController.ts +1 -0
- package/src/api/users/entities/sessions.ts +6 -0
- package/src/api/users/entities/users.ts +2 -0
- package/src/api/users/index.ts +9 -1
- package/src/api/users/primitives/$realm.ts +29 -0
- package/src/api/users/providers/RealmProvider.ts +15 -0
- package/src/api/users/schemas/realmConfigSchema.ts +14 -0
- package/src/api/users/schemas/sessionResourceSchema.ts +16 -0
- package/src/api/users/schemas/updateUserSchema.ts +1 -8
- package/src/api/users/schemas/userQuerySchema.ts +7 -0
- package/src/api/users/services/CredentialService.ts +15 -6
- package/src/api/users/services/IdentityService.ts +2 -1
- package/src/api/users/services/RegistrationService.ts +2 -1
- package/src/api/users/services/SessionCrudService.ts +19 -2
- package/src/api/users/services/SessionService.ts +39 -19
- package/src/api/users/services/UserService.ts +106 -8
- package/src/background/__tests__/BackgroundTaskProvider.spec.ts +96 -0
- package/src/background/index.ts +37 -0
- package/src/background/index.workerd.ts +28 -0
- package/src/background/providers/BackgroundTaskProvider.ts +70 -0
- package/src/background/providers/WorkerdBackgroundTaskProvider.ts +43 -0
- package/src/bucket/__tests__/$bucket.spec.ts +18 -0
- package/src/bucket/__tests__/LocalFileStorageProvider.spec.ts +5 -0
- package/src/bucket/__tests__/MemoryFileStorageProvider.spec.ts +5 -0
- package/src/bucket/__tests__/NodeS3BucketProvider.spec.ts +23 -4
- package/src/bucket/__tests__/shared.ts +30 -0
- package/src/bucket/index.ts +5 -5
- package/src/bucket/index.workerd.ts +11 -4
- package/src/bucket/primitives/$bucket.ts +27 -0
- package/src/bucket/providers/FileStorageProvider.ts +13 -0
- package/src/bucket/providers/LocalFileStorageProvider.ts +17 -1
- package/src/bucket/providers/MemoryFileStorageProvider.ts +7 -0
- package/src/bucket/providers/{CloudflareR2Provider.ts → R2FileStorageProvider.ts} +10 -1
- package/src/bucket/providers/{NodeS3BucketProvider.ts → S3FileStorageProvider.ts} +27 -5
- package/src/cli/core/__tests__/BuildDockerTask.spec.ts +25 -1
- package/src/cli/core/__tests__/init.spec.ts +0 -219
- package/src/cli/core/atoms/buildOptions.ts +0 -12
- package/src/cli/core/commands/__tests__/BuildCommand.spec.ts +43 -0
- package/src/cli/core/commands/build.ts +105 -37
- package/src/cli/core/commands/init.ts +0 -12
- package/src/cli/core/commands/pack.ts +133 -0
- package/src/cli/core/index.ts +3 -3
- package/src/cli/core/providers/ViteDevServerProvider.ts +40 -16
- package/src/cli/core/services/PackageManagerUtils.ts +0 -16
- package/src/cli/core/services/ProjectScaffolder.ts +29 -291
- package/src/cli/core/tasks/BuildCloudflareTask.ts +382 -56
- package/src/cli/core/tasks/BuildDockerTask.ts +33 -3
- package/src/cli/core/tasks/BuildPrerenderTask.ts +44 -7
- package/src/cli/core/tasks/BuildTask.ts +34 -0
- package/src/cli/core/templates/apiIndexTs.ts +1 -22
- package/src/cli/core/templates/mainCss.ts +0 -1
- package/src/cli/core/templates/webAppRouterTs.ts +0 -99
- package/src/cli/core/templates/webIndexTs.ts +1 -22
- package/src/cli/i18n/__tests__/I18nCheckService.spec.ts +48 -0
- package/src/cli/i18n/services/I18nCheckService.ts +65 -11
- package/src/cli/platform/__tests__/SecretsCommand.spec.ts +5 -3
- package/src/cli/platform/commands/SecretsCommand.ts +8 -6
- package/src/cli/platform/commands/platform.ts +192 -46
- package/src/cli/platform/index.ts +12 -52
- package/src/cli/{platform → platform-lib}/__tests__/CloudflareAdapter.spec.ts +426 -169
- package/src/cli/{platform → platform-lib}/__tests__/NamingService.spec.ts +91 -4
- package/src/cli/{platform → platform-lib}/__tests__/VercelAdapter.spec.ts +56 -85
- package/src/cli/{platform → platform-lib}/adapters/CloudflareAdapter.ts +519 -190
- package/src/cli/{platform → platform-lib}/adapters/PlatformAdapter.ts +62 -35
- package/src/cli/{platform → platform-lib}/adapters/VercelAdapter.ts +6 -10
- package/src/cli/{platform → platform-lib}/atoms/platformOptions.ts +34 -1
- package/src/cli/platform-lib/index.ts +67 -0
- package/src/cli/platform-lib/services/NamingService.ts +136 -0
- package/src/cli/{platform → platform-lib}/services/PlatformInspector.ts +60 -13
- package/src/cli/{platform → platform-lib}/services/PlatformOrchestrator.ts +54 -43
- package/src/cli/{platform → platform-lib}/services/WranglerApi.ts +4 -2
- package/src/command/__tests__/Runner.spec.ts +20 -0
- package/src/command/helpers/EnvUtils.ts +19 -3
- package/src/command/helpers/Runner.ts +12 -2
- package/src/command/providers/CliProvider.ts +34 -1
- package/src/{containers → container}/core/__tests__/$container.spec.ts +5 -5
- package/src/{containers → container}/core/index.ts +4 -4
- package/src/{containers → container}/core/index.workerd.ts +19 -3
- package/src/{containers → container}/core/primitives/$container.ts +1 -1
- package/src/{containers → container}/core/providers/CloudflareContainerProvider.ts +17 -19
- package/src/{containers → container}/core/providers/ContainerProvider.ts +16 -2
- package/src/{containers → container}/core/providers/MockContainerProvider.ts +1 -1
- package/src/core/Alepha.ts +49 -1
- package/src/core/__tests__/$env.spec.ts +42 -0
- package/src/core/__tests__/dump.spec.ts +47 -0
- package/src/email/cloudflare/__tests__/CloudflareEmailProvider.spec.ts +42 -10
- package/src/email/cloudflare/index.ts +14 -5
- package/src/email/cloudflare/providers/CloudflareEmailProvider.ts +54 -9
- package/src/logger/__tests__/Logger.spec.ts +55 -0
- package/src/logger/index.ts +13 -0
- package/src/logger/services/Logger.ts +31 -1
- package/src/mcp/__tests__/McpServerProvider.spec.ts +71 -0
- package/src/mcp/providers/McpServerProvider.ts +55 -0
- package/src/orm/__tests__/orm-showcase-tests.ts +27 -0
- package/src/orm/__tests__/orm-showcase.spec.ts +12 -0
- package/src/orm/core/interfaces/PgQuery.ts +4 -1
- package/src/orm/core/services/Repository.ts +27 -11
- package/src/react/auth/hooks/useAuth.ts +10 -5
- package/src/react/core/__tests__/useQuery.browser.spec.tsx +25 -0
- package/src/react/core/hooks/useAction.ts +14 -3
- package/src/react/core/hooks/useQuery.ts +24 -4
- 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/services/FormModel.ts +57 -39
- package/src/react/i18n/__tests__/I18nProvider.spec.ts +89 -0
- package/src/react/i18n/__tests__/locale-routing.spec.ts +107 -0
- package/src/react/i18n/components/Translate.tsx +47 -0
- package/src/react/i18n/index.ts +2 -0
- package/src/react/i18n/providers/I18nProvider.ts +171 -12
- package/src/react/intro/components/GettingStartedAdminSlide.tsx +2 -2
- package/src/react/router/__tests__/$page.spec.tsx +3 -2
- package/src/react/router/__tests__/RouterLocaleProvider.spec.ts +127 -0
- package/src/react/router/__tests__/page-can.spec.ts +18 -13
- package/src/react/router/hooks/useQueryParams.ts +114 -14
- 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 +85 -4
- package/src/react/router/providers/ReactBrowserRouterProvider.ts +18 -8
- package/src/react/router/providers/ReactPageProvider.ts +12 -1
- package/src/react/router/providers/ReactServerProvider.ts +96 -14
- 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/services/SchemaControl.ts +3 -4
- package/src/server/auth/__tests__/appleClientSecret.spec.ts +34 -0
- package/src/server/auth/__tests__/authFederationClient.spec.ts +40 -0
- package/src/server/auth/__tests__/federationAssertion.spec.ts +146 -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/federationAssertion.ts +74 -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 +4 -0
- package/src/server/auth/primitives/$authFederationBroker.ts +273 -0
- package/src/server/auth/primitives/$authFederationClient.ts +89 -0
- package/src/server/auth/providers/ServerAuthProvider.ts +18 -4
- package/src/server/cookies/__tests__/ServerCookiesProvider.spec.ts +70 -0
- package/src/server/cookies/providers/ServerCookiesProvider.ts +23 -3
- package/src/server/core/interfaces/ServerRequest.ts +8 -0
- package/src/server/core/primitives/$route.ts +27 -0
- package/src/server/core/providers/ServerMultipartProvider.ts +19 -0
- package/src/server/links/providers/LinkProvider.ts +10 -0
- package/dist/containers/core/index.d.ts.map +0 -1
- package/dist/containers/core/index.js.map +0 -1
- package/dist/containers/core/index.workerd.js.map +0 -1
- package/src/cli/core/tasks/BuildSitemapTask.ts +0 -130
- package/src/cli/core/templates/componentsJsonTs.ts +0 -39
- package/src/cli/core/templates/saasAdminLayoutTsx.ts +0 -77
- package/src/cli/core/templates/saasAdminPagesTsx.ts +0 -26
- package/src/cli/core/templates/saasAuthLayoutTsx.ts +0 -22
- package/src/cli/core/templates/saasAuthPagesTsx.ts +0 -62
- package/src/cli/core/templates/saasRealmProviderTs.ts +0 -52
- package/src/cli/platform/services/NamingService.ts +0 -54
- /package/dist/orm/core/{chunk-o8xxKEmq.js → chunk-B4FMCO8f.js} +0 -0
- /package/dist/react/testing/{chunk-6Ep1yQYe.js → chunk-BpyX8vjI.js} +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/GitHubSecretStore.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/PlatformCacheProvider.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/PlatformInspector.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/PlatformOrchestrator.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/SecretFilterService.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/detectResources.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/providers/GitHubSecretStore.ts +0 -0
- /package/src/cli/{platform → platform-lib}/providers/MemorySecretStore.ts +0 -0
- /package/src/cli/{platform → platform-lib}/providers/PlatformCacheProvider.ts +0 -0
- /package/src/cli/{platform → platform-lib}/providers/SecretStoreProvider.ts +0 -0
- /package/src/cli/{platform → platform-lib}/schemas/cloudflare.ts +0 -0
- /package/src/cli/{platform → platform-lib}/schemas/platform.ts +0 -0
- /package/src/cli/{platform → platform-lib}/schemas/vercel.ts +0 -0
- /package/src/cli/{platform → platform-lib}/services/CloudflareApi.ts +0 -0
- /package/src/cli/{platform → platform-lib}/services/SecretFilterService.ts +0 -0
- /package/src/cli/{platform → platform-lib}/services/VercelApi.ts +0 -0
- /package/src/cli/{platform → platform-lib}/services/VercelCli.ts +0 -0
- /package/src/{containers → container}/core/interfaces/ContainerOptions.ts +0 -0
- /package/src/{containers → container}/core/providers/NodeContainerProvider.ts +0 -0
|
@@ -2,7 +2,7 @@ import { $atom, $hook, $inject, $module, $state, Alepha, AlephaError, KIND, OPTI
|
|
|
2
2
|
import { AlephaDateTime, DateTimeProvider } from "alepha/datetime";
|
|
3
3
|
import { AlephaContext, AlephaReact, ClientOnly, ErrorBoundary, useAlepha, useEvents, useInject, useStore } from "alepha/react";
|
|
4
4
|
import { AlephaReactHead, BrowserHeadProvider } from "alepha/react/head";
|
|
5
|
-
import { AlephaServer
|
|
5
|
+
import { AlephaServer } from "alepha/server";
|
|
6
6
|
import { AlephaServerLinks, LinkProvider } from "alepha/server/links";
|
|
7
7
|
import { $cache } from "alepha/cache";
|
|
8
8
|
import { $logger } from "alepha/logger";
|
|
@@ -719,6 +719,117 @@ function parseAnimation(animationLike, state, type = "enter") {
|
|
|
719
719
|
}
|
|
720
720
|
}
|
|
721
721
|
//#endregion
|
|
722
|
+
//#region ../../src/react/router/providers/RootComponentsProvider.ts
|
|
723
|
+
/**
|
|
724
|
+
* Extension point letting any module contribute root-level React nodes that
|
|
725
|
+
* render on every page (siblings of the page view, inside AlephaContext).
|
|
726
|
+
*
|
|
727
|
+
* A module pushes into `rootComponents` from its `register` hook; the array
|
|
728
|
+
* is rendered by `ReactPageProvider.root()`. SSR-safe (same element feeds
|
|
729
|
+
* server render + client hydrate).
|
|
730
|
+
*/
|
|
731
|
+
var RootComponentsProvider = class {
|
|
732
|
+
rootComponents = [];
|
|
733
|
+
};
|
|
734
|
+
//#endregion
|
|
735
|
+
//#region ../../src/react/router/providers/RouterLocaleProvider.ts
|
|
736
|
+
/**
|
|
737
|
+
* Generic locale path-prefix mechanism for the router.
|
|
738
|
+
*
|
|
739
|
+
* This provider knows nothing about i18n — it only deals with URL path
|
|
740
|
+
* segments. It is configured by the i18n module (`I18nProvider`) when
|
|
741
|
+
* `routing: "prefix"` is enabled, which keeps the dependency one-directional
|
|
742
|
+
* (`i18n → router`) and avoids a module cycle.
|
|
743
|
+
*
|
|
744
|
+
* The default locale is served WITHOUT a prefix (`/about` = default,
|
|
745
|
+
* `/fr/about` = French). The active locale is derived from the current
|
|
746
|
+
* request/navigation and stored under `alepha.react.router.locale`, so every
|
|
747
|
+
* URL the router builds (`pathname()`) automatically carries the right prefix.
|
|
748
|
+
*/
|
|
749
|
+
var RouterLocaleProvider = class {
|
|
750
|
+
alepha = $inject(Alepha);
|
|
751
|
+
/**
|
|
752
|
+
* Whether locale path-prefixing is active. Off by default — opt-in via the
|
|
753
|
+
* i18n module.
|
|
754
|
+
*/
|
|
755
|
+
enabled = false;
|
|
756
|
+
/**
|
|
757
|
+
* The default locale, served without a path prefix (e.g. `"en"` → `/about`).
|
|
758
|
+
*/
|
|
759
|
+
defaultLocale = "";
|
|
760
|
+
/**
|
|
761
|
+
* All known locales, including the default one.
|
|
762
|
+
*/
|
|
763
|
+
locales = [];
|
|
764
|
+
/**
|
|
765
|
+
* Configure the provider. Called by the i18n module before the SSR routes
|
|
766
|
+
* are registered.
|
|
767
|
+
*/
|
|
768
|
+
configure(options) {
|
|
769
|
+
if (options.enabled !== void 0) this.enabled = options.enabled;
|
|
770
|
+
if (options.defaultLocale !== void 0) this.defaultLocale = options.defaultLocale;
|
|
771
|
+
if (options.locales !== void 0) this.locales = options.locales;
|
|
772
|
+
}
|
|
773
|
+
/**
|
|
774
|
+
* Locales that carry a URL prefix — every known locale except the default.
|
|
775
|
+
*/
|
|
776
|
+
get prefixedLocales() {
|
|
777
|
+
return this.locales.filter((locale) => locale !== this.defaultLocale);
|
|
778
|
+
}
|
|
779
|
+
/**
|
|
780
|
+
* Splits a leading locale segment off a pathname.
|
|
781
|
+
*
|
|
782
|
+
* - `/fr/about` → `{ locale: "fr", pathname: "/about" }` when `fr` is a
|
|
783
|
+
* prefixed locale.
|
|
784
|
+
* - `/about` → `{ locale: defaultLocale, pathname: "/about" }`.
|
|
785
|
+
*
|
|
786
|
+
* When prefixing is disabled the pathname is returned untouched.
|
|
787
|
+
*/
|
|
788
|
+
detect(pathname) {
|
|
789
|
+
if (this.enabled) {
|
|
790
|
+
const first = pathname.split("/")[1];
|
|
791
|
+
if (first && this.prefixedLocales.includes(first)) {
|
|
792
|
+
const rest = pathname.slice(first.length + 1);
|
|
793
|
+
return {
|
|
794
|
+
locale: first,
|
|
795
|
+
pathname: this.normalize(rest)
|
|
796
|
+
};
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
return {
|
|
800
|
+
locale: this.defaultLocale,
|
|
801
|
+
pathname
|
|
802
|
+
};
|
|
803
|
+
}
|
|
804
|
+
/**
|
|
805
|
+
* Prepends the locale prefix to a pathname when needed. The default locale
|
|
806
|
+
* (and any unknown/disabled case) returns the pathname unchanged.
|
|
807
|
+
*/
|
|
808
|
+
withPrefix(pathname, locale = this.current) {
|
|
809
|
+
if (!this.enabled || !locale || locale === this.defaultLocale || !this.prefixedLocales.includes(locale)) return pathname;
|
|
810
|
+
return `/${locale}${pathname === "/" ? "" : pathname}`;
|
|
811
|
+
}
|
|
812
|
+
/**
|
|
813
|
+
* The active locale, derived from the current request/navigation. Falls back
|
|
814
|
+
* to the default locale when nothing has been detected.
|
|
815
|
+
*/
|
|
816
|
+
get current() {
|
|
817
|
+
return this.alepha.store.get("alepha.react.router.locale") || this.defaultLocale;
|
|
818
|
+
}
|
|
819
|
+
set current(locale) {
|
|
820
|
+
this.alepha.store.set("alepha.react.router.locale", locale);
|
|
821
|
+
}
|
|
822
|
+
/**
|
|
823
|
+
* Normalizes a stripped pathname so it always starts with a single slash and
|
|
824
|
+
* carries no trailing slash (except the root `/`).
|
|
825
|
+
*/
|
|
826
|
+
normalize(pathname) {
|
|
827
|
+
if (!pathname || pathname === "/") return "/";
|
|
828
|
+
const withLeading = pathname.startsWith("/") ? pathname : `/${pathname}`;
|
|
829
|
+
return withLeading.length > 1 && withLeading.endsWith("/") ? withLeading.slice(0, -1) : withLeading;
|
|
830
|
+
}
|
|
831
|
+
};
|
|
832
|
+
//#endregion
|
|
722
833
|
//#region ../../src/react/router/providers/ReactPageProvider.ts
|
|
723
834
|
const reactPageOptions = $atom({
|
|
724
835
|
name: "alepha.react.page.options",
|
|
@@ -752,6 +863,8 @@ var ReactPageProvider = class {
|
|
|
752
863
|
log = $logger();
|
|
753
864
|
options = $state(reactPageOptions);
|
|
754
865
|
alepha = $inject(Alepha);
|
|
866
|
+
rootComponentsProvider = $inject(RootComponentsProvider);
|
|
867
|
+
localeProvider = $inject(RouterLocaleProvider);
|
|
755
868
|
pages = [];
|
|
756
869
|
nextIdCursor = 0;
|
|
757
870
|
configure = $hook({
|
|
@@ -834,17 +947,19 @@ var ReactPageProvider = class {
|
|
|
834
947
|
parent = parent.parent;
|
|
835
948
|
}
|
|
836
949
|
url = this.compile(url, options.params ?? {});
|
|
950
|
+
url = url.replace(/\/\/+/g, "/") || "/";
|
|
951
|
+
url = this.localeProvider.withPrefix(url);
|
|
837
952
|
if (options.query) {
|
|
838
953
|
const query = new URLSearchParams(options.query);
|
|
839
954
|
if (query.toString()) url += `?${query.toString()}`;
|
|
840
955
|
}
|
|
841
|
-
return url
|
|
956
|
+
return url;
|
|
842
957
|
}
|
|
843
958
|
url(name, options = {}) {
|
|
844
959
|
return new URL(this.pathname(name, options), options.host ?? `http://localhost`);
|
|
845
960
|
}
|
|
846
961
|
root(state) {
|
|
847
|
-
const root = createElement(AlephaContext.Provider, { value: this.alepha }, createElement(NestedView_default, {}, state.layers[0]?.element));
|
|
962
|
+
const root = createElement(AlephaContext.Provider, { value: this.alepha }, createElement(NestedView_default, {}, state.layers[0]?.element), ...this.rootComponentsProvider.rootComponents);
|
|
848
963
|
if (this.options.strictMode) return createElement(StrictMode, {}, root);
|
|
849
964
|
return root;
|
|
850
965
|
}
|
|
@@ -1162,6 +1277,7 @@ var ReactBrowserRouterProvider = class extends RouterProvider {
|
|
|
1162
1277
|
alepha = $inject(Alepha);
|
|
1163
1278
|
pageApi = $inject(ReactPageProvider);
|
|
1164
1279
|
browserHeadProvider = $inject(BrowserHeadProvider);
|
|
1280
|
+
localeProvider = $inject(RouterLocaleProvider);
|
|
1165
1281
|
add(entry) {
|
|
1166
1282
|
this.pageApi.add(entry);
|
|
1167
1283
|
}
|
|
@@ -1190,12 +1306,15 @@ var ReactBrowserRouterProvider = class extends RouterProvider {
|
|
|
1190
1306
|
state
|
|
1191
1307
|
});
|
|
1192
1308
|
try {
|
|
1193
|
-
|
|
1309
|
+
let matchPathname = pathname;
|
|
1310
|
+
if (this.localeProvider.enabled) {
|
|
1311
|
+
const detected = this.localeProvider.detect(pathname);
|
|
1312
|
+
this.localeProvider.current = detected.locale;
|
|
1313
|
+
matchPathname = detected.pathname;
|
|
1314
|
+
}
|
|
1315
|
+
const { route, params } = this.match(matchPathname);
|
|
1194
1316
|
const query = {};
|
|
1195
1317
|
if (search) for (const [key, value] of new URLSearchParams(search).entries()) query[key] = String(value);
|
|
1196
|
-
if (route?.page.can) {
|
|
1197
|
-
if (!route.page.can()) throw new ForbiddenError("Access denied to this page.");
|
|
1198
|
-
}
|
|
1199
1318
|
state.name = route?.page.name;
|
|
1200
1319
|
state.query = query;
|
|
1201
1320
|
state.params = params ?? {};
|
|
@@ -1735,36 +1854,85 @@ const useActive = (args) => {
|
|
|
1735
1854
|
//#region ../../src/react/router/hooks/useQueryParams.ts
|
|
1736
1855
|
/**
|
|
1737
1856
|
* Hook to manage query parameters in the URL using a defined schema.
|
|
1857
|
+
*
|
|
1858
|
+
* Two storage formats are supported via {@link UseQueryParamsHookOptions.format}:
|
|
1859
|
+
* - `"base64"` (default) packs the whole object into a single opaque param
|
|
1860
|
+
* (named by `key`, default `q`) — e.g. `?q=eyJ0YWIiOiJzZWN1cml0eSJ9`.
|
|
1861
|
+
* - `"querystring"` spreads each schema field across its own readable param —
|
|
1862
|
+
* e.g. `?tab=security`. In this mode `key` is ignored.
|
|
1863
|
+
*
|
|
1864
|
+
* By default the URL is updated with `replaceState` (no new history entry).
|
|
1865
|
+
* Pass `push: true` to add a history entry instead, so the browser back
|
|
1866
|
+
* button steps back through previous values.
|
|
1867
|
+
*
|
|
1868
|
+
* @example
|
|
1869
|
+
* const [params, setParams] = useQueryParams(
|
|
1870
|
+
* t.object({ tab: t.optional(t.string()) }),
|
|
1871
|
+
* { format: "querystring" },
|
|
1872
|
+
* );
|
|
1873
|
+
* // params.tab reads from `?tab=…`; setParams({ tab: "security" }) writes it.
|
|
1738
1874
|
*/
|
|
1739
1875
|
const useQueryParams = (schema, options = {}) => {
|
|
1740
1876
|
const alepha = useAlepha();
|
|
1741
|
-
const key = options.key ?? "q";
|
|
1742
1877
|
const router = useRouter();
|
|
1743
|
-
const
|
|
1744
|
-
const
|
|
1878
|
+
const key = options.key ?? "q";
|
|
1879
|
+
const format = options.format ?? "base64";
|
|
1880
|
+
const read = () => format === "querystring" ? decodeQueryString(alepha, schema, router.query) : decodeBase64(alepha, schema, router.query[key]);
|
|
1881
|
+
const signature = format === "querystring" ? Object.keys(schema.properties).map((name) => `${name}=${router.query[name] ?? ""}`).join("&") : router.query[key];
|
|
1882
|
+
const [queryParams = {}, setQueryParams] = useState(read());
|
|
1745
1883
|
useEffect(() => {
|
|
1746
|
-
setQueryParams(
|
|
1747
|
-
}, [
|
|
1748
|
-
return [queryParams, (
|
|
1749
|
-
setQueryParams(
|
|
1750
|
-
router.setQueryParams((data) => {
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
};
|
|
1755
|
-
});
|
|
1884
|
+
setQueryParams(read());
|
|
1885
|
+
}, [signature]);
|
|
1886
|
+
return [queryParams, (next) => {
|
|
1887
|
+
setQueryParams(next);
|
|
1888
|
+
router.setQueryParams((data) => format === "querystring" ? writeQueryString(alepha, schema, data, next) : {
|
|
1889
|
+
...data,
|
|
1890
|
+
[key]: encodeBase64(alepha, schema, next)
|
|
1891
|
+
}, { push: options.push });
|
|
1756
1892
|
}];
|
|
1757
1893
|
};
|
|
1758
|
-
const
|
|
1894
|
+
const encodeBase64 = (alepha, schema, data) => {
|
|
1759
1895
|
return btoa(JSON.stringify(alepha.codec.decode(schema, data)));
|
|
1760
1896
|
};
|
|
1761
|
-
const
|
|
1897
|
+
const decodeBase64 = (alepha, schema, data) => {
|
|
1762
1898
|
try {
|
|
1763
1899
|
return alepha.codec.decode(schema, JSON.parse(atob(decodeURIComponent(data))));
|
|
1764
1900
|
} catch {
|
|
1765
1901
|
return;
|
|
1766
1902
|
}
|
|
1767
1903
|
};
|
|
1904
|
+
/**
|
|
1905
|
+
* querystring read: each schema field is its own URL param. Mirrors the
|
|
1906
|
+
* server's per-key query decode — `codec.decode(propertySchema, rawString)`
|
|
1907
|
+
* coerces the raw string into the declared type (number, boolean, …).
|
|
1908
|
+
*/
|
|
1909
|
+
const decodeQueryString = (alepha, schema, query) => {
|
|
1910
|
+
try {
|
|
1911
|
+
const out = {};
|
|
1912
|
+
for (const name of Object.keys(schema.properties)) {
|
|
1913
|
+
const raw = query[name];
|
|
1914
|
+
if (raw != null && raw !== "") out[name] = alepha.codec.decode(schema.properties[name], raw);
|
|
1915
|
+
}
|
|
1916
|
+
return out;
|
|
1917
|
+
} catch {
|
|
1918
|
+
return;
|
|
1919
|
+
}
|
|
1920
|
+
};
|
|
1921
|
+
/**
|
|
1922
|
+
* querystring write: spread the decoded object across individual params,
|
|
1923
|
+
* dropping empty values so the URL stays clean. Unrelated params (not part
|
|
1924
|
+
* of the schema) are preserved.
|
|
1925
|
+
*/
|
|
1926
|
+
const writeQueryString = (alepha, schema, current, next) => {
|
|
1927
|
+
const decoded = alepha.codec.decode(schema, next);
|
|
1928
|
+
const merged = { ...current };
|
|
1929
|
+
for (const name of Object.keys(schema.properties)) {
|
|
1930
|
+
const value = decoded?.[name];
|
|
1931
|
+
if (value == null || value === "") delete merged[name];
|
|
1932
|
+
else merged[name] = String(value);
|
|
1933
|
+
}
|
|
1934
|
+
return merged;
|
|
1935
|
+
};
|
|
1768
1936
|
//#endregion
|
|
1769
1937
|
//#region ../../src/react/router/index.browser.ts
|
|
1770
1938
|
const AlephaReactRouter = $module({
|
|
@@ -1776,11 +1944,12 @@ const AlephaReactRouter = $module({
|
|
|
1776
1944
|
ReactBrowserProvider,
|
|
1777
1945
|
ReactRouter,
|
|
1778
1946
|
ReactBrowserRendererProvider,
|
|
1947
|
+
RouterLocaleProvider,
|
|
1779
1948
|
ReactPageService
|
|
1780
1949
|
],
|
|
1781
|
-
register: (alepha) => alepha.with(AlephaReact).with(AlephaReactHead).with(AlephaDateTime).with(AlephaServer).with(AlephaServerLinks).with(ReactPageProvider).with(ReactBrowserProvider).with(ReactBrowserRouterProvider).with(ReactBrowserRendererProvider).with(ReactRouter)
|
|
1950
|
+
register: (alepha) => alepha.with(AlephaReact).with(AlephaReactHead).with(AlephaDateTime).with(AlephaServer).with(AlephaServerLinks).with(ReactPageProvider).with(ReactBrowserProvider).with(ReactBrowserRouterProvider).with(ReactBrowserRendererProvider).with(RouterLocaleProvider).with(ReactRouter)
|
|
1782
1951
|
});
|
|
1783
1952
|
//#endregion
|
|
1784
|
-
export { $page, AlephaReactRouter, ErrorViewer, Link, NestedView_default as NestedView, NotFound, PAGE_PRELOAD_KEY, PagePrimitive, ReactBrowserProvider, ReactBrowserRendererProvider, ReactBrowserRouterProvider, ReactPageProvider, ReactPageService, ReactRouter, Redirection, RouterLayerContext, isPageRoute, reactBrowserOptions, reactPageOptions, useActive, useQueryParams, useRouter, useRouterState };
|
|
1953
|
+
export { $page, AlephaReactRouter, ErrorViewer, Link, NestedView_default as NestedView, NotFound, PAGE_PRELOAD_KEY, PagePrimitive, ReactBrowserProvider, ReactBrowserRendererProvider, ReactBrowserRouterProvider, ReactPageProvider, ReactPageService, ReactRouter, Redirection, RootComponentsProvider, RouterLayerContext, RouterLocaleProvider, isPageRoute, reactBrowserOptions, reactPageOptions, useActive, useQueryParams, useRouter, useRouterState };
|
|
1785
1954
|
|
|
1786
1955
|
//# sourceMappingURL=index.browser.js.map
|