alepha 0.15.1 → 0.15.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/README.md +68 -80
- package/dist/api/audits/index.d.ts +10 -33
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/audits/index.js +10 -33
- package/dist/api/audits/index.js.map +1 -1
- package/dist/api/files/index.d.ts +10 -3
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +10 -3
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.d.ts +162 -155
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/jobs/index.js +10 -3
- package/dist/api/jobs/index.js.map +1 -1
- package/dist/api/keys/index.d.ts +413 -0
- package/dist/api/keys/index.d.ts.map +1 -0
- package/dist/api/keys/index.js +476 -0
- package/dist/api/keys/index.js.map +1 -0
- package/dist/api/notifications/index.d.ts +10 -4
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/notifications/index.js +10 -4
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/parameters/index.d.ts +43 -50
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/parameters/index.js +30 -37
- package/dist/api/parameters/index.js.map +1 -1
- package/dist/api/users/index.d.ts +1081 -760
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +2539 -218
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +138 -132
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/api/verifications/index.js +12 -4
- package/dist/api/verifications/index.js.map +1 -1
- package/dist/batch/index.d.ts +20 -40
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/batch/index.js +31 -44
- package/dist/batch/index.js.map +1 -1
- package/dist/bucket/index.d.ts +440 -8
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/bucket/index.js +1861 -12
- package/dist/bucket/index.js.map +1 -1
- package/dist/cache/core/index.d.ts +179 -7
- package/dist/cache/core/index.d.ts.map +1 -1
- package/dist/cache/core/index.js +213 -7
- package/dist/cache/core/index.js.map +1 -1
- package/dist/cache/redis/index.d.ts +1 -0
- package/dist/cache/redis/index.d.ts.map +1 -1
- package/dist/cache/redis/index.js +4 -0
- package/dist/cache/redis/index.js.map +1 -1
- package/dist/cli/index.d.ts +638 -5645
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2550 -368
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +203 -45
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +2060 -71
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +70 -40
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +34 -13
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +90 -40
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +70 -40
- package/dist/core/index.native.js.map +1 -1
- package/dist/datetime/index.d.ts +15 -0
- package/dist/datetime/index.d.ts.map +1 -1
- package/dist/datetime/index.js +15 -0
- package/dist/datetime/index.js.map +1 -1
- package/dist/email/index.d.ts +323 -20
- package/dist/email/index.d.ts.map +1 -1
- package/dist/email/index.js +1857 -7
- package/dist/email/index.js.map +1 -1
- package/dist/fake/index.d.ts +90 -8
- package/dist/fake/index.d.ts.map +1 -1
- package/dist/fake/index.js +91 -20
- package/dist/fake/index.js.map +1 -1
- package/dist/lock/core/index.d.ts +11 -4
- package/dist/lock/core/index.d.ts.map +1 -1
- package/dist/lock/core/index.js +11 -4
- package/dist/lock/core/index.js.map +1 -1
- package/dist/logger/index.d.ts +17 -66
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +14 -63
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +10 -30
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +12 -35
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/index.browser.js +3 -3
- package/dist/orm/index.browser.js.map +1 -1
- package/dist/orm/index.bun.js +39 -20
- package/dist/orm/index.bun.js.map +1 -1
- package/dist/orm/index.d.ts +517 -540
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +58 -71
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +18 -10
- package/dist/queue/core/index.d.ts.map +1 -1
- package/dist/queue/core/index.js +14 -6
- package/dist/queue/core/index.js.map +1 -1
- package/dist/react/auth/index.browser.js +108 -0
- package/dist/react/auth/index.browser.js.map +1 -0
- package/dist/react/auth/index.d.ts +100 -0
- package/dist/react/auth/index.d.ts.map +1 -0
- package/dist/react/auth/index.js +145 -0
- package/dist/react/auth/index.js.map +1 -0
- package/dist/react/core/index.d.ts +469 -0
- package/dist/react/core/index.d.ts.map +1 -0
- package/dist/react/core/index.js +464 -0
- package/dist/react/core/index.js.map +1 -0
- package/dist/react/form/index.d.ts +232 -0
- package/dist/react/form/index.d.ts.map +1 -0
- package/dist/react/form/index.js +432 -0
- package/dist/react/form/index.js.map +1 -0
- package/dist/react/head/index.browser.js +423 -0
- package/dist/react/head/index.browser.js.map +1 -0
- package/dist/react/head/index.d.ts +288 -0
- package/dist/react/head/index.d.ts.map +1 -0
- package/dist/react/head/index.js +465 -0
- package/dist/react/head/index.js.map +1 -0
- package/dist/react/i18n/index.d.ts +175 -0
- package/dist/react/i18n/index.d.ts.map +1 -0
- package/dist/react/i18n/index.js +224 -0
- package/dist/react/i18n/index.js.map +1 -0
- package/dist/react/router/index.browser.js +1974 -0
- package/dist/react/router/index.browser.js.map +1 -0
- package/dist/react/router/index.d.ts +1956 -0
- package/dist/react/router/index.d.ts.map +1 -0
- package/dist/react/router/index.js +4722 -0
- package/dist/react/router/index.js.map +1 -0
- package/dist/react/websocket/index.d.ts +117 -0
- package/dist/react/websocket/index.d.ts.map +1 -0
- package/dist/react/websocket/index.js +107 -0
- package/dist/react/websocket/index.js.map +1 -0
- package/dist/redis/index.bun.js +4 -0
- package/dist/redis/index.bun.js.map +1 -1
- package/dist/redis/index.d.ts +41 -44
- package/dist/redis/index.d.ts.map +1 -1
- package/dist/redis/index.js +16 -25
- package/dist/redis/index.js.map +1 -1
- package/dist/retry/index.d.ts +11 -2
- package/dist/retry/index.d.ts.map +1 -1
- package/dist/retry/index.js +11 -2
- package/dist/retry/index.js.map +1 -1
- package/dist/scheduler/index.d.ts +11 -2
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +11 -2
- package/dist/scheduler/index.js.map +1 -1
- package/dist/security/index.d.ts +140 -49
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +164 -32
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +12 -7
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +12 -7
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cache/index.d.ts +7 -22
- package/dist/server/cache/index.d.ts.map +1 -1
- package/dist/server/cache/index.js +7 -22
- package/dist/server/cache/index.js.map +1 -1
- package/dist/server/compress/index.d.ts +10 -2
- package/dist/server/compress/index.d.ts.map +1 -1
- package/dist/server/compress/index.js +10 -2
- package/dist/server/compress/index.js.map +1 -1
- package/dist/server/cookies/index.d.ts +40 -16
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/cookies/index.js +7 -5
- package/dist/server/cookies/index.js.map +1 -1
- package/dist/server/core/index.d.ts +124 -23
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +231 -14
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +13 -23
- package/dist/server/cors/index.d.ts.map +1 -1
- package/dist/server/cors/index.js +7 -21
- package/dist/server/cors/index.js.map +1 -1
- package/dist/server/health/index.d.ts +8 -2
- package/dist/server/health/index.d.ts.map +1 -1
- package/dist/server/health/index.js +8 -2
- package/dist/server/health/index.js.map +1 -1
- package/dist/server/helmet/index.d.ts +11 -3
- package/dist/server/helmet/index.d.ts.map +1 -1
- package/dist/server/helmet/index.js +11 -3
- package/dist/server/helmet/index.js.map +1 -1
- package/dist/server/links/index.d.ts +11 -6
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +11 -6
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts +10 -3
- package/dist/server/metrics/index.d.ts.map +1 -1
- package/dist/server/metrics/index.js +10 -3
- package/dist/server/metrics/index.js.map +1 -1
- package/dist/server/multipart/index.d.ts +9 -3
- package/dist/server/multipart/index.d.ts.map +1 -1
- package/dist/server/multipart/index.js +9 -3
- package/dist/server/multipart/index.js.map +1 -1
- package/dist/server/proxy/index.d.ts +8 -2
- package/dist/server/proxy/index.d.ts.map +1 -1
- package/dist/server/proxy/index.js +8 -2
- package/dist/server/proxy/index.js.map +1 -1
- package/dist/server/rate-limit/index.d.ts +30 -35
- package/dist/server/rate-limit/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.js +18 -55
- package/dist/server/rate-limit/index.js.map +1 -1
- package/dist/server/static/index.d.ts +137 -4
- package/dist/server/static/index.d.ts.map +1 -1
- package/dist/server/static/index.js +1853 -5
- package/dist/server/static/index.js.map +1 -1
- package/dist/server/swagger/index.d.ts +309 -6
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js +1854 -6
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +309 -7
- package/dist/sms/index.d.ts.map +1 -1
- package/dist/sms/index.js +1856 -7
- package/dist/sms/index.js.map +1 -1
- package/dist/system/index.browser.js +1218 -0
- package/dist/system/index.browser.js.map +1 -0
- package/dist/{file → system}/index.d.ts +343 -16
- package/dist/system/index.d.ts.map +1 -0
- package/dist/{file → system}/index.js +419 -22
- package/dist/system/index.js.map +1 -0
- package/dist/thread/index.d.ts +11 -2
- package/dist/thread/index.d.ts.map +1 -1
- package/dist/thread/index.js +11 -2
- package/dist/thread/index.js.map +1 -1
- package/dist/topic/core/index.d.ts +12 -5
- package/dist/topic/core/index.d.ts.map +1 -1
- package/dist/topic/core/index.js +12 -5
- package/dist/topic/core/index.js.map +1 -1
- package/dist/vite/index.d.ts +5 -6272
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +23 -10
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.d.ts +12 -8
- package/dist/websocket/index.d.ts.map +1 -1
- package/dist/websocket/index.js +12 -8
- package/dist/websocket/index.js.map +1 -1
- package/package.json +82 -11
- package/src/api/audits/index.ts +10 -33
- package/src/api/files/__tests__/$bucket.spec.ts +1 -1
- package/src/api/files/controllers/AdminFileStatsController.spec.ts +1 -1
- package/src/api/files/controllers/FileController.spec.ts +1 -1
- package/src/api/files/index.ts +10 -3
- package/src/api/files/jobs/FileJobs.spec.ts +1 -1
- package/src/api/files/services/FileService.spec.ts +1 -1
- package/src/api/jobs/index.ts +10 -3
- package/src/api/keys/controllers/AdminApiKeyController.ts +75 -0
- package/src/api/keys/controllers/ApiKeyController.ts +103 -0
- package/src/api/keys/entities/apiKeyEntity.ts +41 -0
- package/src/api/keys/index.ts +49 -0
- package/src/api/keys/schemas/adminApiKeyQuerySchema.ts +7 -0
- package/src/api/keys/schemas/adminApiKeyResourceSchema.ts +17 -0
- package/src/api/keys/schemas/createApiKeyBodySchema.ts +7 -0
- package/src/api/keys/schemas/createApiKeyResponseSchema.ts +11 -0
- package/src/api/keys/schemas/listApiKeyResponseSchema.ts +15 -0
- package/src/api/keys/schemas/revokeApiKeyParamsSchema.ts +5 -0
- package/src/api/keys/schemas/revokeApiKeyResponseSchema.ts +5 -0
- package/src/api/keys/services/ApiKeyService.spec.ts +553 -0
- package/src/api/keys/services/ApiKeyService.ts +306 -0
- package/src/api/logs/TODO.md +55 -0
- package/src/api/notifications/index.ts +10 -4
- package/src/api/parameters/index.ts +9 -30
- package/src/api/parameters/primitives/$config.ts +12 -4
- package/src/api/parameters/services/ConfigStore.ts +9 -3
- package/src/api/users/__tests__/ApiKeys-integration.spec.ts +1035 -0
- package/src/api/users/__tests__/ApiKeys.spec.ts +401 -0
- package/src/api/users/index.ts +14 -3
- package/src/api/users/primitives/$realm.ts +33 -5
- package/src/api/users/providers/RealmProvider.ts +1 -12
- package/src/api/users/services/SessionService.ts +1 -1
- package/src/api/verifications/controllers/VerificationController.ts +2 -0
- package/src/api/verifications/index.ts +10 -4
- package/src/batch/index.ts +9 -36
- package/src/batch/primitives/$batch.ts +0 -8
- package/src/batch/providers/BatchProvider.ts +29 -2
- package/src/bucket/__tests__/shared.ts +1 -1
- package/src/bucket/index.ts +13 -6
- package/src/bucket/primitives/$bucket.ts +1 -1
- package/src/bucket/providers/LocalFileStorageProvider.ts +1 -1
- package/src/bucket/providers/MemoryFileStorageProvider.ts +1 -1
- package/src/cache/core/__tests__/shared.ts +30 -0
- package/src/cache/core/index.ts +11 -6
- package/src/cache/core/primitives/$cache.spec.ts +5 -0
- package/src/cache/core/providers/CacheProvider.ts +17 -0
- package/src/cache/core/providers/MemoryCacheProvider.ts +300 -1
- package/src/cache/redis/__tests__/cache-redis.spec.ts +5 -0
- package/src/cache/redis/providers/RedisCacheProvider.ts +9 -0
- package/src/cli/apps/AlephaCli.ts +1 -14
- package/src/cli/apps/AlephaPackageBuilderCli.ts +10 -1
- package/src/cli/atoms/buildOptions.ts +99 -9
- package/src/cli/commands/build.ts +150 -37
- package/src/cli/commands/db.ts +22 -18
- package/src/cli/commands/deploy.ts +1 -1
- package/src/cli/commands/dev.ts +1 -20
- package/src/cli/commands/gen/env.ts +5 -2
- package/src/cli/commands/gen/openapi.ts +5 -2
- package/src/cli/commands/init.spec.ts +588 -0
- package/src/cli/commands/init.ts +115 -58
- package/src/cli/commands/lint.ts +7 -1
- package/src/cli/commands/typecheck.ts +11 -0
- package/src/cli/providers/AppEntryProvider.ts +1 -1
- package/src/cli/providers/ViteBuildProvider.ts +8 -50
- package/src/cli/providers/ViteDevServerProvider.ts +35 -16
- package/src/cli/services/AlephaCliUtils.ts +52 -121
- package/src/cli/services/PackageManagerUtils.ts +129 -11
- package/src/cli/services/ProjectScaffolder.spec.ts +97 -0
- package/src/cli/services/ProjectScaffolder.ts +148 -81
- package/src/cli/services/ViteUtils.ts +82 -0
- package/src/cli/{assets/claudeMd.ts → templates/agentMd.ts} +37 -24
- package/src/cli/templates/apiAppSecurityTs.ts +11 -0
- package/src/cli/templates/apiIndexTs.ts +30 -0
- package/src/cli/templates/gitignore.ts +39 -0
- package/src/cli/{assets → templates}/mainCss.ts +11 -2
- package/src/cli/templates/mainServerTs.ts +33 -0
- package/src/cli/templates/webAppRouterTs.ts +74 -0
- package/src/cli/templates/webHelloComponentTsx.ts +30 -0
- package/src/command/helpers/Runner.spec.ts +139 -0
- package/src/command/helpers/Runner.ts +7 -22
- package/src/command/index.ts +12 -4
- package/src/command/providers/CliProvider.spec.ts +1392 -0
- package/src/command/providers/CliProvider.ts +320 -47
- package/src/core/Alepha.ts +34 -27
- package/src/core/__tests__/Alepha-start.spec.ts +4 -4
- package/src/core/helpers/jsonSchemaToTypeBox.spec.ts +771 -0
- package/src/core/helpers/jsonSchemaToTypeBox.ts +62 -10
- package/src/core/index.shared.ts +1 -0
- package/src/core/index.ts +20 -0
- package/src/core/providers/EventManager.spec.ts +0 -71
- package/src/core/providers/EventManager.ts +3 -15
- package/src/core/providers/Json.ts +2 -14
- package/src/datetime/index.ts +15 -0
- package/src/email/index.ts +10 -5
- package/src/email/providers/LocalEmailProvider.spec.ts +1 -1
- package/src/email/providers/LocalEmailProvider.ts +1 -1
- package/src/fake/__tests__/keyName.example.ts +1 -1
- package/src/fake/__tests__/keyName.spec.ts +5 -5
- package/src/fake/index.ts +9 -6
- package/src/fake/providers/FakeProvider.spec.ts +258 -40
- package/src/fake/providers/FakeProvider.ts +133 -19
- package/src/lock/core/index.ts +11 -4
- package/src/logger/index.ts +17 -66
- package/src/mcp/index.ts +10 -27
- package/src/mcp/transports/SseMcpTransport.ts +0 -11
- package/src/orm/__tests__/PostgresProvider.spec.ts +2 -2
- package/src/orm/index.browser.ts +2 -2
- package/src/orm/index.bun.ts +5 -3
- package/src/orm/index.ts +23 -53
- package/src/orm/providers/drivers/BunSqliteProvider.ts +5 -1
- package/src/orm/providers/drivers/CloudflareD1Provider.ts +57 -30
- package/src/orm/providers/drivers/DatabaseProvider.ts +9 -1
- package/src/orm/providers/drivers/NodeSqliteProvider.ts +4 -1
- package/src/orm/services/Repository.ts +7 -3
- package/src/queue/core/index.ts +14 -6
- package/src/react/auth/__tests__/$auth.spec.ts +202 -0
- package/src/react/auth/hooks/useAuth.ts +32 -0
- package/src/react/auth/index.browser.ts +13 -0
- package/src/react/auth/index.shared.ts +2 -0
- package/src/react/auth/index.ts +48 -0
- package/src/react/auth/providers/ReactAuthProvider.ts +16 -0
- package/src/react/auth/services/ReactAuth.ts +135 -0
- package/src/react/core/__tests__/Router.spec.tsx +169 -0
- package/src/react/core/components/ClientOnly.tsx +49 -0
- package/src/react/core/components/ErrorBoundary.tsx +73 -0
- package/src/react/core/contexts/AlephaContext.ts +7 -0
- package/src/react/core/contexts/AlephaProvider.tsx +42 -0
- package/src/react/core/hooks/useAction.browser.spec.tsx +569 -0
- package/src/react/core/hooks/useAction.ts +480 -0
- package/src/react/core/hooks/useAlepha.ts +26 -0
- package/src/react/core/hooks/useClient.ts +17 -0
- package/src/react/core/hooks/useEvents.ts +51 -0
- package/src/react/core/hooks/useInject.ts +12 -0
- package/src/react/core/hooks/useStore.ts +52 -0
- package/src/react/core/index.ts +90 -0
- package/src/react/form/components/FormState.tsx +17 -0
- package/src/react/form/errors/FormValidationError.ts +18 -0
- package/src/react/form/hooks/useForm.browser.spec.tsx +366 -0
- package/src/react/form/hooks/useForm.ts +47 -0
- package/src/react/form/hooks/useFormState.ts +130 -0
- package/src/react/form/index.ts +44 -0
- package/src/react/form/services/FormModel.ts +614 -0
- package/src/react/head/helpers/SeoExpander.spec.ts +203 -0
- package/src/react/head/helpers/SeoExpander.ts +142 -0
- package/src/react/head/hooks/useHead.spec.tsx +288 -0
- package/src/react/head/hooks/useHead.ts +62 -0
- package/src/react/head/index.browser.ts +26 -0
- package/src/react/head/index.ts +44 -0
- package/src/react/head/interfaces/Head.ts +105 -0
- package/src/react/head/primitives/$head.ts +25 -0
- package/src/react/head/providers/BrowserHeadProvider.browser.spec.ts +196 -0
- package/src/react/head/providers/BrowserHeadProvider.ts +212 -0
- package/src/react/head/providers/HeadProvider.ts +168 -0
- package/src/react/head/providers/ServerHeadProvider.ts +31 -0
- package/src/react/i18n/__tests__/integration.spec.tsx +239 -0
- package/src/react/i18n/components/Localize.spec.tsx +357 -0
- package/src/react/i18n/components/Localize.tsx +35 -0
- package/src/react/i18n/hooks/useI18n.browser.spec.tsx +438 -0
- package/src/react/i18n/hooks/useI18n.ts +18 -0
- package/src/react/i18n/index.ts +41 -0
- package/src/react/i18n/primitives/$dictionary.ts +69 -0
- package/src/react/i18n/providers/I18nProvider.spec.ts +389 -0
- package/src/react/i18n/providers/I18nProvider.ts +278 -0
- package/src/react/router/__tests__/page-head-browser.browser.spec.ts +95 -0
- package/src/react/router/__tests__/page-head.spec.ts +48 -0
- package/src/react/router/__tests__/seo-head.spec.ts +125 -0
- package/src/react/router/atoms/ssrManifestAtom.ts +58 -0
- package/src/react/router/components/ErrorViewer.tsx +872 -0
- package/src/react/router/components/Link.tsx +23 -0
- package/src/react/router/components/NestedView.tsx +223 -0
- package/src/react/router/components/NotFound.tsx +30 -0
- package/src/react/router/constants/PAGE_PRELOAD_KEY.ts +6 -0
- package/src/react/router/contexts/RouterLayerContext.ts +12 -0
- package/src/react/router/errors/Redirection.ts +28 -0
- package/src/react/router/hooks/useActive.ts +52 -0
- package/src/react/router/hooks/useQueryParams.ts +63 -0
- package/src/react/router/hooks/useRouter.ts +20 -0
- package/src/react/router/hooks/useRouterState.ts +11 -0
- package/src/react/router/index.browser.ts +45 -0
- package/src/react/router/index.shared.ts +19 -0
- package/src/react/router/index.ts +146 -0
- package/src/react/router/primitives/$page.browser.spec.tsx +851 -0
- package/src/react/router/primitives/$page.spec.tsx +676 -0
- package/src/react/router/primitives/$page.ts +489 -0
- package/src/react/router/providers/ReactBrowserProvider.ts +312 -0
- package/src/react/router/providers/ReactBrowserRendererProvider.ts +25 -0
- package/src/react/router/providers/ReactBrowserRouterProvider.ts +168 -0
- package/src/react/router/providers/ReactPageProvider.ts +726 -0
- package/src/react/router/providers/ReactPreloadProvider.spec.ts +142 -0
- package/src/react/router/providers/ReactPreloadProvider.ts +85 -0
- package/src/react/router/providers/ReactServerProvider.spec.tsx +316 -0
- package/src/react/router/providers/ReactServerProvider.ts +487 -0
- package/src/react/router/providers/ReactServerTemplateProvider.spec.ts +210 -0
- package/src/react/router/providers/ReactServerTemplateProvider.ts +542 -0
- package/src/react/router/providers/SSRManifestProvider.ts +334 -0
- package/src/react/router/services/ReactPageServerService.ts +48 -0
- package/src/react/router/services/ReactPageService.ts +27 -0
- package/src/react/router/services/ReactRouter.ts +262 -0
- package/src/react/websocket/hooks/useRoom.tsx +242 -0
- package/src/react/websocket/index.ts +7 -0
- package/src/redis/__tests__/redis.spec.ts +13 -0
- package/src/redis/index.ts +9 -25
- package/src/redis/providers/BunRedisProvider.ts +9 -0
- package/src/redis/providers/NodeRedisProvider.ts +8 -0
- package/src/redis/providers/RedisProvider.ts +16 -0
- package/src/retry/index.ts +11 -2
- package/src/router/index.ts +15 -0
- package/src/scheduler/index.ts +11 -2
- package/src/security/__tests__/BasicAuth.spec.ts +2 -0
- package/src/security/__tests__/ServerSecurityProvider.spec.ts +90 -5
- package/src/security/index.ts +15 -10
- package/src/security/interfaces/IssuerResolver.ts +27 -0
- package/src/security/primitives/$issuer.ts +55 -0
- package/src/security/providers/SecurityProvider.ts +179 -0
- package/src/security/providers/ServerBasicAuthProvider.ts +6 -2
- package/src/security/providers/ServerSecurityProvider.ts +63 -41
- package/src/server/auth/index.ts +12 -7
- package/src/server/cache/index.ts +7 -22
- package/src/server/compress/index.ts +10 -2
- package/src/server/cookies/index.ts +7 -5
- package/src/server/cookies/primitives/$cookie.ts +33 -11
- package/src/server/core/index.ts +16 -6
- package/src/server/core/interfaces/ServerRequest.ts +83 -1
- package/src/server/core/primitives/$action.spec.ts +1 -1
- package/src/server/core/primitives/$action.ts +8 -3
- package/src/server/core/providers/NodeHttpServerProvider.spec.ts +9 -3
- package/src/server/core/providers/NodeHttpServerProvider.ts +9 -3
- package/src/server/core/services/ServerRequestParser.spec.ts +520 -0
- package/src/server/core/services/ServerRequestParser.ts +306 -13
- package/src/server/cors/index.ts +7 -21
- package/src/server/cors/primitives/$cors.ts +6 -2
- package/src/server/health/index.ts +8 -2
- package/src/server/helmet/index.ts +11 -3
- package/src/server/links/index.ts +11 -6
- package/src/server/metrics/index.ts +10 -3
- package/src/server/multipart/index.ts +9 -3
- package/src/server/proxy/index.ts +8 -2
- package/src/server/rate-limit/index.ts +21 -25
- package/src/server/rate-limit/primitives/$rateLimit.ts +6 -2
- package/src/server/rate-limit/providers/ServerRateLimitProvider.spec.ts +38 -14
- package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +22 -56
- package/src/server/static/index.ts +8 -2
- package/src/server/static/providers/ServerStaticProvider.ts +1 -1
- package/src/server/swagger/index.ts +9 -4
- package/src/server/swagger/providers/ServerSwaggerProvider.ts +1 -1
- package/src/sms/index.ts +9 -5
- package/src/sms/providers/LocalSmsProvider.spec.ts +1 -1
- package/src/sms/providers/LocalSmsProvider.ts +1 -1
- package/src/system/index.browser.ts +36 -0
- package/src/system/index.ts +62 -0
- package/src/system/index.workerd.ts +1 -0
- package/src/{file → system}/providers/FileSystemProvider.ts +24 -0
- package/src/{file → system}/providers/MemoryFileSystemProvider.ts +116 -3
- package/src/system/providers/MemoryShellProvider.ts +164 -0
- package/src/{file → system}/providers/NodeFileSystemProvider.spec.ts +2 -2
- package/src/{file → system}/providers/NodeFileSystemProvider.ts +47 -2
- package/src/system/providers/NodeShellProvider.ts +184 -0
- package/src/system/providers/ShellProvider.ts +74 -0
- package/src/{file → system}/services/FileDetector.spec.ts +2 -2
- package/src/thread/index.ts +11 -2
- package/src/topic/core/index.ts +12 -5
- package/src/vite/tasks/buildClient.ts +2 -7
- package/src/vite/tasks/buildServer.ts +19 -13
- package/src/vite/tasks/generateCloudflare.ts +10 -7
- package/src/vite/tasks/generateDocker.ts +4 -0
- package/src/websocket/index.ts +12 -8
- package/dist/file/index.d.ts.map +0 -1
- package/dist/file/index.js.map +0 -1
- package/src/cli/assets/apiIndexTs.ts +0 -16
- package/src/cli/assets/mainServerTs.ts +0 -24
- package/src/cli/assets/webAppRouterTs.ts +0 -16
- package/src/cli/assets/webHelloComponentTsx.ts +0 -20
- package/src/cli/providers/ViteTemplateProvider.ts +0 -27
- package/src/file/index.ts +0 -43
- /package/src/cli/{assets → templates}/apiHelloControllerTs.ts +0 -0
- /package/src/cli/{assets → templates}/biomeJson.ts +0 -0
- /package/src/cli/{assets → templates}/dummySpecTs.ts +0 -0
- /package/src/cli/{assets → templates}/editorconfig.ts +0 -0
- /package/src/cli/{assets → templates}/mainBrowserTs.ts +0 -0
- /package/src/cli/{assets → templates}/tsconfigJson.ts +0 -0
- /package/src/cli/{assets → templates}/webIndexTs.ts +0 -0
- /package/src/{file → system}/errors/FileError.ts +0 -0
- /package/src/{file → system}/services/FileDetector.ts +0 -0
package/dist/orm/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __reExport, t as __exportAll } from "./chunk-DH6iiROE.js";
|
|
2
|
-
import * as
|
|
2
|
+
import * as alepha26 from "alepha";
|
|
3
3
|
import { Alepha, AlephaError, KIND, Page, Page as Page$1, PageQuery, PageQuery as PageQuery$1, Primitive, Service, Static, StaticEncode, TBigInt, TInteger, TNull, TNumber, TNumberOptions, TObject, TObjectOptions, TOptional, TPage, TSchema, TString, TStringOptions, TUnion, TUnsafe, pageQuerySchema, pageSchema } from "alepha";
|
|
4
4
|
import { DateTime, DateTimeProvider } from "alepha/datetime";
|
|
5
5
|
import * as drizzle_orm_pg_core0 from "drizzle-orm/pg-core";
|
|
@@ -18,12 +18,65 @@ import { BunSQLDatabase } from "drizzle-orm/bun-sql";
|
|
|
18
18
|
import { BunSQLiteDatabase } from "drizzle-orm/bun-sqlite";
|
|
19
19
|
import { DrizzleD1Database } from "drizzle-orm/d1";
|
|
20
20
|
import { DatabaseSync } from "node:sqlite";
|
|
21
|
+
import * as typebox0 from "typebox";
|
|
22
|
+
import * as DrizzleKit from "drizzle-kit/api";
|
|
21
23
|
import { UpdateDeleteAction as UpdateDeleteAction$1 } from "drizzle-orm/pg-core/foreign-keys";
|
|
22
24
|
import { PgTransactionConfig } from "drizzle-orm/pg-core/session";
|
|
23
|
-
import * as DrizzleKit from "drizzle-kit/api";
|
|
24
|
-
import * as typebox1 from "typebox";
|
|
25
25
|
export * from "drizzle-orm/pg-core";
|
|
26
26
|
|
|
27
|
+
//#region ../../src/orm/constants/PG_SYMBOLS.d.ts
|
|
28
|
+
declare const PG_DEFAULT: unique symbol;
|
|
29
|
+
declare const PG_PRIMARY_KEY: unique symbol;
|
|
30
|
+
declare const PG_CREATED_AT: unique symbol;
|
|
31
|
+
declare const PG_UPDATED_AT: unique symbol;
|
|
32
|
+
declare const PG_DELETED_AT: unique symbol;
|
|
33
|
+
declare const PG_VERSION: unique symbol;
|
|
34
|
+
declare const PG_IDENTITY: unique symbol;
|
|
35
|
+
declare const PG_ENUM: unique symbol;
|
|
36
|
+
declare const PG_REF: unique symbol;
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Use `PG_IDENTITY` instead.
|
|
39
|
+
*/
|
|
40
|
+
declare const PG_SERIAL: unique symbol;
|
|
41
|
+
type PgDefault = typeof PG_DEFAULT;
|
|
42
|
+
type PgRef = typeof PG_REF;
|
|
43
|
+
type PgPrimaryKey = typeof PG_PRIMARY_KEY;
|
|
44
|
+
type PgSymbols = {
|
|
45
|
+
[PG_DEFAULT]: {};
|
|
46
|
+
[PG_PRIMARY_KEY]: {};
|
|
47
|
+
[PG_CREATED_AT]: {};
|
|
48
|
+
[PG_UPDATED_AT]: {};
|
|
49
|
+
[PG_DELETED_AT]: {};
|
|
50
|
+
[PG_VERSION]: {};
|
|
51
|
+
[PG_IDENTITY]: PgIdentityOptions;
|
|
52
|
+
[PG_REF]: PgRefOptions;
|
|
53
|
+
[PG_ENUM]: PgEnumOptions;
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated Use `PG_IDENTITY` instead.
|
|
56
|
+
*/
|
|
57
|
+
[PG_SERIAL]: {};
|
|
58
|
+
};
|
|
59
|
+
type PgSymbolKeys = keyof PgSymbols;
|
|
60
|
+
type PgIdentityOptions = {
|
|
61
|
+
mode: "always" | "byDefault";
|
|
62
|
+
} & PgSequenceOptions & {
|
|
63
|
+
name?: string;
|
|
64
|
+
};
|
|
65
|
+
interface PgEnumOptions {
|
|
66
|
+
name?: string;
|
|
67
|
+
description?: string;
|
|
68
|
+
}
|
|
69
|
+
interface PgRefOptions {
|
|
70
|
+
ref: () => {
|
|
71
|
+
name: string;
|
|
72
|
+
entity: EntityPrimitive;
|
|
73
|
+
};
|
|
74
|
+
actions?: {
|
|
75
|
+
onUpdate?: UpdateDeleteAction;
|
|
76
|
+
onDelete?: UpdateDeleteAction;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
27
80
|
//#region ../../src/orm/schemas/insertSchema.d.ts
|
|
28
81
|
/**
|
|
29
82
|
* Transforms a TObject schema for insert operations.
|
|
@@ -214,57 +267,385 @@ type EntityColumn<T extends TObject> = {
|
|
|
214
267
|
};
|
|
215
268
|
type EntityColumns<T extends TObject> = { [key in keyof T["properties"]]: EntityColumn<T> };
|
|
216
269
|
//#endregion
|
|
217
|
-
//#region ../../src/orm/
|
|
218
|
-
declare const PG_DEFAULT: unique symbol;
|
|
219
|
-
declare const PG_PRIMARY_KEY: unique symbol;
|
|
220
|
-
declare const PG_CREATED_AT: unique symbol;
|
|
221
|
-
declare const PG_UPDATED_AT: unique symbol;
|
|
222
|
-
declare const PG_DELETED_AT: unique symbol;
|
|
223
|
-
declare const PG_VERSION: unique symbol;
|
|
224
|
-
declare const PG_IDENTITY: unique symbol;
|
|
225
|
-
declare const PG_ENUM: unique symbol;
|
|
226
|
-
declare const PG_REF: unique symbol;
|
|
270
|
+
//#region ../../src/orm/services/ModelBuilder.d.ts
|
|
227
271
|
/**
|
|
228
|
-
*
|
|
272
|
+
* Database-specific table configuration functions
|
|
229
273
|
*/
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
274
|
+
interface TableConfigBuilders<TConfig> {
|
|
275
|
+
index: (name: string) => {
|
|
276
|
+
on: (...columns: any[]) => TConfig;
|
|
277
|
+
};
|
|
278
|
+
uniqueIndex: (name: string) => {
|
|
279
|
+
on: (...columns: any[]) => TConfig;
|
|
280
|
+
};
|
|
281
|
+
unique: (name: string) => {
|
|
282
|
+
on: (...columns: any[]) => TConfig;
|
|
283
|
+
};
|
|
284
|
+
check: (name: string, sql: SQL) => TConfig;
|
|
285
|
+
foreignKey: (config: {
|
|
286
|
+
name: string;
|
|
287
|
+
columns: any[];
|
|
288
|
+
foreignColumns: any[];
|
|
289
|
+
}) => TConfig;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Abstract base class for transforming Alepha Primitives (Entity, Sequence, etc...)
|
|
293
|
+
* into drizzle models (tables, enums, sequences, etc...).
|
|
294
|
+
*/
|
|
295
|
+
declare abstract class ModelBuilder {
|
|
244
296
|
/**
|
|
245
|
-
*
|
|
297
|
+
* Build a table from an entity primitive.
|
|
246
298
|
*/
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
299
|
+
abstract buildTable(entity: EntityPrimitive, options: {
|
|
300
|
+
tables: Map<string, unknown>;
|
|
301
|
+
enums: Map<string, unknown>;
|
|
302
|
+
schema: string;
|
|
303
|
+
}): void;
|
|
304
|
+
/**
|
|
305
|
+
* Build a sequence from a sequence primitive.
|
|
306
|
+
*/
|
|
307
|
+
abstract buildSequence(sequence: SequencePrimitive, options: {
|
|
308
|
+
sequences: Map<string, unknown>;
|
|
309
|
+
schema: string;
|
|
310
|
+
}): void;
|
|
311
|
+
/**
|
|
312
|
+
* Convert camelCase to snake_case for column names.
|
|
313
|
+
*/
|
|
314
|
+
protected toColumnName(str: string): string;
|
|
315
|
+
/**
|
|
316
|
+
* Build the table configuration function for any database.
|
|
317
|
+
* This includes indexes, foreign keys, constraints, and custom config.
|
|
318
|
+
*
|
|
319
|
+
* @param entity - The entity primitive
|
|
320
|
+
* @param builders - Database-specific builder functions
|
|
321
|
+
* @param tableResolver - Function to resolve entity references to table columns
|
|
322
|
+
* @param customConfigHandler - Optional handler for custom config
|
|
323
|
+
*/
|
|
324
|
+
protected buildTableConfig<TConfig, TSelf>(entity: EntityPrimitive, builders: TableConfigBuilders<TConfig>, tableResolver?: (entityName: string) => any, customConfigHandler?: (config: any, self: TSelf) => TConfig[]): ((self: TSelf) => TConfig[]) | undefined;
|
|
325
|
+
}
|
|
326
|
+
//#endregion
|
|
327
|
+
//#region ../../src/orm/providers/DrizzleKitProvider.d.ts
|
|
328
|
+
declare class DrizzleKitProvider {
|
|
329
|
+
protected readonly log: alepha_logger4.Logger;
|
|
330
|
+
protected readonly alepha: Alepha;
|
|
331
|
+
/**
|
|
332
|
+
* Synchronize database with current schema definitions.
|
|
333
|
+
*
|
|
334
|
+
* In development mode, it will generate and execute migrations based on the current state.
|
|
335
|
+
* In testing mode, it will generate migrations from scratch without applying them.
|
|
336
|
+
*
|
|
337
|
+
* Does nothing in production mode, you must handle migrations manually.
|
|
338
|
+
*/
|
|
339
|
+
synchronize(provider: DatabaseProvider): Promise<void>;
|
|
340
|
+
/**
|
|
341
|
+
* Mostly used for testing purposes. You can generate SQL migration statements without executing them.
|
|
342
|
+
*/
|
|
343
|
+
generateMigration(provider: DatabaseProvider, prevSnapshot?: any): Promise<{
|
|
344
|
+
statements: string[];
|
|
345
|
+
models: Record<string, unknown>;
|
|
346
|
+
snapshot?: any;
|
|
347
|
+
}>;
|
|
348
|
+
/**
|
|
349
|
+
* Load all tables, enums, sequences, etc. from the provider's repositories.
|
|
350
|
+
*/
|
|
351
|
+
getModels(provider: DatabaseProvider): Record<string, unknown>;
|
|
352
|
+
/**
|
|
353
|
+
* Load the migration snapshot from the database.
|
|
354
|
+
*/
|
|
355
|
+
protected loadDevMigrations(provider: DatabaseProvider): Promise<DevMigrations | undefined>;
|
|
356
|
+
protected saveDevMigrations(provider: DatabaseProvider, curr: Record<string, any>, devMigrations?: DevMigrations): Promise<void>;
|
|
357
|
+
protected executeStatements(statements: string[], provider: DatabaseProvider, catchErrors?: boolean): Promise<void>;
|
|
358
|
+
protected createSchemaIfNotExists(provider: DatabaseProvider, schemaName: string): Promise<void>;
|
|
359
|
+
/**
|
|
360
|
+
* Try to load the official Drizzle Kit API.
|
|
361
|
+
* If not available, fallback to the local kit import.
|
|
362
|
+
*/
|
|
363
|
+
importDrizzleKit(): typeof DrizzleKit;
|
|
364
|
+
}
|
|
365
|
+
declare const devMigrationsSchema: alepha26.TObject<{
|
|
366
|
+
id: alepha26.TNumber;
|
|
367
|
+
name: alepha26.TString;
|
|
368
|
+
snapshot: alepha26.TString;
|
|
369
|
+
created_at: alepha26.TString;
|
|
370
|
+
}>;
|
|
371
|
+
type DevMigrations = Static<typeof devMigrationsSchema>;
|
|
372
|
+
//#endregion
|
|
373
|
+
//#region ../../src/orm/providers/drivers/DatabaseProvider.d.ts
|
|
374
|
+
type SQLLike = SQLWrapper | string;
|
|
375
|
+
declare abstract class DatabaseProvider {
|
|
376
|
+
protected readonly alepha: Alepha;
|
|
377
|
+
protected readonly log: alepha_logger4.Logger;
|
|
378
|
+
protected abstract readonly builder: ModelBuilder;
|
|
379
|
+
protected abstract readonly kit: DrizzleKitProvider;
|
|
380
|
+
abstract readonly db: PgDatabase<any>;
|
|
381
|
+
abstract readonly dialect: "postgresql" | "sqlite";
|
|
382
|
+
abstract readonly url: string;
|
|
383
|
+
readonly enums: Map<string, unknown>;
|
|
384
|
+
readonly tables: Map<string, unknown>;
|
|
385
|
+
readonly sequences: Map<string, unknown>;
|
|
386
|
+
get name(): string;
|
|
387
|
+
get driver(): string;
|
|
388
|
+
get schema(): string;
|
|
389
|
+
table<T extends TObject>(entity: EntityPrimitive<T>): PgTableWithColumns<SchemaToTableConfig<T>>;
|
|
390
|
+
registerEntity(entity: EntityPrimitive): void;
|
|
391
|
+
registerSequence(sequence: SequencePrimitive): void;
|
|
392
|
+
abstract execute(statement: SQLLike): Promise<Record<string, unknown>[]>;
|
|
393
|
+
run<T extends TObject>(statement: SQLLike, schema: T): Promise<Array<Static<T>>>;
|
|
394
|
+
/**
|
|
395
|
+
* Get migrations folder path - can be overridden
|
|
396
|
+
*/
|
|
397
|
+
protected getMigrationsFolder(): string;
|
|
398
|
+
/**
|
|
399
|
+
* Base migration orchestration - handles environment logic.
|
|
400
|
+
*
|
|
401
|
+
* Never runs in serverless mode - migrations should be applied during
|
|
402
|
+
* deployment, not at runtime (to avoid race conditions and timeouts).
|
|
403
|
+
*/
|
|
404
|
+
migrate(): Promise<void>;
|
|
405
|
+
/**
|
|
406
|
+
* Production: run migrations from folder
|
|
407
|
+
*/
|
|
408
|
+
protected runProductionMigration(migrationsFolder: string): Promise<void>;
|
|
409
|
+
/**
|
|
410
|
+
* Test: always synchronize
|
|
411
|
+
*/
|
|
412
|
+
protected runTestMigration(): Promise<void>;
|
|
413
|
+
/**
|
|
414
|
+
* Development: default to synchronize (can be overridden)
|
|
415
|
+
*/
|
|
416
|
+
protected runDevelopmentMigration(migrationsFolder: string): Promise<void>;
|
|
417
|
+
/**
|
|
418
|
+
* Common synchronization with error handling
|
|
419
|
+
*/
|
|
420
|
+
protected synchronizeSchema(): Promise<void>;
|
|
421
|
+
/**
|
|
422
|
+
* Provider-specific migration execution
|
|
423
|
+
* MUST be implemented by each provider
|
|
424
|
+
*/
|
|
425
|
+
protected abstract executeMigrations(migrationsFolder: string): Promise<void>;
|
|
426
|
+
/**
|
|
427
|
+
* For testing purposes, generate a unique schema name.
|
|
428
|
+
* The schema name will be generated based on the current date and time.
|
|
429
|
+
* It will be in the format of `test_YYYYMMDD_HHMMSS_randomSuffix`.
|
|
430
|
+
*/
|
|
431
|
+
protected generateTestSchemaName(): string;
|
|
432
|
+
}
|
|
433
|
+
//#endregion
|
|
434
|
+
//#region ../../src/orm/primitives/$sequence.d.ts
|
|
435
|
+
/**
|
|
436
|
+
* Creates a PostgreSQL sequence primitive for generating unique numeric values.
|
|
437
|
+
*/
|
|
438
|
+
declare const $sequence: {
|
|
439
|
+
(options?: SequencePrimitiveOptions): SequencePrimitive;
|
|
440
|
+
[KIND]: typeof SequencePrimitive;
|
|
254
441
|
};
|
|
255
|
-
interface
|
|
442
|
+
interface SequencePrimitiveOptions extends PgSequenceOptions {
|
|
443
|
+
/**
|
|
444
|
+
* The name of the sequence. If not provided, the property key will be used.
|
|
445
|
+
*/
|
|
256
446
|
name?: string;
|
|
257
|
-
|
|
447
|
+
provider?: DatabaseProvider;
|
|
258
448
|
}
|
|
259
|
-
|
|
260
|
-
|
|
449
|
+
declare class SequencePrimitive extends Primitive<SequencePrimitiveOptions> {
|
|
450
|
+
readonly provider: DatabaseProvider;
|
|
451
|
+
onInit(): void;
|
|
452
|
+
get name(): string;
|
|
453
|
+
next(): Promise<number>;
|
|
454
|
+
current(): Promise<number>;
|
|
455
|
+
protected $provider(): DatabaseProvider;
|
|
456
|
+
}
|
|
457
|
+
//#endregion
|
|
458
|
+
//#region ../../src/orm/services/SqliteModelBuilder.d.ts
|
|
459
|
+
declare class SqliteModelBuilder extends ModelBuilder {
|
|
460
|
+
buildTable(entity: EntityPrimitive<any>, options: {
|
|
461
|
+
tables: Map<string, unknown>;
|
|
462
|
+
enums: Map<string, unknown>;
|
|
463
|
+
schema: string;
|
|
464
|
+
}): void;
|
|
465
|
+
buildSequence(sequence: SequencePrimitive, options: {
|
|
466
|
+
sequences: Map<string, unknown>;
|
|
467
|
+
schema: string;
|
|
468
|
+
}): void;
|
|
469
|
+
/**
|
|
470
|
+
* Get SQLite-specific config builder for the table.
|
|
471
|
+
*/
|
|
472
|
+
protected getTableConfig(entity: EntityPrimitive, tables: Map<string, unknown>): ((self: BuildColumns<string, any, "sqlite">) => any) | undefined;
|
|
473
|
+
schemaToSqliteColumns: <T extends TObject>(tableName: string, schema: T, enums: Map<string, unknown>, tables: Map<string, unknown>) => SchemaToSqliteBuilder<T>;
|
|
474
|
+
mapFieldToSqliteColumn: (tableName: string, fieldName: string, value: TSchema, enums: Map<string, any>) => pg$1.SQLiteIntegerBuilderInitial<string> | pg$1.SQLiteNumericBuilderInitial<string> | pg$1.SQLiteTextBuilderInitial<string, [string, ...string[]], number | undefined> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
261
475
|
name: string;
|
|
262
|
-
|
|
476
|
+
dataType: "custom";
|
|
477
|
+
columnType: "SQLiteCustomColumn";
|
|
478
|
+
data: string;
|
|
479
|
+
driverParam: string;
|
|
480
|
+
enumValues: undefined;
|
|
481
|
+
}>, string> | pg$1.SQLiteCustomColumnBuilder<{
|
|
482
|
+
name: string;
|
|
483
|
+
dataType: "custom";
|
|
484
|
+
columnType: "SQLiteCustomColumn";
|
|
485
|
+
data: string;
|
|
486
|
+
driverParam: number;
|
|
487
|
+
enumValues: undefined;
|
|
488
|
+
}> | pg$1.SQLiteCustomColumnBuilder<{
|
|
489
|
+
name: string;
|
|
490
|
+
dataType: "custom";
|
|
491
|
+
columnType: "SQLiteCustomColumn";
|
|
492
|
+
data: boolean;
|
|
493
|
+
driverParam: number;
|
|
494
|
+
enumValues: undefined;
|
|
495
|
+
}> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
496
|
+
name: string;
|
|
497
|
+
dataType: "custom";
|
|
498
|
+
columnType: "SQLiteCustomColumn";
|
|
499
|
+
data: {
|
|
500
|
+
[x: string]: unknown;
|
|
501
|
+
[x: number]: unknown;
|
|
502
|
+
[x: symbol]: unknown;
|
|
503
|
+
};
|
|
504
|
+
driverParam: string;
|
|
505
|
+
enumValues: undefined;
|
|
506
|
+
}>, {
|
|
507
|
+
[x: string]: unknown;
|
|
508
|
+
[x: number]: unknown;
|
|
509
|
+
[x: symbol]: unknown;
|
|
510
|
+
}> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
511
|
+
name: string;
|
|
512
|
+
dataType: "custom";
|
|
513
|
+
columnType: "SQLiteCustomColumn";
|
|
514
|
+
data: typebox0.StaticRecord<[], "Decode", {}, {}, string, TSchema>;
|
|
515
|
+
driverParam: string;
|
|
516
|
+
enumValues: undefined;
|
|
517
|
+
}>, typebox0.StaticRecord<[], "Decode", {}, {}, string, TSchema>> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
518
|
+
name: string;
|
|
519
|
+
dataType: "custom";
|
|
520
|
+
columnType: "SQLiteCustomColumn";
|
|
521
|
+
data: any;
|
|
522
|
+
driverParam: string;
|
|
523
|
+
enumValues: undefined;
|
|
524
|
+
}>, any> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
525
|
+
name: string;
|
|
526
|
+
dataType: "custom";
|
|
527
|
+
columnType: "SQLiteCustomColumn";
|
|
528
|
+
data: unknown[];
|
|
529
|
+
driverParam: string;
|
|
530
|
+
enumValues: undefined;
|
|
531
|
+
}>, unknown[]>;
|
|
532
|
+
mapStringToSqliteColumn: (key: string, value: TString) => pg$1.SQLiteTextBuilderInitial<string, [string, ...string[]], number | undefined> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
533
|
+
name: string;
|
|
534
|
+
dataType: "custom";
|
|
535
|
+
columnType: "SQLiteCustomColumn";
|
|
536
|
+
data: string;
|
|
537
|
+
driverParam: string;
|
|
538
|
+
enumValues: undefined;
|
|
539
|
+
}>, string> | pg$1.SQLiteCustomColumnBuilder<{
|
|
540
|
+
name: string;
|
|
541
|
+
dataType: "custom";
|
|
542
|
+
columnType: "SQLiteCustomColumn";
|
|
543
|
+
data: string;
|
|
544
|
+
driverParam: number;
|
|
545
|
+
enumValues: undefined;
|
|
546
|
+
}>;
|
|
547
|
+
sqliteJson: <TDocument extends TSchema>(name: string, document: TDocument) => drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
548
|
+
name: string;
|
|
549
|
+
dataType: "custom";
|
|
550
|
+
columnType: "SQLiteCustomColumn";
|
|
551
|
+
data: typebox0.StaticType<[], "Decode", {}, {}, TDocument>;
|
|
552
|
+
driverParam: string;
|
|
553
|
+
enumValues: undefined;
|
|
554
|
+
}>, typebox0.StaticType<[], "Decode", {}, {}, TDocument>>;
|
|
555
|
+
sqliteDateTime: {
|
|
556
|
+
<TConfig extends Record<string, any>>(fieldConfig: TConfig): pg$1.SQLiteCustomColumnBuilder<{
|
|
557
|
+
name: "";
|
|
558
|
+
dataType: "custom";
|
|
559
|
+
columnType: "SQLiteCustomColumn";
|
|
560
|
+
data: string;
|
|
561
|
+
driverParam: number;
|
|
562
|
+
enumValues: undefined;
|
|
563
|
+
}>;
|
|
564
|
+
<TName extends string>(dbName: TName, fieldConfig: unknown): pg$1.SQLiteCustomColumnBuilder<{
|
|
565
|
+
name: TName;
|
|
566
|
+
dataType: "custom";
|
|
567
|
+
columnType: "SQLiteCustomColumn";
|
|
568
|
+
data: string;
|
|
569
|
+
driverParam: number;
|
|
570
|
+
enumValues: undefined;
|
|
571
|
+
}>;
|
|
572
|
+
};
|
|
573
|
+
sqliteBool: {
|
|
574
|
+
<TConfig extends Record<string, any>>(fieldConfig: TConfig): pg$1.SQLiteCustomColumnBuilder<{
|
|
575
|
+
name: "";
|
|
576
|
+
dataType: "custom";
|
|
577
|
+
columnType: "SQLiteCustomColumn";
|
|
578
|
+
data: boolean;
|
|
579
|
+
driverParam: number;
|
|
580
|
+
enumValues: undefined;
|
|
581
|
+
}>;
|
|
582
|
+
<TName extends string>(dbName: TName, fieldConfig: unknown): pg$1.SQLiteCustomColumnBuilder<{
|
|
583
|
+
name: TName;
|
|
584
|
+
dataType: "custom";
|
|
585
|
+
columnType: "SQLiteCustomColumn";
|
|
586
|
+
data: boolean;
|
|
587
|
+
driverParam: number;
|
|
588
|
+
enumValues: undefined;
|
|
589
|
+
}>;
|
|
590
|
+
};
|
|
591
|
+
sqliteDate: {
|
|
592
|
+
<TConfig extends Record<string, any>>(fieldConfig: TConfig): pg$1.SQLiteCustomColumnBuilder<{
|
|
593
|
+
name: "";
|
|
594
|
+
dataType: "custom";
|
|
595
|
+
columnType: "SQLiteCustomColumn";
|
|
596
|
+
data: string;
|
|
597
|
+
driverParam: number;
|
|
598
|
+
enumValues: undefined;
|
|
599
|
+
}>;
|
|
600
|
+
<TName extends string>(dbName: TName, fieldConfig: unknown): pg$1.SQLiteCustomColumnBuilder<{
|
|
601
|
+
name: TName;
|
|
602
|
+
dataType: "custom";
|
|
603
|
+
columnType: "SQLiteCustomColumn";
|
|
604
|
+
data: string;
|
|
605
|
+
driverParam: number;
|
|
606
|
+
enumValues: undefined;
|
|
607
|
+
}>;
|
|
263
608
|
};
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
609
|
+
}
|
|
610
|
+
type SchemaToSqliteBuilder<T extends TObject> = { [key in keyof T["properties"]]: SQLiteColumnBuilderBase };
|
|
611
|
+
//#endregion
|
|
612
|
+
//#region ../../src/orm/providers/drivers/NodeSqliteProvider.d.ts
|
|
613
|
+
/**
|
|
614
|
+
* Configuration options for the Node.js SQLite database provider.
|
|
615
|
+
*/
|
|
616
|
+
declare const nodeSqliteOptions: alepha26.Atom<alepha26.TObject<{
|
|
617
|
+
path: alepha26.TOptional<alepha26.TString>;
|
|
618
|
+
}>, "alepha.postgres.node-sqlite.options">;
|
|
619
|
+
type NodeSqliteProviderOptions = Static<typeof nodeSqliteOptions.schema>;
|
|
620
|
+
declare module "alepha" {
|
|
621
|
+
interface State {
|
|
622
|
+
[nodeSqliteOptions.key]: NodeSqliteProviderOptions;
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
* Add a fake support for SQLite in Node.js based on Postgres interfaces.
|
|
627
|
+
*
|
|
628
|
+
* This is NOT a real SQLite provider, it's a workaround to use SQLite with Drizzle ORM.
|
|
629
|
+
* This is NOT recommended for production use.
|
|
630
|
+
*/
|
|
631
|
+
declare class NodeSqliteProvider extends DatabaseProvider {
|
|
632
|
+
protected readonly kit: DrizzleKitProvider;
|
|
633
|
+
protected readonly log: alepha_logger4.Logger;
|
|
634
|
+
protected readonly env: {
|
|
635
|
+
DATABASE_URL?: string | undefined;
|
|
267
636
|
};
|
|
637
|
+
protected readonly builder: SqliteModelBuilder;
|
|
638
|
+
protected readonly options: Readonly<{
|
|
639
|
+
path?: string | undefined;
|
|
640
|
+
}>;
|
|
641
|
+
protected sqlite: DatabaseSync;
|
|
642
|
+
get name(): string;
|
|
643
|
+
readonly dialect = "sqlite";
|
|
644
|
+
get url(): string;
|
|
645
|
+
execute(query: SQLLike): Promise<Array<Record<string, unknown>>>;
|
|
646
|
+
readonly db: PgDatabase<any>;
|
|
647
|
+
protected readonly onStart: alepha26.HookPrimitive<"start">;
|
|
648
|
+
protected executeMigrations(migrationsFolder: string): Promise<void>;
|
|
268
649
|
}
|
|
269
650
|
//#endregion
|
|
270
651
|
//#region ../../src/orm/errors/DbError.d.ts
|
|
@@ -996,247 +1377,62 @@ declare class DatabaseTypeProvider {
|
|
|
996
1377
|
/**
|
|
997
1378
|
* Creates a column Deleted At for soft delete functionality.
|
|
998
1379
|
* This is used to mark rows as deleted without actually removing them from the database.
|
|
999
|
-
* The column is nullable - NULL means not deleted, timestamp means deleted.
|
|
1000
|
-
*/
|
|
1001
|
-
readonly deletedAt: (options?: TStringOptions) => PgAttr<alepha34.TOptional<TString>, typeof PG_DELETED_AT>;
|
|
1002
|
-
/**
|
|
1003
|
-
* Creates a Postgres ENUM type.
|
|
1004
|
-
*
|
|
1005
|
-
* > By default, `t.enum()` is mapped to a TEXT column in Postgres.
|
|
1006
|
-
* > Using this method, you can create a real ENUM type in the database.
|
|
1007
|
-
*
|
|
1008
|
-
* @example
|
|
1009
|
-
* ```ts
|
|
1010
|
-
* const statusEnum = pg.enum(["pending", "active", "archived"], { name: "status_enum" });
|
|
1011
|
-
* ```
|
|
1012
|
-
*/
|
|
1013
|
-
readonly enum: <T extends string[]>(values: [...T], pgEnumOptions?: PgEnumOptions, typeOptions?: TStringOptions) => PgAttr<TUnsafe<T[number]>, typeof PG_ENUM>;
|
|
1014
|
-
/**
|
|
1015
|
-
* Creates a reference to another table or schema. Basically a foreign key.
|
|
1016
|
-
*/
|
|
1017
|
-
readonly ref: <T extends TSchema>(type: T, ref: () => any, actions?: {
|
|
1018
|
-
onUpdate?: UpdateDeleteAction$1;
|
|
1019
|
-
onDelete?: UpdateDeleteAction$1;
|
|
1020
|
-
}) => PgAttr<T, PgRef>;
|
|
1021
|
-
/**
|
|
1022
|
-
* Creates a page schema for a given object schema.
|
|
1023
|
-
* It's used by {@link Repository#paginate} method.
|
|
1024
|
-
*/
|
|
1025
|
-
readonly page: <T extends TObject>(resource: T, options?: TObjectOptions) => TPage<T>;
|
|
1026
|
-
}
|
|
1027
|
-
/**
|
|
1028
|
-
* Wrapper of TypeProvider (`t`) for database types.
|
|
1029
|
-
*
|
|
1030
|
-
* Use `db` for improve TypeBox schema definitions with database-specific attributes.
|
|
1031
|
-
*
|
|
1032
|
-
* @example
|
|
1033
|
-
* ```ts
|
|
1034
|
-
* import { t } from "alepha";
|
|
1035
|
-
* import { db } from "alepha/orm";
|
|
1036
|
-
*
|
|
1037
|
-
* const userSchema = t.object({
|
|
1038
|
-
* id: db.primaryKey(t.uuid()),
|
|
1039
|
-
* email: t.email(),
|
|
1040
|
-
* createdAt: db.createdAt(),
|
|
1041
|
-
* });
|
|
1042
|
-
* ```
|
|
1043
|
-
*/
|
|
1044
|
-
declare const db: DatabaseTypeProvider;
|
|
1045
|
-
/**
|
|
1046
|
-
* @deprecated Use `db` instead.
|
|
1047
|
-
*/
|
|
1048
|
-
declare const pg: DatabaseTypeProvider;
|
|
1049
|
-
//#endregion
|
|
1050
|
-
//#region ../../src/orm/schemas/legacyIdSchema.d.ts
|
|
1051
|
-
/**
|
|
1052
|
-
* @deprecated Use `pg.primaryKey()` instead.
|
|
1053
|
-
*/
|
|
1054
|
-
declare const legacyIdSchema: PgAttr<PgAttr<PgAttr<alepha34.TInteger, typeof PG_PRIMARY_KEY>, typeof PG_SERIAL>, typeof PG_DEFAULT>;
|
|
1055
|
-
//#endregion
|
|
1056
|
-
//#region ../../src/orm/primitives/$sequence.d.ts
|
|
1057
|
-
/**
|
|
1058
|
-
* Creates a PostgreSQL sequence primitive for generating unique numeric values.
|
|
1059
|
-
*/
|
|
1060
|
-
declare const $sequence: {
|
|
1061
|
-
(options?: SequencePrimitiveOptions): SequencePrimitive;
|
|
1062
|
-
[KIND]: typeof SequencePrimitive;
|
|
1063
|
-
};
|
|
1064
|
-
interface SequencePrimitiveOptions extends PgSequenceOptions {
|
|
1065
|
-
/**
|
|
1066
|
-
* The name of the sequence. If not provided, the property key will be used.
|
|
1067
|
-
*/
|
|
1068
|
-
name?: string;
|
|
1069
|
-
provider?: DatabaseProvider;
|
|
1070
|
-
}
|
|
1071
|
-
declare class SequencePrimitive extends Primitive<SequencePrimitiveOptions> {
|
|
1072
|
-
readonly provider: DatabaseProvider;
|
|
1073
|
-
onInit(): void;
|
|
1074
|
-
get name(): string;
|
|
1075
|
-
next(): Promise<number>;
|
|
1076
|
-
current(): Promise<number>;
|
|
1077
|
-
protected $provider(): DatabaseProvider;
|
|
1078
|
-
}
|
|
1079
|
-
//#endregion
|
|
1080
|
-
//#region ../../src/orm/services/ModelBuilder.d.ts
|
|
1081
|
-
/**
|
|
1082
|
-
* Database-specific table configuration functions
|
|
1083
|
-
*/
|
|
1084
|
-
interface TableConfigBuilders<TConfig> {
|
|
1085
|
-
index: (name: string) => {
|
|
1086
|
-
on: (...columns: any[]) => TConfig;
|
|
1087
|
-
};
|
|
1088
|
-
uniqueIndex: (name: string) => {
|
|
1089
|
-
on: (...columns: any[]) => TConfig;
|
|
1090
|
-
};
|
|
1091
|
-
unique: (name: string) => {
|
|
1092
|
-
on: (...columns: any[]) => TConfig;
|
|
1093
|
-
};
|
|
1094
|
-
check: (name: string, sql: SQL) => TConfig;
|
|
1095
|
-
foreignKey: (config: {
|
|
1096
|
-
name: string;
|
|
1097
|
-
columns: any[];
|
|
1098
|
-
foreignColumns: any[];
|
|
1099
|
-
}) => TConfig;
|
|
1100
|
-
}
|
|
1101
|
-
/**
|
|
1102
|
-
* Abstract base class for transforming Alepha Primitives (Entity, Sequence, etc...)
|
|
1103
|
-
* into drizzle models (tables, enums, sequences, etc...).
|
|
1104
|
-
*/
|
|
1105
|
-
declare abstract class ModelBuilder {
|
|
1106
|
-
/**
|
|
1107
|
-
* Build a table from an entity primitive.
|
|
1108
|
-
*/
|
|
1109
|
-
abstract buildTable(entity: EntityPrimitive, options: {
|
|
1110
|
-
tables: Map<string, unknown>;
|
|
1111
|
-
enums: Map<string, unknown>;
|
|
1112
|
-
schema: string;
|
|
1113
|
-
}): void;
|
|
1114
|
-
/**
|
|
1115
|
-
* Build a sequence from a sequence primitive.
|
|
1116
|
-
*/
|
|
1117
|
-
abstract buildSequence(sequence: SequencePrimitive, options: {
|
|
1118
|
-
sequences: Map<string, unknown>;
|
|
1119
|
-
schema: string;
|
|
1120
|
-
}): void;
|
|
1121
|
-
/**
|
|
1122
|
-
* Convert camelCase to snake_case for column names.
|
|
1123
|
-
*/
|
|
1124
|
-
protected toColumnName(str: string): string;
|
|
1125
|
-
/**
|
|
1126
|
-
* Build the table configuration function for any database.
|
|
1127
|
-
* This includes indexes, foreign keys, constraints, and custom config.
|
|
1128
|
-
*
|
|
1129
|
-
* @param entity - The entity primitive
|
|
1130
|
-
* @param builders - Database-specific builder functions
|
|
1131
|
-
* @param tableResolver - Function to resolve entity references to table columns
|
|
1132
|
-
* @param customConfigHandler - Optional handler for custom config
|
|
1133
|
-
*/
|
|
1134
|
-
protected buildTableConfig<TConfig, TSelf>(entity: EntityPrimitive, builders: TableConfigBuilders<TConfig>, tableResolver?: (entityName: string) => any, customConfigHandler?: (config: any, self: TSelf) => TConfig[]): ((self: TSelf) => TConfig[]) | undefined;
|
|
1135
|
-
}
|
|
1136
|
-
//#endregion
|
|
1137
|
-
//#region ../../src/orm/providers/DrizzleKitProvider.d.ts
|
|
1138
|
-
declare class DrizzleKitProvider {
|
|
1139
|
-
protected readonly log: alepha_logger4.Logger;
|
|
1140
|
-
protected readonly alepha: Alepha;
|
|
1141
|
-
/**
|
|
1142
|
-
* Synchronize database with current schema definitions.
|
|
1143
|
-
*
|
|
1144
|
-
* In development mode, it will generate and execute migrations based on the current state.
|
|
1145
|
-
* In testing mode, it will generate migrations from scratch without applying them.
|
|
1146
|
-
*
|
|
1147
|
-
* Does nothing in production mode, you must handle migrations manually.
|
|
1148
|
-
*/
|
|
1149
|
-
synchronize(provider: DatabaseProvider): Promise<void>;
|
|
1150
|
-
/**
|
|
1151
|
-
* Mostly used for testing purposes. You can generate SQL migration statements without executing them.
|
|
1152
|
-
*/
|
|
1153
|
-
generateMigration(provider: DatabaseProvider, prevSnapshot?: any): Promise<{
|
|
1154
|
-
statements: string[];
|
|
1155
|
-
models: Record<string, unknown>;
|
|
1156
|
-
snapshot?: any;
|
|
1157
|
-
}>;
|
|
1158
|
-
/**
|
|
1159
|
-
* Load all tables, enums, sequences, etc. from the provider's repositories.
|
|
1160
|
-
*/
|
|
1161
|
-
getModels(provider: DatabaseProvider): Record<string, unknown>;
|
|
1162
|
-
/**
|
|
1163
|
-
* Load the migration snapshot from the database.
|
|
1164
|
-
*/
|
|
1165
|
-
protected loadDevMigrations(provider: DatabaseProvider): Promise<DevMigrations | undefined>;
|
|
1166
|
-
protected saveDevMigrations(provider: DatabaseProvider, curr: Record<string, any>, devMigrations?: DevMigrations): Promise<void>;
|
|
1167
|
-
protected executeStatements(statements: string[], provider: DatabaseProvider, catchErrors?: boolean): Promise<void>;
|
|
1168
|
-
protected createSchemaIfNotExists(provider: DatabaseProvider, schemaName: string): Promise<void>;
|
|
1169
|
-
/**
|
|
1170
|
-
* Try to load the official Drizzle Kit API.
|
|
1171
|
-
* If not available, fallback to the local kit import.
|
|
1172
|
-
*/
|
|
1173
|
-
importDrizzleKit(): typeof DrizzleKit;
|
|
1174
|
-
}
|
|
1175
|
-
declare const devMigrationsSchema: alepha34.TObject<{
|
|
1176
|
-
id: alepha34.TNumber;
|
|
1177
|
-
name: alepha34.TString;
|
|
1178
|
-
snapshot: alepha34.TString;
|
|
1179
|
-
created_at: alepha34.TString;
|
|
1180
|
-
}>;
|
|
1181
|
-
type DevMigrations = Static<typeof devMigrationsSchema>;
|
|
1182
|
-
//#endregion
|
|
1183
|
-
//#region ../../src/orm/providers/drivers/DatabaseProvider.d.ts
|
|
1184
|
-
type SQLLike = SQLWrapper | string;
|
|
1185
|
-
declare abstract class DatabaseProvider {
|
|
1186
|
-
protected readonly alepha: Alepha;
|
|
1187
|
-
protected readonly log: alepha_logger4.Logger;
|
|
1188
|
-
protected abstract readonly builder: ModelBuilder;
|
|
1189
|
-
protected abstract readonly kit: DrizzleKitProvider;
|
|
1190
|
-
abstract readonly db: PgDatabase<any>;
|
|
1191
|
-
abstract readonly dialect: "postgresql" | "sqlite";
|
|
1192
|
-
abstract readonly url: string;
|
|
1193
|
-
readonly enums: Map<string, unknown>;
|
|
1194
|
-
readonly tables: Map<string, unknown>;
|
|
1195
|
-
readonly sequences: Map<string, unknown>;
|
|
1196
|
-
get name(): string;
|
|
1197
|
-
get driver(): string;
|
|
1198
|
-
get schema(): string;
|
|
1199
|
-
table<T extends TObject>(entity: EntityPrimitive<T>): PgTableWithColumns<SchemaToTableConfig<T>>;
|
|
1200
|
-
registerEntity(entity: EntityPrimitive): void;
|
|
1201
|
-
registerSequence(sequence: SequencePrimitive): void;
|
|
1202
|
-
abstract execute(statement: SQLLike): Promise<Record<string, unknown>[]>;
|
|
1203
|
-
run<T extends TObject>(statement: SQLLike, schema: T): Promise<Array<Static<T>>>;
|
|
1204
|
-
/**
|
|
1205
|
-
* Get migrations folder path - can be overridden
|
|
1206
|
-
*/
|
|
1207
|
-
protected getMigrationsFolder(): string;
|
|
1208
|
-
/**
|
|
1209
|
-
* Base migration orchestration - handles environment logic
|
|
1210
|
-
*/
|
|
1211
|
-
migrate(): Promise<void>;
|
|
1212
|
-
/**
|
|
1213
|
-
* Production: run migrations from folder
|
|
1214
|
-
*/
|
|
1215
|
-
protected runProductionMigration(migrationsFolder: string): Promise<void>;
|
|
1216
|
-
/**
|
|
1217
|
-
* Test: always synchronize
|
|
1218
|
-
*/
|
|
1219
|
-
protected runTestMigration(): Promise<void>;
|
|
1220
|
-
/**
|
|
1221
|
-
* Development: default to synchronize (can be overridden)
|
|
1380
|
+
* The column is nullable - NULL means not deleted, timestamp means deleted.
|
|
1222
1381
|
*/
|
|
1223
|
-
|
|
1382
|
+
readonly deletedAt: (options?: TStringOptions) => PgAttr<alepha26.TOptional<TString>, typeof PG_DELETED_AT>;
|
|
1224
1383
|
/**
|
|
1225
|
-
*
|
|
1384
|
+
* Creates a Postgres ENUM type.
|
|
1385
|
+
*
|
|
1386
|
+
* > By default, `t.enum()` is mapped to a TEXT column in Postgres.
|
|
1387
|
+
* > Using this method, you can create a real ENUM type in the database.
|
|
1388
|
+
*
|
|
1389
|
+
* @example
|
|
1390
|
+
* ```ts
|
|
1391
|
+
* const statusEnum = pg.enum(["pending", "active", "archived"], { name: "status_enum" });
|
|
1392
|
+
* ```
|
|
1226
1393
|
*/
|
|
1227
|
-
|
|
1394
|
+
readonly enum: <T extends string[]>(values: [...T], pgEnumOptions?: PgEnumOptions, typeOptions?: TStringOptions) => PgAttr<TUnsafe<T[number]>, typeof PG_ENUM>;
|
|
1228
1395
|
/**
|
|
1229
|
-
*
|
|
1230
|
-
* MUST be implemented by each provider
|
|
1396
|
+
* Creates a reference to another table or schema. Basically a foreign key.
|
|
1231
1397
|
*/
|
|
1232
|
-
|
|
1398
|
+
readonly ref: <T extends TSchema>(type: T, ref: () => any, actions?: {
|
|
1399
|
+
onUpdate?: UpdateDeleteAction$1;
|
|
1400
|
+
onDelete?: UpdateDeleteAction$1;
|
|
1401
|
+
}) => PgAttr<T, PgRef>;
|
|
1233
1402
|
/**
|
|
1234
|
-
*
|
|
1235
|
-
*
|
|
1236
|
-
* It will be in the format of `test_YYYYMMDD_HHMMSS_randomSuffix`.
|
|
1403
|
+
* Creates a page schema for a given object schema.
|
|
1404
|
+
* It's used by {@link Repository#paginate} method.
|
|
1237
1405
|
*/
|
|
1238
|
-
|
|
1406
|
+
readonly page: <T extends TObject>(resource: T, options?: TObjectOptions) => TPage<T>;
|
|
1239
1407
|
}
|
|
1408
|
+
/**
|
|
1409
|
+
* Wrapper of TypeProvider (`t`) for database types.
|
|
1410
|
+
*
|
|
1411
|
+
* Use `db` for improve TypeBox schema definitions with database-specific attributes.
|
|
1412
|
+
*
|
|
1413
|
+
* @example
|
|
1414
|
+
* ```ts
|
|
1415
|
+
* import { t } from "alepha";
|
|
1416
|
+
* import { db } from "alepha/orm";
|
|
1417
|
+
*
|
|
1418
|
+
* const userSchema = t.object({
|
|
1419
|
+
* id: db.primaryKey(t.uuid()),
|
|
1420
|
+
* email: t.email(),
|
|
1421
|
+
* createdAt: db.createdAt(),
|
|
1422
|
+
* });
|
|
1423
|
+
* ```
|
|
1424
|
+
*/
|
|
1425
|
+
declare const db: DatabaseTypeProvider;
|
|
1426
|
+
/**
|
|
1427
|
+
* @deprecated Use `db` instead.
|
|
1428
|
+
*/
|
|
1429
|
+
declare const pg: DatabaseTypeProvider;
|
|
1430
|
+
//#endregion
|
|
1431
|
+
//#region ../../src/orm/schemas/legacyIdSchema.d.ts
|
|
1432
|
+
/**
|
|
1433
|
+
* @deprecated Use `pg.primaryKey()` instead.
|
|
1434
|
+
*/
|
|
1435
|
+
declare const legacyIdSchema: PgAttr<PgAttr<PgAttr<alepha26.TInteger, typeof PG_PRIMARY_KEY>, typeof PG_SERIAL>, typeof PG_DEFAULT>;
|
|
1240
1436
|
//#endregion
|
|
1241
1437
|
//#region ../../src/orm/services/QueryManager.d.ts
|
|
1242
1438
|
declare class QueryManager {
|
|
@@ -1302,7 +1498,7 @@ declare class QueryManager {
|
|
|
1302
1498
|
createPagination<T>(entities: T[], limit?: number, offset?: number, sort?: Array<{
|
|
1303
1499
|
column: string;
|
|
1304
1500
|
direction: "asc" | "desc";
|
|
1305
|
-
}>):
|
|
1501
|
+
}>): alepha26.Page<T>;
|
|
1306
1502
|
}
|
|
1307
1503
|
interface PgJoin {
|
|
1308
1504
|
table: string;
|
|
@@ -1487,7 +1683,7 @@ declare abstract class Repository<T extends TObject> {
|
|
|
1487
1683
|
/**
|
|
1488
1684
|
* Find an entity and update it.
|
|
1489
1685
|
*/
|
|
1490
|
-
updateOne(where: PgQueryWhereOrSQL<T>, data:
|
|
1686
|
+
updateOne(where: PgQueryWhereOrSQL<T>, data: WithSQL<Static<TObjectUpdate<T>>>, opts?: StatementOptions): Promise<Static<T>>;
|
|
1491
1687
|
/**
|
|
1492
1688
|
* Save a given entity.
|
|
1493
1689
|
*
|
|
@@ -1512,11 +1708,11 @@ declare abstract class Repository<T extends TObject> {
|
|
|
1512
1708
|
/**
|
|
1513
1709
|
* Find an entity by ID and update it.
|
|
1514
1710
|
*/
|
|
1515
|
-
updateById(id: string | number, data:
|
|
1711
|
+
updateById(id: string | number, data: WithSQL<Static<TObjectUpdate<T>>>, opts?: StatementOptions): Promise<Static<T>>;
|
|
1516
1712
|
/**
|
|
1517
1713
|
* Find many entities and update all of them.
|
|
1518
1714
|
*/
|
|
1519
|
-
updateMany(where: PgQueryWhereOrSQL<T>, data:
|
|
1715
|
+
updateMany(where: PgQueryWhereOrSQL<T>, data: WithSQL<Static<TObjectUpdate<T>>>, opts?: StatementOptions): Promise<Array<number | string>>;
|
|
1520
1716
|
/**
|
|
1521
1717
|
* Find many and delete all of them.
|
|
1522
1718
|
* @returns Array of deleted entity IDs
|
|
@@ -1611,6 +1807,7 @@ interface StatementOptions {
|
|
|
1611
1807
|
*/
|
|
1612
1808
|
now?: DateTime | string;
|
|
1613
1809
|
}
|
|
1810
|
+
type WithSQL<T> = { [P in keyof T]?: T[P] | SQL };
|
|
1614
1811
|
//#endregion
|
|
1615
1812
|
//#region ../../src/orm/primitives/$repository.d.ts
|
|
1616
1813
|
/**
|
|
@@ -1739,160 +1936,6 @@ interface TransactionPrimitiveOptions<T extends any[], R> {
|
|
|
1739
1936
|
}
|
|
1740
1937
|
type TransactionContext = PgTransaction<any, any, any>;
|
|
1741
1938
|
//#endregion
|
|
1742
|
-
//#region ../../src/orm/services/SqliteModelBuilder.d.ts
|
|
1743
|
-
declare class SqliteModelBuilder extends ModelBuilder {
|
|
1744
|
-
buildTable(entity: EntityPrimitive<any>, options: {
|
|
1745
|
-
tables: Map<string, unknown>;
|
|
1746
|
-
enums: Map<string, unknown>;
|
|
1747
|
-
schema: string;
|
|
1748
|
-
}): void;
|
|
1749
|
-
buildSequence(sequence: SequencePrimitive, options: {
|
|
1750
|
-
sequences: Map<string, unknown>;
|
|
1751
|
-
schema: string;
|
|
1752
|
-
}): void;
|
|
1753
|
-
/**
|
|
1754
|
-
* Get SQLite-specific config builder for the table.
|
|
1755
|
-
*/
|
|
1756
|
-
protected getTableConfig(entity: EntityPrimitive, tables: Map<string, unknown>): ((self: BuildColumns<string, any, "sqlite">) => any) | undefined;
|
|
1757
|
-
schemaToSqliteColumns: <T extends TObject>(tableName: string, schema: T, enums: Map<string, unknown>, tables: Map<string, unknown>) => SchemaToSqliteBuilder<T>;
|
|
1758
|
-
mapFieldToSqliteColumn: (tableName: string, fieldName: string, value: TSchema, enums: Map<string, any>) => pg$1.SQLiteIntegerBuilderInitial<string> | pg$1.SQLiteNumericBuilderInitial<string> | pg$1.SQLiteTextBuilderInitial<string, [string, ...string[]], number | undefined> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
1759
|
-
name: string;
|
|
1760
|
-
dataType: "custom";
|
|
1761
|
-
columnType: "SQLiteCustomColumn";
|
|
1762
|
-
data: string;
|
|
1763
|
-
driverParam: string;
|
|
1764
|
-
enumValues: undefined;
|
|
1765
|
-
}>, string> | pg$1.SQLiteCustomColumnBuilder<{
|
|
1766
|
-
name: string;
|
|
1767
|
-
dataType: "custom";
|
|
1768
|
-
columnType: "SQLiteCustomColumn";
|
|
1769
|
-
data: string;
|
|
1770
|
-
driverParam: number;
|
|
1771
|
-
enumValues: undefined;
|
|
1772
|
-
}> | pg$1.SQLiteCustomColumnBuilder<{
|
|
1773
|
-
name: string;
|
|
1774
|
-
dataType: "custom";
|
|
1775
|
-
columnType: "SQLiteCustomColumn";
|
|
1776
|
-
data: boolean;
|
|
1777
|
-
driverParam: number;
|
|
1778
|
-
enumValues: undefined;
|
|
1779
|
-
}> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
1780
|
-
name: string;
|
|
1781
|
-
dataType: "custom";
|
|
1782
|
-
columnType: "SQLiteCustomColumn";
|
|
1783
|
-
data: {
|
|
1784
|
-
[x: string]: unknown;
|
|
1785
|
-
[x: number]: unknown;
|
|
1786
|
-
[x: symbol]: unknown;
|
|
1787
|
-
};
|
|
1788
|
-
driverParam: string;
|
|
1789
|
-
enumValues: undefined;
|
|
1790
|
-
}>, {
|
|
1791
|
-
[x: string]: unknown;
|
|
1792
|
-
[x: number]: unknown;
|
|
1793
|
-
[x: symbol]: unknown;
|
|
1794
|
-
}> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
1795
|
-
name: string;
|
|
1796
|
-
dataType: "custom";
|
|
1797
|
-
columnType: "SQLiteCustomColumn";
|
|
1798
|
-
data: typebox1.StaticRecord<[], "Decode", {}, {}, string, TSchema>;
|
|
1799
|
-
driverParam: string;
|
|
1800
|
-
enumValues: undefined;
|
|
1801
|
-
}>, typebox1.StaticRecord<[], "Decode", {}, {}, string, TSchema>> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
1802
|
-
name: string;
|
|
1803
|
-
dataType: "custom";
|
|
1804
|
-
columnType: "SQLiteCustomColumn";
|
|
1805
|
-
data: any;
|
|
1806
|
-
driverParam: string;
|
|
1807
|
-
enumValues: undefined;
|
|
1808
|
-
}>, any> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
1809
|
-
name: string;
|
|
1810
|
-
dataType: "custom";
|
|
1811
|
-
columnType: "SQLiteCustomColumn";
|
|
1812
|
-
data: unknown[];
|
|
1813
|
-
driverParam: string;
|
|
1814
|
-
enumValues: undefined;
|
|
1815
|
-
}>, unknown[]>;
|
|
1816
|
-
mapStringToSqliteColumn: (key: string, value: TString) => pg$1.SQLiteTextBuilderInitial<string, [string, ...string[]], number | undefined> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
1817
|
-
name: string;
|
|
1818
|
-
dataType: "custom";
|
|
1819
|
-
columnType: "SQLiteCustomColumn";
|
|
1820
|
-
data: string;
|
|
1821
|
-
driverParam: string;
|
|
1822
|
-
enumValues: undefined;
|
|
1823
|
-
}>, string> | pg$1.SQLiteCustomColumnBuilder<{
|
|
1824
|
-
name: string;
|
|
1825
|
-
dataType: "custom";
|
|
1826
|
-
columnType: "SQLiteCustomColumn";
|
|
1827
|
-
data: string;
|
|
1828
|
-
driverParam: number;
|
|
1829
|
-
enumValues: undefined;
|
|
1830
|
-
}>;
|
|
1831
|
-
sqliteJson: <TDocument extends TSchema>(name: string, document: TDocument) => drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
1832
|
-
name: string;
|
|
1833
|
-
dataType: "custom";
|
|
1834
|
-
columnType: "SQLiteCustomColumn";
|
|
1835
|
-
data: typebox1.StaticType<[], "Decode", {}, {}, TDocument>;
|
|
1836
|
-
driverParam: string;
|
|
1837
|
-
enumValues: undefined;
|
|
1838
|
-
}>, typebox1.StaticType<[], "Decode", {}, {}, TDocument>>;
|
|
1839
|
-
sqliteDateTime: {
|
|
1840
|
-
<TConfig extends Record<string, any>>(fieldConfig: TConfig): pg$1.SQLiteCustomColumnBuilder<{
|
|
1841
|
-
name: "";
|
|
1842
|
-
dataType: "custom";
|
|
1843
|
-
columnType: "SQLiteCustomColumn";
|
|
1844
|
-
data: string;
|
|
1845
|
-
driverParam: number;
|
|
1846
|
-
enumValues: undefined;
|
|
1847
|
-
}>;
|
|
1848
|
-
<TName extends string>(dbName: TName, fieldConfig: unknown): pg$1.SQLiteCustomColumnBuilder<{
|
|
1849
|
-
name: TName;
|
|
1850
|
-
dataType: "custom";
|
|
1851
|
-
columnType: "SQLiteCustomColumn";
|
|
1852
|
-
data: string;
|
|
1853
|
-
driverParam: number;
|
|
1854
|
-
enumValues: undefined;
|
|
1855
|
-
}>;
|
|
1856
|
-
};
|
|
1857
|
-
sqliteBool: {
|
|
1858
|
-
<TConfig extends Record<string, any>>(fieldConfig: TConfig): pg$1.SQLiteCustomColumnBuilder<{
|
|
1859
|
-
name: "";
|
|
1860
|
-
dataType: "custom";
|
|
1861
|
-
columnType: "SQLiteCustomColumn";
|
|
1862
|
-
data: boolean;
|
|
1863
|
-
driverParam: number;
|
|
1864
|
-
enumValues: undefined;
|
|
1865
|
-
}>;
|
|
1866
|
-
<TName extends string>(dbName: TName, fieldConfig: unknown): pg$1.SQLiteCustomColumnBuilder<{
|
|
1867
|
-
name: TName;
|
|
1868
|
-
dataType: "custom";
|
|
1869
|
-
columnType: "SQLiteCustomColumn";
|
|
1870
|
-
data: boolean;
|
|
1871
|
-
driverParam: number;
|
|
1872
|
-
enumValues: undefined;
|
|
1873
|
-
}>;
|
|
1874
|
-
};
|
|
1875
|
-
sqliteDate: {
|
|
1876
|
-
<TConfig extends Record<string, any>>(fieldConfig: TConfig): pg$1.SQLiteCustomColumnBuilder<{
|
|
1877
|
-
name: "";
|
|
1878
|
-
dataType: "custom";
|
|
1879
|
-
columnType: "SQLiteCustomColumn";
|
|
1880
|
-
data: string;
|
|
1881
|
-
driverParam: number;
|
|
1882
|
-
enumValues: undefined;
|
|
1883
|
-
}>;
|
|
1884
|
-
<TName extends string>(dbName: TName, fieldConfig: unknown): pg$1.SQLiteCustomColumnBuilder<{
|
|
1885
|
-
name: TName;
|
|
1886
|
-
dataType: "custom";
|
|
1887
|
-
columnType: "SQLiteCustomColumn";
|
|
1888
|
-
data: string;
|
|
1889
|
-
driverParam: number;
|
|
1890
|
-
enumValues: undefined;
|
|
1891
|
-
}>;
|
|
1892
|
-
};
|
|
1893
|
-
}
|
|
1894
|
-
type SchemaToSqliteBuilder<T extends TObject> = { [key in keyof T["properties"]]: SQLiteColumnBuilderBase };
|
|
1895
|
-
//#endregion
|
|
1896
1939
|
//#region ../../src/orm/providers/drivers/CloudflareD1Provider.d.ts
|
|
1897
1940
|
/**
|
|
1898
1941
|
* D1Database interface matching Cloudflare's D1 API.
|
|
@@ -1952,7 +1995,7 @@ declare class CloudflareD1Provider extends DatabaseProvider {
|
|
|
1952
1995
|
get url(): string;
|
|
1953
1996
|
get db(): PgDatabase<any>;
|
|
1954
1997
|
execute(query: SQLLike): Promise<Array<Record<string, unknown>>>;
|
|
1955
|
-
protected readonly onStart:
|
|
1998
|
+
protected readonly onStart: alepha26.HookPrimitive<"start">;
|
|
1956
1999
|
protected executeMigrations(migrationsFolder: string): Promise<void>;
|
|
1957
2000
|
/**
|
|
1958
2001
|
* Override development migration to skip sync (not supported on D1).
|
|
@@ -1970,7 +2013,7 @@ declare class CloudflareD1Provider extends DatabaseProvider {
|
|
|
1970
2013
|
declare class RepositoryProvider {
|
|
1971
2014
|
protected readonly alepha: Alepha;
|
|
1972
2015
|
protected readonly registry: Map<EntityPrimitive<any>, Service<Repository<any>>>;
|
|
1973
|
-
getRepositories(provider?: DatabaseProvider): Repository<TObject<
|
|
2016
|
+
getRepositories(provider?: DatabaseProvider): Repository<TObject<alepha26.TProperties>>[];
|
|
1974
2017
|
getRepository<T extends TObject>(entity: EntityPrimitive<T>): Repository<T>;
|
|
1975
2018
|
createClassRepository<T extends TObject>(entity: EntityPrimitive<T>): Service<Repository<T>>;
|
|
1976
2019
|
}
|
|
@@ -1983,10 +2026,10 @@ declare const schema: <TDocument extends TSchema>(name: string, document: TDocum
|
|
|
1983
2026
|
name: string;
|
|
1984
2027
|
dataType: "custom";
|
|
1985
2028
|
columnType: "PgCustomColumn";
|
|
1986
|
-
data:
|
|
2029
|
+
data: typebox0.StaticType<[], "Decode", {}, {}, TDocument>;
|
|
1987
2030
|
driverParam: string;
|
|
1988
2031
|
enumValues: undefined;
|
|
1989
|
-
}>,
|
|
2032
|
+
}>, typebox0.StaticType<[], "Decode", {}, {}, TDocument>>;
|
|
1990
2033
|
//#endregion
|
|
1991
2034
|
//#region ../../src/orm/services/PostgresModelBuilder.d.ts
|
|
1992
2035
|
declare class PostgresModelBuilder extends ModelBuilder {
|
|
@@ -2027,7 +2070,7 @@ declare class PostgresModelBuilder extends ModelBuilder {
|
|
|
2027
2070
|
declare module "alepha" {
|
|
2028
2071
|
interface Env extends Partial<Static<typeof envSchema$1>> {}
|
|
2029
2072
|
}
|
|
2030
|
-
declare const envSchema$1:
|
|
2073
|
+
declare const envSchema$1: alepha26.TObject<{
|
|
2031
2074
|
/**
|
|
2032
2075
|
* Main configuration for database connection.
|
|
2033
2076
|
* Accept a string in the format of a Postgres connection URL.
|
|
@@ -2035,11 +2078,11 @@ declare const envSchema$1: alepha34.TObject<{
|
|
|
2035
2078
|
* or
|
|
2036
2079
|
* Example: postgres://user:password@localhost:5432/database?sslmode=require
|
|
2037
2080
|
*/
|
|
2038
|
-
DATABASE_URL:
|
|
2081
|
+
DATABASE_URL: alepha26.TOptional<alepha26.TString>;
|
|
2039
2082
|
/**
|
|
2040
2083
|
* In addition to the DATABASE_URL, you can specify the postgres schema name.
|
|
2041
2084
|
*/
|
|
2042
|
-
POSTGRES_SCHEMA:
|
|
2085
|
+
POSTGRES_SCHEMA: alepha26.TOptional<alepha26.TString>;
|
|
2043
2086
|
}>;
|
|
2044
2087
|
/**
|
|
2045
2088
|
* Bun PostgreSQL provider using Drizzle ORM with Bun's native SQL client.
|
|
@@ -2089,8 +2132,8 @@ declare class BunPostgresProvider extends DatabaseProvider {
|
|
|
2089
2132
|
*/
|
|
2090
2133
|
get db(): PgDatabase<any>;
|
|
2091
2134
|
protected executeMigrations(migrationsFolder: string): Promise<void>;
|
|
2092
|
-
protected readonly onStart:
|
|
2093
|
-
protected readonly onStop:
|
|
2135
|
+
protected readonly onStart: alepha26.HookPrimitive<"start">;
|
|
2136
|
+
protected readonly onStop: alepha26.HookPrimitive<"stop">;
|
|
2094
2137
|
connect(): Promise<void>;
|
|
2095
2138
|
close(): Promise<void>;
|
|
2096
2139
|
protected migrateLock: alepha_lock0.LockPrimitive<() => Promise<void>>;
|
|
@@ -2100,8 +2143,8 @@ declare class BunPostgresProvider extends DatabaseProvider {
|
|
|
2100
2143
|
/**
|
|
2101
2144
|
* Configuration options for the Bun SQLite database provider.
|
|
2102
2145
|
*/
|
|
2103
|
-
declare const bunSqliteOptions:
|
|
2104
|
-
path:
|
|
2146
|
+
declare const bunSqliteOptions: alepha26.Atom<alepha26.TObject<{
|
|
2147
|
+
path: alepha26.TOptional<alepha26.TString>;
|
|
2105
2148
|
}>, "alepha.postgres.bun-sqlite.options">;
|
|
2106
2149
|
type BunSqliteProviderOptions = Static<typeof bunSqliteOptions.schema>;
|
|
2107
2150
|
declare module "alepha" {
|
|
@@ -2150,8 +2193,8 @@ declare class BunSqliteProvider extends DatabaseProvider {
|
|
|
2150
2193
|
get url(): string;
|
|
2151
2194
|
get db(): PgDatabase<any>;
|
|
2152
2195
|
execute(query: SQLLike): Promise<Array<Record<string, unknown>>>;
|
|
2153
|
-
protected readonly onStart:
|
|
2154
|
-
protected readonly onStop:
|
|
2196
|
+
protected readonly onStart: alepha26.HookPrimitive<"start">;
|
|
2197
|
+
protected readonly onStop: alepha26.HookPrimitive<"stop">;
|
|
2155
2198
|
protected executeMigrations(migrationsFolder: string): Promise<void>;
|
|
2156
2199
|
}
|
|
2157
2200
|
//#endregion
|
|
@@ -2159,7 +2202,7 @@ declare class BunSqliteProvider extends DatabaseProvider {
|
|
|
2159
2202
|
declare module "alepha" {
|
|
2160
2203
|
interface Env extends Partial<Static<typeof envSchema>> {}
|
|
2161
2204
|
}
|
|
2162
|
-
declare const envSchema:
|
|
2205
|
+
declare const envSchema: alepha26.TObject<{
|
|
2163
2206
|
/**
|
|
2164
2207
|
* Main configuration for database connection.
|
|
2165
2208
|
* Accept a string in the format of a Postgres connection URL.
|
|
@@ -2167,13 +2210,13 @@ declare const envSchema: alepha34.TObject<{
|
|
|
2167
2210
|
* or
|
|
2168
2211
|
* Example: postgres://user:password@localhost:5432/database?sslmode=require
|
|
2169
2212
|
*/
|
|
2170
|
-
DATABASE_URL:
|
|
2213
|
+
DATABASE_URL: alepha26.TOptional<alepha26.TString>;
|
|
2171
2214
|
/**
|
|
2172
2215
|
* In addition to the DATABASE_URL, you can specify the postgres schema name.
|
|
2173
2216
|
*
|
|
2174
2217
|
* It will monkey patch drizzle tables.
|
|
2175
2218
|
*/
|
|
2176
|
-
POSTGRES_SCHEMA:
|
|
2219
|
+
POSTGRES_SCHEMA: alepha26.TOptional<alepha26.TString>;
|
|
2177
2220
|
}>;
|
|
2178
2221
|
declare class NodePostgresProvider extends DatabaseProvider {
|
|
2179
2222
|
static readonly SSL_MODES: readonly ["require", "allow", "prefer", "verify-full"];
|
|
@@ -2206,8 +2249,8 @@ declare class NodePostgresProvider extends DatabaseProvider {
|
|
|
2206
2249
|
*/
|
|
2207
2250
|
get db(): PostgresJsDatabase;
|
|
2208
2251
|
protected executeMigrations(migrationsFolder: string): Promise<void>;
|
|
2209
|
-
protected readonly onStart:
|
|
2210
|
-
protected readonly onStop:
|
|
2252
|
+
protected readonly onStart: alepha26.HookPrimitive<"start">;
|
|
2253
|
+
protected readonly onStop: alepha26.HookPrimitive<"stop">;
|
|
2211
2254
|
connect(): Promise<void>;
|
|
2212
2255
|
close(): Promise<void>;
|
|
2213
2256
|
protected migrateLock: alepha_lock0.LockPrimitive<() => Promise<void>>;
|
|
@@ -2217,47 +2260,8 @@ declare class NodePostgresProvider extends DatabaseProvider {
|
|
|
2217
2260
|
protected getClientOptions(): postgres.Options<any>;
|
|
2218
2261
|
protected ssl(url: URL): "require" | "allow" | "prefer" | "verify-full" | undefined;
|
|
2219
2262
|
}
|
|
2220
|
-
//#endregion
|
|
2221
|
-
//#region ../../src/orm/providers/drivers/NodeSqliteProvider.d.ts
|
|
2222
|
-
/**
|
|
2223
|
-
* Configuration options for the Node.js SQLite database provider.
|
|
2224
|
-
*/
|
|
2225
|
-
declare const nodeSqliteOptions: alepha34.Atom<alepha34.TObject<{
|
|
2226
|
-
path: alepha34.TOptional<alepha34.TString>;
|
|
2227
|
-
}>, "alepha.postgres.node-sqlite.options">;
|
|
2228
|
-
type NodeSqliteProviderOptions = Static<typeof nodeSqliteOptions.schema>;
|
|
2229
|
-
declare module "alepha" {
|
|
2230
|
-
interface State {
|
|
2231
|
-
[nodeSqliteOptions.key]: NodeSqliteProviderOptions;
|
|
2232
|
-
}
|
|
2233
|
-
}
|
|
2234
|
-
/**
|
|
2235
|
-
* Add a fake support for SQLite in Node.js based on Postgres interfaces.
|
|
2236
|
-
*
|
|
2237
|
-
* This is NOT a real SQLite provider, it's a workaround to use SQLite with Drizzle ORM.
|
|
2238
|
-
* This is NOT recommended for production use.
|
|
2239
|
-
*/
|
|
2240
|
-
declare class NodeSqliteProvider extends DatabaseProvider {
|
|
2241
|
-
protected readonly kit: DrizzleKitProvider;
|
|
2242
|
-
protected readonly log: alepha_logger4.Logger;
|
|
2243
|
-
protected readonly env: {
|
|
2244
|
-
DATABASE_URL?: string | undefined;
|
|
2245
|
-
};
|
|
2246
|
-
protected readonly builder: SqliteModelBuilder;
|
|
2247
|
-
protected readonly options: Readonly<{
|
|
2248
|
-
path?: string | undefined;
|
|
2249
|
-
}>;
|
|
2250
|
-
protected sqlite: DatabaseSync;
|
|
2251
|
-
get name(): string;
|
|
2252
|
-
readonly dialect = "sqlite";
|
|
2253
|
-
get url(): string;
|
|
2254
|
-
execute(query: SQLLike): Promise<Array<Record<string, unknown>>>;
|
|
2255
|
-
readonly db: PgDatabase<any>;
|
|
2256
|
-
protected readonly onStart: alepha34.HookPrimitive<"start">;
|
|
2257
|
-
protected executeMigrations(migrationsFolder: string): Promise<void>;
|
|
2258
|
-
}
|
|
2259
2263
|
declare namespace index_d_exports {
|
|
2260
|
-
export { $entity, $repository, $sequence, $transaction,
|
|
2264
|
+
export { $entity, $repository, $sequence, $transaction, AlephaOrm, BunPostgresProvider, BunSqliteProvider, BunSqliteProviderOptions, CloudflareD1Provider, D1Database, D1ExecResult, D1PreparedStatement, D1Result, DatabaseProvider, DatabaseTypeProvider, DbConflictError, DbEntityNotFoundError, DbError, DbMigrationError, DbVersionMismatchError, DrizzleKitProvider, EntityColumn, EntityColumns, EntityPrimitive, EntityPrimitiveOptions, FilterOperators, FromSchema, NodePostgresProvider, NodeSqliteProvider, NodeSqliteProviderOptions, OrderBy, OrderByClause, OrderDirection, PG_CREATED_AT, PG_DEFAULT, PG_DELETED_AT, PG_ENUM, PG_IDENTITY, PG_PRIMARY_KEY, PG_REF, PG_SERIAL, PG_UPDATED_AT, PG_VERSION, Page, PageQuery, PgAttr, PgAttrField, PgDefault, PgEnumOptions, PgIdentityOptions, PgPrimaryKey, PgQuery, PgQueryRelations, PgQueryWhere, PgQueryWhereOrSQL, PgRef, PgRefOptions, PgRelation, PgRelationMap, PgStatic, PgSymbolKeys, PgSymbols, Repository, RepositoryProvider, SQLLike, SchemaToTableConfig, SequencePrimitive, SequencePrimitiveOptions, SqliteProvider, StatementOptions, TObjectInsert, TObjectUpdate, TransactionContext, TransactionPrimitiveOptions, buildQueryString, bunSqliteOptions, db, drizzle_orm0 as drizzle, getAttrFields, insertSchema, legacyIdSchema, nodeSqliteOptions, pageQuerySchema, pageSchema, parseQueryString, pg, pgAttr, schema, sql, updateSchema };
|
|
2261
2265
|
}
|
|
2262
2266
|
declare module "alepha" {
|
|
2263
2267
|
interface Hooks {
|
|
@@ -2325,58 +2329,31 @@ declare module "alepha" {
|
|
|
2325
2329
|
};
|
|
2326
2330
|
}
|
|
2327
2331
|
}
|
|
2332
|
+
declare const SqliteProvider: typeof NodeSqliteProvider;
|
|
2328
2333
|
/**
|
|
2329
|
-
*
|
|
2330
|
-
*
|
|
2331
|
-
*
|
|
2332
|
-
* - Bun: Uses `BunPostgresProvider` or `BunSqliteProvider`
|
|
2333
|
-
* - Node.js: Uses `NodePostgresProvider` or `NodeSqliteProvider`
|
|
2334
|
-
*
|
|
2335
|
-
* ```ts
|
|
2336
|
-
* import { t } from "alepha";
|
|
2337
|
-
* import { $entity, $repository, db } from "alepha/postgres";
|
|
2338
|
-
*
|
|
2339
|
-
* const users = $entity({
|
|
2340
|
-
* name: "users",
|
|
2341
|
-
* schema: t.object({
|
|
2342
|
-
* id: db.primaryKey(),
|
|
2343
|
-
* name: t.text(),
|
|
2344
|
-
* email: t.text(),
|
|
2345
|
-
* }),
|
|
2346
|
-
* });
|
|
2347
|
-
*
|
|
2348
|
-
* class App {
|
|
2349
|
-
* users = $repository(users);
|
|
2350
|
-
*
|
|
2351
|
-
* getUserByName(name: string) {
|
|
2352
|
-
* return this.users.findOne({ name: { eq: name } });
|
|
2353
|
-
* }
|
|
2354
|
-
* }
|
|
2355
|
-
* ```
|
|
2356
|
-
*
|
|
2357
|
-
* This is not a full ORM, but rather a set of tools to work with Postgres databases in a type-safe way.
|
|
2334
|
+
* | type | quality | stability |
|
|
2335
|
+
* |------|---------|-----------|
|
|
2336
|
+
* | backend | epic | stable |
|
|
2358
2337
|
*
|
|
2359
|
-
*
|
|
2360
|
-
* - A type-safe way to define entities and repositories. (via `$entity` and `$repository`)
|
|
2361
|
-
* - Custom query builders and filters.
|
|
2362
|
-
* - Built-in special columns like `createdAt`, `updatedAt`, `deletedAt`, `version`.
|
|
2363
|
-
* - Automatic JSONB support.
|
|
2364
|
-
* - Automatic synchronization of entities with the database schema (for testing and development).
|
|
2365
|
-
* - Fallback to raw SQL via Drizzle ORM `sql` function.
|
|
2338
|
+
* Full-featured database abstraction built on Drizzle ORM with complete type safety.
|
|
2366
2339
|
*
|
|
2367
|
-
*
|
|
2340
|
+
* **Features:**
|
|
2341
|
+
* - Define database entities with TypeBox schemas
|
|
2342
|
+
* - Automatic timestamps, soft deletes, and versioning columns
|
|
2343
|
+
* - Type-safe CRUD operations with filtering, pagination, sorting, and relationships
|
|
2344
|
+
* - Database transaction support with automatic rollback
|
|
2345
|
+
* - Auto-incrementing sequences for IDs
|
|
2346
|
+
* - PostgreSQL support (Node.js, Bun, Cloudflare Workers via pglite)
|
|
2347
|
+
* - SQLite support (Node.js, Bun, Cloudflare D1)
|
|
2348
|
+
* - Automatic schema sync for development/testing
|
|
2349
|
+
* - Drizzle Kit migrations for production
|
|
2350
|
+
* - Type-safe filters: `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `nin`, `like`, `between`
|
|
2351
|
+
* - JSONB column support
|
|
2352
|
+
* - Relationship joins
|
|
2368
2353
|
*
|
|
2369
|
-
* @see {@link $entity}
|
|
2370
|
-
* @see {@link $sequence}
|
|
2371
|
-
* @see {@link $repository}
|
|
2372
|
-
* @see {@link $transaction}
|
|
2373
|
-
* @see {@link NodePostgresProvider} - Node.js Postgres implementation
|
|
2374
|
-
* @see {@link NodeSqliteProvider} - Node.js SQLite implementation
|
|
2375
|
-
* @see {@link BunPostgresProvider} - Bun Postgres implementation
|
|
2376
|
-
* @see {@link BunSqliteProvider} - Bun SQLite implementation
|
|
2377
2354
|
* @module alepha.postgres
|
|
2378
2355
|
*/
|
|
2379
|
-
declare const
|
|
2356
|
+
declare const AlephaOrm: alepha26.Service<alepha26.Module>;
|
|
2380
2357
|
//#endregion
|
|
2381
|
-
export { $entity, $repository, $sequence, $transaction,
|
|
2358
|
+
export { $entity, $repository, $sequence, $transaction, AlephaOrm, BunPostgresProvider, BunSqliteProvider, BunSqliteProviderOptions, CloudflareD1Provider, D1Database, D1ExecResult, D1PreparedStatement, D1Result, DatabaseProvider, DatabaseTypeProvider, DbConflictError, DbEntityNotFoundError, DbError, DbMigrationError, DbVersionMismatchError, DrizzleKitProvider, EntityColumn, EntityColumns, EntityPrimitive, EntityPrimitiveOptions, FilterOperators, FromSchema, NodePostgresProvider, NodeSqliteProvider, NodeSqliteProviderOptions, OrderBy, OrderByClause, OrderDirection, PG_CREATED_AT, PG_DEFAULT, PG_DELETED_AT, PG_ENUM, PG_IDENTITY, PG_PRIMARY_KEY, PG_REF, PG_SERIAL, PG_UPDATED_AT, PG_VERSION, type Page, type PageQuery, PgAttr, PgAttrField, PgDefault, PgEnumOptions, PgIdentityOptions, PgPrimaryKey, PgQuery, PgQueryRelations, PgQueryWhere, PgQueryWhereOrSQL, PgRef, PgRefOptions, PgRelation, PgRelationMap, PgStatic, PgSymbolKeys, PgSymbols, Repository, RepositoryProvider, SQLLike, SchemaToTableConfig, SequencePrimitive, SequencePrimitiveOptions, SqliteProvider, StatementOptions, TObjectInsert, TObjectUpdate, TransactionContext, TransactionPrimitiveOptions, buildQueryString, bunSqliteOptions, db, drizzle_orm0 as drizzle, getAttrFields, insertSchema, legacyIdSchema, nodeSqliteOptions, pageQuerySchema, pageSchema, parseQueryString, pg, pgAttr, schema, sql, updateSchema };
|
|
2382
2359
|
//# sourceMappingURL=index.d.ts.map
|