alepha 0.15.0 → 0.15.2
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 +43 -98
- package/dist/api/audits/index.d.ts +630 -653
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/audits/index.js +12 -35
- package/dist/api/audits/index.js.map +1 -1
- package/dist/api/files/index.d.ts +365 -358
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +12 -5
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.d.ts +255 -248
- 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.browser.js +4 -4
- package/dist/api/notifications/index.browser.js.map +1 -1
- package/dist/api/notifications/index.d.ts +84 -78
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/notifications/index.js +14 -8
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/parameters/index.d.ts +528 -535
- 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 +1221 -910
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +2556 -248
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +142 -136
- 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 +142 -162
- 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 +595 -171
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/bucket/index.js +1856 -12
- package/dist/bucket/index.js.map +1 -1
- package/dist/cache/core/index.d.ts +225 -53
- 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 +6 -2
- package/dist/cache/redis/index.js.map +1 -1
- package/dist/cli/index.d.ts +834 -226
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2872 -417
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +458 -310
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +2011 -76
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +309 -97
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +796 -701
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +329 -97
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +309 -97
- package/dist/core/index.native.js.map +1 -1
- package/dist/datetime/index.d.ts +59 -44
- 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 +314 -19
- package/dist/email/index.d.ts.map +1 -1
- package/dist/email/index.js +1852 -7
- package/dist/email/index.js.map +1 -1
- package/dist/fake/index.d.ts +5500 -5418
- package/dist/fake/index.d.ts.map +1 -1
- package/dist/fake/index.js +113 -42
- package/dist/fake/index.js.map +1 -1
- package/dist/lock/core/index.d.ts +219 -212
- 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/lock/redis/index.d.ts.map +1 -1
- package/dist/logger/index.d.ts +41 -90
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +15 -68
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +228 -230
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +32 -31
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/index.browser.js +12 -12
- package/dist/orm/index.browser.js.map +1 -1
- package/dist/orm/index.bun.js +90 -80
- package/dist/orm/index.bun.js.map +1 -1
- package/dist/orm/index.d.ts +1434 -1459
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +112 -130
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +262 -254
- 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/queue/redis/index.d.ts.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 +1980 -0
- package/dist/react/router/index.browser.js.map +1 -0
- package/dist/react/router/index.d.ts +2068 -0
- package/dist/react/router/index.d.ts.map +1 -0
- package/dist/react/router/index.js +4932 -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 +127 -130
- 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 +80 -71
- 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/router/index.d.ts +6 -6
- package/dist/router/index.d.ts.map +1 -1
- package/dist/scheduler/index.d.ts +119 -28
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +404 -3
- package/dist/scheduler/index.js.map +1 -1
- package/dist/security/index.d.ts +642 -228
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +1579 -37
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +1141 -111
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +1261 -25
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cache/index.d.ts +63 -78
- 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 +13 -5
- 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 +46 -22
- 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 +307 -196
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +271 -38
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +24 -34
- 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 +25 -19
- 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 +13 -5
- 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.browser.js +9 -1
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +133 -128
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +24 -11
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts +524 -4
- package/dist/server/metrics/index.d.ts.map +1 -1
- package/dist/server/metrics/index.js +4472 -7
- package/dist/server/metrics/index.js.map +1 -1
- package/dist/server/multipart/index.d.ts +15 -9
- 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 +110 -104
- 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 +46 -51
- 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 +181 -48
- package/dist/server/static/index.d.ts.map +1 -1
- package/dist/server/static/index.js +1848 -5
- package/dist/server/static/index.js.map +1 -1
- package/dist/server/swagger/index.d.ts +348 -53
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js +1849 -6
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +312 -18
- package/dist/sms/index.d.ts.map +1 -1
- package/dist/sms/index.js +1854 -10
- package/dist/sms/index.js.map +1 -1
- package/dist/system/index.browser.js +496 -0
- package/dist/system/index.browser.js.map +1 -0
- package/dist/system/index.d.ts +1158 -0
- package/dist/system/index.d.ts.map +1 -0
- package/dist/{file → system}/index.js +412 -20
- package/dist/system/index.js.map +1 -0
- package/dist/thread/index.d.ts +82 -73
- package/dist/thread/index.d.ts.map +1 -1
- package/dist/thread/index.js +13 -4
- package/dist/thread/index.js.map +1 -1
- package/dist/topic/core/index.d.ts +330 -323
- 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/topic/redis/index.d.ts +6 -6
- package/dist/topic/redis/index.d.ts.map +1 -1
- package/dist/vite/index.d.ts +163 -5825
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +130 -477
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.browser.js +3 -3
- package/dist/websocket/index.browser.js.map +1 -1
- package/dist/websocket/index.d.ts +287 -283
- package/dist/websocket/index.d.ts.map +1 -1
- package/dist/websocket/index.js +15 -11
- package/dist/websocket/index.js.map +1 -1
- package/package.json +86 -17
- 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 +52 -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 -11
- 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 +3 -16
- package/src/cli/apps/AlephaPackageBuilderCli.ts +10 -2
- package/src/cli/atoms/appEntryOptions.ts +13 -0
- package/src/cli/atoms/buildOptions.ts +1 -1
- package/src/cli/atoms/changelogOptions.ts +1 -1
- package/src/cli/commands/build.ts +64 -52
- package/src/cli/commands/db.ts +17 -11
- package/src/cli/commands/deploy.ts +1 -1
- package/src/cli/commands/dev.ts +13 -49
- package/src/cli/commands/gen/env.ts +6 -3
- package/src/cli/commands/gen/openapi.ts +5 -2
- package/src/cli/commands/init.spec.ts +544 -0
- package/src/cli/commands/init.ts +101 -58
- package/src/cli/commands/lint.ts +8 -2
- package/src/cli/commands/typecheck.ts +11 -0
- package/src/cli/defineConfig.ts +9 -0
- package/src/cli/index.ts +2 -1
- package/src/cli/providers/AppEntryProvider.ts +131 -0
- package/src/cli/providers/ViteBuildProvider.ts +40 -0
- package/src/cli/providers/ViteDevServerProvider.ts +378 -0
- package/src/cli/services/AlephaCliUtils.ts +39 -93
- package/src/cli/services/PackageManagerUtils.ts +140 -17
- package/src/cli/services/ProjectScaffolder.ts +169 -101
- package/src/cli/services/ViteUtils.ts +82 -0
- package/src/cli/{assets/claudeMd.ts → templates/agentMd.ts} +41 -28
- package/src/cli/{assets → templates}/apiHelloControllerTs.ts +2 -1
- package/src/cli/{assets → templates}/biomeJson.ts +2 -1
- package/src/cli/{assets → templates}/dummySpecTs.ts +2 -1
- package/src/cli/{assets → templates}/editorconfig.ts +2 -1
- package/src/cli/templates/gitignore.ts +39 -0
- package/src/cli/{assets → templates}/mainBrowserTs.ts +2 -1
- package/src/cli/templates/mainCss.ts +33 -0
- package/src/cli/templates/mainServerTs.ts +33 -0
- package/src/cli/{assets → templates}/tsconfigJson.ts +2 -1
- package/src/cli/templates/webAppRouterTs.ts +50 -0
- package/src/cli/templates/webHelloComponentTsx.ts +20 -0
- package/src/command/helpers/Runner.spec.ts +4 -0
- package/src/command/helpers/Runner.ts +3 -21
- package/src/command/index.ts +12 -4
- package/src/command/providers/CliProvider.spec.ts +1067 -0
- package/src/command/providers/CliProvider.ts +203 -40
- package/src/core/Alepha.ts +3 -9
- 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/primitives/$module.ts +12 -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/core/providers/KeylessJsonSchemaCodec.spec.ts +257 -0
- package/src/core/providers/KeylessJsonSchemaCodec.ts +396 -14
- package/src/core/providers/SchemaValidator.spec.ts +236 -0
- 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/logger/providers/PrettyFormatterProvider.ts +0 -9
- package/src/mcp/errors/McpError.ts +30 -0
- package/src/mcp/index.ts +13 -27
- package/src/mcp/transports/SseMcpTransport.ts +6 -7
- package/src/orm/__tests__/PostgresProvider.spec.ts +2 -2
- package/src/orm/index.browser.ts +2 -2
- package/src/orm/index.bun.ts +4 -2
- package/src/orm/index.ts +21 -47
- package/src/orm/providers/DrizzleKitProvider.ts +3 -5
- package/src/orm/providers/drivers/BunSqliteProvider.ts +1 -0
- package/src/orm/services/Repository.ts +18 -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 +142 -0
- package/src/react/router/primitives/$page.browser.spec.tsx +851 -0
- package/src/react/router/primitives/$page.spec.tsx +708 -0
- package/src/react/router/primitives/$page.ts +497 -0
- package/src/react/router/providers/ReactBrowserProvider.ts +309 -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/ReactServerProvider.spec.tsx +316 -0
- package/src/react/router/providers/ReactServerProvider.ts +558 -0
- package/src/react/router/providers/ReactServerTemplateProvider.ts +979 -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 +13 -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 +36 -22
- 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 +17 -7
- 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/BunHttpServerProvider.ts +1 -1
- package/src/server/core/providers/NodeHttpServerProvider.spec.ts +125 -0
- package/src/server/core/providers/NodeHttpServerProvider.ts +77 -22
- package/src/server/core/providers/ServerLoggerProvider.ts +2 -2
- package/src/server/core/providers/ServerProvider.ts +9 -12
- 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/atoms/apiLinksAtom.ts +7 -0
- package/src/server/links/index.browser.ts +2 -0
- package/src/server/links/index.ts +13 -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 +11 -0
- package/src/system/index.ts +62 -0
- package/src/{file → system}/providers/FileSystemProvider.ts +16 -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 +36 -0
- 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/index.ts +3 -2
- package/src/vite/tasks/buildClient.ts +2 -8
- package/src/vite/tasks/buildServer.ts +84 -21
- package/src/vite/tasks/copyAssets.ts +5 -4
- package/src/vite/tasks/generateSitemap.ts +64 -23
- package/src/vite/tasks/index.ts +0 -2
- package/src/vite/tasks/prerenderPages.ts +49 -24
- package/src/websocket/index.ts +12 -8
- package/dist/file/index.d.ts +0 -839
- package/dist/file/index.d.ts.map +0 -1
- package/dist/file/index.js.map +0 -1
- package/src/cli/assets/indexHtml.ts +0 -15
- package/src/cli/assets/mainServerTs.ts +0 -24
- package/src/cli/assets/webAppRouterTs.ts +0 -15
- package/src/cli/assets/webHelloComponentTsx.ts +0 -16
- package/src/cli/commands/format.ts +0 -23
- package/src/file/index.ts +0 -43
- package/src/vite/helpers/boot.ts +0 -117
- package/src/vite/plugins/viteAlephaDev.ts +0 -177
- package/src/vite/tasks/devServer.ts +0 -71
- package/src/vite/tasks/runAlepha.ts +0 -270
- /package/dist/orm/{chunk-DtkW-qnP.js → chunk-DH6iiROE.js} +0 -0
- /package/src/cli/{assets → templates}/apiIndexTs.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
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as alepha135 from "alepha";
|
|
2
2
|
import { Alepha, FileLike, Static, TNull, TObject, TOptional, TSchema, TUnion } from "alepha";
|
|
3
3
|
import { BucketPrimitive } from "alepha/bucket";
|
|
4
4
|
import * as alepha_server0 from "alepha/server";
|
|
5
5
|
import { Ok } from "alepha/server";
|
|
6
6
|
import { DateTime, DateTimeProvider, DurationLike } from "alepha/datetime";
|
|
7
7
|
import * as alepha_logger0 from "alepha/logger";
|
|
8
|
-
import * as
|
|
8
|
+
import * as alepha_orm0 from "alepha/orm";
|
|
9
9
|
import { Page } from "alepha/orm";
|
|
10
10
|
import * as alepha_scheduler0 from "alepha/scheduler";
|
|
11
11
|
import "drizzle-orm/d1";
|
|
@@ -16,37 +16,37 @@ import "alepha/retry";
|
|
|
16
16
|
import "drizzle-orm/sqlite-core";
|
|
17
17
|
|
|
18
18
|
//#region ../../src/api/files/entities/files.d.ts
|
|
19
|
-
declare const files:
|
|
20
|
-
id:
|
|
21
|
-
version:
|
|
22
|
-
createdAt:
|
|
23
|
-
updatedAt:
|
|
24
|
-
blobId:
|
|
25
|
-
creator:
|
|
26
|
-
creatorRealm:
|
|
27
|
-
creatorName:
|
|
28
|
-
bucket:
|
|
29
|
-
expirationDate:
|
|
30
|
-
name:
|
|
31
|
-
size:
|
|
32
|
-
mimeType:
|
|
33
|
-
tags:
|
|
34
|
-
checksum:
|
|
19
|
+
declare const files: alepha_orm0.EntityPrimitive<alepha135.TObject<{
|
|
20
|
+
id: alepha_orm0.PgAttr<alepha_orm0.PgAttr<alepha135.TString, typeof alepha_orm0.PG_PRIMARY_KEY>, typeof alepha_orm0.PG_DEFAULT>;
|
|
21
|
+
version: alepha_orm0.PgAttr<alepha_orm0.PgAttr<alepha135.TInteger, typeof alepha_orm0.PG_VERSION>, typeof alepha_orm0.PG_DEFAULT>;
|
|
22
|
+
createdAt: alepha_orm0.PgAttr<alepha_orm0.PgAttr<alepha135.TString, typeof alepha_orm0.PG_CREATED_AT>, typeof alepha_orm0.PG_DEFAULT>;
|
|
23
|
+
updatedAt: alepha_orm0.PgAttr<alepha_orm0.PgAttr<alepha135.TString, typeof alepha_orm0.PG_UPDATED_AT>, typeof alepha_orm0.PG_DEFAULT>;
|
|
24
|
+
blobId: alepha135.TString;
|
|
25
|
+
creator: alepha135.TOptional<alepha135.TString>;
|
|
26
|
+
creatorRealm: alepha135.TOptional<alepha135.TString>;
|
|
27
|
+
creatorName: alepha135.TOptional<alepha135.TString>;
|
|
28
|
+
bucket: alepha135.TString;
|
|
29
|
+
expirationDate: alepha135.TOptional<alepha135.TString>;
|
|
30
|
+
name: alepha135.TString;
|
|
31
|
+
size: alepha135.TNumber;
|
|
32
|
+
mimeType: alepha135.TString;
|
|
33
|
+
tags: alepha135.TOptional<alepha135.TArray<alepha135.TString>>;
|
|
34
|
+
checksum: alepha135.TOptional<alepha135.TString>;
|
|
35
35
|
}>>;
|
|
36
36
|
type FileEntity = Static<typeof files.schema>;
|
|
37
37
|
//#endregion
|
|
38
38
|
//#region ../../src/api/files/schemas/fileQuerySchema.d.ts
|
|
39
|
-
declare const fileQuerySchema:
|
|
40
|
-
page:
|
|
41
|
-
size:
|
|
42
|
-
sort:
|
|
43
|
-
bucket:
|
|
44
|
-
tags:
|
|
45
|
-
name:
|
|
46
|
-
mimeType:
|
|
47
|
-
creator:
|
|
48
|
-
createdAfter:
|
|
49
|
-
createdBefore:
|
|
39
|
+
declare const fileQuerySchema: alepha135.TObject<{
|
|
40
|
+
page: alepha135.TOptional<alepha135.TInteger>;
|
|
41
|
+
size: alepha135.TOptional<alepha135.TInteger>;
|
|
42
|
+
sort: alepha135.TOptional<alepha135.TString>;
|
|
43
|
+
bucket: alepha135.TOptional<alepha135.TString>;
|
|
44
|
+
tags: alepha135.TOptional<alepha135.TArray<alepha135.TString>>;
|
|
45
|
+
name: alepha135.TOptional<alepha135.TString>;
|
|
46
|
+
mimeType: alepha135.TOptional<alepha135.TString>;
|
|
47
|
+
creator: alepha135.TOptional<alepha135.TString>;
|
|
48
|
+
createdAfter: alepha135.TOptional<alepha135.TString>;
|
|
49
|
+
createdBefore: alepha135.TOptional<alepha135.TString>;
|
|
50
50
|
}>;
|
|
51
51
|
type FileQuery = Static<typeof fileQuerySchema>;
|
|
52
52
|
//#endregion
|
|
@@ -80,114 +80,114 @@ type TObjectUpdate<T extends TObject> = TObject<{ [K in keyof T["properties"]]:
|
|
|
80
80
|
//#region ../../src/orm/primitives/$entity.d.ts
|
|
81
81
|
interface EntityPrimitiveOptions<T extends TObject, Keys = keyof Static<T>> {
|
|
82
82
|
/**
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
* The database table name that will be created for this entity.
|
|
84
|
+
* If not provided, name will be inferred from the $repository variable name.
|
|
85
|
+
*/
|
|
86
86
|
name: string;
|
|
87
87
|
/**
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
* TypeBox schema defining the table structure and column types.
|
|
89
|
+
*/
|
|
90
90
|
schema: T;
|
|
91
91
|
/**
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
* Database indexes to create for query optimization.
|
|
93
|
+
*/
|
|
94
94
|
indexes?: (Keys | {
|
|
95
95
|
/**
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
* Single column to index.
|
|
97
|
+
*/
|
|
98
98
|
column: Keys;
|
|
99
99
|
/**
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
* Whether this should be a unique index (enforces uniqueness constraint).
|
|
101
|
+
*/
|
|
102
102
|
unique?: boolean;
|
|
103
103
|
/**
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
* Custom name for the index. If not provided, generates name automatically.
|
|
105
|
+
*/
|
|
106
106
|
name?: string;
|
|
107
107
|
} | {
|
|
108
108
|
/**
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
* Multiple columns for composite index (order matters for query optimization).
|
|
110
|
+
*/
|
|
111
111
|
columns: Keys[];
|
|
112
112
|
/**
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
* Whether this should be a unique index (enforces uniqueness constraint).
|
|
114
|
+
*/
|
|
115
115
|
unique?: boolean;
|
|
116
116
|
/**
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
* Custom name for the index. If not provided, generates name automatically.
|
|
118
|
+
*/
|
|
119
119
|
name?: string;
|
|
120
120
|
})[];
|
|
121
121
|
/**
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
* Foreign key constraints to maintain referential integrity.
|
|
123
|
+
*/
|
|
124
124
|
foreignKeys?: Array<{
|
|
125
125
|
/**
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
* Optional name for the foreign key constraint.
|
|
127
|
+
*/
|
|
128
128
|
name?: string;
|
|
129
129
|
/**
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
* Local columns that reference the foreign table.
|
|
131
|
+
*/
|
|
132
132
|
columns: Array<keyof Static<T>>;
|
|
133
133
|
/**
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
134
|
+
* Referenced columns in the foreign table.
|
|
135
|
+
* Must be EntityColumn references from other entities.
|
|
136
|
+
*/
|
|
137
137
|
foreignColumns: Array<() => EntityColumn<any>>;
|
|
138
138
|
}>;
|
|
139
139
|
/**
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
140
|
+
* Additional table constraints for data validation.
|
|
141
|
+
*
|
|
142
|
+
* Constraints enforce business rules at the database level, providing
|
|
143
|
+
* an additional layer of data integrity beyond application validation.
|
|
144
|
+
*
|
|
145
|
+
* **Constraint Types**:
|
|
146
|
+
* - **Unique constraints**: Prevent duplicate values across columns
|
|
147
|
+
* - **Check constraints**: Enforce custom validation rules with SQL expressions
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```ts
|
|
151
|
+
* constraints: [
|
|
152
|
+
* {
|
|
153
|
+
* name: "unique_user_email",
|
|
154
|
+
* columns: ["email"],
|
|
155
|
+
* unique: true
|
|
156
|
+
* },
|
|
157
|
+
* {
|
|
158
|
+
* name: "valid_age_range",
|
|
159
|
+
* columns: ["age"],
|
|
160
|
+
* check: sql`age >= 0 AND age <= 150`
|
|
161
|
+
* },
|
|
162
|
+
* {
|
|
163
|
+
* name: "unique_user_username_per_tenant",
|
|
164
|
+
* columns: ["tenantId", "username"],
|
|
165
|
+
* unique: true
|
|
166
|
+
* }
|
|
167
|
+
* ]
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
170
|
constraints?: Array<{
|
|
171
171
|
/**
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
* Columns involved in this constraint.
|
|
173
|
+
*/
|
|
174
174
|
columns: Array<keyof Static<T>>;
|
|
175
175
|
/**
|
|
176
|
-
|
|
177
|
-
|
|
176
|
+
* Optional name for the constraint.
|
|
177
|
+
*/
|
|
178
178
|
name?: string;
|
|
179
179
|
/**
|
|
180
|
-
|
|
181
|
-
|
|
180
|
+
* Whether this is a unique constraint.
|
|
181
|
+
*/
|
|
182
182
|
unique?: boolean | {};
|
|
183
183
|
/**
|
|
184
|
-
|
|
185
|
-
|
|
184
|
+
* SQL expression for check constraint validation.
|
|
185
|
+
*/
|
|
186
186
|
check?: SQL;
|
|
187
187
|
}>;
|
|
188
188
|
/**
|
|
189
|
-
|
|
190
|
-
|
|
189
|
+
* Advanced Drizzle ORM configuration for complex table setups.
|
|
190
|
+
*/
|
|
191
191
|
config?: (self: BuildExtraConfigColumns<string, FromSchema<T>, "pg">) => PgTableExtraConfigValue[];
|
|
192
192
|
}
|
|
193
193
|
declare class EntityPrimitive<T extends TObject = TObject> {
|
|
@@ -235,8 +235,8 @@ type PgSymbols = {
|
|
|
235
235
|
[PG_REF]: PgRefOptions;
|
|
236
236
|
[PG_ENUM]: PgEnumOptions;
|
|
237
237
|
/**
|
|
238
|
-
|
|
239
|
-
|
|
238
|
+
* @deprecated Use `PG_IDENTITY` instead.
|
|
239
|
+
*/
|
|
240
240
|
[PG_SERIAL]: {};
|
|
241
241
|
};
|
|
242
242
|
type PgSymbolKeys = keyof PgSymbols;
|
|
@@ -267,46 +267,46 @@ interface PgRefOptions {
|
|
|
267
267
|
type PgAttr<T extends TSchema, TAttr extends PgSymbolKeys> = T & { [K in TAttr]: PgSymbols[K] };
|
|
268
268
|
//#endregion
|
|
269
269
|
//#region ../../src/api/files/schemas/fileResourceSchema.d.ts
|
|
270
|
-
declare const fileResourceSchema:
|
|
271
|
-
id: PgAttr<PgAttr<
|
|
272
|
-
version: PgAttr<PgAttr<
|
|
273
|
-
createdAt: PgAttr<PgAttr<
|
|
274
|
-
updatedAt: PgAttr<PgAttr<
|
|
275
|
-
blobId:
|
|
276
|
-
creator:
|
|
277
|
-
creatorRealm:
|
|
278
|
-
creatorName:
|
|
279
|
-
bucket:
|
|
280
|
-
expirationDate:
|
|
281
|
-
name:
|
|
282
|
-
size:
|
|
283
|
-
mimeType:
|
|
284
|
-
tags:
|
|
285
|
-
checksum:
|
|
270
|
+
declare const fileResourceSchema: alepha135.TObject<{
|
|
271
|
+
id: PgAttr<PgAttr<alepha135.TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
|
|
272
|
+
version: PgAttr<PgAttr<alepha135.TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
|
|
273
|
+
createdAt: PgAttr<PgAttr<alepha135.TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
|
|
274
|
+
updatedAt: PgAttr<PgAttr<alepha135.TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
|
|
275
|
+
blobId: alepha135.TString;
|
|
276
|
+
creator: alepha135.TOptional<alepha135.TString>;
|
|
277
|
+
creatorRealm: alepha135.TOptional<alepha135.TString>;
|
|
278
|
+
creatorName: alepha135.TOptional<alepha135.TString>;
|
|
279
|
+
bucket: alepha135.TString;
|
|
280
|
+
expirationDate: alepha135.TOptional<alepha135.TString>;
|
|
281
|
+
name: alepha135.TString;
|
|
282
|
+
size: alepha135.TNumber;
|
|
283
|
+
mimeType: alepha135.TString;
|
|
284
|
+
tags: alepha135.TOptional<alepha135.TArray<alepha135.TString>>;
|
|
285
|
+
checksum: alepha135.TOptional<alepha135.TString>;
|
|
286
286
|
}>;
|
|
287
287
|
type FileResource = Static<typeof fileResourceSchema>;
|
|
288
288
|
//#endregion
|
|
289
289
|
//#region ../../src/api/files/schemas/storageStatsSchema.d.ts
|
|
290
|
-
declare const bucketStatsSchema:
|
|
291
|
-
bucket:
|
|
292
|
-
totalSize:
|
|
293
|
-
fileCount:
|
|
290
|
+
declare const bucketStatsSchema: alepha135.TObject<{
|
|
291
|
+
bucket: alepha135.TString;
|
|
292
|
+
totalSize: alepha135.TNumber;
|
|
293
|
+
fileCount: alepha135.TNumber;
|
|
294
294
|
}>;
|
|
295
|
-
declare const mimeTypeStatsSchema:
|
|
296
|
-
mimeType:
|
|
297
|
-
fileCount:
|
|
295
|
+
declare const mimeTypeStatsSchema: alepha135.TObject<{
|
|
296
|
+
mimeType: alepha135.TString;
|
|
297
|
+
fileCount: alepha135.TNumber;
|
|
298
298
|
}>;
|
|
299
|
-
declare const storageStatsSchema:
|
|
300
|
-
totalSize:
|
|
301
|
-
totalFiles:
|
|
302
|
-
byBucket:
|
|
303
|
-
bucket:
|
|
304
|
-
totalSize:
|
|
305
|
-
fileCount:
|
|
299
|
+
declare const storageStatsSchema: alepha135.TObject<{
|
|
300
|
+
totalSize: alepha135.TNumber;
|
|
301
|
+
totalFiles: alepha135.TNumber;
|
|
302
|
+
byBucket: alepha135.TArray<alepha135.TObject<{
|
|
303
|
+
bucket: alepha135.TString;
|
|
304
|
+
totalSize: alepha135.TNumber;
|
|
305
|
+
fileCount: alepha135.TNumber;
|
|
306
306
|
}>>;
|
|
307
|
-
byMimeType:
|
|
308
|
-
mimeType:
|
|
309
|
-
fileCount:
|
|
307
|
+
byMimeType: alepha135.TArray<alepha135.TObject<{
|
|
308
|
+
mimeType: alepha135.TString;
|
|
309
|
+
fileCount: alepha135.TNumber;
|
|
310
310
|
}>>;
|
|
311
311
|
}>;
|
|
312
312
|
type BucketStats = Static<typeof bucketStatsSchema>;
|
|
@@ -317,79 +317,79 @@ type StorageStats = Static<typeof storageStatsSchema>;
|
|
|
317
317
|
declare class FileService {
|
|
318
318
|
protected readonly alepha: Alepha;
|
|
319
319
|
protected readonly log: alepha_logger0.Logger;
|
|
320
|
-
protected readonly fileRepository:
|
|
321
|
-
id:
|
|
322
|
-
version:
|
|
323
|
-
createdAt:
|
|
324
|
-
updatedAt:
|
|
325
|
-
blobId:
|
|
326
|
-
creator:
|
|
327
|
-
creatorRealm:
|
|
328
|
-
creatorName:
|
|
329
|
-
bucket:
|
|
330
|
-
expirationDate:
|
|
331
|
-
name:
|
|
332
|
-
size:
|
|
333
|
-
mimeType:
|
|
334
|
-
tags:
|
|
335
|
-
checksum:
|
|
320
|
+
protected readonly fileRepository: alepha_orm0.Repository<alepha135.TObject<{
|
|
321
|
+
id: alepha_orm0.PgAttr<alepha_orm0.PgAttr<alepha135.TString, typeof alepha_orm0.PG_PRIMARY_KEY>, typeof alepha_orm0.PG_DEFAULT>;
|
|
322
|
+
version: alepha_orm0.PgAttr<alepha_orm0.PgAttr<alepha135.TInteger, typeof alepha_orm0.PG_VERSION>, typeof alepha_orm0.PG_DEFAULT>;
|
|
323
|
+
createdAt: alepha_orm0.PgAttr<alepha_orm0.PgAttr<alepha135.TString, typeof alepha_orm0.PG_CREATED_AT>, typeof alepha_orm0.PG_DEFAULT>;
|
|
324
|
+
updatedAt: alepha_orm0.PgAttr<alepha_orm0.PgAttr<alepha135.TString, typeof alepha_orm0.PG_UPDATED_AT>, typeof alepha_orm0.PG_DEFAULT>;
|
|
325
|
+
blobId: alepha135.TString;
|
|
326
|
+
creator: alepha135.TOptional<alepha135.TString>;
|
|
327
|
+
creatorRealm: alepha135.TOptional<alepha135.TString>;
|
|
328
|
+
creatorName: alepha135.TOptional<alepha135.TString>;
|
|
329
|
+
bucket: alepha135.TString;
|
|
330
|
+
expirationDate: alepha135.TOptional<alepha135.TString>;
|
|
331
|
+
name: alepha135.TString;
|
|
332
|
+
size: alepha135.TNumber;
|
|
333
|
+
mimeType: alepha135.TString;
|
|
334
|
+
tags: alepha135.TOptional<alepha135.TArray<alepha135.TString>>;
|
|
335
|
+
checksum: alepha135.TOptional<alepha135.TString>;
|
|
336
336
|
}>>;
|
|
337
337
|
protected readonly dateTimeProvider: DateTimeProvider;
|
|
338
338
|
protected readonly defaultBucket: BucketPrimitive;
|
|
339
|
-
protected onUploadFile:
|
|
340
|
-
protected onDeleteBucketFile:
|
|
339
|
+
protected onUploadFile: alepha135.HookPrimitive<"bucket:file:uploaded">;
|
|
340
|
+
protected onDeleteBucketFile: alepha135.HookPrimitive<"bucket:file:deleted">;
|
|
341
341
|
/**
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
342
|
+
* Calculates SHA-256 checksum of a file.
|
|
343
|
+
*
|
|
344
|
+
* @param file - The file to calculate checksum for
|
|
345
|
+
* @returns Hexadecimal string representation of the SHA-256 hash
|
|
346
|
+
* @protected
|
|
347
|
+
*/
|
|
348
348
|
protected calculateChecksum(file: FileLike): Promise<string>;
|
|
349
349
|
/**
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
350
|
+
* Gets a bucket primitive by name.
|
|
351
|
+
*
|
|
352
|
+
* @param bucketName - The name of the bucket to retrieve (defaults to "default")
|
|
353
|
+
* @returns The bucket primitive
|
|
354
|
+
* @throws {NotFoundError} If the bucket is not found
|
|
355
|
+
*/
|
|
356
356
|
bucket(bucketName?: string): BucketPrimitive;
|
|
357
357
|
/**
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
358
|
+
* Finds files matching the given query criteria with pagination support.
|
|
359
|
+
* Supports filtering by bucket, tags, name, mimeType, creator, and date range.
|
|
360
|
+
*
|
|
361
|
+
* @param q - Query parameters including bucket, tags, name, mimeType, creator, date range, pagination, and sorting
|
|
362
|
+
* @returns Paginated list of file entities
|
|
363
|
+
*/
|
|
364
364
|
findFiles(q?: FileQuery): Promise<Page<FileEntity>>;
|
|
365
365
|
/**
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
366
|
+
* Finds files that have expired based on their expiration date.
|
|
367
|
+
* Limited to 1000 files per call to prevent memory issues.
|
|
368
|
+
*
|
|
369
|
+
* @returns Array of expired file entities
|
|
370
|
+
*/
|
|
371
371
|
findExpiredFiles(): Promise<FileEntity[]>;
|
|
372
372
|
/**
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
373
|
+
* Calculates an expiration date based on a TTL (time to live) duration.
|
|
374
|
+
*
|
|
375
|
+
* @param ttl - Duration like "1 day", "2 hours", etc.
|
|
376
|
+
* @returns DateTime representation of the expiration date, or undefined if no TTL provided
|
|
377
|
+
* @protected
|
|
378
|
+
*/
|
|
379
379
|
protected getExpirationDate(ttl?: DurationLike): string | undefined;
|
|
380
380
|
/**
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
381
|
+
* Uploads a file to a bucket and creates a database record with metadata.
|
|
382
|
+
* Automatically calculates and stores the file checksum (SHA-256).
|
|
383
|
+
*
|
|
384
|
+
* @param file - The file to upload
|
|
385
|
+
* @param options - Upload options including bucket, expiration, user, and tags
|
|
386
|
+
* @param options.bucket - Target bucket name (defaults to "default")
|
|
387
|
+
* @param options.expirationDate - When the file should expire
|
|
388
|
+
* @param options.user - User performing the upload (for audit trail)
|
|
389
|
+
* @param options.tags - Tags to associate with the file
|
|
390
|
+
* @returns The created file entity with all metadata
|
|
391
|
+
* @throws {NotFoundError} If the specified bucket doesn't exist
|
|
392
|
+
*/
|
|
393
393
|
uploadFile(file: FileLike, options?: {
|
|
394
394
|
expirationDate?: string | DateTime;
|
|
395
395
|
bucket?: string;
|
|
@@ -397,63 +397,63 @@ declare class FileService {
|
|
|
397
397
|
tags?: string[];
|
|
398
398
|
}): Promise<FileEntity>;
|
|
399
399
|
/**
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
400
|
+
* Streams a file from storage by its database ID.
|
|
401
|
+
*
|
|
402
|
+
* @param id - The database ID (UUID) of the file to stream
|
|
403
|
+
* @returns The file object ready for streaming/downloading
|
|
404
|
+
* @throws {NotFoundError} If the file doesn't exist in the database
|
|
405
|
+
* @throws {FileNotFoundError} If the file exists in database but not in storage
|
|
406
|
+
*/
|
|
407
407
|
streamFile(id: string): Promise<FileLike>;
|
|
408
408
|
/**
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
409
|
+
* Updates file metadata (name, tags, expiration date).
|
|
410
|
+
* Does not modify the actual file content in storage.
|
|
411
|
+
*
|
|
412
|
+
* @param id - The database ID (UUID) of the file to update
|
|
413
|
+
* @param data - Partial file data to update
|
|
414
|
+
* @param data.name - New file name
|
|
415
|
+
* @param data.tags - New tags array
|
|
416
|
+
* @param data.expirationDate - New expiration date
|
|
417
|
+
* @returns The updated file entity
|
|
418
|
+
* @throws {NotFoundError} If the file doesn't exist in the database
|
|
419
|
+
*/
|
|
420
420
|
updateFile(id: string, data: {
|
|
421
421
|
name?: string;
|
|
422
422
|
tags?: string[];
|
|
423
423
|
expirationDate?: DateTime | string;
|
|
424
424
|
}): Promise<FileEntity>;
|
|
425
425
|
/**
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
426
|
+
* Deletes a file from both storage and database.
|
|
427
|
+
* Handles cases where file is already deleted from storage gracefully.
|
|
428
|
+
* Always ensures database record is removed even if storage deletion fails.
|
|
429
|
+
*
|
|
430
|
+
* @param id - The database ID (UUID) of the file to delete
|
|
431
|
+
* @returns Success response with the deleted file ID
|
|
432
|
+
* @throws {NotFoundError} If the file doesn't exist in the database
|
|
433
|
+
*/
|
|
434
434
|
deleteFile(id: string): Promise<Ok>;
|
|
435
435
|
/**
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
436
|
+
* Retrieves a file entity by its ID.
|
|
437
|
+
* If already an entity object, returns it as-is (convenience method).
|
|
438
|
+
*
|
|
439
|
+
* @param id - Either a UUID string or an existing FileEntity object
|
|
440
|
+
* @returns The file entity
|
|
441
|
+
* @throws {NotFoundError} If the file doesn't exist in the database
|
|
442
|
+
*/
|
|
443
443
|
getFileById(id: string | FileEntity): Promise<FileEntity>;
|
|
444
444
|
/**
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
445
|
+
* Gets storage statistics including total size, file count, and breakdowns by bucket and MIME type.
|
|
446
|
+
*
|
|
447
|
+
* @returns Storage statistics with aggregated data
|
|
448
|
+
*/
|
|
449
449
|
getStorageStats(): Promise<StorageStats>;
|
|
450
450
|
/**
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
451
|
+
* Converts a file entity to a file resource (API response format).
|
|
452
|
+
* Currently a pass-through, but allows for future transformation logic.
|
|
453
|
+
*
|
|
454
|
+
* @param entity - The file entity to convert
|
|
455
|
+
* @returns The file resource for API responses
|
|
456
|
+
*/
|
|
457
457
|
entityToResource(entity: FileEntity): FileResource;
|
|
458
458
|
}
|
|
459
459
|
//#endregion
|
|
@@ -467,22 +467,22 @@ declare class AdminFileStatsController {
|
|
|
467
467
|
protected readonly group = "admin:files";
|
|
468
468
|
protected readonly fileService: FileService;
|
|
469
469
|
/**
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
470
|
+
* GET /files/stats - Gets storage statistics.
|
|
471
|
+
* Returns aggregated data including total size, file count,
|
|
472
|
+
* and breakdowns by bucket and MIME type.
|
|
473
|
+
*/
|
|
474
474
|
readonly getStats: alepha_server0.ActionPrimitiveFn<{
|
|
475
|
-
response:
|
|
476
|
-
totalSize:
|
|
477
|
-
totalFiles:
|
|
478
|
-
byBucket:
|
|
479
|
-
bucket:
|
|
480
|
-
totalSize:
|
|
481
|
-
fileCount:
|
|
475
|
+
response: alepha135.TObject<{
|
|
476
|
+
totalSize: alepha135.TNumber;
|
|
477
|
+
totalFiles: alepha135.TNumber;
|
|
478
|
+
byBucket: alepha135.TArray<alepha135.TObject<{
|
|
479
|
+
bucket: alepha135.TString;
|
|
480
|
+
totalSize: alepha135.TNumber;
|
|
481
|
+
fileCount: alepha135.TNumber;
|
|
482
482
|
}>>;
|
|
483
|
-
byMimeType:
|
|
484
|
-
mimeType:
|
|
485
|
-
fileCount:
|
|
483
|
+
byMimeType: alepha135.TArray<alepha135.TObject<{
|
|
484
|
+
mimeType: alepha135.TString;
|
|
485
|
+
fileCount: alepha135.TNumber;
|
|
486
486
|
}>>;
|
|
487
487
|
}>;
|
|
488
488
|
}>;
|
|
@@ -498,126 +498,126 @@ declare class FileController {
|
|
|
498
498
|
protected readonly group = "files";
|
|
499
499
|
protected readonly fileService: FileService;
|
|
500
500
|
/**
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
501
|
+
* GET /files - Lists files with optional filtering and pagination.
|
|
502
|
+
* Supports filtering by bucket and tags.
|
|
503
|
+
*/
|
|
504
504
|
readonly findFiles: alepha_server0.ActionPrimitiveFn<{
|
|
505
|
-
query:
|
|
506
|
-
page:
|
|
507
|
-
size:
|
|
508
|
-
sort:
|
|
509
|
-
bucket:
|
|
510
|
-
tags:
|
|
511
|
-
name:
|
|
512
|
-
mimeType:
|
|
513
|
-
creator:
|
|
514
|
-
createdAfter:
|
|
515
|
-
createdBefore:
|
|
505
|
+
query: alepha135.TObject<{
|
|
506
|
+
page: alepha135.TOptional<alepha135.TInteger>;
|
|
507
|
+
size: alepha135.TOptional<alepha135.TInteger>;
|
|
508
|
+
sort: alepha135.TOptional<alepha135.TString>;
|
|
509
|
+
bucket: alepha135.TOptional<alepha135.TString>;
|
|
510
|
+
tags: alepha135.TOptional<alepha135.TArray<alepha135.TString>>;
|
|
511
|
+
name: alepha135.TOptional<alepha135.TString>;
|
|
512
|
+
mimeType: alepha135.TOptional<alepha135.TString>;
|
|
513
|
+
creator: alepha135.TOptional<alepha135.TString>;
|
|
514
|
+
createdAfter: alepha135.TOptional<alepha135.TString>;
|
|
515
|
+
createdBefore: alepha135.TOptional<alepha135.TString>;
|
|
516
516
|
}>;
|
|
517
|
-
response:
|
|
518
|
-
id: PgAttr<PgAttr<
|
|
519
|
-
version: PgAttr<PgAttr<
|
|
520
|
-
createdAt: PgAttr<PgAttr<
|
|
521
|
-
updatedAt: PgAttr<PgAttr<
|
|
522
|
-
blobId:
|
|
523
|
-
creator:
|
|
524
|
-
creatorRealm:
|
|
525
|
-
creatorName:
|
|
526
|
-
bucket:
|
|
527
|
-
expirationDate:
|
|
528
|
-
name:
|
|
529
|
-
size:
|
|
530
|
-
mimeType:
|
|
531
|
-
tags:
|
|
532
|
-
checksum:
|
|
517
|
+
response: alepha135.TPage<alepha135.TObject<{
|
|
518
|
+
id: PgAttr<PgAttr<alepha135.TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
|
|
519
|
+
version: PgAttr<PgAttr<alepha135.TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
|
|
520
|
+
createdAt: PgAttr<PgAttr<alepha135.TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
|
|
521
|
+
updatedAt: PgAttr<PgAttr<alepha135.TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
|
|
522
|
+
blobId: alepha135.TString;
|
|
523
|
+
creator: alepha135.TOptional<alepha135.TString>;
|
|
524
|
+
creatorRealm: alepha135.TOptional<alepha135.TString>;
|
|
525
|
+
creatorName: alepha135.TOptional<alepha135.TString>;
|
|
526
|
+
bucket: alepha135.TString;
|
|
527
|
+
expirationDate: alepha135.TOptional<alepha135.TString>;
|
|
528
|
+
name: alepha135.TString;
|
|
529
|
+
size: alepha135.TNumber;
|
|
530
|
+
mimeType: alepha135.TString;
|
|
531
|
+
tags: alepha135.TOptional<alepha135.TArray<alepha135.TString>>;
|
|
532
|
+
checksum: alepha135.TOptional<alepha135.TString>;
|
|
533
533
|
}>>;
|
|
534
534
|
}>;
|
|
535
535
|
/**
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
536
|
+
* DELETE /files/:id - Deletes a file from both storage and database.
|
|
537
|
+
* Removes the file from the bucket and cleans up the database record.
|
|
538
|
+
*/
|
|
539
539
|
readonly deleteFile: alepha_server0.ActionPrimitiveFn<{
|
|
540
|
-
params:
|
|
541
|
-
id:
|
|
540
|
+
params: alepha135.TObject<{
|
|
541
|
+
id: alepha135.TString;
|
|
542
542
|
}>;
|
|
543
|
-
response:
|
|
544
|
-
ok:
|
|
545
|
-
id:
|
|
546
|
-
count:
|
|
543
|
+
response: alepha135.TObject<{
|
|
544
|
+
ok: alepha135.TBoolean;
|
|
545
|
+
id: alepha135.TOptional<alepha135.TUnion<[alepha135.TString, alepha135.TInteger]>>;
|
|
546
|
+
count: alepha135.TOptional<alepha135.TNumber>;
|
|
547
547
|
}>;
|
|
548
548
|
}>;
|
|
549
549
|
/**
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
550
|
+
* POST /files - Uploads a new file to storage.
|
|
551
|
+
* Creates a database record with metadata and calculates checksum.
|
|
552
|
+
* Optionally specify bucket and expiration date.
|
|
553
|
+
*/
|
|
554
554
|
readonly uploadFile: alepha_server0.ActionPrimitiveFn<{
|
|
555
|
-
body:
|
|
556
|
-
file:
|
|
555
|
+
body: alepha135.TObject<{
|
|
556
|
+
file: alepha135.TFile;
|
|
557
557
|
}>;
|
|
558
|
-
query:
|
|
559
|
-
expirationDate:
|
|
560
|
-
bucket:
|
|
558
|
+
query: alepha135.TObject<{
|
|
559
|
+
expirationDate: alepha135.TOptional<alepha135.TString>;
|
|
560
|
+
bucket: alepha135.TOptional<alepha135.TString>;
|
|
561
561
|
}>;
|
|
562
|
-
response:
|
|
563
|
-
id: PgAttr<PgAttr<
|
|
564
|
-
version: PgAttr<PgAttr<
|
|
565
|
-
createdAt: PgAttr<PgAttr<
|
|
566
|
-
updatedAt: PgAttr<PgAttr<
|
|
567
|
-
blobId:
|
|
568
|
-
creator:
|
|
569
|
-
creatorRealm:
|
|
570
|
-
creatorName:
|
|
571
|
-
bucket:
|
|
572
|
-
expirationDate:
|
|
573
|
-
name:
|
|
574
|
-
size:
|
|
575
|
-
mimeType:
|
|
576
|
-
tags:
|
|
577
|
-
checksum:
|
|
562
|
+
response: alepha135.TObject<{
|
|
563
|
+
id: PgAttr<PgAttr<alepha135.TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
|
|
564
|
+
version: PgAttr<PgAttr<alepha135.TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
|
|
565
|
+
createdAt: PgAttr<PgAttr<alepha135.TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
|
|
566
|
+
updatedAt: PgAttr<PgAttr<alepha135.TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
|
|
567
|
+
blobId: alepha135.TString;
|
|
568
|
+
creator: alepha135.TOptional<alepha135.TString>;
|
|
569
|
+
creatorRealm: alepha135.TOptional<alepha135.TString>;
|
|
570
|
+
creatorName: alepha135.TOptional<alepha135.TString>;
|
|
571
|
+
bucket: alepha135.TString;
|
|
572
|
+
expirationDate: alepha135.TOptional<alepha135.TString>;
|
|
573
|
+
name: alepha135.TString;
|
|
574
|
+
size: alepha135.TNumber;
|
|
575
|
+
mimeType: alepha135.TString;
|
|
576
|
+
tags: alepha135.TOptional<alepha135.TArray<alepha135.TString>>;
|
|
577
|
+
checksum: alepha135.TOptional<alepha135.TString>;
|
|
578
578
|
}>;
|
|
579
579
|
}>;
|
|
580
580
|
/**
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
581
|
+
* PATCH /files/:id - Updates file metadata.
|
|
582
|
+
* Allows updating name, tags, and expiration date without modifying file content.
|
|
583
|
+
*/
|
|
584
584
|
readonly updateFile: alepha_server0.ActionPrimitiveFn<{
|
|
585
|
-
params:
|
|
586
|
-
id:
|
|
585
|
+
params: alepha135.TObject<{
|
|
586
|
+
id: alepha135.TString;
|
|
587
587
|
}>;
|
|
588
|
-
body:
|
|
589
|
-
name:
|
|
590
|
-
tags:
|
|
591
|
-
expirationDate:
|
|
588
|
+
body: alepha135.TObject<{
|
|
589
|
+
name: alepha135.TOptional<alepha135.TString>;
|
|
590
|
+
tags: alepha135.TOptional<alepha135.TArray<alepha135.TString>>;
|
|
591
|
+
expirationDate: alepha135.TOptional<alepha135.TString>;
|
|
592
592
|
}>;
|
|
593
|
-
response:
|
|
594
|
-
id: PgAttr<PgAttr<
|
|
595
|
-
version: PgAttr<PgAttr<
|
|
596
|
-
createdAt: PgAttr<PgAttr<
|
|
597
|
-
updatedAt: PgAttr<PgAttr<
|
|
598
|
-
blobId:
|
|
599
|
-
creator:
|
|
600
|
-
creatorRealm:
|
|
601
|
-
creatorName:
|
|
602
|
-
bucket:
|
|
603
|
-
expirationDate:
|
|
604
|
-
name:
|
|
605
|
-
size:
|
|
606
|
-
mimeType:
|
|
607
|
-
tags:
|
|
608
|
-
checksum:
|
|
593
|
+
response: alepha135.TObject<{
|
|
594
|
+
id: PgAttr<PgAttr<alepha135.TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
|
|
595
|
+
version: PgAttr<PgAttr<alepha135.TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
|
|
596
|
+
createdAt: PgAttr<PgAttr<alepha135.TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
|
|
597
|
+
updatedAt: PgAttr<PgAttr<alepha135.TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
|
|
598
|
+
blobId: alepha135.TString;
|
|
599
|
+
creator: alepha135.TOptional<alepha135.TString>;
|
|
600
|
+
creatorRealm: alepha135.TOptional<alepha135.TString>;
|
|
601
|
+
creatorName: alepha135.TOptional<alepha135.TString>;
|
|
602
|
+
bucket: alepha135.TString;
|
|
603
|
+
expirationDate: alepha135.TOptional<alepha135.TString>;
|
|
604
|
+
name: alepha135.TString;
|
|
605
|
+
size: alepha135.TNumber;
|
|
606
|
+
mimeType: alepha135.TString;
|
|
607
|
+
tags: alepha135.TOptional<alepha135.TArray<alepha135.TString>>;
|
|
608
|
+
checksum: alepha135.TOptional<alepha135.TString>;
|
|
609
609
|
}>;
|
|
610
610
|
}>;
|
|
611
611
|
/**
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
612
|
+
* GET /files/:id - Streams/downloads a file by its ID.
|
|
613
|
+
* Returns the file content with appropriate Content-Type header.
|
|
614
|
+
* Cached with ETag support for 1 year (immutable).
|
|
615
|
+
*/
|
|
616
616
|
readonly streamFile: alepha_server0.ActionPrimitiveFn<{
|
|
617
|
-
params:
|
|
618
|
-
id:
|
|
617
|
+
params: alepha135.TObject<{
|
|
618
|
+
id: alepha135.TString;
|
|
619
619
|
}>;
|
|
620
|
-
response:
|
|
620
|
+
response: alepha135.TFile;
|
|
621
621
|
}>;
|
|
622
622
|
}
|
|
623
623
|
//#endregion
|
|
@@ -631,34 +631,41 @@ declare class FileJobs {
|
|
|
631
631
|
declare module "alepha/bucket" {
|
|
632
632
|
interface BucketFileOptions {
|
|
633
633
|
/**
|
|
634
|
-
|
|
635
|
-
|
|
634
|
+
* Time to live for the files in the bucket.
|
|
635
|
+
*/
|
|
636
636
|
ttl?: DurationLike;
|
|
637
637
|
/**
|
|
638
|
-
|
|
639
|
-
|
|
638
|
+
* Tags for the bucket.
|
|
639
|
+
*/
|
|
640
640
|
tags?: string[];
|
|
641
641
|
/**
|
|
642
|
-
|
|
643
|
-
|
|
642
|
+
* User performing the operation.
|
|
643
|
+
*/
|
|
644
644
|
user?: UserAccountToken;
|
|
645
645
|
/**
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
646
|
+
* Whether to persist the file metadata in the database.
|
|
647
|
+
*
|
|
648
|
+
* @default true
|
|
649
|
+
*/
|
|
650
650
|
persist?: boolean;
|
|
651
651
|
}
|
|
652
652
|
}
|
|
653
653
|
/**
|
|
654
|
-
*
|
|
654
|
+
* | type | quality | stability |
|
|
655
|
+
* |------|---------|-----------|
|
|
656
|
+
* | backend | standard | stable |
|
|
655
657
|
*
|
|
656
|
-
*
|
|
657
|
-
*
|
|
658
|
+
* File management endpoints.
|
|
659
|
+
*
|
|
660
|
+
* **Features:**
|
|
661
|
+
* - Upload/download endpoints
|
|
662
|
+
* - File metadata storage
|
|
663
|
+
* - TTL-based expiration
|
|
664
|
+
* - Storage statistics
|
|
658
665
|
*
|
|
659
666
|
* @module alepha.api.files
|
|
660
667
|
*/
|
|
661
|
-
declare const AlephaApiFiles:
|
|
668
|
+
declare const AlephaApiFiles: alepha135.Service<alepha135.Module>;
|
|
662
669
|
//#endregion
|
|
663
670
|
export { AdminFileStatsController, AlephaApiFiles, BucketStats, FileController, FileEntity, FileJobs, FileService, MimeTypeStats, StorageStats, bucketStatsSchema, files, mimeTypeStatsSchema, storageStatsSchema };
|
|
664
671
|
//# sourceMappingURL=index.d.ts.map
|