alepha 0.19.1 → 0.19.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +6 -9
- package/dist/api/audits/index.d.ts +378 -346
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/files/index.d.ts +216 -184
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/jobs/index.d.ts +534 -502
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/jobs/index.js +13 -7
- package/dist/api/jobs/index.js.map +1 -1
- package/dist/api/keys/index.d.ts +202 -202
- package/dist/api/keys/index.d.ts.map +1 -1
- package/dist/api/notifications/index.d.ts +152 -152
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/organizations/index.browser.js +48 -0
- package/dist/api/organizations/index.browser.js.map +1 -0
- package/dist/api/organizations/index.d.ts +516 -0
- package/dist/api/organizations/index.d.ts.map +1 -0
- package/dist/api/organizations/index.js +202 -0
- package/dist/api/organizations/index.js.map +1 -0
- package/dist/api/parameters/index.d.ts +391 -358
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/parameters/index.js +5 -1
- package/dist/api/parameters/index.js.map +1 -1
- package/dist/api/users/index.browser.js +7 -5
- package/dist/api/users/index.browser.js.map +1 -1
- package/dist/api/users/index.d.ts +986 -931
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +160 -112
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +137 -137
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/api/verifications/index.js +2 -2
- package/dist/api/verifications/index.js.map +1 -1
- package/dist/batch/index.d.ts +6 -6
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/billing/index.d.ts +1048 -0
- package/dist/billing/index.d.ts.map +1 -0
- package/dist/billing/index.js +713 -0
- package/dist/billing/index.js.map +1 -0
- package/dist/bin/index.js +0 -2
- package/dist/bin/index.js.map +1 -1
- package/dist/bucket/index.d.ts +10 -10
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/bucket/index.js +2 -2
- package/dist/bucket/index.js.map +1 -1
- package/dist/cache/core/index.d.ts +9 -9
- package/dist/cache/core/index.d.ts.map +1 -1
- package/dist/cache/core/index.js +2 -2
- package/dist/cache/core/index.js.map +1 -1
- package/dist/cache/core/index.workerd.js +2 -2
- package/dist/cache/core/index.workerd.js.map +1 -1
- package/dist/cache/redis/index.d.ts +6 -6
- package/dist/cache/redis/index.d.ts.map +1 -1
- package/dist/cache/redis/index.js +2 -2
- package/dist/cache/redis/index.js.map +1 -1
- package/dist/cli/config/index.d.ts +6 -18
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js +5 -6
- package/dist/cli/config/index.js.map +1 -1
- package/dist/cli/core/index.d.ts +11811 -323
- package/dist/cli/core/index.d.ts.map +1 -1
- package/dist/cli/core/index.js +324 -98
- package/dist/cli/core/index.js.map +1 -1
- package/dist/cli/devtools/index.d.ts +50 -0
- package/dist/cli/devtools/index.d.ts.map +1 -0
- package/dist/cli/devtools/index.js +174 -0
- package/dist/cli/devtools/index.js.map +1 -0
- package/dist/cli/platform/index.d.ts +438 -542
- package/dist/cli/platform/index.d.ts.map +1 -1
- package/dist/cli/platform/index.js +46 -511
- package/dist/cli/platform/index.js.map +1 -1
- package/dist/cli/vendor/index.d.ts +201 -0
- package/dist/cli/vendor/index.d.ts.map +1 -0
- package/dist/cli/vendor/index.js +388 -0
- package/dist/cli/vendor/index.js.map +1 -0
- package/dist/command/index.d.ts +18 -18
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +2 -2
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +4 -4
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +10 -10
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +8 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +8 -4
- package/dist/core/index.native.js.map +1 -1
- package/dist/core/index.workerd.js +8 -4
- package/dist/core/index.workerd.js.map +1 -1
- package/dist/crypto/index.d.ts +7 -7
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/datetime/index.d.ts +4 -4
- package/dist/datetime/index.d.ts.map +1 -1
- package/dist/email/brevo/index.d.ts +4 -4
- package/dist/email/brevo/index.d.ts.map +1 -1
- package/dist/email/core/index.d.ts +15 -11
- package/dist/email/core/index.d.ts.map +1 -1
- package/dist/email/core/index.js +12 -35
- package/dist/email/core/index.js.map +1 -1
- package/dist/email/smtp/index.d.ts +12 -12
- package/dist/email/smtp/index.d.ts.map +1 -1
- package/dist/email/smtp/index.js +7 -4
- package/dist/email/smtp/index.js.map +1 -1
- package/dist/fake/index.d.ts +4 -8
- package/dist/fake/index.d.ts.map +1 -1
- package/dist/fake/index.js +55 -889
- package/dist/fake/index.js.map +1 -1
- package/dist/lock/core/index.d.ts +13 -13
- package/dist/lock/core/index.d.ts.map +1 -1
- package/dist/lock/core/index.js +2 -2
- package/dist/lock/core/index.js.map +1 -1
- package/dist/lock/redis/index.d.ts +4 -4
- package/dist/lock/redis/index.d.ts.map +1 -1
- package/dist/logger/index.d.ts +16 -15
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +6 -3
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +11 -11
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +2 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/core/index.browser.js +11 -1
- package/dist/orm/core/index.browser.js.map +1 -1
- package/dist/orm/core/index.bun.js +78 -72
- package/dist/orm/core/index.bun.js.map +1 -1
- package/dist/orm/core/index.d.ts +103 -69
- package/dist/orm/core/index.d.ts.map +1 -1
- package/dist/orm/core/index.js +80 -70
- package/dist/orm/core/index.js.map +1 -1
- package/dist/orm/postgres/index.d.ts +19 -17
- package/dist/orm/postgres/index.d.ts.map +1 -1
- package/dist/queue/core/index.d.ts +14 -14
- package/dist/queue/core/index.d.ts.map +1 -1
- package/dist/queue/core/index.js +2 -2
- package/dist/queue/core/index.js.map +1 -1
- package/dist/queue/core/index.workerd.js +2 -2
- package/dist/queue/core/index.workerd.js.map +1 -1
- package/dist/queue/redis/index.d.ts +4 -4
- package/dist/queue/redis/index.d.ts.map +1 -1
- package/dist/queue/redis/index.js +2 -2
- package/dist/queue/redis/index.js.map +1 -1
- package/dist/react/auth/index.d.ts +9 -9
- package/dist/react/auth/index.d.ts.map +1 -1
- package/dist/react/core/index.d.ts +6 -6
- package/dist/react/core/index.d.ts.map +1 -1
- package/dist/react/core/index.js +5 -4
- package/dist/react/core/index.js.map +1 -1
- package/dist/react/form/index.d.ts +4 -4
- package/dist/react/form/index.d.ts.map +1 -1
- package/dist/react/head/index.d.ts +4 -4
- package/dist/react/head/index.d.ts.map +1 -1
- package/dist/react/i18n/index.d.ts +9 -9
- package/dist/react/i18n/index.d.ts.map +1 -1
- package/dist/react/intro/index.d.ts +2 -2
- package/dist/react/intro/index.d.ts.map +1 -1
- package/dist/react/intro/index.js +1 -1
- package/dist/react/intro/index.js.map +1 -1
- package/dist/react/router/index.browser.js +4 -5
- package/dist/react/router/index.browser.js.map +1 -1
- package/dist/react/router/index.d.ts +215 -215
- package/dist/react/router/index.d.ts.map +1 -1
- package/dist/react/router/index.js +6 -7
- package/dist/react/router/index.js.map +1 -1
- package/dist/react/testing/index.d.ts +2 -2
- package/dist/react/testing/index.d.ts.map +1 -1
- package/dist/react/testing/index.js +2 -4
- package/dist/react/testing/index.js.map +1 -1
- package/dist/redis/index.d.ts +19 -19
- package/dist/redis/index.d.ts.map +1 -1
- package/dist/retry/index.d.ts +4 -4
- package/dist/retry/index.d.ts.map +1 -1
- package/dist/scheduler/index.d.ts +13 -13
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +2 -2
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/index.workerd.js +2 -2
- package/dist/scheduler/index.workerd.js.map +1 -1
- package/dist/security/index.browser.js +1 -1
- package/dist/security/index.browser.js.map +1 -1
- package/dist/security/index.d.ts +47 -47
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +9 -12
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +170 -169
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +16 -2
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cookies/index.d.ts +7 -7
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/core/index.d.ts +76 -76
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +23 -17
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +13 -13
- package/dist/server/cors/index.d.ts.map +1 -1
- package/dist/server/cors/index.js +2 -2
- package/dist/server/cors/index.js.map +1 -1
- package/dist/server/etag/index.d.ts +9 -9
- package/dist/server/etag/index.d.ts.map +1 -1
- package/dist/server/health/index.d.ts +20 -20
- package/dist/server/health/index.d.ts.map +1 -1
- package/dist/server/links/index.browser.js +2 -2
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +66 -66
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +4 -4
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts +7 -7
- package/dist/server/metrics/index.d.ts.map +1 -1
- package/dist/server/proxy/index.d.ts +5 -5
- package/dist/server/proxy/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.d.ts +12 -12
- package/dist/server/rate-limit/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.js +2 -2
- package/dist/server/rate-limit/index.js.map +1 -1
- package/dist/server/static/index.d.ts +5 -5
- package/dist/server/static/index.d.ts.map +1 -1
- package/dist/server/swagger/index.d.ts +7 -7
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js +2 -2
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +11 -7
- package/dist/sms/index.d.ts.map +1 -1
- package/dist/sms/index.js +9 -15
- package/dist/sms/index.js.map +1 -1
- package/dist/system/index.d.ts +4 -4
- package/dist/system/index.d.ts.map +1 -1
- package/dist/topic/core/index.d.ts +6 -6
- package/dist/topic/core/index.d.ts.map +1 -1
- package/dist/topic/redis/index.d.ts +7 -7
- package/dist/topic/redis/index.d.ts.map +1 -1
- package/dist/topic/redis/index.js +2 -2
- package/dist/topic/redis/index.js.map +1 -1
- package/dist/websocket/index.d.ts +36 -36
- package/dist/websocket/index.d.ts.map +1 -1
- package/dist/websocket/index.js +2 -2
- package/dist/websocket/index.js.map +1 -1
- package/package.json +37 -15
- package/src/api/jobs/{services → __tests__}/JobService.spec.ts +1 -1
- package/src/api/jobs/providers/JobProvider.ts +13 -9
- package/src/api/keys/{services → __tests__}/ApiKeyService.spec.ts +1 -1
- package/src/api/organizations/__tests__/OrganizationService.spec.ts +193 -0
- package/src/api/organizations/controllers/AdminOrganizationController.ts +103 -0
- package/src/api/organizations/entities/organizations.ts +20 -0
- package/src/api/organizations/index.browser.ts +10 -0
- package/src/api/organizations/index.ts +31 -0
- package/src/api/organizations/schemas/createOrganizationSchema.ts +10 -0
- package/src/api/organizations/schemas/organizationQuerySchema.ts +10 -0
- package/src/api/organizations/schemas/organizationResourceSchema.ts +6 -0
- package/src/api/organizations/schemas/updateOrganizationSchema.ts +7 -0
- package/src/api/organizations/services/OrganizationService.ts +75 -0
- package/src/api/parameters/services/ParameterProvider.ts +6 -1
- package/src/api/users/{services → __tests__}/SessionService.spec.ts +67 -0
- package/src/api/users/{jobs → __tests__}/UserJobs.spec.ts +1 -1
- package/src/api/users/entities/users.ts +9 -3
- package/src/api/users/index.ts +23 -4
- package/src/api/users/primitives/$realm.ts +6 -4
- package/src/api/users/providers/RealmProvider.ts +1 -1
- package/src/api/users/services/RegistrationService.ts +1 -1
- package/src/api/users/services/SessionService.ts +92 -5
- package/src/api/users/services/UserService.ts +1 -1
- package/src/api/verifications/{jobs → __tests__}/VerificationJobs.spec.ts +4 -2
- package/src/api/verifications/parameters/VerificationParameters.ts +2 -2
- package/src/billing/__tests__/BillingService.spec.ts +136 -0
- package/src/billing/__tests__/PaymentMethodService.spec.ts +78 -0
- package/src/billing/controllers/AdminBillingController.ts +149 -0
- package/src/billing/controllers/BillingController.ts +108 -0
- package/src/billing/entities/paymentIntents.ts +34 -0
- package/src/billing/entities/paymentMethods.ts +24 -0
- package/src/billing/entities/refunds.ts +22 -0
- package/src/billing/errors/BillingError.ts +5 -0
- package/src/billing/index.ts +76 -0
- package/src/billing/providers/BillingProvider.ts +79 -0
- package/src/billing/providers/MemoryBillingProvider.ts +139 -0
- package/src/billing/schemas/intentSchemas.ts +60 -0
- package/src/billing/schemas/paymentMethodSchemas.ts +13 -0
- package/src/billing/schemas/refundSchemas.ts +6 -0
- package/src/billing/services/BillingService.ts +325 -0
- package/src/billing/services/PaymentMethodService.ts +82 -0
- package/src/bin/index.ts +0 -2
- package/src/bucket/providers/LocalFileStorageProvider.ts +2 -2
- package/src/cache/core/{primitives → __tests__}/$cache.middleware.spec.ts +1 -1
- package/src/cache/core/{providers → __tests__}/MemoryCacheProvider.spec.ts +1 -1
- package/src/cache/core/primitives/$cache.ts +2 -2
- package/src/cache/redis/providers/RedisCacheProvider.ts +2 -2
- package/src/cli/config/defineConfig.ts +17 -26
- package/src/cli/core/{services → __tests__}/ProjectScaffolder.spec.ts +1 -1
- package/src/cli/core/{commands/gen → __tests__}/changelog.spec.ts +1 -1
- package/src/cli/core/{commands → __tests__}/init.spec.ts +2 -8
- package/src/cli/core/atoms/devOptions.ts +0 -5
- package/src/cli/core/commands/build.ts +2 -2
- package/src/cli/core/commands/dev.ts +165 -30
- package/src/cli/core/commands/gen/changelog.ts +2 -2
- package/src/cli/core/commands/init.ts +2 -7
- package/src/cli/core/commands/verify.ts +0 -1
- package/src/cli/core/providers/AppEntryProvider.ts +2 -2
- package/src/cli/core/providers/ViteDevServerProvider.ts +99 -69
- package/src/cli/core/services/PackageManagerUtils.ts +8 -1
- package/src/cli/core/services/ProjectScaffolder.ts +23 -23
- package/src/cli/core/tasks/BuildClientTask.ts +8 -0
- package/src/cli/core/tasks/BuildServerTask.ts +17 -4
- package/src/cli/core/templates/agentMd.ts +14 -5
- package/src/cli/core/templates/alephaConfigTs.ts +0 -6
- package/src/cli/core/templates/webAdminDashboardTsx.ts +17 -0
- package/src/cli/core/templates/webAppRouterTs.ts +85 -2
- package/src/cli/devtools/atoms/devtoolsOptions.ts +26 -0
- package/src/cli/devtools/index.ts +214 -0
- package/src/cli/platform/{adapters → __tests__}/CloudflareAdapter.spec.ts +2 -2
- package/src/cli/platform/{providers → __tests__}/GitHubSecretStore.spec.ts +1 -1
- package/src/cli/platform/{services → __tests__}/NamingService.spec.ts +1 -1
- package/src/cli/platform/{providers → __tests__}/PlatformCacheProvider.spec.ts +1 -1
- package/src/cli/platform/{services → __tests__}/PlatformInspector.spec.ts +1 -1
- package/src/cli/platform/{services → __tests__}/PlatformOrchestrator.spec.ts +3 -3
- package/src/cli/platform/{services → __tests__}/SecretFilterService.spec.ts +1 -1
- package/src/cli/platform/{commands → __tests__}/SecretsCommand.spec.ts +1 -1
- package/src/cli/platform/{adapters → __tests__}/VercelAdapter.spec.ts +2 -2
- package/src/cli/platform/atoms/platformOptions.ts +2 -10
- package/src/cli/platform/commands/SecretsCommand.ts +2 -2
- package/src/cli/platform/commands/platform.ts +2 -11
- package/src/cli/platform/index.ts +55 -11
- package/src/cli/platform/services/PlatformInspector.ts +2 -2
- package/src/cli/platform/services/PlatformOrchestrator.ts +0 -9
- package/src/cli/vendor/__tests__/VendorService.spec.ts +407 -0
- package/src/cli/vendor/atoms/vendorOptions.ts +41 -0
- package/src/cli/vendor/commands/VendorCommand.ts +204 -0
- package/src/cli/vendor/index.ts +60 -0
- package/src/cli/vendor/services/VendorService.ts +338 -0
- package/src/command/{providers → __tests__}/CliProvider.spec.ts +1 -1
- package/src/command/{helpers → __tests__}/EnvUtils.spec.ts +1 -1
- package/src/command/providers/CliProvider.ts +2 -2
- package/src/core/Alepha.ts +10 -0
- package/src/core/{primitives → __tests__}/$atom.spec.ts +2 -2
- package/src/core/{primitives → __tests__}/$memoize.spec.ts +1 -1
- package/src/core/{primitives → __tests__}/$mode.spec.ts +1 -1
- package/src/core/{primitives → __tests__}/$pipeline.spec.ts +1 -1
- package/src/core/{primitives → __tests__}/$scope.spec.ts +2 -2
- package/src/core/{providers → __tests__}/KeylessJsonSchemaCodec.spec.ts +1 -1
- package/src/core/{providers → __tests__}/SchemaValidator.spec.ts +1 -1
- package/src/core/{helpers → __tests__}/jsonSchemaToTypeBox.spec.ts +1 -1
- package/src/core/index.shared.ts +1 -1
- package/src/core/primitives/{$use.ts → $state.ts} +4 -4
- package/src/crypto/{providers → __tests__}/BrowserCryptoProvider.browser.spec.ts +1 -1
- package/src/crypto/{providers → __tests__}/CryptoProvider.spec.ts +1 -1
- package/src/datetime/{primitives → __tests__}/$debounce.spec.ts +1 -1
- package/src/datetime/{primitives → __tests__}/$throttle.spec.ts +1 -1
- package/src/datetime/{primitives → __tests__}/$timeout.spec.ts +1 -1
- package/src/email/brevo/{providers → __tests__}/BrevoEmailProvider.spec.ts +1 -1
- package/src/email/core/{providers → __tests__}/LocalEmailProvider.spec.ts +39 -150
- package/src/email/core/providers/LocalEmailProvider.ts +13 -51
- package/src/email/smtp/providers/NodemailerEmailProvider.ts +2 -2
- package/src/lock/core/{primitives → __tests__}/$lock.middleware.spec.ts +1 -1
- package/src/lock/core/primitives/$lock.ts +2 -2
- package/src/logger/index.ts +16 -5
- package/src/mcp/transports/SseMcpTransport.ts +2 -2
- package/src/orm/__tests__/ModelBuilder-tests.ts +53 -0
- package/src/orm/__tests__/ModelBuilder.spec.ts +80 -0
- package/src/orm/__tests__/organization-tests.ts +200 -0
- package/src/orm/__tests__/organization.spec.ts +103 -0
- package/src/orm/core/{providers/drivers → __tests__}/BunSqliteProvider.bun.spec.ts +5 -2
- package/src/orm/core/constants/PG_SYMBOLS.ts +2 -0
- package/src/orm/core/index.shared.ts +1 -0
- package/src/orm/core/primitives/$entity.ts +31 -0
- package/src/orm/core/providers/DatabaseTypeProvider.ts +11 -0
- package/src/orm/core/providers/DrizzleKitProvider.ts +57 -106
- package/src/orm/core/providers/drivers/BunSqliteProvider.ts +2 -2
- package/src/orm/core/providers/drivers/NodeSqliteProvider.ts +3 -3
- package/src/orm/core/services/ModelBuilder.ts +11 -0
- package/src/orm/core/services/QueryManager.ts +16 -2
- package/src/orm/core/services/Repository.ts +70 -10
- package/src/orm/postgres/{providers → __tests__}/BunPostgresProvider.bun.spec.ts +1 -1
- package/src/queue/core/providers/WorkerProvider.ts +2 -2
- package/src/queue/redis/providers/RedisQueueProvider.ts +2 -2
- package/src/react/core/{hooks → __tests__}/useAction.browser.spec.tsx +1 -1
- package/src/react/core/hooks/useAction.ts +7 -6
- package/src/react/head/{providers → __tests__}/BrowserHeadProvider.browser.spec.ts +1 -1
- package/src/react/head/{helpers → __tests__}/SeoExpander.spec.ts +1 -1
- package/src/react/i18n/{providers → __tests__}/I18nProvider.spec.ts +1 -1
- package/src/react/i18n/{hooks → __tests__}/useI18n.browser.spec.tsx +1 -1
- package/src/react/intro/components/GettingStartedDevtoolsSlide.tsx +1 -1
- package/src/react/router/{providers → __tests__}/ReactBrowserProvider.browser.spec.ts +1 -1
- package/src/react/router/providers/ReactBrowserProvider.ts +2 -2
- package/src/react/router/providers/ReactPageProvider.ts +2 -2
- package/src/react/router/providers/ReactServerProvider.ts +3 -3
- package/src/redis/{providers → __tests__}/BunRedisProvider.bun.spec.ts +4 -4
- package/src/retry/{primitives → __tests__}/$retry.middleware.spec.ts +1 -1
- package/src/router/{TemplatedPathParser.spec.ts → __tests__/TemplatedPathParser.spec.ts} +1 -1
- package/src/scheduler/primitives/$scheduler.ts +2 -2
- package/src/security/{primitives → __tests__}/$secure-browser.spec.ts +1 -1
- package/src/security/{primitives → __tests__}/$secure.spec.ts +1 -1
- package/src/security/primitives/$issuer.ts +1 -1
- package/src/security/providers/JwtProvider.ts +6 -10
- package/src/security/providers/SecurityProvider.ts +6 -11
- package/src/security/schemas/userAccountInfoSchema.ts +3 -3
- package/src/server/auth/providers/ServerAuthProvider.ts +24 -2
- package/src/server/cookies/{services → __tests__}/CookieParser.spec.ts +1 -1
- package/src/server/core/{primitives → __tests__}/$circuit.spec.ts +1 -1
- package/src/server/core/{providers → __tests__}/NodeHttpServerProvider.spec.ts +1 -1
- package/src/server/core/{providers → __tests__}/ServerBodyParserProvider.spec.ts +31 -1
- package/src/server/core/{providers → __tests__}/ServerCompressProvider.spec.ts +1 -1
- package/src/server/core/{providers → __tests__}/ServerHelmetProvider.spec.ts +4 -1
- package/src/server/core/{providers → __tests__}/ServerMultipartProvider.spec.ts +1 -1
- package/src/server/core/{services → __tests__}/ServerRequestParser.spec.ts +1 -1
- package/src/server/core/primitives/$action.ts +2 -2
- package/src/server/core/primitives/$sse.ts +2 -2
- package/src/server/core/providers/ServerBodyParserProvider.ts +21 -12
- package/src/server/core/providers/ServerCompressProvider.ts +2 -2
- package/src/server/core/providers/ServerHelmetProvider.ts +2 -2
- package/src/server/core/providers/ServerMultipartProvider.ts +2 -2
- package/src/server/core/providers/ServerRouterProvider.ts +1 -5
- package/src/server/cors/{primitives → __tests__}/$cors.spec.ts +1 -1
- package/src/server/cors/providers/ServerCorsProvider.ts +2 -2
- package/src/server/links/{services → __tests__}/BatchCollector.spec.ts +1 -1
- package/src/server/links/providers/LinkProvider.ts +2 -2
- package/src/server/links/providers/RemotePrimitiveProvider.ts +2 -2
- package/src/server/links/providers/ServerLinksProvider.ts +2 -2
- package/src/server/rate-limit/{primitives → __tests__}/$rateLimit.spec.ts +1 -1
- package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +2 -2
- package/src/server/swagger/providers/ServerSwaggerProvider.ts +2 -2
- package/src/sms/{providers → __tests__}/LocalSmsProvider.spec.ts +35 -29
- package/src/sms/providers/LocalSmsProvider.ts +13 -24
- package/src/system/{providers → __tests__}/MemoryFileSystemProvider.spec.ts +1 -1
- package/src/system/{providers → __tests__}/MemoryShellProvider.spec.ts +1 -1
- package/src/topic/redis/providers/RedisTopicProvider.ts +2 -2
- package/src/websocket/{services → __tests__}/RoomManager.spec.ts +1 -1
- package/src/websocket/providers/NodeWebSocketServerProvider.ts +2 -2
- package/src/cli/platform/adapters/DockerAdapter.spec.ts +0 -378
- package/src/cli/platform/adapters/DockerAdapter.ts +0 -417
- package/src/cli/platform/services/DockerComposeGenerator.spec.ts +0 -490
- package/src/cli/platform/services/DockerComposeGenerator.ts +0 -353
- package/src/cli/platform/services/DockerSshService.spec.ts +0 -47
- package/src/cli/platform/services/DockerSshService.ts +0 -61
- /package/src/api/audits/{primitives → __tests__}/$audit.spec.ts +0 -0
- /package/src/api/audits/{services → __tests__}/AuditService.spec.ts +0 -0
- /package/src/api/files/{controllers → __tests__}/AdminFileStatsController.spec.ts +0 -0
- /package/src/api/files/{controllers → __tests__}/FileController.spec.ts +0 -0
- /package/src/api/files/{jobs → __tests__}/FileJobs.spec.ts +0 -0
- /package/src/api/files/{services → __tests__}/FileService.spec.ts +0 -0
- /package/src/api/jobs/{primitives → __tests__}/$job-middleware.spec.ts +0 -0
- /package/src/api/parameters/{primitives → __tests__}/$parameter.spec.ts +0 -0
- /package/src/api/users/{primitives → __tests__}/$realm.spec.ts +0 -0
- /package/src/api/users/{controllers → __tests__}/AdminIdentityController.spec.ts +0 -0
- /package/src/api/users/{controllers → __tests__}/AdminSessionController.spec.ts +0 -0
- /package/src/api/users/{controllers → __tests__}/AdminUserController.spec.ts +0 -0
- /package/src/api/users/{services → __tests__}/CredentialService.spec.ts +0 -0
- /package/src/api/users/{providers → __tests__}/RealmProvider.spec.ts +0 -0
- /package/src/api/users/{services → __tests__}/RegistrationService.spec.ts +0 -0
- /package/src/batch/{primitives → __tests__}/$batch.spec.ts +0 -0
- /package/src/batch/{providers → __tests__}/BatchProvider.spec.ts +0 -0
- /package/src/bucket/{primitives → __tests__}/$bucket.spec.ts +0 -0
- /package/src/bucket/{providers → __tests__}/FileStorageProvider.spec.ts +0 -0
- /package/src/bucket/{providers → __tests__}/LocalFileStorageProvider.spec.ts +0 -0
- /package/src/bucket/{providers → __tests__}/MemoryFileStorageProvider.spec.ts +0 -0
- /package/src/cache/core/{primitives → __tests__}/$cache.spec.ts +0 -0
- /package/src/cache/redis/{providers → __tests__}/RedisCacheProvider.spec.ts +0 -0
- /package/src/command/{primitives → __tests__}/$command.spec.ts +0 -0
- /package/src/command/{helpers → __tests__}/Asker.spec.ts +0 -0
- /package/src/command/{helpers → __tests__}/Runner.spec.ts +0 -0
- /package/src/core/{primitives → __tests__}/$context.spec.ts +0 -0
- /package/src/core/{primitives → __tests__}/$env.spec.ts +0 -0
- /package/src/core/{primitives → __tests__}/$hook.spec.ts +0 -0
- /package/src/core/{primitives → __tests__}/$inject.spec.ts +0 -0
- /package/src/core/{primitives → __tests__}/$module.spec.ts +0 -0
- /package/src/core/{providers → __tests__}/CodecManager.spec.ts +0 -0
- /package/src/core/{providers → __tests__}/EventManager.spec.ts +0 -0
- /package/src/core/{providers → __tests__}/StateManager.spec.ts +0 -0
- /package/src/core/{providers → __tests__}/TypeProvider.spec.ts +0 -0
- /package/src/datetime/{primitives → __tests__}/$interval.spec.ts +0 -0
- /package/src/datetime/{providers → __tests__}/DateTimeProvider.spec.ts +0 -0
- /package/src/email/core/{primitives → __tests__}/$email.spec.ts +0 -0
- /package/src/fake/{providers → __tests__}/FakeProvider.spec.ts +0 -0
- /package/src/lock/core/{providers → __tests__}/MemoryLockProvider.spec.ts +0 -0
- /package/src/lock/redis/{providers → __tests__}/RedisLockProvider.spec.ts +0 -0
- /package/src/logger/{primitives → __tests__}/$logger.spec.ts +0 -0
- /package/src/logger/{services → __tests__}/Logger.spec.ts +0 -0
- /package/src/mcp/{primitives → __tests__}/$prompt.spec.ts +0 -0
- /package/src/mcp/{primitives → __tests__}/$resource.spec.ts +0 -0
- /package/src/mcp/{primitives → __tests__}/$tool.spec.ts +0 -0
- /package/src/mcp/{providers → __tests__}/McpServerProvider.spec.ts +0 -0
- /package/src/mcp/{helpers → __tests__}/jsonrpc.spec.ts +0 -0
- /package/src/orm/core/{helpers → __tests__}/parseQueryString.spec.ts +0 -0
- /package/src/queue/core/{primitives → __tests__}/$consumer.spec.ts +0 -0
- /package/src/queue/core/{providers → __tests__}/MemoryQueueProvider.spec.ts +0 -0
- /package/src/queue/core/{providers → __tests__}/WorkerProvider.spec.ts +0 -0
- /package/src/queue/redis/{providers → __tests__}/RedisQueueProvider.spec.ts +0 -0
- /package/src/react/form/{hooks → __tests__}/useForm.browser.spec.tsx +0 -0
- /package/src/react/head/{hooks → __tests__}/useHead.spec.tsx +0 -0
- /package/src/react/i18n/{components → __tests__}/Localize.spec.tsx +0 -0
- /package/src/react/router/{primitives → __tests__}/$page.browser.spec.tsx +0 -0
- /package/src/react/router/{primitives → __tests__}/$page.middleware.spec.tsx +0 -0
- /package/src/react/router/{primitives → __tests__}/$page.spec.tsx +0 -0
- /package/src/react/router/{providers → __tests__}/ReactPreloadProvider.spec.ts +0 -0
- /package/src/react/router/{providers → __tests__}/ReactServerProvider.spec.tsx +0 -0
- /package/src/react/router/{providers → __tests__}/ReactServerTemplateProvider.spec.ts +0 -0
- /package/src/retry/{primitives → __tests__}/$retry.spec.ts +0 -0
- /package/src/retry/{providers → __tests__}/RetryProvider.spec.ts +0 -0
- /package/src/router/{providers → __tests__}/RouterProvider.spec.ts +0 -0
- /package/src/security/{primitives → __tests__}/$issuer.spec.ts +0 -0
- /package/src/security/{primitives → __tests__}/$permission.spec.ts +0 -0
- /package/src/security/{primitives → __tests__}/$role.spec.ts +0 -0
- /package/src/security/{primitives → __tests__}/$serviceAccount.spec.ts +0 -0
- /package/src/security/{providers → __tests__}/SecurityProvider.spec.ts +0 -0
- /package/src/server/cookies/{providers → __tests__}/ServerCookiesProvider.spec.ts +0 -0
- /package/src/server/core/{primitives → __tests__}/$action.spec.ts +0 -0
- /package/src/server/core/{primitives → __tests__}/$middleware.spec.ts +0 -0
- /package/src/server/core/{primitives → __tests__}/$route.spec.ts +0 -0
- /package/src/server/core/{primitives → __tests__}/$sse.spec.ts +0 -0
- /package/src/server/core/{providers → __tests__}/BunHttpServerProvider.bun.spec.ts +0 -0
- /package/src/server/core/{services → __tests__}/HttpClient.spec.ts +0 -0
- /package/src/server/core/{providers → __tests__}/ServerLoggerProvider.spec.ts +0 -0
- /package/src/server/core/{services → __tests__}/UserAgentParser.spec.ts +0 -0
- /package/src/server/cors/{providers → __tests__}/ServerCorsProvider.spec.ts +0 -0
- /package/src/server/etag/{providers → __tests__}/ServerEtagProvider.spec.ts +0 -0
- /package/src/server/health/{providers → __tests__}/ServerHealthProvider.spec.ts +0 -0
- /package/src/server/links/{primitives → __tests__}/$remote.spec.ts +0 -0
- /package/src/server/links/{services → __tests__}/BatchEndpoint.spec.ts +0 -0
- /package/src/server/links/{providers → __tests__}/LinkProvider.spec.ts +0 -0
- /package/src/server/links/{providers → __tests__}/ServerLinksProvider.spec.ts +0 -0
- /package/src/server/metrics/{providers → __tests__}/ServerMetricsProvider.spec.ts +0 -0
- /package/src/server/proxy/{primitives → __tests__}/$proxy.spec.ts +0 -0
- /package/src/server/rate-limit/{providers → __tests__}/ServerRateLimitProvider.spec.ts +0 -0
- /package/src/server/static/{primitives → __tests__}/$serve.spec.ts +0 -0
- /package/src/server/swagger/{primitives → __tests__}/$swagger.spec.ts +0 -0
- /package/src/sms/{primitives → __tests__}/$sms.spec.ts +0 -0
- /package/src/sms/{providers → __tests__}/MemorySmsProvider.spec.ts +0 -0
- /package/src/system/{services → __tests__}/FileDetector.spec.ts +0 -0
- /package/src/system/{providers → __tests__}/NodeFileSystemProvider.spec.ts +0 -0
- /package/src/topic/core/{primitives → __tests__}/$subscriber.spec.ts +0 -0
- /package/src/topic/core/{providers → __tests__}/MemoryTopicProvider.spec.ts +0 -0
- /package/src/topic/redis/{providers → __tests__}/RedisTopicProvider.spec.ts +0 -0
- /package/src/websocket/{primitives → __tests__}/$channel.spec.ts +0 -0
package/dist/orm/core/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./chunk-o8xxKEmq.js";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
|
-
import { $atom, $context, $env, $hook, $inject, $mode, $module, $
|
|
3
|
+
import { $atom, $context, $env, $hook, $inject, $mode, $module, $state, Alepha, AlephaError, KIND, Primitive, Value, createMiddleware, createPagination, createPrimitive, pageQuerySchema, pageSchema, pageSchema as pageSchema$1, t } 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";
|
|
@@ -11,6 +11,7 @@ import { dirname } from "node:path";
|
|
|
11
11
|
import { randomUUID } from "node:crypto";
|
|
12
12
|
import * as pg from "drizzle-orm/sqlite-core";
|
|
13
13
|
import { check, foreignKey, index, sqliteTable, sqliteView, unique, uniqueIndex } from "drizzle-orm/sqlite-core";
|
|
14
|
+
import { currentUserAtom } from "alepha/security";
|
|
14
15
|
import { isSQLWrapper as isSQLWrapper$1 } from "drizzle-orm/sql/sql";
|
|
15
16
|
export * from "drizzle-orm/pg-core";
|
|
16
17
|
//#region ../../src/orm/core/errors/DbError.ts
|
|
@@ -63,7 +64,7 @@ var DrizzleKitProvider = class {
|
|
|
63
64
|
}
|
|
64
65
|
if (this.alepha.isTest()) {
|
|
65
66
|
const { statements } = await this.generateMigration(provider);
|
|
66
|
-
await this.
|
|
67
|
+
await this.executeStatements(statements.map((s) => s.replace(/^CREATE SCHEMA /i, "CREATE SCHEMA IF NOT EXISTS ")), provider);
|
|
67
68
|
return;
|
|
68
69
|
}
|
|
69
70
|
const now = this.dateTime.nowMillis();
|
|
@@ -79,9 +80,9 @@ var DrizzleKitProvider = class {
|
|
|
79
80
|
} catch (error) {
|
|
80
81
|
this.log.debug("Push sync not available, falling back to migration generation", { error });
|
|
81
82
|
const { statements } = await this.generateMigration(provider);
|
|
82
|
-
await this.
|
|
83
|
+
await this.executeStatementsLenient(statements, provider);
|
|
83
84
|
}
|
|
84
|
-
this.log.info(`
|
|
85
|
+
this.log.info(`Synchronization of '${provider.name}' OK [${this.dateTime.nowMillis() - now}ms]`);
|
|
85
86
|
}
|
|
86
87
|
/**
|
|
87
88
|
* Generate SQL migration statements by diffing two schema states.
|
|
@@ -180,10 +181,10 @@ var DrizzleKitProvider = class {
|
|
|
180
181
|
hasDataLoss: false
|
|
181
182
|
};
|
|
182
183
|
let result;
|
|
183
|
-
if (provider.dialect === "sqlite") result = await
|
|
184
|
+
if (provider.dialect === "sqlite") result = await kit.pushSQLiteSchema(models, provider.db);
|
|
184
185
|
else {
|
|
185
186
|
const wrappedDb = this.wrapDbForDrizzleKit(provider.db);
|
|
186
|
-
result = await
|
|
187
|
+
result = await kit.pushSchema(models, wrappedDb, [provider.schema]);
|
|
187
188
|
}
|
|
188
189
|
return {
|
|
189
190
|
statements: result.statementsToExecute,
|
|
@@ -192,8 +193,8 @@ var DrizzleKitProvider = class {
|
|
|
192
193
|
};
|
|
193
194
|
}
|
|
194
195
|
async pushSqlite(kit, models, provider) {
|
|
195
|
-
const
|
|
196
|
-
await this.
|
|
196
|
+
const { statementsToExecute } = await kit.pushSQLiteSchema(models, provider.db);
|
|
197
|
+
await this.executeStatements(statementsToExecute, provider);
|
|
197
198
|
}
|
|
198
199
|
/**
|
|
199
200
|
* Push schema changes to PostgreSQL using Drizzle Kit's pushSchema with schema filters.
|
|
@@ -201,39 +202,32 @@ var DrizzleKitProvider = class {
|
|
|
201
202
|
async pushPostgres(kit, models, provider) {
|
|
202
203
|
if (provider.schema !== "public") await this.createSchemaIfNotExists(provider, provider.schema);
|
|
203
204
|
const wrappedDb = this.wrapDbForDrizzleKit(provider.db);
|
|
204
|
-
const
|
|
205
|
-
await this.
|
|
205
|
+
const { statementsToExecute } = await kit.pushSchema(models, wrappedDb, [provider.schema]);
|
|
206
|
+
await this.executeStatements(statementsToExecute, provider);
|
|
206
207
|
}
|
|
207
208
|
/**
|
|
208
|
-
*
|
|
209
|
+
* Execute a list of SQL statements against the provider.
|
|
209
210
|
*/
|
|
210
|
-
async
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
if (upper.startsWith("DROP SCHEMA") || upper.startsWith("DROP TABLE")) {
|
|
214
|
-
this.log.warn("Skipping destructive statement", { statement: s });
|
|
215
|
-
return false;
|
|
216
|
-
}
|
|
217
|
-
return true;
|
|
218
|
-
});
|
|
219
|
-
if (result.hasDataLoss) this.log.warn("Push would cause data loss", {
|
|
220
|
-
warnings: result.warnings,
|
|
221
|
-
statements: result.statementsToExecute
|
|
222
|
-
});
|
|
223
|
-
if (safe.length > 0) {
|
|
224
|
-
this.log.debug(`Pushing ${safe.length} statements ...`, { statements: safe });
|
|
225
|
-
for (const statement of safe) await provider.execute(sql$1.raw(statement));
|
|
226
|
-
}
|
|
211
|
+
async executeStatements(statements, provider) {
|
|
212
|
+
if (statements.length > 0) this.log.debug(`Executing ${statements.length} statements ...`, { statements });
|
|
213
|
+
for (const statement of statements) await provider.execute(sql$1.raw(statement));
|
|
227
214
|
}
|
|
228
215
|
/**
|
|
229
|
-
* Execute
|
|
230
|
-
*
|
|
216
|
+
* Execute SQL statements, ignoring "already exists" errors.
|
|
217
|
+
*
|
|
218
|
+
* Used by the fallback migration path where push may have partially
|
|
219
|
+
* applied changes before erroring, leaving some objects already created.
|
|
231
220
|
*/
|
|
232
|
-
async
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
if (upper.startsWith("DROP SCHEMA") || upper.startsWith("CREATE SCHEMA")) continue;
|
|
221
|
+
async executeStatementsLenient(statements, provider) {
|
|
222
|
+
if (statements.length > 0) this.log.debug(`Executing ${statements.length} statements (lenient) ...`, { statements });
|
|
223
|
+
for (const statement of statements) try {
|
|
236
224
|
await provider.execute(sql$1.raw(statement));
|
|
225
|
+
} catch (error) {
|
|
226
|
+
if ((error?.message ?? "").includes("already exists")) {
|
|
227
|
+
this.log.debug(`Skipped (already exists): ${statement.slice(0, 80)}`);
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
throw error;
|
|
237
231
|
}
|
|
238
232
|
}
|
|
239
233
|
async createSchemaIfNotExists(provider, schemaName) {
|
|
@@ -264,30 +258,6 @@ var DrizzleKitProvider = class {
|
|
|
264
258
|
} });
|
|
265
259
|
}
|
|
266
260
|
/**
|
|
267
|
-
* Suppress Drizzle Kit's spinner output during a callback.
|
|
268
|
-
*
|
|
269
|
-
* Drizzle Kit uses hanji's renderWithTask with a setInterval-based spinner.
|
|
270
|
-
* If the wrapped task throws, the interval is never cleared and leaks
|
|
271
|
-
* spinner frames to stdout. We keep the filter active until the next
|
|
272
|
-
* tick after the promise settles to catch any straggling writes.
|
|
273
|
-
*/
|
|
274
|
-
async muteSpinner(fn) {
|
|
275
|
-
const originalWrite = process.stdout.write;
|
|
276
|
-
const filter = (chunk, ...args) => {
|
|
277
|
-
const str = typeof chunk === "string" ? chunk : chunk?.toString?.() ?? "";
|
|
278
|
-
if (str.includes("Pulling schema from database")) return true;
|
|
279
|
-
if (str.includes("\x1B[1A")) return true;
|
|
280
|
-
return originalWrite.call(process.stdout, chunk, ...args);
|
|
281
|
-
};
|
|
282
|
-
process.stdout.write = filter;
|
|
283
|
-
try {
|
|
284
|
-
return await fn();
|
|
285
|
-
} finally {
|
|
286
|
-
await new Promise((r) => setTimeout(r, 200));
|
|
287
|
-
process.stdout.write = originalWrite;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
261
|
* Try to load the official Drizzle Kit API.
|
|
292
262
|
*/
|
|
293
263
|
importDrizzleKit() {
|
|
@@ -528,6 +498,7 @@ const PG_IDENTITY = Symbol.for("Alepha.Postgres.Identity");
|
|
|
528
498
|
const PG_ENUM = Symbol.for("Alepha.Postgres.Enum");
|
|
529
499
|
const PG_REF = Symbol.for("Alepha.Postgres.Ref");
|
|
530
500
|
const PG_GENERATED = Symbol.for("Alepha.Postgres.Generated");
|
|
501
|
+
const PG_ORGANIZATION = Symbol.for("Alepha.Postgres.Organization");
|
|
531
502
|
/**
|
|
532
503
|
* @deprecated Use `PG_IDENTITY` instead.
|
|
533
504
|
*/
|
|
@@ -732,6 +703,13 @@ var ModelBuilder = class {
|
|
|
732
703
|
if ("where" in indexDef && indexDef.where) idx = idx.where(indexDef.where);
|
|
733
704
|
configs.push(idx);
|
|
734
705
|
}
|
|
706
|
+
} else if ("expressions" in indexDef) {
|
|
707
|
+
const parts = indexDef.expressions(self);
|
|
708
|
+
if (parts.length > 0) {
|
|
709
|
+
let idx = indexDef.unique ? builders.uniqueIndex(indexDef.name).on(...parts) : builders.index(indexDef.name).on(...parts);
|
|
710
|
+
if ("where" in indexDef && indexDef.where) idx = idx.where(indexDef.where);
|
|
711
|
+
configs.push(idx);
|
|
712
|
+
}
|
|
735
713
|
} else if ("columns" in indexDef) {
|
|
736
714
|
const columnNames = indexDef.columns.map((col) => this.toColumnName(col));
|
|
737
715
|
const indexName = indexDef.name || `${entity.name}_${columnNames.join("_")}_idx`;
|
|
@@ -965,7 +943,7 @@ const bunSqliteOptions = $atom({
|
|
|
965
943
|
var BunSqliteProvider = class extends DatabaseProvider {
|
|
966
944
|
env = $env(envSchema$1);
|
|
967
945
|
builder = $inject(SqliteModelBuilder);
|
|
968
|
-
options = $
|
|
946
|
+
options = $state(bunSqliteOptions);
|
|
969
947
|
sqlite;
|
|
970
948
|
bunDb;
|
|
971
949
|
get name() {
|
|
@@ -1152,7 +1130,7 @@ const nodeSqliteOptions = $atom({
|
|
|
1152
1130
|
var NodeSqliteProvider = class NodeSqliteProvider extends DatabaseProvider {
|
|
1153
1131
|
env = $env(envSchema);
|
|
1154
1132
|
builder = $inject(SqliteModelBuilder);
|
|
1155
|
-
options = $
|
|
1133
|
+
options = $state(nodeSqliteOptions);
|
|
1156
1134
|
sqlite;
|
|
1157
1135
|
drizzleDb;
|
|
1158
1136
|
get name() {
|
|
@@ -1214,7 +1192,7 @@ var NodeSqliteProvider = class NodeSqliteProvider extends DatabaseProvider {
|
|
|
1214
1192
|
this.sqlite = new DatabaseSync(filepath);
|
|
1215
1193
|
this.initDrizzle();
|
|
1216
1194
|
if (!this.alepha.isServerless()) await this.migrate();
|
|
1217
|
-
this.log.info(`
|
|
1195
|
+
this.log.info(`Sqlite connection OK`, { at: filepath });
|
|
1218
1196
|
}
|
|
1219
1197
|
});
|
|
1220
1198
|
/**
|
|
@@ -1856,8 +1834,10 @@ var QueryManager = class {
|
|
|
1856
1834
|
if (operator?.isNotNull != null) conditions.push(isNotNull(column));
|
|
1857
1835
|
if (operator?.like != null) conditions.push(like(column, encodeValue(operator.like)));
|
|
1858
1836
|
if (operator?.notLike != null) conditions.push(notLike(column, encodeValue(operator.notLike)));
|
|
1859
|
-
if (operator?.ilike != null) conditions.push(
|
|
1860
|
-
|
|
1837
|
+
if (operator?.ilike != null) if (dialect === "sqlite") conditions.push(sql$1`LOWER(${column}) LIKE LOWER(${encodeValue(operator.ilike)})`);
|
|
1838
|
+
else conditions.push(ilike(column, encodeValue(operator.ilike)));
|
|
1839
|
+
if (operator?.notIlike != null) if (dialect === "sqlite") conditions.push(sql$1`LOWER(${column}) NOT LIKE LOWER(${encodeValue(operator.notIlike)})`);
|
|
1840
|
+
else conditions.push(notIlike(column, encodeValue(operator.notIlike)));
|
|
1861
1841
|
if (operator?.contains != null) {
|
|
1862
1842
|
const escapedValue = String(operator.contains).replace(/\\/g, "\\\\").replace(/%/g, "\\%").replace(/_/g, "\\_");
|
|
1863
1843
|
if (dialect === "sqlite") conditions.push(sql$1`LOWER(${column}) LIKE LOWER(${encodeValue(`%${escapedValue}%`)}) ESCAPE '\\'`);
|
|
@@ -2134,7 +2114,7 @@ var Repository = class Repository {
|
|
|
2134
2114
|
const builder = query.distinct ? this.rawSelectDistinct(opts, query.distinct) : this.rawSelect(opts);
|
|
2135
2115
|
const joins = [];
|
|
2136
2116
|
if (query.with) this.relationManager.buildJoins(this.provider, builder, joins, query.with, this.table);
|
|
2137
|
-
const where = this.withDeletedAt(query.where ?? {}, opts);
|
|
2117
|
+
const where = this.withOrganization(this.withDeletedAt(query.where ?? {}, opts));
|
|
2138
2118
|
builder.where(() => this.toSQL(where, joins));
|
|
2139
2119
|
if (query.offset) {
|
|
2140
2120
|
builder.offset(query.offset);
|
|
@@ -2230,7 +2210,7 @@ var Repository = class Repository {
|
|
|
2230
2210
|
return it;
|
|
2231
2211
|
}));
|
|
2232
2212
|
if (opts.count) {
|
|
2233
|
-
const countWhere = this.withDeletedAt(query.where ?? {}, opts);
|
|
2213
|
+
const countWhere = this.withOrganization(this.withDeletedAt(query.where ?? {}, opts));
|
|
2234
2214
|
tasks.push(this.db.$count(this.table, this.toSQL(countWhere)).then((it) => {
|
|
2235
2215
|
timers.count = this.dateTimeProvider.nowMillis() - timers.count;
|
|
2236
2216
|
return it;
|
|
@@ -2279,6 +2259,7 @@ var Repository = class Repository {
|
|
|
2279
2259
|
*/
|
|
2280
2260
|
async create(data, opts = {}) {
|
|
2281
2261
|
this.assertWritable();
|
|
2262
|
+
this.stampOrganization(data);
|
|
2282
2263
|
await this.alepha.events.emit("repository:create:before", {
|
|
2283
2264
|
tableName: this.tableName,
|
|
2284
2265
|
data
|
|
@@ -2308,6 +2289,7 @@ var Repository = class Repository {
|
|
|
2308
2289
|
async createMany(values, opts = {}) {
|
|
2309
2290
|
this.assertWritable();
|
|
2310
2291
|
if (values.length === 0) return [];
|
|
2292
|
+
for (const value of values) this.stampOrganization(value);
|
|
2311
2293
|
await this.alepha.events.emit("repository:create:before", {
|
|
2312
2294
|
tableName: this.tableName,
|
|
2313
2295
|
data: values
|
|
@@ -2362,6 +2344,7 @@ var Repository = class Repository {
|
|
|
2362
2344
|
*/
|
|
2363
2345
|
async upsert(data, opts = {}) {
|
|
2364
2346
|
this.assertWritable();
|
|
2347
|
+
this.stampOrganization(data);
|
|
2365
2348
|
await this.alepha.events.emit("repository:create:before", {
|
|
2366
2349
|
tableName: this.tableName,
|
|
2367
2350
|
data
|
|
@@ -2406,7 +2389,7 @@ var Repository = class Repository {
|
|
|
2406
2389
|
let row = data;
|
|
2407
2390
|
const updatedAtField = getAttrFields(this.entity.schema, PG_UPDATED_AT)?.[0];
|
|
2408
2391
|
if (updatedAtField) row[updatedAtField.key] = opts.now ?? this.dateTimeProvider.nowISOString();
|
|
2409
|
-
where = this.withDeletedAt(where, opts);
|
|
2392
|
+
where = this.withOrganization(this.withDeletedAt(where, opts));
|
|
2410
2393
|
row = this.cast(row, false);
|
|
2411
2394
|
delete row[this.id.key];
|
|
2412
2395
|
const response = await this.rawUpdate(opts).set(row).where(this.toSQL(where)).returning(this.table).catch((error) => {
|
|
@@ -2494,7 +2477,7 @@ var Repository = class Repository {
|
|
|
2494
2477
|
});
|
|
2495
2478
|
const updatedAtField = getAttrFields(this.entity.schema, PG_UPDATED_AT)?.[0];
|
|
2496
2479
|
if (updatedAtField) data[updatedAtField.key] = opts.now ?? this.dateTimeProvider.nowISOString();
|
|
2497
|
-
where = this.withDeletedAt(where, opts);
|
|
2480
|
+
where = this.withOrganization(this.withDeletedAt(where, opts));
|
|
2498
2481
|
data = this.cast(data, false);
|
|
2499
2482
|
try {
|
|
2500
2483
|
const entities = await this.rawUpdate(opts).set(data).where(this.toSQL(where)).returning();
|
|
@@ -2518,6 +2501,7 @@ var Repository = class Repository {
|
|
|
2518
2501
|
this.assertWritable();
|
|
2519
2502
|
const deletedAt = this.deletedAt();
|
|
2520
2503
|
if (deletedAt && !opts.force) return await this.updateMany(where, { [deletedAt.key]: opts.now ?? this.dateTimeProvider.nowISOString() }, opts);
|
|
2504
|
+
where = this.withOrganization(where);
|
|
2521
2505
|
await this.alepha.events.emit("repository:delete:before", {
|
|
2522
2506
|
tableName: this.tableName,
|
|
2523
2507
|
where
|
|
@@ -2581,7 +2565,7 @@ var Repository = class Repository {
|
|
|
2581
2565
|
* Count entities.
|
|
2582
2566
|
*/
|
|
2583
2567
|
async count(where = {}, opts = {}) {
|
|
2584
|
-
where = this.withDeletedAt(where, opts);
|
|
2568
|
+
where = this.withOrganization(this.withDeletedAt(where, opts));
|
|
2585
2569
|
return (opts.tx === null ? this.provider.db : opts.tx ?? this.db).$count(this.table, this.toSQL(where));
|
|
2586
2570
|
}
|
|
2587
2571
|
/**
|
|
@@ -2616,7 +2600,7 @@ var Repository = class Repository {
|
|
|
2616
2600
|
}
|
|
2617
2601
|
let builder = (opts.tx === null ? this.provider.db : opts.tx ?? this.db).select(flatFields).from(this.table);
|
|
2618
2602
|
if (query.where) {
|
|
2619
|
-
const where = this.withDeletedAt(query.where, opts);
|
|
2603
|
+
const where = this.withOrganization(this.withDeletedAt(query.where, opts));
|
|
2620
2604
|
builder = builder.where(this.toSQL(where));
|
|
2621
2605
|
}
|
|
2622
2606
|
if (query.groupBy) builder = builder.groupBy(...query.groupBy.map((key) => this.col(key)));
|
|
@@ -2706,6 +2690,24 @@ var Repository = class Repository {
|
|
|
2706
2690
|
const deletedAtFields = getAttrFields(this.entity.schema, PG_DELETED_AT);
|
|
2707
2691
|
if (deletedAtFields.length > 0) return deletedAtFields[0];
|
|
2708
2692
|
}
|
|
2693
|
+
withOrganization(where) {
|
|
2694
|
+
const orgField = this.organizationField();
|
|
2695
|
+
if (!orgField) return where;
|
|
2696
|
+
const user = this.alepha.store.get(currentUserAtom);
|
|
2697
|
+
if (!user?.organization) return where;
|
|
2698
|
+
return { and: [where, { or: [{ [orgField.key]: { eq: user.organization } }, { [orgField.key]: { isNull: true } }] }] };
|
|
2699
|
+
}
|
|
2700
|
+
stampOrganization(data) {
|
|
2701
|
+
const orgField = this.organizationField();
|
|
2702
|
+
if (!orgField) return;
|
|
2703
|
+
if (data[orgField.key] != null) return;
|
|
2704
|
+
const user = this.alepha.store.get(currentUserAtom);
|
|
2705
|
+
if (user?.organization) data[orgField.key] = user.organization;
|
|
2706
|
+
}
|
|
2707
|
+
organizationField() {
|
|
2708
|
+
const fields = getAttrFields(this.entity.schema, PG_ORGANIZATION);
|
|
2709
|
+
if (fields.length > 0) return fields[0];
|
|
2710
|
+
}
|
|
2709
2711
|
/**
|
|
2710
2712
|
* Convert something to valid Pg Insert Value.
|
|
2711
2713
|
*/
|
|
@@ -3267,6 +3269,14 @@ var DatabaseTypeProvider = class {
|
|
|
3267
3269
|
*/
|
|
3268
3270
|
deletedAt = (options) => pgAttr(t.optional(t.datetime(options)), PG_DELETED_AT);
|
|
3269
3271
|
/**
|
|
3272
|
+
* Creates an organization column for multi-tenant row scoping.
|
|
3273
|
+
*
|
|
3274
|
+
* When present, queries are automatically filtered by the current user's organization.
|
|
3275
|
+
* Rows with `null` organization are considered global and visible to everyone.
|
|
3276
|
+
* On create, the column is auto-stamped with the current user's organization.
|
|
3277
|
+
*/
|
|
3278
|
+
organization = () => pgAttr(t.optional(t.uuid()), PG_ORGANIZATION);
|
|
3279
|
+
/**
|
|
3270
3280
|
* Creates a Postgres ENUM type.
|
|
3271
3281
|
*
|
|
3272
3282
|
* > By default, `t.enum()` is mapped to a TEXT column in Postgres.
|
|
@@ -3468,6 +3478,6 @@ const AlephaOrm = $module({
|
|
|
3468
3478
|
}
|
|
3469
3479
|
});
|
|
3470
3480
|
//#endregion
|
|
3471
|
-
export { $entity, $repository, $seed, $sequence, $transactional, $view, AlephaOrm, BunSqliteProvider, CloudflareD1Provider, DatabaseProvider, DatabaseTypeProvider, DbCacheProvider, DbColumnNotFoundError, DbConflictError, DbConnectionError, DbDeadlockError, DbEntityNotFoundError, DbError, DbForeignKeyError, DbMigrationError, DbMigrationMode, DbNotNullError, DbTableNotFoundError, DbVersionMismatchError, DrizzleKitProvider, EntityPrimitive, ModelBuilder, NodeSqliteProvider, PG_CREATED_AT, PG_DEFAULT, PG_DELETED_AT, PG_ENUM, PG_GENERATED, PG_IDENTITY, PG_PRIMARY_KEY, PG_REF, PG_SERIAL, PG_UPDATED_AT, PG_VERSION, Repository, RepositoryProvider, SequencePrimitive, SqliteProvider, ViewPrimitive, buildQueryString, bunSqliteOptions, databaseEnvSchema, db, drizzle, getAttrFields, insertSchema, legacyIdSchema, nodeSqliteOptions, pageQuerySchema, pageSchema, parseQueryString, pgAttr, schema, sql, updateSchema };
|
|
3481
|
+
export { $entity, $repository, $seed, $sequence, $transactional, $view, AlephaOrm, BunSqliteProvider, CloudflareD1Provider, DatabaseProvider, DatabaseTypeProvider, DbCacheProvider, DbColumnNotFoundError, DbConflictError, DbConnectionError, DbDeadlockError, DbEntityNotFoundError, DbError, DbForeignKeyError, DbMigrationError, DbMigrationMode, DbNotNullError, DbTableNotFoundError, DbVersionMismatchError, DrizzleKitProvider, EntityPrimitive, ModelBuilder, NodeSqliteProvider, PG_CREATED_AT, PG_DEFAULT, PG_DELETED_AT, PG_ENUM, PG_GENERATED, PG_IDENTITY, PG_ORGANIZATION, PG_PRIMARY_KEY, PG_REF, PG_SERIAL, PG_UPDATED_AT, PG_VERSION, Repository, RepositoryProvider, SequencePrimitive, SqliteProvider, ViewPrimitive, buildQueryString, bunSqliteOptions, databaseEnvSchema, db, drizzle, getAttrFields, insertSchema, legacyIdSchema, nodeSqliteOptions, pageQuerySchema, pageSchema, parseQueryString, pgAttr, schema, sql, updateSchema };
|
|
3472
3482
|
|
|
3473
3483
|
//# sourceMappingURL=index.js.map
|