alepha 0.21.2 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/dist/api/audits/index.browser.js.map +1 -1
- package/dist/api/audits/index.d.ts +393 -403
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/audits/index.js +25 -56
- package/dist/api/audits/index.js.map +1 -1
- package/dist/api/files/index.browser.js +31 -1
- package/dist/api/files/index.browser.js.map +1 -1
- package/dist/api/files/index.d.ts +313 -208
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +152 -42
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.browser.js +2 -2
- package/dist/api/jobs/index.browser.js.map +1 -1
- package/dist/api/jobs/index.d.ts +289 -292
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/jobs/index.js +39 -33
- package/dist/api/jobs/index.js.map +1 -1
- package/dist/api/keys/index.d.ts +211 -216
- package/dist/api/keys/index.d.ts.map +1 -1
- package/dist/api/keys/index.js.map +1 -1
- package/dist/api/notifications/index.browser.js.map +1 -1
- package/dist/api/notifications/index.d.ts +188 -195
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/oauth/index.d.ts +71 -76
- package/dist/api/oauth/index.d.ts.map +1 -1
- package/dist/api/oauth/index.js.map +1 -1
- package/dist/api/organizations/index.browser.js.map +1 -1
- package/dist/api/organizations/index.d.ts +104 -109
- package/dist/api/organizations/index.d.ts.map +1 -1
- package/dist/api/organizations/index.js.map +1 -1
- package/dist/api/parameters/index.browser.js +43 -16
- package/dist/api/parameters/index.browser.js.map +1 -1
- package/dist/api/parameters/index.d.ts +488 -344
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/parameters/index.js +175 -35
- package/dist/api/parameters/index.js.map +1 -1
- package/dist/api/payments/index.d.ts +396 -402
- package/dist/api/payments/index.d.ts.map +1 -1
- package/dist/api/payments/index.js.map +1 -1
- package/dist/api/subscriptions/index.d.ts +644 -652
- package/dist/api/subscriptions/index.d.ts.map +1 -1
- package/dist/api/subscriptions/index.js +1 -1
- package/dist/api/subscriptions/index.js.map +1 -1
- package/dist/api/users/index.browser.js +7 -0
- package/dist/api/users/index.browser.js.map +1 -1
- package/dist/api/users/index.d.ts +1073 -1006
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +283 -61
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.browser.js.map +1 -1
- package/dist/api/verifications/index.d.ts +134 -140
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/api/verifications/index.js.map +1 -1
- package/dist/background/index.d.ts +95 -0
- package/dist/background/index.d.ts.map +1 -0
- package/dist/background/index.js +121 -0
- package/dist/background/index.js.map +1 -0
- package/dist/background/index.workerd.js +110 -0
- package/dist/background/index.workerd.js.map +1 -0
- package/dist/batch/index.d.ts +5 -7
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/batch/index.js.map +1 -1
- package/dist/bin/index.js.map +1 -1
- package/dist/bucket/index.d.ts +76 -54
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/bucket/index.js +58 -11
- package/dist/bucket/index.js.map +1 -1
- package/dist/bucket/index.workerd.js +200 -5
- package/dist/bucket/index.workerd.js.map +1 -1
- package/dist/cache/core/index.d.ts +7 -10
- package/dist/cache/core/index.d.ts.map +1 -1
- package/dist/cache/core/index.js.map +1 -1
- package/dist/cache/core/index.workerd.js.map +1 -1
- package/dist/cache/database/index.d.ts +22 -26
- package/dist/cache/database/index.d.ts.map +1 -1
- package/dist/cache/database/index.js.map +1 -1
- package/dist/cache/redis/index.d.ts +4 -7
- package/dist/cache/redis/index.d.ts.map +1 -1
- package/dist/cache/redis/index.js.map +1 -1
- package/dist/captcha/index.d.ts +3 -6
- package/dist/captcha/index.d.ts.map +1 -1
- package/dist/captcha/index.js.map +1 -1
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js.map +1 -1
- package/dist/cli/core/index.d.ts +417 -214
- package/dist/cli/core/index.d.ts.map +1 -1
- package/dist/cli/core/index.js +325 -563
- package/dist/cli/core/index.js.map +1 -1
- package/dist/cli/devtools/index.d.ts +3 -5
- package/dist/cli/devtools/index.d.ts.map +1 -1
- package/dist/cli/devtools/index.js.map +1 -1
- package/dist/cli/i18n/index.d.ts +8 -12
- package/dist/cli/i18n/index.d.ts.map +1 -1
- package/dist/cli/i18n/index.js.map +1 -1
- package/dist/cli/platform/index.d.ts +126 -1342
- package/dist/cli/platform/index.d.ts.map +1 -1
- package/dist/cli/platform/index.js +136 -2374
- package/dist/cli/platform/index.js.map +1 -1
- package/dist/cli/platform-lib/index.d.ts +1446 -0
- package/dist/cli/platform-lib/index.d.ts.map +1 -0
- package/dist/cli/platform-lib/index.js +2597 -0
- package/dist/cli/platform-lib/index.js.map +1 -0
- package/dist/cli/vendor/index.d.ts +17 -21
- package/dist/cli/vendor/index.d.ts.map +1 -1
- package/dist/cli/vendor/index.js.map +1 -1
- package/dist/command/index.d.ts +21 -20
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +39 -10
- package/dist/command/index.js.map +1 -1
- package/dist/{containers → container}/core/index.d.ts +13 -15
- package/dist/container/core/index.d.ts.map +1 -0
- package/dist/{containers → container}/core/index.js +23 -14
- package/dist/container/core/index.js.map +1 -0
- package/dist/{containers → container}/core/index.workerd.js +37 -22
- package/dist/container/core/index.workerd.js.map +1 -0
- package/dist/core/index.browser.js +27 -1
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +48 -24
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +27 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +27 -1
- package/dist/core/index.native.js.map +1 -1
- package/dist/core/index.workerd.js +27 -1
- package/dist/core/index.workerd.js.map +1 -1
- package/dist/crypto/index.browser.js.map +1 -1
- package/dist/crypto/index.d.ts +5 -8
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/crypto/index.js.map +1 -1
- package/dist/datetime/index.d.ts +3 -4
- package/dist/datetime/index.d.ts.map +1 -1
- package/dist/datetime/index.js.map +1 -1
- package/dist/email/brevo/index.d.ts +2 -4
- package/dist/email/brevo/index.d.ts.map +1 -1
- package/dist/email/brevo/index.js.map +1 -1
- package/dist/email/cloudflare/index.d.ts +20 -7
- package/dist/email/cloudflare/index.d.ts.map +1 -1
- package/dist/email/cloudflare/index.js +46 -9
- package/dist/email/cloudflare/index.js.map +1 -1
- package/dist/email/core/index.d.ts +6 -9
- package/dist/email/core/index.d.ts.map +1 -1
- package/dist/email/core/index.js.map +1 -1
- package/dist/email/core/index.workerd.js.map +1 -1
- package/dist/email/smtp/index.d.ts +10 -13
- package/dist/email/smtp/index.d.ts.map +1 -1
- package/dist/email/smtp/index.js +107 -32
- package/dist/email/smtp/index.js.map +1 -1
- package/dist/fake/index.d.ts +1 -2
- package/dist/fake/index.d.ts.map +1 -1
- package/dist/fake/index.js.map +1 -1
- package/dist/lock/core/index.d.ts +9 -14
- package/dist/lock/core/index.d.ts.map +1 -1
- package/dist/lock/core/index.js.map +1 -1
- package/dist/lock/redis/index.d.ts +2 -4
- package/dist/lock/redis/index.d.ts.map +1 -1
- package/dist/lock/redis/index.js.map +1 -1
- package/dist/logger/index.d.ts +105 -76
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +196 -174
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +16 -20
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/core/index.browser.js.map +1 -1
- package/dist/orm/core/index.bun.js +19 -1
- package/dist/orm/core/index.bun.js.map +1 -1
- package/dist/orm/core/index.d.ts +76 -62
- package/dist/orm/core/index.d.ts.map +1 -1
- package/dist/orm/core/index.js +20 -2
- package/dist/orm/core/index.js.map +1 -1
- package/dist/orm/postgres/index.bun.js.map +1 -1
- package/dist/orm/postgres/index.d.ts +28 -20
- package/dist/orm/postgres/index.d.ts.map +1 -1
- package/dist/orm/postgres/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +12 -15
- package/dist/queue/core/index.d.ts.map +1 -1
- package/dist/queue/core/index.js.map +1 -1
- package/dist/queue/core/index.workerd.js.map +1 -1
- package/dist/queue/redis/index.d.ts +3 -5
- package/dist/queue/redis/index.d.ts.map +1 -1
- package/dist/queue/redis/index.js.map +1 -1
- package/dist/react/auth/index.browser.js +9 -2
- package/dist/react/auth/index.browser.js.map +1 -1
- package/dist/react/auth/index.d.ts +14 -9
- package/dist/react/auth/index.d.ts.map +1 -1
- package/dist/react/auth/index.js +9 -2
- package/dist/react/auth/index.js.map +1 -1
- package/dist/react/core/index.d.ts +7 -8
- package/dist/react/core/index.d.ts.map +1 -1
- package/dist/react/core/index.js +6 -3
- package/dist/react/core/index.js.map +1 -1
- package/dist/react/form/index.d.ts +2 -4
- package/dist/react/form/index.d.ts.map +1 -1
- package/dist/react/form/index.js.map +1 -1
- package/dist/react/head/index.browser.js.map +1 -1
- package/dist/react/head/index.d.ts +2 -4
- package/dist/react/head/index.d.ts.map +1 -1
- package/dist/react/head/index.js.map +1 -1
- package/dist/react/i18n/index.d.ts +47 -11
- package/dist/react/i18n/index.d.ts.map +1 -1
- package/dist/react/i18n/index.js +33 -1
- package/dist/react/i18n/index.js.map +1 -1
- package/dist/react/intro/index.d.ts +1 -2
- package/dist/react/intro/index.d.ts.map +1 -1
- package/dist/react/intro/index.js +2 -2
- package/dist/react/intro/index.js.map +1 -1
- package/dist/react/router/index.browser.js +65 -19
- package/dist/react/router/index.browser.js.map +1 -1
- package/dist/react/router/index.d.ts +327 -222
- package/dist/react/router/index.d.ts.map +1 -1
- package/dist/react/router/index.js +65 -29
- package/dist/react/router/index.js.map +1 -1
- package/dist/react/testing/index.d.ts +1 -2
- package/dist/react/testing/index.d.ts.map +1 -1
- package/dist/react/testing/index.js +16 -17
- package/dist/react/testing/index.js.map +1 -1
- package/dist/react/ui/index.d.ts +20 -25
- package/dist/react/ui/index.d.ts.map +1 -1
- package/dist/react/ui/index.js.map +1 -1
- package/dist/redis/index.bun.js.map +1 -1
- package/dist/redis/index.d.ts +17 -19
- package/dist/redis/index.d.ts.map +1 -1
- package/dist/redis/index.js.map +1 -1
- package/dist/retry/index.d.ts +2 -4
- package/dist/retry/index.d.ts.map +1 -1
- package/dist/retry/index.js.map +1 -1
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js.map +1 -1
- package/dist/scheduler/index.d.ts +10 -13
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/index.workerd.js.map +1 -1
- package/dist/security/index.browser.js.map +1 -1
- package/dist/security/index.d.ts +45 -48
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.browser.js.map +1 -1
- package/dist/server/auth/index.d.ts +167 -172
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +4 -8
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cookies/index.browser.js.map +1 -1
- package/dist/server/cookies/index.d.ts +5 -7
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/cookies/index.js.map +1 -1
- package/dist/server/core/index.browser.js.map +1 -1
- package/dist/server/core/index.d.ts +88 -73
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +19 -0
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +11 -14
- package/dist/server/cors/index.d.ts.map +1 -1
- package/dist/server/cors/index.js.map +1 -1
- package/dist/server/etag/index.d.ts +6 -9
- package/dist/server/etag/index.d.ts.map +1 -1
- package/dist/server/etag/index.js.map +1 -1
- package/dist/server/health/index.d.ts +18 -21
- package/dist/server/health/index.d.ts.map +1 -1
- package/dist/server/health/index.js.map +1 -1
- package/dist/server/links/index.browser.js +2 -0
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +63 -67
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +2 -0
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts +5 -7
- package/dist/server/metrics/index.d.ts.map +1 -1
- package/dist/server/metrics/index.js.map +1 -1
- package/dist/server/proxy/index.d.ts +3 -5
- package/dist/server/proxy/index.d.ts.map +1 -1
- package/dist/server/proxy/index.js.map +1 -1
- package/dist/server/rate-limit/index.d.ts +10 -13
- package/dist/server/rate-limit/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.js.map +1 -1
- package/dist/server/static/index.d.ts +3 -5
- package/dist/server/static/index.d.ts.map +1 -1
- package/dist/server/static/index.js.map +1 -1
- package/dist/server/swagger/index.d.ts +5 -8
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +3 -5
- package/dist/sms/index.d.ts.map +1 -1
- package/dist/sms/index.js.map +1 -1
- package/dist/system/index.browser.js.map +1 -1
- package/dist/system/index.d.ts +2 -4
- package/dist/system/index.d.ts.map +1 -1
- package/dist/system/index.js.map +1 -1
- package/dist/system/index.workerd.js.map +1 -1
- package/dist/topic/core/index.d.ts +4 -6
- package/dist/topic/core/index.d.ts.map +1 -1
- package/dist/topic/core/index.js.map +1 -1
- package/dist/topic/redis/index.d.ts +5 -8
- package/dist/topic/redis/index.d.ts.map +1 -1
- package/dist/topic/redis/index.js.map +1 -1
- package/package.json +45 -22
- package/src/api/audits/__tests__/AuditService.spec.ts +18 -110
- package/src/api/audits/controllers/AdminAuditController.ts +14 -0
- package/src/api/audits/services/AuditService.ts +21 -88
- package/src/api/files/__tests__/FileService.spec.ts +207 -2
- package/src/api/files/index.ts +3 -0
- package/src/api/files/schemas/fileCreatorSummarySchema.ts +22 -0
- package/src/api/files/schemas/fileResourceSchema.ts +10 -1
- package/src/api/files/services/FileService.ts +170 -72
- package/src/api/jobs/__tests__/$job.spec.ts +24 -1
- package/src/api/jobs/index.ts +4 -3
- package/src/api/jobs/primitives/$job.ts +7 -3
- package/src/api/jobs/providers/DirectJobDispatcher.ts +17 -36
- package/src/api/jobs/providers/JobProvider.ts +53 -24
- package/src/api/jobs/schemas/jobConfigAtom.ts +1 -1
- package/src/api/jobs/schemas/jobExecutionResourceSchema.ts +4 -1
- package/src/api/keys/schemas/adminApiKeyResourceSchema.ts +3 -1
- package/src/api/parameters/__tests__/$parameter.spec.ts +19 -2
- package/src/api/parameters/audits/ParameterAudits.ts +17 -0
- package/src/api/parameters/controllers/AdminParameterController.ts +95 -19
- package/src/api/parameters/index.ts +3 -0
- package/src/api/parameters/schemas/activateParameterBodySchema.ts +3 -3
- package/src/api/parameters/schemas/createParameterVersionBodySchema.ts +3 -2
- package/src/api/parameters/schemas/parameterCreatorSummarySchema.ts +25 -0
- package/src/api/parameters/schemas/parameterResponseSchema.ts +5 -0
- package/src/api/parameters/schemas/rollbackParameterBodySchema.ts +4 -2
- package/src/api/parameters/services/ParameterProvider.ts +69 -6
- package/src/api/subscriptions/jobs/SubscriptionJobs.ts +1 -1
- package/src/api/users/__tests__/AdminSessionController.spec.ts +37 -0
- package/src/api/users/audits/SessionAudits.ts +33 -0
- package/src/api/users/audits/UserAudits.ts +19 -43
- package/src/api/users/controllers/AdminUserController.ts +66 -1
- package/src/api/users/entities/sessions.ts +6 -0
- package/src/api/users/entities/users.ts +2 -0
- package/src/api/users/index.ts +9 -1
- package/src/api/users/primitives/$realm.ts +3 -0
- package/src/api/users/schemas/sessionResourceSchema.ts +16 -0
- package/src/api/users/schemas/updateUserSchema.ts +1 -8
- package/src/api/users/schemas/userQuerySchema.ts +7 -0
- package/src/api/users/services/CredentialService.ts +15 -6
- package/src/api/users/services/IdentityService.ts +2 -1
- package/src/api/users/services/RegistrationService.ts +2 -1
- package/src/api/users/services/SessionCrudService.ts +19 -2
- package/src/api/users/services/SessionService.ts +39 -19
- package/src/api/users/services/UserService.ts +106 -8
- package/src/background/__tests__/BackgroundTaskProvider.spec.ts +96 -0
- package/src/background/index.ts +37 -0
- package/src/background/index.workerd.ts +28 -0
- package/src/background/providers/BackgroundTaskProvider.ts +70 -0
- package/src/background/providers/WorkerdBackgroundTaskProvider.ts +43 -0
- package/src/bucket/__tests__/$bucket.spec.ts +18 -0
- package/src/bucket/__tests__/LocalFileStorageProvider.spec.ts +5 -0
- package/src/bucket/__tests__/MemoryFileStorageProvider.spec.ts +5 -0
- package/src/bucket/__tests__/NodeS3BucketProvider.spec.ts +23 -4
- package/src/bucket/__tests__/shared.ts +30 -0
- package/src/bucket/index.ts +5 -5
- package/src/bucket/index.workerd.ts +11 -4
- package/src/bucket/primitives/$bucket.ts +27 -0
- package/src/bucket/providers/FileStorageProvider.ts +13 -0
- package/src/bucket/providers/LocalFileStorageProvider.ts +17 -1
- package/src/bucket/providers/MemoryFileStorageProvider.ts +7 -0
- package/src/bucket/providers/{CloudflareR2Provider.ts → R2FileStorageProvider.ts} +10 -1
- package/src/bucket/providers/{NodeS3BucketProvider.ts → S3FileStorageProvider.ts} +27 -5
- package/src/cli/core/__tests__/BuildDockerTask.spec.ts +25 -1
- package/src/cli/core/__tests__/init.spec.ts +0 -219
- package/src/cli/core/commands/__tests__/BuildCommand.spec.ts +43 -0
- package/src/cli/core/commands/build.ts +108 -30
- package/src/cli/core/commands/init.ts +0 -12
- package/src/cli/core/commands/pack.ts +133 -0
- package/src/cli/core/index.ts +3 -0
- package/src/cli/core/providers/ViteDevServerProvider.ts +40 -16
- package/src/cli/core/services/PackageManagerUtils.ts +0 -16
- package/src/cli/core/services/ProjectScaffolder.ts +29 -291
- package/src/cli/core/tasks/BuildCloudflareTask.ts +353 -47
- package/src/cli/core/tasks/BuildDockerTask.ts +33 -3
- package/src/cli/core/tasks/BuildTask.ts +34 -0
- package/src/cli/core/templates/apiIndexTs.ts +1 -22
- package/src/cli/core/templates/mainCss.ts +0 -1
- package/src/cli/core/templates/webAppRouterTs.ts +0 -99
- package/src/cli/core/templates/webIndexTs.ts +1 -22
- package/src/cli/platform/__tests__/SecretsCommand.spec.ts +5 -3
- package/src/cli/platform/commands/SecretsCommand.ts +8 -6
- package/src/cli/platform/commands/platform.ts +192 -46
- package/src/cli/platform/index.ts +12 -52
- package/src/cli/{platform → platform-lib}/__tests__/CloudflareAdapter.spec.ts +426 -169
- package/src/cli/{platform → platform-lib}/__tests__/NamingService.spec.ts +91 -4
- package/src/cli/{platform → platform-lib}/__tests__/VercelAdapter.spec.ts +56 -85
- package/src/cli/{platform → platform-lib}/adapters/CloudflareAdapter.ts +402 -165
- package/src/cli/{platform → platform-lib}/adapters/PlatformAdapter.ts +62 -35
- package/src/cli/{platform → platform-lib}/adapters/VercelAdapter.ts +6 -10
- package/src/cli/{platform → platform-lib}/atoms/platformOptions.ts +34 -1
- package/src/cli/platform-lib/index.ts +67 -0
- package/src/cli/platform-lib/services/NamingService.ts +136 -0
- package/src/cli/{platform → platform-lib}/services/PlatformInspector.ts +60 -13
- package/src/cli/{platform → platform-lib}/services/PlatformOrchestrator.ts +54 -43
- package/src/cli/{platform → platform-lib}/services/WranglerApi.ts +4 -2
- package/src/command/__tests__/Runner.spec.ts +20 -0
- package/src/command/helpers/EnvUtils.ts +19 -3
- package/src/command/helpers/Runner.ts +12 -2
- package/src/command/providers/CliProvider.ts +34 -1
- package/src/{containers → container}/core/__tests__/$container.spec.ts +5 -5
- package/src/{containers → container}/core/index.ts +4 -4
- package/src/{containers → container}/core/index.workerd.ts +19 -3
- package/src/{containers → container}/core/primitives/$container.ts +1 -1
- package/src/{containers → container}/core/providers/CloudflareContainerProvider.ts +17 -19
- package/src/{containers → container}/core/providers/ContainerProvider.ts +16 -2
- package/src/{containers → container}/core/providers/MockContainerProvider.ts +1 -1
- package/src/core/Alepha.ts +49 -1
- package/src/core/__tests__/$env.spec.ts +42 -0
- package/src/core/__tests__/dump.spec.ts +47 -0
- package/src/email/cloudflare/__tests__/CloudflareEmailProvider.spec.ts +42 -10
- package/src/email/cloudflare/index.ts +14 -5
- package/src/email/cloudflare/providers/CloudflareEmailProvider.ts +54 -9
- package/src/logger/__tests__/Logger.spec.ts +55 -0
- package/src/logger/index.ts +13 -0
- package/src/logger/services/Logger.ts +31 -1
- package/src/orm/__tests__/orm-showcase-tests.ts +27 -0
- package/src/orm/__tests__/orm-showcase.spec.ts +12 -0
- package/src/orm/core/interfaces/PgQuery.ts +4 -1
- package/src/orm/core/services/Repository.ts +27 -11
- package/src/react/auth/hooks/useAuth.ts +10 -5
- package/src/react/core/__tests__/useQuery.browser.spec.tsx +25 -0
- package/src/react/core/hooks/useAction.ts +14 -3
- package/src/react/core/hooks/useQuery.ts +24 -4
- package/src/react/i18n/components/Translate.tsx +47 -0
- package/src/react/i18n/index.ts +2 -0
- package/src/react/intro/components/GettingStartedAdminSlide.tsx +2 -2
- package/src/react/router/__tests__/$page.spec.tsx +3 -2
- package/src/react/router/__tests__/page-can.spec.ts +18 -13
- package/src/react/router/hooks/useQueryParams.ts +114 -14
- package/src/react/router/primitives/$page.ts +85 -4
- package/src/react/router/providers/ReactBrowserRouterProvider.ts +3 -7
- package/src/react/router/providers/ReactServerProvider.ts +4 -13
- package/src/react/ui/services/SchemaControl.ts +3 -4
- package/src/server/core/providers/ServerMultipartProvider.ts +19 -0
- package/src/server/links/providers/LinkProvider.ts +10 -0
- package/dist/containers/core/index.d.ts.map +0 -1
- package/dist/containers/core/index.js.map +0 -1
- package/dist/containers/core/index.workerd.js.map +0 -1
- package/src/cli/core/templates/componentsJsonTs.ts +0 -39
- package/src/cli/core/templates/saasAdminLayoutTsx.ts +0 -77
- package/src/cli/core/templates/saasAdminPagesTsx.ts +0 -26
- package/src/cli/core/templates/saasAuthLayoutTsx.ts +0 -22
- package/src/cli/core/templates/saasAuthPagesTsx.ts +0 -62
- package/src/cli/core/templates/saasRealmProviderTs.ts +0 -52
- package/src/cli/platform/services/NamingService.ts +0 -54
- /package/dist/orm/core/{chunk-o8xxKEmq.js → chunk-B4FMCO8f.js} +0 -0
- /package/dist/react/testing/{chunk-6Ep1yQYe.js → chunk-BpyX8vjI.js} +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/GitHubSecretStore.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/PlatformCacheProvider.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/PlatformInspector.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/PlatformOrchestrator.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/SecretFilterService.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/__tests__/detectResources.spec.ts +0 -0
- /package/src/cli/{platform → platform-lib}/providers/GitHubSecretStore.ts +0 -0
- /package/src/cli/{platform → platform-lib}/providers/MemorySecretStore.ts +0 -0
- /package/src/cli/{platform → platform-lib}/providers/PlatformCacheProvider.ts +0 -0
- /package/src/cli/{platform → platform-lib}/providers/SecretStoreProvider.ts +0 -0
- /package/src/cli/{platform → platform-lib}/schemas/cloudflare.ts +0 -0
- /package/src/cli/{platform → platform-lib}/schemas/platform.ts +0 -0
- /package/src/cli/{platform → platform-lib}/schemas/vercel.ts +0 -0
- /package/src/cli/{platform → platform-lib}/services/CloudflareApi.ts +0 -0
- /package/src/cli/{platform → platform-lib}/services/SecretFilterService.ts +0 -0
- /package/src/cli/{platform → platform-lib}/services/VercelApi.ts +0 -0
- /package/src/cli/{platform → platform-lib}/services/VercelCli.ts +0 -0
- /package/src/{containers → container}/core/interfaces/ContainerOptions.ts +0 -0
- /package/src/{containers → container}/core/providers/NodeContainerProvider.ts +0 -0
|
@@ -1,37 +1,32 @@
|
|
|
1
|
-
import * as _$alepha from "alepha";
|
|
2
1
|
import { Alepha, FileLike, Static, TNull, TObject, TOptional, TSchema, TUnion } from "alepha";
|
|
3
2
|
import { BucketPrimitive } from "alepha/bucket";
|
|
4
3
|
import { UserAccountToken } from "alepha/security";
|
|
5
|
-
import * as _$alepha_server0 from "alepha/server";
|
|
6
4
|
import { Ok } from "alepha/server";
|
|
7
5
|
import { DateTime, DateTimeProvider, DurationLike } from "alepha/datetime";
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import { Page } from "alepha/orm";
|
|
11
|
-
import * as _$alepha_scheduler0 from "alepha/scheduler";
|
|
12
|
-
import * as _$typebox from "typebox";
|
|
6
|
+
import { Page, RepositoryProvider } from "alepha/orm";
|
|
7
|
+
import { FileSystemProvider } from "alepha/system";
|
|
13
8
|
import { BuildExtraConfigColumns, SQL } from "drizzle-orm";
|
|
14
9
|
import { PgColumnBuilderBase, PgSequenceOptions, PgTableExtraConfigValue, UpdateDeleteAction } from "drizzle-orm/pg-core";
|
|
15
10
|
//#region ../../src/api/files/entities/files.d.ts
|
|
16
|
-
declare const files:
|
|
17
|
-
id:
|
|
18
|
-
version:
|
|
19
|
-
createdAt:
|
|
20
|
-
updatedAt:
|
|
21
|
-
organizationId:
|
|
22
|
-
blobId:
|
|
23
|
-
creator:
|
|
24
|
-
creatorRealm:
|
|
25
|
-
creatorName:
|
|
26
|
-
bucket:
|
|
27
|
-
expirationDate:
|
|
11
|
+
declare const files: import("alepha/orm").EntityPrimitive<import("typebox").TObject<{
|
|
12
|
+
id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("typebox").TString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>;
|
|
13
|
+
version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("typebox").TInteger, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>;
|
|
14
|
+
createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("typebox").TString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
|
|
15
|
+
updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("typebox").TString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
|
|
16
|
+
organizationId: import("alepha/orm").PgAttr<import("typebox").TString, typeof import("alepha/orm").PG_ORGANIZATION>;
|
|
17
|
+
blobId: import("typebox").TString;
|
|
18
|
+
creator: import("typebox").TOptional<import("typebox").TString>;
|
|
19
|
+
creatorRealm: import("typebox").TOptional<import("typebox").TString>;
|
|
20
|
+
creatorName: import("typebox").TOptional<import("typebox").TString>;
|
|
21
|
+
bucket: import("typebox").TString;
|
|
22
|
+
expirationDate: import("typebox").TOptional<import("typebox").TString>;
|
|
28
23
|
/**
|
|
29
24
|
* Display name. Mutable via `FileService.updateFile` — can be renamed
|
|
30
25
|
* by callers (e.g. an Archive UI letting users rename uploaded blobs).
|
|
31
26
|
* Initialized to the uploader's filename at upload time. Use
|
|
32
27
|
* `originalName` if you need the as-uploaded filename after a rename.
|
|
33
28
|
*/
|
|
34
|
-
name:
|
|
29
|
+
name: import("typebox").TString;
|
|
35
30
|
/**
|
|
36
31
|
* Immutable record of the uploader's filename at upload time. Set once
|
|
37
32
|
* by `FileService.uploadFile` and the `bucket:file:uploaded` hook;
|
|
@@ -39,37 +34,37 @@ declare const files: _$alepha_orm0.EntityPrimitive<_$typebox.TObject<{
|
|
|
39
34
|
* headers (Content-Disposition), audit trails, and any UI that wants
|
|
40
35
|
* to show "originally uploaded as X" alongside a renamed file.
|
|
41
36
|
*/
|
|
42
|
-
originalName:
|
|
43
|
-
size:
|
|
44
|
-
mimeType:
|
|
37
|
+
originalName: import("typebox").TOptional<import("typebox").TString>;
|
|
38
|
+
size: import("typebox").TNumber;
|
|
39
|
+
mimeType: import("typebox").TString;
|
|
45
40
|
/**
|
|
46
41
|
* Free-form taxonomy. Normalized server-side (trim/lowercase/dedupe is
|
|
47
42
|
* caller's responsibility for now). Use with `FileQuery.tags` to
|
|
48
43
|
* filter via array-contains.
|
|
49
44
|
*/
|
|
50
|
-
tags:
|
|
45
|
+
tags: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
51
46
|
/**
|
|
52
47
|
* SHA-256 hex digest of the file content (64 lowercase hex chars).
|
|
53
48
|
* Computed at upload time by `FileService.calculateChecksum`. Stable
|
|
54
49
|
* — never recomputed after upload. Use for integrity verification,
|
|
55
50
|
* content-based dedup, or downstream virus-scan correlation.
|
|
56
51
|
*/
|
|
57
|
-
checksum:
|
|
52
|
+
checksum: import("typebox").TOptional<import("typebox").TString>;
|
|
58
53
|
}>>;
|
|
59
54
|
type FileEntity = Static<typeof files.schema>;
|
|
60
55
|
//#endregion
|
|
61
56
|
//#region ../../src/api/files/schemas/fileQuerySchema.d.ts
|
|
62
|
-
declare const fileQuerySchema:
|
|
63
|
-
page:
|
|
64
|
-
size:
|
|
65
|
-
sort:
|
|
66
|
-
bucket:
|
|
67
|
-
tags:
|
|
68
|
-
name:
|
|
69
|
-
mimeType:
|
|
70
|
-
creator:
|
|
71
|
-
createdAfter:
|
|
72
|
-
createdBefore:
|
|
57
|
+
declare const fileQuerySchema: import("typebox").TObject<{
|
|
58
|
+
page: import("typebox").TOptional<import("typebox").TInteger>;
|
|
59
|
+
size: import("typebox").TOptional<import("typebox").TInteger>;
|
|
60
|
+
sort: import("typebox").TOptional<import("typebox").TString>;
|
|
61
|
+
bucket: import("typebox").TOptional<import("typebox").TString>;
|
|
62
|
+
tags: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
63
|
+
name: import("typebox").TOptional<import("typebox").TString>;
|
|
64
|
+
mimeType: import("typebox").TOptional<import("typebox").TString>;
|
|
65
|
+
creator: import("typebox").TOptional<import("typebox").TString>;
|
|
66
|
+
createdAfter: import("typebox").TOptional<import("typebox").TString>;
|
|
67
|
+
createdBefore: import("typebox").TOptional<import("typebox").TString>;
|
|
73
68
|
}>;
|
|
74
69
|
type FileQuery = Static<typeof fileQuerySchema>;
|
|
75
70
|
//#endregion
|
|
@@ -364,8 +359,8 @@ type PgAttr<T extends TSchema, TAttr extends PgSymbolKeys> = T & { [K in TAttr]:
|
|
|
364
359
|
* - `d1://BINDING_NAME` — Cloudflare D1
|
|
365
360
|
* - `hyperdrive://BINDING_NAME` — Cloudflare Hyperdrive
|
|
366
361
|
*/
|
|
367
|
-
declare const databaseEnvSchema:
|
|
368
|
-
DATABASE_URL:
|
|
362
|
+
declare const databaseEnvSchema: import("typebox").TObject<{
|
|
363
|
+
DATABASE_URL: import("typebox").TOptional<import("typebox").TString>;
|
|
369
364
|
/**
|
|
370
365
|
* Enable or disable push-based schema synchronization (drizzle-kit push).
|
|
371
366
|
*
|
|
@@ -373,55 +368,62 @@ declare const databaseEnvSchema: _$typebox.TObject<{
|
|
|
373
368
|
* Set to `false` in development to skip automatic schema sync
|
|
374
369
|
* (e.g. when managing migrations manually).
|
|
375
370
|
*/
|
|
376
|
-
DATABASE_SYNC:
|
|
371
|
+
DATABASE_SYNC: import("typebox").TOptional<import("typebox").TBoolean>;
|
|
377
372
|
}>;
|
|
378
373
|
declare module "alepha" {
|
|
379
374
|
interface Env extends Partial<Static<typeof databaseEnvSchema>> {}
|
|
380
375
|
} //# sourceMappingURL=databaseEnvSchema.d.ts.map
|
|
381
376
|
//#endregion
|
|
382
377
|
//#region ../../src/api/files/schemas/fileResourceSchema.d.ts
|
|
383
|
-
declare const fileResourceSchema:
|
|
384
|
-
id: PgAttr<PgAttr<
|
|
385
|
-
version: PgAttr<PgAttr<
|
|
386
|
-
createdAt: PgAttr<PgAttr<
|
|
387
|
-
updatedAt: PgAttr<PgAttr<
|
|
388
|
-
organizationId: PgAttr<
|
|
389
|
-
blobId:
|
|
390
|
-
creator:
|
|
391
|
-
creatorRealm:
|
|
392
|
-
creatorName:
|
|
393
|
-
bucket:
|
|
394
|
-
expirationDate:
|
|
395
|
-
name:
|
|
396
|
-
originalName:
|
|
397
|
-
size:
|
|
398
|
-
mimeType:
|
|
399
|
-
tags:
|
|
400
|
-
checksum:
|
|
378
|
+
declare const fileResourceSchema: import("typebox").TObject<{
|
|
379
|
+
id: PgAttr<PgAttr<import("typebox").TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
|
|
380
|
+
version: PgAttr<PgAttr<import("typebox").TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
|
|
381
|
+
createdAt: PgAttr<PgAttr<import("typebox").TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
|
|
382
|
+
updatedAt: PgAttr<PgAttr<import("typebox").TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
|
|
383
|
+
organizationId: PgAttr<import("typebox").TString, typeof PG_ORGANIZATION>;
|
|
384
|
+
blobId: import("typebox").TString;
|
|
385
|
+
creator: import("typebox").TOptional<import("typebox").TString>;
|
|
386
|
+
creatorRealm: import("typebox").TOptional<import("typebox").TString>;
|
|
387
|
+
creatorName: import("typebox").TOptional<import("typebox").TString>;
|
|
388
|
+
bucket: import("typebox").TString;
|
|
389
|
+
expirationDate: import("typebox").TOptional<import("typebox").TString>;
|
|
390
|
+
name: import("typebox").TString;
|
|
391
|
+
originalName: import("typebox").TOptional<import("typebox").TString>;
|
|
392
|
+
size: import("typebox").TNumber;
|
|
393
|
+
mimeType: import("typebox").TString;
|
|
394
|
+
tags: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
395
|
+
checksum: import("typebox").TOptional<import("typebox").TString>;
|
|
396
|
+
user: import("typebox").TOptional<import("typebox").TObject<{
|
|
397
|
+
id: import("typebox").TString;
|
|
398
|
+
email: import("typebox").TOptional<import("typebox").TString>;
|
|
399
|
+
username: import("typebox").TOptional<import("typebox").TString>;
|
|
400
|
+
firstName: import("typebox").TOptional<import("typebox").TString>;
|
|
401
|
+
lastName: import("typebox").TOptional<import("typebox").TString>;
|
|
402
|
+
}>>;
|
|
401
403
|
}>;
|
|
402
404
|
type FileResource = Static<typeof fileResourceSchema>;
|
|
403
405
|
//#endregion
|
|
404
406
|
//#region ../../src/api/files/schemas/storageStatsSchema.d.ts
|
|
405
|
-
declare const bucketStatsSchema:
|
|
406
|
-
bucket:
|
|
407
|
-
totalSize:
|
|
408
|
-
fileCount:
|
|
407
|
+
declare const bucketStatsSchema: import("typebox").TObject<{
|
|
408
|
+
bucket: import("typebox").TString;
|
|
409
|
+
totalSize: import("typebox").TNumber;
|
|
410
|
+
fileCount: import("typebox").TNumber;
|
|
409
411
|
}>;
|
|
410
|
-
declare const mimeTypeStatsSchema:
|
|
411
|
-
mimeType:
|
|
412
|
-
fileCount:
|
|
412
|
+
declare const mimeTypeStatsSchema: import("typebox").TObject<{
|
|
413
|
+
mimeType: import("typebox").TString;
|
|
414
|
+
fileCount: import("typebox").TNumber;
|
|
413
415
|
}>;
|
|
414
|
-
declare const storageStatsSchema:
|
|
415
|
-
totalSize:
|
|
416
|
-
totalFiles:
|
|
417
|
-
byBucket:
|
|
418
|
-
bucket:
|
|
419
|
-
totalSize:
|
|
420
|
-
fileCount:
|
|
416
|
+
declare const storageStatsSchema: import("typebox").TObject<{
|
|
417
|
+
totalSize: import("typebox").TNumber;
|
|
418
|
+
totalFiles: import("typebox").TNumber;
|
|
419
|
+
byBucket: import("typebox").TArray<import("typebox").TObject<{
|
|
420
|
+
bucket: import("typebox").TString;
|
|
421
|
+
totalSize: import("typebox").TNumber;
|
|
422
|
+
fileCount: import("typebox").TNumber;
|
|
421
423
|
}>>;
|
|
422
|
-
byMimeType:
|
|
423
|
-
mimeType:
|
|
424
|
-
fileCount:
|
|
424
|
+
byMimeType: import("typebox").TArray<import("typebox").TObject<{
|
|
425
|
+
mimeType: import("typebox").TString;
|
|
426
|
+
fileCount: import("typebox").TNumber;
|
|
425
427
|
}>>;
|
|
426
428
|
}>;
|
|
427
429
|
type BucketStats = Static<typeof bucketStatsSchema>;
|
|
@@ -431,38 +433,74 @@ type StorageStats = Static<typeof storageStatsSchema>;
|
|
|
431
433
|
//#region ../../src/api/files/services/FileService.d.ts
|
|
432
434
|
declare class FileService {
|
|
433
435
|
protected readonly alepha: Alepha;
|
|
434
|
-
protected readonly log:
|
|
436
|
+
protected readonly log: import("alepha/logger").Logger;
|
|
435
437
|
protected readonly dateTimeProvider: DateTimeProvider;
|
|
438
|
+
protected readonly repositoryProvider: RepositoryProvider;
|
|
439
|
+
protected readonly fileSystem: FileSystemProvider;
|
|
436
440
|
protected readonly defaultBucket: BucketPrimitive;
|
|
437
|
-
readonly fileRepository:
|
|
438
|
-
id:
|
|
439
|
-
version:
|
|
440
|
-
createdAt:
|
|
441
|
-
updatedAt:
|
|
442
|
-
organizationId:
|
|
443
|
-
blobId:
|
|
444
|
-
creator:
|
|
445
|
-
creatorRealm:
|
|
446
|
-
creatorName:
|
|
447
|
-
bucket:
|
|
448
|
-
expirationDate:
|
|
449
|
-
name:
|
|
450
|
-
originalName:
|
|
451
|
-
size:
|
|
452
|
-
mimeType:
|
|
453
|
-
tags:
|
|
454
|
-
checksum:
|
|
441
|
+
readonly fileRepository: import("alepha/orm").Repository<import("typebox").TObject<{
|
|
442
|
+
id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("typebox").TString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>;
|
|
443
|
+
version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("typebox").TInteger, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>;
|
|
444
|
+
createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("typebox").TString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
|
|
445
|
+
updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("typebox").TString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>;
|
|
446
|
+
organizationId: import("alepha/orm").PgAttr<import("typebox").TString, typeof import("alepha/orm").PG_ORGANIZATION>;
|
|
447
|
+
blobId: import("typebox").TString;
|
|
448
|
+
creator: import("typebox").TOptional<import("typebox").TString>;
|
|
449
|
+
creatorRealm: import("typebox").TOptional<import("typebox").TString>;
|
|
450
|
+
creatorName: import("typebox").TOptional<import("typebox").TString>;
|
|
451
|
+
bucket: import("typebox").TString;
|
|
452
|
+
expirationDate: import("typebox").TOptional<import("typebox").TString>;
|
|
453
|
+
name: import("typebox").TString;
|
|
454
|
+
originalName: import("typebox").TOptional<import("typebox").TString>;
|
|
455
|
+
size: import("typebox").TNumber;
|
|
456
|
+
mimeType: import("typebox").TString;
|
|
457
|
+
tags: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
458
|
+
checksum: import("typebox").TOptional<import("typebox").TString>;
|
|
455
459
|
}>>;
|
|
456
|
-
|
|
457
|
-
|
|
460
|
+
/**
|
|
461
|
+
* Best-effort left join embedding the uploader on every file row, so the
|
|
462
|
+
* admin UI can render `user.email` instead of the bare `creator` UUID.
|
|
463
|
+
* Joins `files.creator` → `users.id`. Only applied when the `users` table is
|
|
464
|
+
* actually registered in the app (see `findFiles`) — the files module stays
|
|
465
|
+
* usable standalone, without `alepha/api/users`. Targets the default `users`
|
|
466
|
+
* table, so creators in non-default realms come back unmatched (`user`
|
|
467
|
+
* undefined), which the UI handles by falling back to `creatorName`.
|
|
468
|
+
*
|
|
469
|
+
* The `users` entity is resolved from the repository registry at runtime
|
|
470
|
+
* rather than imported: the users module already depends on the files module
|
|
471
|
+
* (avatars), so a compile-time import here would form a circular dependency.
|
|
472
|
+
*/
|
|
473
|
+
protected resolveCreatorJoin(): {
|
|
474
|
+
user: {
|
|
475
|
+
join: import("alepha/orm").EntityPrimitive<import("typebox").TObject<import("typebox").TProperties>>;
|
|
476
|
+
on: ["creator", {
|
|
477
|
+
name: string;
|
|
478
|
+
}];
|
|
479
|
+
};
|
|
480
|
+
} | undefined;
|
|
481
|
+
protected onUploadFile: import("alepha").HookPrimitive<"bucket:file:uploaded">;
|
|
482
|
+
protected onDeleteBucketFile: import("alepha").HookPrimitive<"bucket:file:deleted">;
|
|
458
483
|
/**
|
|
459
484
|
* Calculates SHA-256 checksum of a file.
|
|
460
485
|
*
|
|
486
|
+
* Reads the whole file into memory. Callers that already hold the bytes
|
|
487
|
+
* should use {@link hashBuffer} instead to avoid re-reading — re-reading a
|
|
488
|
+
* one-shot stream either yields the wrong hash or drains a stream another
|
|
489
|
+
* step still needs.
|
|
490
|
+
*
|
|
461
491
|
* @param file - The file to calculate checksum for
|
|
462
492
|
* @returns Hexadecimal string representation of the SHA-256 hash
|
|
463
493
|
* @protected
|
|
464
494
|
*/
|
|
465
495
|
protected calculateChecksum(file: FileLike): Promise<string>;
|
|
496
|
+
/**
|
|
497
|
+
* Calculates the SHA-256 checksum of an already-read body.
|
|
498
|
+
*
|
|
499
|
+
* @param data - The file bytes
|
|
500
|
+
* @returns Hexadecimal string representation of the SHA-256 hash
|
|
501
|
+
* @protected
|
|
502
|
+
*/
|
|
503
|
+
protected hashBuffer(data: ArrayBuffer): string;
|
|
466
504
|
/**
|
|
467
505
|
* Gets a bucket primitive by name.
|
|
468
506
|
*
|
|
@@ -513,6 +551,25 @@ declare class FileService {
|
|
|
513
551
|
user?: UserAccountToken;
|
|
514
552
|
tags?: string[];
|
|
515
553
|
}): Promise<FileEntity>;
|
|
554
|
+
/**
|
|
555
|
+
* Persists the metadata row for an already-uploaded blob, deleting the
|
|
556
|
+
* blob if the insert fails. Uploads are not atomic: the blob is written to
|
|
557
|
+
* storage first (the row needs the returned `blobId`), so a failed insert
|
|
558
|
+
* would otherwise leak the blob — an orphaned blob with no DB row. This
|
|
559
|
+
* compensates by removing the blob, favouring the recoverable failure
|
|
560
|
+
* (a missing blob) over the worse one (a row pointing at nothing).
|
|
561
|
+
*
|
|
562
|
+
* Best-effort: cleanup runs with `skipHook` so it neither re-emits
|
|
563
|
+
* `bucket:file:deleted` nor touches the (non-existent) DB row, and a failed
|
|
564
|
+
* cleanup is logged rather than thrown. The original write error is always
|
|
565
|
+
* rethrown so callers still see the real failure.
|
|
566
|
+
*
|
|
567
|
+
* @param bucket - The bucket the blob was uploaded to
|
|
568
|
+
* @param blobId - The id returned by `bucket.upload`
|
|
569
|
+
* @param insert - Thunk performing the metadata insert
|
|
570
|
+
* @returns The created file entity
|
|
571
|
+
*/
|
|
572
|
+
protected persistBlobMetadata(bucket: BucketPrimitive, blobId: string, insert: () => Promise<FileEntity>): Promise<FileEntity>;
|
|
516
573
|
/**
|
|
517
574
|
* Streams a file from storage by its database ID, or directly from an
|
|
518
575
|
* already-loaded `FileEntity` to avoid a duplicate DB roundtrip when the
|
|
@@ -569,6 +626,12 @@ declare class FileService {
|
|
|
569
626
|
/**
|
|
570
627
|
* Gets storage statistics including total size, file count, and breakdowns by bucket and MIME type.
|
|
571
628
|
*
|
|
629
|
+
* Aggregated in SQL (`SUM`/`COUNT` + `GROUP BY`) rather than by loading
|
|
630
|
+
* every row into memory — the table can hold millions of files, and this
|
|
631
|
+
* endpoint must stay O(groups), not O(rows). Totals are derived from the
|
|
632
|
+
* per-bucket groups (every row has exactly one bucket), so no extra query
|
|
633
|
+
* is needed.
|
|
634
|
+
*
|
|
572
635
|
* @returns Storage statistics with aggregated data
|
|
573
636
|
*/
|
|
574
637
|
getStorageStats(): Promise<StorageStats>;
|
|
@@ -596,18 +659,18 @@ declare class AdminFileStatsController {
|
|
|
596
659
|
* Returns aggregated data including total size, file count,
|
|
597
660
|
* and breakdowns by bucket and MIME type.
|
|
598
661
|
*/
|
|
599
|
-
readonly getFileStats:
|
|
600
|
-
response:
|
|
601
|
-
totalSize:
|
|
602
|
-
totalFiles:
|
|
603
|
-
byBucket:
|
|
604
|
-
bucket:
|
|
605
|
-
totalSize:
|
|
606
|
-
fileCount:
|
|
662
|
+
readonly getFileStats: import("alepha/server").ActionPrimitiveFn<{
|
|
663
|
+
response: import("typebox").TObject<{
|
|
664
|
+
totalSize: import("typebox").TNumber;
|
|
665
|
+
totalFiles: import("typebox").TNumber;
|
|
666
|
+
byBucket: import("typebox").TArray<import("typebox").TObject<{
|
|
667
|
+
bucket: import("typebox").TString;
|
|
668
|
+
totalSize: import("typebox").TNumber;
|
|
669
|
+
fileCount: import("typebox").TNumber;
|
|
607
670
|
}>>;
|
|
608
|
-
byMimeType:
|
|
609
|
-
mimeType:
|
|
610
|
-
fileCount:
|
|
671
|
+
byMimeType: import("typebox").TArray<import("typebox").TObject<{
|
|
672
|
+
mimeType: import("typebox").TString;
|
|
673
|
+
fileCount: import("typebox").TNumber;
|
|
611
674
|
}>>;
|
|
612
675
|
}>;
|
|
613
676
|
}>;
|
|
@@ -679,63 +742,70 @@ declare class FileController {
|
|
|
679
742
|
* GET /files - Lists files with optional filtering and pagination.
|
|
680
743
|
* Supports filtering by bucket and tags.
|
|
681
744
|
*/
|
|
682
|
-
readonly findFiles:
|
|
683
|
-
query:
|
|
684
|
-
page:
|
|
685
|
-
size:
|
|
686
|
-
sort:
|
|
687
|
-
bucket:
|
|
688
|
-
tags:
|
|
689
|
-
name:
|
|
690
|
-
mimeType:
|
|
691
|
-
creator:
|
|
692
|
-
createdAfter:
|
|
693
|
-
createdBefore:
|
|
745
|
+
readonly findFiles: import("alepha/server").ActionPrimitiveFn<{
|
|
746
|
+
query: import("typebox").TObject<{
|
|
747
|
+
page: import("typebox").TOptional<import("typebox").TInteger>;
|
|
748
|
+
size: import("typebox").TOptional<import("typebox").TInteger>;
|
|
749
|
+
sort: import("typebox").TOptional<import("typebox").TString>;
|
|
750
|
+
bucket: import("typebox").TOptional<import("typebox").TString>;
|
|
751
|
+
tags: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
752
|
+
name: import("typebox").TOptional<import("typebox").TString>;
|
|
753
|
+
mimeType: import("typebox").TOptional<import("typebox").TString>;
|
|
754
|
+
creator: import("typebox").TOptional<import("typebox").TString>;
|
|
755
|
+
createdAfter: import("typebox").TOptional<import("typebox").TString>;
|
|
756
|
+
createdBefore: import("typebox").TOptional<import("typebox").TString>;
|
|
694
757
|
}>;
|
|
695
|
-
response:
|
|
696
|
-
id: PgAttr<PgAttr<
|
|
697
|
-
version: PgAttr<PgAttr<
|
|
698
|
-
createdAt: PgAttr<PgAttr<
|
|
699
|
-
updatedAt: PgAttr<PgAttr<
|
|
700
|
-
organizationId: PgAttr<
|
|
701
|
-
blobId:
|
|
702
|
-
creator:
|
|
703
|
-
creatorRealm:
|
|
704
|
-
creatorName:
|
|
705
|
-
bucket:
|
|
706
|
-
expirationDate:
|
|
707
|
-
name:
|
|
708
|
-
originalName:
|
|
709
|
-
size:
|
|
710
|
-
mimeType:
|
|
711
|
-
tags:
|
|
712
|
-
checksum:
|
|
758
|
+
response: import("alepha").TPage<import("typebox").TObject<{
|
|
759
|
+
id: PgAttr<PgAttr<import("typebox").TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
|
|
760
|
+
version: PgAttr<PgAttr<import("typebox").TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
|
|
761
|
+
createdAt: PgAttr<PgAttr<import("typebox").TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
|
|
762
|
+
updatedAt: PgAttr<PgAttr<import("typebox").TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
|
|
763
|
+
organizationId: PgAttr<import("typebox").TString, typeof PG_ORGANIZATION>;
|
|
764
|
+
blobId: import("typebox").TString;
|
|
765
|
+
creator: import("typebox").TOptional<import("typebox").TString>;
|
|
766
|
+
creatorRealm: import("typebox").TOptional<import("typebox").TString>;
|
|
767
|
+
creatorName: import("typebox").TOptional<import("typebox").TString>;
|
|
768
|
+
bucket: import("typebox").TString;
|
|
769
|
+
expirationDate: import("typebox").TOptional<import("typebox").TString>;
|
|
770
|
+
name: import("typebox").TString;
|
|
771
|
+
originalName: import("typebox").TOptional<import("typebox").TString>;
|
|
772
|
+
size: import("typebox").TNumber;
|
|
773
|
+
mimeType: import("typebox").TString;
|
|
774
|
+
tags: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
775
|
+
checksum: import("typebox").TOptional<import("typebox").TString>;
|
|
776
|
+
user: import("typebox").TOptional<import("typebox").TObject<{
|
|
777
|
+
id: import("typebox").TString;
|
|
778
|
+
email: import("typebox").TOptional<import("typebox").TString>;
|
|
779
|
+
username: import("typebox").TOptional<import("typebox").TString>;
|
|
780
|
+
firstName: import("typebox").TOptional<import("typebox").TString>;
|
|
781
|
+
lastName: import("typebox").TOptional<import("typebox").TString>;
|
|
782
|
+
}>>;
|
|
713
783
|
}>>;
|
|
714
784
|
}>;
|
|
715
785
|
/**
|
|
716
786
|
* DELETE /files/:id - Deletes a file from both storage and database.
|
|
717
787
|
* Removes the file from the bucket and cleans up the database record.
|
|
718
788
|
*/
|
|
719
|
-
readonly deleteFile:
|
|
720
|
-
params:
|
|
721
|
-
id:
|
|
789
|
+
readonly deleteFile: import("alepha/server").ActionPrimitiveFn<{
|
|
790
|
+
params: import("typebox").TObject<{
|
|
791
|
+
id: import("typebox").TString;
|
|
722
792
|
}>;
|
|
723
|
-
response:
|
|
724
|
-
ok:
|
|
725
|
-
id:
|
|
726
|
-
count:
|
|
793
|
+
response: import("typebox").TObject<{
|
|
794
|
+
ok: import("typebox").TBoolean;
|
|
795
|
+
id: import("typebox").TOptional<import("typebox").TUnion<[import("typebox").TString, import("typebox").TInteger]>>;
|
|
796
|
+
count: import("typebox").TOptional<import("typebox").TNumber>;
|
|
727
797
|
}>;
|
|
728
798
|
}>;
|
|
729
799
|
/**
|
|
730
800
|
* POST /files/delete - Delete many files in one request, batching the
|
|
731
801
|
* underlying bucket calls per bucket (R2/S3 batch where supported).
|
|
732
802
|
*/
|
|
733
|
-
readonly deleteFiles:
|
|
734
|
-
body:
|
|
735
|
-
ids:
|
|
803
|
+
readonly deleteFiles: import("alepha/server").ActionPrimitiveFn<{
|
|
804
|
+
body: import("typebox").TObject<{
|
|
805
|
+
ids: import("typebox").TArray<import("typebox").TString>;
|
|
736
806
|
}>;
|
|
737
|
-
response:
|
|
738
|
-
deleted:
|
|
807
|
+
response: import("typebox").TObject<{
|
|
808
|
+
deleted: import("typebox").TArray<import("typebox").TString>;
|
|
739
809
|
}>;
|
|
740
810
|
}>;
|
|
741
811
|
/**
|
|
@@ -743,65 +813,79 @@ declare class FileController {
|
|
|
743
813
|
* Creates a database record with metadata and calculates checksum.
|
|
744
814
|
* Optionally specify bucket and expiration date.
|
|
745
815
|
*/
|
|
746
|
-
readonly uploadFile:
|
|
747
|
-
body:
|
|
748
|
-
file:
|
|
816
|
+
readonly uploadFile: import("alepha/server").ActionPrimitiveFn<{
|
|
817
|
+
body: import("typebox").TObject<{
|
|
818
|
+
file: import("alepha").TFile;
|
|
749
819
|
}>;
|
|
750
|
-
query:
|
|
751
|
-
expirationDate:
|
|
752
|
-
bucket:
|
|
820
|
+
query: import("typebox").TObject<{
|
|
821
|
+
expirationDate: import("typebox").TOptional<import("typebox").TString>;
|
|
822
|
+
bucket: import("typebox").TOptional<import("typebox").TString>;
|
|
753
823
|
}>;
|
|
754
|
-
response:
|
|
755
|
-
id: PgAttr<PgAttr<
|
|
756
|
-
version: PgAttr<PgAttr<
|
|
757
|
-
createdAt: PgAttr<PgAttr<
|
|
758
|
-
updatedAt: PgAttr<PgAttr<
|
|
759
|
-
organizationId: PgAttr<
|
|
760
|
-
blobId:
|
|
761
|
-
creator:
|
|
762
|
-
creatorRealm:
|
|
763
|
-
creatorName:
|
|
764
|
-
bucket:
|
|
765
|
-
expirationDate:
|
|
766
|
-
name:
|
|
767
|
-
originalName:
|
|
768
|
-
size:
|
|
769
|
-
mimeType:
|
|
770
|
-
tags:
|
|
771
|
-
checksum:
|
|
824
|
+
response: import("typebox").TObject<{
|
|
825
|
+
id: PgAttr<PgAttr<import("typebox").TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
|
|
826
|
+
version: PgAttr<PgAttr<import("typebox").TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
|
|
827
|
+
createdAt: PgAttr<PgAttr<import("typebox").TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
|
|
828
|
+
updatedAt: PgAttr<PgAttr<import("typebox").TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
|
|
829
|
+
organizationId: PgAttr<import("typebox").TString, typeof PG_ORGANIZATION>;
|
|
830
|
+
blobId: import("typebox").TString;
|
|
831
|
+
creator: import("typebox").TOptional<import("typebox").TString>;
|
|
832
|
+
creatorRealm: import("typebox").TOptional<import("typebox").TString>;
|
|
833
|
+
creatorName: import("typebox").TOptional<import("typebox").TString>;
|
|
834
|
+
bucket: import("typebox").TString;
|
|
835
|
+
expirationDate: import("typebox").TOptional<import("typebox").TString>;
|
|
836
|
+
name: import("typebox").TString;
|
|
837
|
+
originalName: import("typebox").TOptional<import("typebox").TString>;
|
|
838
|
+
size: import("typebox").TNumber;
|
|
839
|
+
mimeType: import("typebox").TString;
|
|
840
|
+
tags: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
841
|
+
checksum: import("typebox").TOptional<import("typebox").TString>;
|
|
842
|
+
user: import("typebox").TOptional<import("typebox").TObject<{
|
|
843
|
+
id: import("typebox").TString;
|
|
844
|
+
email: import("typebox").TOptional<import("typebox").TString>;
|
|
845
|
+
username: import("typebox").TOptional<import("typebox").TString>;
|
|
846
|
+
firstName: import("typebox").TOptional<import("typebox").TString>;
|
|
847
|
+
lastName: import("typebox").TOptional<import("typebox").TString>;
|
|
848
|
+
}>>;
|
|
772
849
|
}>;
|
|
773
850
|
}>;
|
|
774
851
|
/**
|
|
775
852
|
* PATCH /files/:id - Updates file metadata.
|
|
776
853
|
* Allows updating name, tags, and expiration date without modifying file content.
|
|
777
854
|
*/
|
|
778
|
-
readonly updateFile:
|
|
779
|
-
params:
|
|
780
|
-
id:
|
|
855
|
+
readonly updateFile: import("alepha/server").ActionPrimitiveFn<{
|
|
856
|
+
params: import("typebox").TObject<{
|
|
857
|
+
id: import("typebox").TString;
|
|
781
858
|
}>;
|
|
782
|
-
body:
|
|
783
|
-
name:
|
|
784
|
-
tags:
|
|
785
|
-
expirationDate:
|
|
859
|
+
body: import("typebox").TObject<{
|
|
860
|
+
name: import("typebox").TOptional<import("typebox").TString>;
|
|
861
|
+
tags: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
862
|
+
expirationDate: import("typebox").TOptional<import("typebox").TString>;
|
|
786
863
|
}>;
|
|
787
|
-
response:
|
|
788
|
-
id: PgAttr<PgAttr<
|
|
789
|
-
version: PgAttr<PgAttr<
|
|
790
|
-
createdAt: PgAttr<PgAttr<
|
|
791
|
-
updatedAt: PgAttr<PgAttr<
|
|
792
|
-
organizationId: PgAttr<
|
|
793
|
-
blobId:
|
|
794
|
-
creator:
|
|
795
|
-
creatorRealm:
|
|
796
|
-
creatorName:
|
|
797
|
-
bucket:
|
|
798
|
-
expirationDate:
|
|
799
|
-
name:
|
|
800
|
-
originalName:
|
|
801
|
-
size:
|
|
802
|
-
mimeType:
|
|
803
|
-
tags:
|
|
804
|
-
checksum:
|
|
864
|
+
response: import("typebox").TObject<{
|
|
865
|
+
id: PgAttr<PgAttr<import("typebox").TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
|
|
866
|
+
version: PgAttr<PgAttr<import("typebox").TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
|
|
867
|
+
createdAt: PgAttr<PgAttr<import("typebox").TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
|
|
868
|
+
updatedAt: PgAttr<PgAttr<import("typebox").TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
|
|
869
|
+
organizationId: PgAttr<import("typebox").TString, typeof PG_ORGANIZATION>;
|
|
870
|
+
blobId: import("typebox").TString;
|
|
871
|
+
creator: import("typebox").TOptional<import("typebox").TString>;
|
|
872
|
+
creatorRealm: import("typebox").TOptional<import("typebox").TString>;
|
|
873
|
+
creatorName: import("typebox").TOptional<import("typebox").TString>;
|
|
874
|
+
bucket: import("typebox").TString;
|
|
875
|
+
expirationDate: import("typebox").TOptional<import("typebox").TString>;
|
|
876
|
+
name: import("typebox").TString;
|
|
877
|
+
originalName: import("typebox").TOptional<import("typebox").TString>;
|
|
878
|
+
size: import("typebox").TNumber;
|
|
879
|
+
mimeType: import("typebox").TString;
|
|
880
|
+
tags: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
|
|
881
|
+
checksum: import("typebox").TOptional<import("typebox").TString>;
|
|
882
|
+
user: import("typebox").TOptional<import("typebox").TObject<{
|
|
883
|
+
id: import("typebox").TString;
|
|
884
|
+
email: import("typebox").TOptional<import("typebox").TString>;
|
|
885
|
+
username: import("typebox").TOptional<import("typebox").TString>;
|
|
886
|
+
firstName: import("typebox").TOptional<import("typebox").TString>;
|
|
887
|
+
lastName: import("typebox").TOptional<import("typebox").TString>;
|
|
888
|
+
}>>;
|
|
805
889
|
}>;
|
|
806
890
|
}>;
|
|
807
891
|
/**
|
|
@@ -815,11 +899,11 @@ declare class FileController {
|
|
|
815
899
|
* Cache-Control is `private` because the per-user authorization decision
|
|
816
900
|
* cannot be cached by shared proxies/CDNs. Client-side ETag still works.
|
|
817
901
|
*/
|
|
818
|
-
readonly streamFile:
|
|
819
|
-
params:
|
|
820
|
-
id:
|
|
902
|
+
readonly streamFile: import("alepha/server").ActionPrimitiveFn<{
|
|
903
|
+
params: import("typebox").TObject<{
|
|
904
|
+
id: import("typebox").TString;
|
|
821
905
|
}>;
|
|
822
|
-
response:
|
|
906
|
+
response: import("alepha").TFile;
|
|
823
907
|
}>;
|
|
824
908
|
/**
|
|
825
909
|
* GET /public/files/:id - Anonymous, edge-cacheable download.
|
|
@@ -835,20 +919,41 @@ declare class FileController {
|
|
|
835
919
|
* makes this safe: edge cache is URL-keyed, so public and private files
|
|
836
920
|
* live in separate cache lanes.
|
|
837
921
|
*/
|
|
838
|
-
readonly streamPublicFile:
|
|
839
|
-
params:
|
|
840
|
-
id:
|
|
922
|
+
readonly streamPublicFile: import("alepha/server").ActionPrimitiveFn<{
|
|
923
|
+
params: import("typebox").TObject<{
|
|
924
|
+
id: import("typebox").TString;
|
|
841
925
|
}>;
|
|
842
|
-
response:
|
|
926
|
+
response: import("alepha").TFile;
|
|
843
927
|
}>;
|
|
844
928
|
}
|
|
845
929
|
//#endregion
|
|
846
930
|
//#region ../../src/api/files/jobs/FileJobs.d.ts
|
|
847
931
|
declare class FileJobs {
|
|
848
932
|
protected readonly fileService: FileService;
|
|
849
|
-
readonly purgeFiles:
|
|
933
|
+
readonly purgeFiles: import("alepha/scheduler").SchedulerPrimitive;
|
|
850
934
|
}
|
|
851
935
|
//#endregion
|
|
936
|
+
//#region ../../src/api/files/schemas/fileCreatorSummarySchema.d.ts
|
|
937
|
+
/**
|
|
938
|
+
* Slim view of a file's uploader, embedded by the admin listing via a
|
|
939
|
+
* best-effort left join (`files.creator` → `users.id`) so the UI can render
|
|
940
|
+
* a human-readable identifier instead of a bare UUID.
|
|
941
|
+
*
|
|
942
|
+
* Optional end-to-end: the join only runs when the `users` entity is
|
|
943
|
+
* registered in the running app (see `FileService.findFiles`), and even then
|
|
944
|
+
* a file whose creator was deleted — or who lives in a non-default realm —
|
|
945
|
+
* comes back with `user` undefined. Callers must fall back to `creatorName`
|
|
946
|
+
* or the raw `creator` id.
|
|
947
|
+
*/
|
|
948
|
+
declare const fileCreatorSummarySchema: import("typebox").TObject<{
|
|
949
|
+
id: import("typebox").TString;
|
|
950
|
+
email: import("typebox").TOptional<import("typebox").TString>;
|
|
951
|
+
username: import("typebox").TOptional<import("typebox").TString>;
|
|
952
|
+
firstName: import("typebox").TOptional<import("typebox").TString>;
|
|
953
|
+
lastName: import("typebox").TOptional<import("typebox").TString>;
|
|
954
|
+
}>;
|
|
955
|
+
type FileCreatorSummary = Static<typeof fileCreatorSummarySchema>;
|
|
956
|
+
//#endregion
|
|
852
957
|
//#region ../../src/api/files/index.d.ts
|
|
853
958
|
declare module "alepha/bucket" {
|
|
854
959
|
interface BucketFileOptions {
|
|
@@ -883,7 +988,7 @@ declare module "alepha/bucket" {
|
|
|
883
988
|
*
|
|
884
989
|
* @module alepha.api.files
|
|
885
990
|
*/
|
|
886
|
-
declare const AlephaApiFiles:
|
|
991
|
+
declare const AlephaApiFiles: import("alepha").Service<import("alepha").Module>;
|
|
887
992
|
//#endregion
|
|
888
|
-
export { AdminFileStatsController, AlephaApiFiles, BucketStats, FileAccessProvider, FileController, FileEntity, FileJobs, FileService, MimeTypeStats, StorageStats, bucketStatsSchema, files, mimeTypeStatsSchema, storageStatsSchema };
|
|
993
|
+
export { AdminFileStatsController, AlephaApiFiles, BucketStats, FileAccessProvider, FileController, FileCreatorSummary, FileEntity, FileJobs, FileQuery, FileResource, FileService, MimeTypeStats, StorageStats, bucketStatsSchema, fileCreatorSummarySchema, fileQuerySchema, fileResourceSchema, files, mimeTypeStatsSchema, storageStatsSchema };
|
|
889
994
|
//# sourceMappingURL=index.d.ts.map
|