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
package/dist/batch/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as alepha2 from "alepha";
|
|
2
2
|
import { Alepha, KIND, Primitive, Static, TSchema } from "alepha";
|
|
3
3
|
import { DateTimeProvider, DurationLike } from "alepha/datetime";
|
|
4
4
|
import * as alepha_logger0 from "alepha/logger";
|
|
@@ -7,69 +7,69 @@ import { RetryBackoffOptions, RetryPrimitiveOptions, RetryProvider } from "aleph
|
|
|
7
7
|
//#region ../../src/batch/providers/BatchProvider.d.ts
|
|
8
8
|
interface BatchOptions<TItem, TResponse = any> {
|
|
9
9
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
* The batch processing handler function that processes arrays of validated items.
|
|
11
|
+
*/
|
|
12
12
|
handler: (items: TItem[]) => TResponse;
|
|
13
13
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
* Maximum number of items to collect before automatically flushing the batch.
|
|
15
|
+
*
|
|
16
|
+
* @default 10
|
|
17
|
+
*/
|
|
18
18
|
maxSize?: number;
|
|
19
19
|
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
* Maximum number of items that can be queued in a single partition.
|
|
21
|
+
* If exceeded, push() will throw an error.
|
|
22
|
+
*/
|
|
23
23
|
maxQueueSize?: number;
|
|
24
24
|
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
* Maximum time to wait before flushing a batch, even if it hasn't reached maxSize.
|
|
26
|
+
*
|
|
27
|
+
* @default [1, "second"]
|
|
28
|
+
*/
|
|
29
29
|
maxDuration?: DurationLike;
|
|
30
30
|
/**
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
* Function to determine partition keys for grouping items into separate batches.
|
|
32
|
+
*/
|
|
33
33
|
partitionBy?: (item: TItem) => string;
|
|
34
34
|
/**
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
* Maximum number of batch handlers that can execute simultaneously.
|
|
36
|
+
*
|
|
37
|
+
* @default 1
|
|
38
|
+
*/
|
|
39
39
|
concurrency?: number;
|
|
40
40
|
/**
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
* Retry configuration for failed batch processing operations.
|
|
42
|
+
*/
|
|
43
43
|
retry?: {
|
|
44
44
|
/**
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
* The maximum number of attempts.
|
|
46
|
+
*
|
|
47
|
+
* @default 3
|
|
48
|
+
*/
|
|
49
49
|
max?: number;
|
|
50
50
|
/**
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
* The backoff strategy for delays between retries.
|
|
52
|
+
* Can be a fixed number (in ms) or a configuration object for exponential backoff.
|
|
53
|
+
*
|
|
54
|
+
* @default { initial: 200, factor: 2, jitter: true }
|
|
55
|
+
*/
|
|
56
56
|
backoff?: number | RetryBackoffOptions;
|
|
57
57
|
/**
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
* An overall time limit for all retry attempts combined.
|
|
59
|
+
*
|
|
60
|
+
* e.g., `[5, 'seconds']`
|
|
61
|
+
*/
|
|
62
62
|
maxDuration?: DurationLike;
|
|
63
63
|
/**
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
* A function that determines if a retry should be attempted based on the error.
|
|
65
|
+
*
|
|
66
|
+
* @default (error) => true (retries on any error)
|
|
67
|
+
*/
|
|
68
68
|
when?: (error: Error) => boolean;
|
|
69
69
|
/**
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
* A custom callback for when a retry attempt fails.
|
|
71
|
+
* This is called before the delay.
|
|
72
|
+
*/
|
|
73
73
|
onError?: (error: Error, attempt: number) => void;
|
|
74
74
|
};
|
|
75
75
|
}
|
|
@@ -113,41 +113,49 @@ declare class BatchProvider {
|
|
|
113
113
|
protected readonly dateTime: DateTimeProvider;
|
|
114
114
|
protected readonly retryProvider: RetryProvider;
|
|
115
115
|
/**
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
* All active batch contexts managed by this provider.
|
|
117
|
+
*/
|
|
118
|
+
protected readonly contexts: Set<BatchContext<any, any>>;
|
|
119
|
+
/**
|
|
120
|
+
* Creates a new batch context with the given options.
|
|
121
|
+
*/
|
|
118
122
|
createContext<TItem, TResponse>(alepha: Alepha, options: BatchOptions<TItem, TResponse>): BatchContext<TItem, TResponse>;
|
|
119
123
|
/**
|
|
120
|
-
|
|
121
|
-
|
|
124
|
+
* Shutdown hook - flushes all batch contexts on application stop.
|
|
125
|
+
*/
|
|
126
|
+
protected readonly onStop: alepha2.HookPrimitive<"stop">;
|
|
127
|
+
/**
|
|
128
|
+
* Get the effective maxSize for a context.
|
|
129
|
+
*/
|
|
122
130
|
protected getMaxSize<TItem, TResponse>(context: BatchContext<TItem, TResponse>): number;
|
|
123
131
|
/**
|
|
124
|
-
|
|
125
|
-
|
|
132
|
+
* Get the effective concurrency for a context.
|
|
133
|
+
*/
|
|
126
134
|
protected getConcurrency<TItem, TResponse>(context: BatchContext<TItem, TResponse>): number;
|
|
127
135
|
/**
|
|
128
|
-
|
|
129
|
-
|
|
136
|
+
* Get the effective maxDuration for a context.
|
|
137
|
+
*/
|
|
130
138
|
protected getMaxDuration<TItem, TResponse>(context: BatchContext<TItem, TResponse>): DurationLike;
|
|
131
139
|
/**
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
140
|
+
* Pushes an item into the batch and returns immediately with a unique ID.
|
|
141
|
+
* The item will be processed asynchronously with other items when the batch is flushed.
|
|
142
|
+
* Use wait(id) to get the processing result.
|
|
143
|
+
*
|
|
144
|
+
* @throws Error if maxQueueSize is exceeded
|
|
145
|
+
*/
|
|
138
146
|
push<TItem, TResponse>(context: BatchContext<TItem, TResponse>, item: TItem): string;
|
|
139
147
|
/**
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
148
|
+
* Wait for a specific item to be processed and get its result.
|
|
149
|
+
* @param id The item ID returned from push()
|
|
150
|
+
* @returns The processing result
|
|
151
|
+
* @throws If the item doesn't exist or processing failed
|
|
152
|
+
*/
|
|
145
153
|
wait<TItem, TResponse>(context: BatchContext<TItem, TResponse>, id: string): Promise<TResponse>;
|
|
146
154
|
/**
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
155
|
+
* Get the current status of an item.
|
|
156
|
+
* @param id The item ID returned from push()
|
|
157
|
+
* @returns Status information or undefined if item doesn't exist
|
|
158
|
+
*/
|
|
151
159
|
status<TItem, TResponse>(context: BatchContext<TItem, TResponse>, id: string): {
|
|
152
160
|
status: "pending" | "processing";
|
|
153
161
|
} | {
|
|
@@ -158,36 +166,36 @@ declare class BatchProvider {
|
|
|
158
166
|
error: Error;
|
|
159
167
|
} | undefined;
|
|
160
168
|
/**
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
169
|
+
* Clears completed and failed items from the context to free memory.
|
|
170
|
+
* Returns the number of items cleared.
|
|
171
|
+
*
|
|
172
|
+
* @param context The batch context
|
|
173
|
+
* @param status Optional: only clear items with this specific status ('completed' or 'failed')
|
|
174
|
+
* @returns The number of items cleared
|
|
175
|
+
*/
|
|
168
176
|
clearCompleted<TItem, TResponse>(context: BatchContext<TItem, TResponse>, status?: "completed" | "failed"): number;
|
|
169
177
|
/**
|
|
170
|
-
|
|
171
|
-
|
|
178
|
+
* Flush all partitions or a specific partition.
|
|
179
|
+
*/
|
|
172
180
|
flush<TItem, TResponse>(context: BatchContext<TItem, TResponse>, partitionKey?: string): Promise<void>;
|
|
173
181
|
/**
|
|
174
|
-
|
|
175
|
-
|
|
182
|
+
* Flush a specific partition.
|
|
183
|
+
*/
|
|
176
184
|
protected flushPartition<TItem, TResponse>(context: BatchContext<TItem, TResponse>, partitionKey: string, limit?: number): Promise<void>;
|
|
177
185
|
/**
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
186
|
+
* Mark the context as ready and start processing buffered items.
|
|
187
|
+
* Called after the "ready" hook.
|
|
188
|
+
*/
|
|
181
189
|
markReady<TItem, TResponse>(context: BatchContext<TItem, TResponse>): Promise<void>;
|
|
182
190
|
/**
|
|
183
|
-
|
|
184
|
-
|
|
191
|
+
* Mark the context as shutting down and flush all remaining items.
|
|
192
|
+
*/
|
|
185
193
|
shutdown<TItem, TResponse>(context: BatchContext<TItem, TResponse>): Promise<void>;
|
|
186
194
|
/**
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
195
|
+
* Called after the "ready" hook to start processing buffered items that were
|
|
196
|
+
* pushed during startup. This checks all partitions and starts timeouts/flushes
|
|
197
|
+
* for items that were accumulated before the app was ready.
|
|
198
|
+
*/
|
|
191
199
|
protected startProcessing<TItem, TResponse>(context: BatchContext<TItem, TResponse>): Promise<void>;
|
|
192
200
|
}
|
|
193
201
|
//#endregion
|
|
@@ -201,37 +209,37 @@ declare const $batch: {
|
|
|
201
209
|
};
|
|
202
210
|
interface BatchPrimitiveOptions<TItem extends TSchema, TResponse = any> {
|
|
203
211
|
/**
|
|
204
|
-
|
|
205
|
-
|
|
212
|
+
* TypeBox schema for validating each item added to the batch.
|
|
213
|
+
*/
|
|
206
214
|
schema: TItem;
|
|
207
215
|
/**
|
|
208
|
-
|
|
209
|
-
|
|
216
|
+
* The batch processing handler function that processes arrays of validated items.
|
|
217
|
+
*/
|
|
210
218
|
handler: (items: Static<TItem>[]) => TResponse;
|
|
211
219
|
/**
|
|
212
|
-
|
|
213
|
-
|
|
220
|
+
* Maximum number of items to collect before automatically flushing the batch.
|
|
221
|
+
*/
|
|
214
222
|
maxSize?: number;
|
|
215
223
|
/**
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
224
|
+
* Maximum number of items that can be queued in a single partition.
|
|
225
|
+
* If exceeded, push() will throw an error.
|
|
226
|
+
*/
|
|
219
227
|
maxQueueSize?: number;
|
|
220
228
|
/**
|
|
221
|
-
|
|
222
|
-
|
|
229
|
+
* Maximum time to wait before flushing a batch, even if it hasn't reached maxSize.
|
|
230
|
+
*/
|
|
223
231
|
maxDuration?: DurationLike;
|
|
224
232
|
/**
|
|
225
|
-
|
|
226
|
-
|
|
233
|
+
* Function to determine partition keys for grouping items into separate batches.
|
|
234
|
+
*/
|
|
227
235
|
partitionBy?: (item: Static<TItem>) => string;
|
|
228
236
|
/**
|
|
229
|
-
|
|
230
|
-
|
|
237
|
+
* Maximum number of batch handlers that can execute simultaneously.
|
|
238
|
+
*/
|
|
231
239
|
concurrency?: number;
|
|
232
240
|
/**
|
|
233
|
-
|
|
234
|
-
|
|
241
|
+
* Retry configuration for failed batch processing operations.
|
|
242
|
+
*/
|
|
235
243
|
retry?: Omit<RetryPrimitiveOptions<() => Array<Static<TItem>>>, "handler">;
|
|
236
244
|
}
|
|
237
245
|
declare class BatchPrimitive<TItem extends TSchema, TResponse = any> extends Primitive<BatchPrimitiveOptions<TItem, TResponse>> {
|
|
@@ -239,23 +247,23 @@ declare class BatchPrimitive<TItem extends TSchema, TResponse = any> extends Pri
|
|
|
239
247
|
protected readonly context: BatchContext<Static<TItem>, TResponse>;
|
|
240
248
|
constructor(...args: ConstructorParameters<typeof Primitive<BatchPrimitiveOptions<TItem, TResponse>>>);
|
|
241
249
|
/**
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
250
|
+
* Pushes an item into the batch and returns immediately with a unique ID.
|
|
251
|
+
* The item will be processed asynchronously with other items when the batch is flushed.
|
|
252
|
+
* Use wait(id) to get the processing result.
|
|
253
|
+
*/
|
|
246
254
|
push(item: Static<TItem>): Promise<string>;
|
|
247
255
|
/**
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
256
|
+
* Wait for a specific item to be processed and get its result.
|
|
257
|
+
* @param id The item ID returned from push()
|
|
258
|
+
* @returns The processing result
|
|
259
|
+
* @throws If the item doesn't exist or processing failed
|
|
260
|
+
*/
|
|
253
261
|
wait(id: string): Promise<TResponse>;
|
|
254
262
|
/**
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
263
|
+
* Get the current status of an item.
|
|
264
|
+
* @param id The item ID returned from push()
|
|
265
|
+
* @returns Status information or undefined if item doesn't exist
|
|
266
|
+
*/
|
|
259
267
|
status(id: string): {
|
|
260
268
|
status: "pending" | "processing";
|
|
261
269
|
} | {
|
|
@@ -266,65 +274,37 @@ declare class BatchPrimitive<TItem extends TSchema, TResponse = any> extends Pri
|
|
|
266
274
|
error: Error;
|
|
267
275
|
} | undefined;
|
|
268
276
|
/**
|
|
269
|
-
|
|
270
|
-
|
|
277
|
+
* Flush all partitions or a specific partition.
|
|
278
|
+
*/
|
|
271
279
|
flush(partitionKey?: string): Promise<void>;
|
|
272
280
|
/**
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
281
|
+
* Clears completed and failed items from memory.
|
|
282
|
+
* Call this periodically in long-running applications to prevent memory leaks.
|
|
283
|
+
*
|
|
284
|
+
* @param status Optional: only clear items with this specific status ('completed' or 'failed')
|
|
285
|
+
* @returns The number of items cleared
|
|
286
|
+
*/
|
|
279
287
|
clearCompleted(status?: "completed" | "failed"): number;
|
|
280
|
-
protected readonly onReady:
|
|
281
|
-
protected readonly dispose: alepha1.HookPrimitive<"stop">;
|
|
288
|
+
protected readonly onReady: alepha2.HookPrimitive<"ready">;
|
|
282
289
|
}
|
|
283
290
|
//#endregion
|
|
284
291
|
//#region ../../src/batch/index.d.ts
|
|
285
292
|
/**
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
*
|
|
289
|
-
* ```ts
|
|
290
|
-
* import { Alepha, $hook, run, t } from "alepha";
|
|
291
|
-
* import { $batch } from "alepha/batch";
|
|
292
|
-
*
|
|
293
|
-
* class LoggingService {
|
|
294
|
-
* // define the batch processor
|
|
295
|
-
* logBatch = $batch({
|
|
296
|
-
* schema: t.text(),
|
|
297
|
-
* maxSize: 10,
|
|
298
|
-
* maxDuration: [5, "seconds"],
|
|
299
|
-
* handler: async (items) => {
|
|
300
|
-
* console.log(`[BATCH LOG] Processing ${items.length} events:`, items);
|
|
301
|
-
* },
|
|
302
|
-
* });
|
|
303
|
-
*
|
|
304
|
-
* // example of how to use it
|
|
305
|
-
* onReady = $hook({
|
|
306
|
-
* on: "ready",
|
|
307
|
-
* handler: async () => {
|
|
308
|
-
* // push() returns an ID immediately
|
|
309
|
-
* const id1 = await this.logBatch.push("Application started.");
|
|
310
|
-
* const id2 = await this.logBatch.push("User authenticated.");
|
|
293
|
+
* | type | quality | stability |
|
|
294
|
+
* |------|---------|-----------|
|
|
295
|
+
* | backend | standard | stable |
|
|
311
296
|
*
|
|
312
|
-
*
|
|
313
|
-
* await this.logBatch.wait(id1);
|
|
297
|
+
* Batch accumulation and processing.
|
|
314
298
|
*
|
|
315
|
-
*
|
|
316
|
-
*
|
|
317
|
-
*
|
|
318
|
-
*
|
|
319
|
-
*
|
|
320
|
-
* }
|
|
321
|
-
* ```
|
|
299
|
+
* **Features:**
|
|
300
|
+
* - Batch accumulator with handler
|
|
301
|
+
* - Configurable batch size
|
|
302
|
+
* - Time-based triggers
|
|
303
|
+
* - Status tracking
|
|
322
304
|
*
|
|
323
|
-
* @see {@link $batch}
|
|
324
|
-
* @see {@link BatchProvider}
|
|
325
305
|
* @module alepha.batch
|
|
326
306
|
*/
|
|
327
|
-
declare const AlephaBatch:
|
|
307
|
+
declare const AlephaBatch: alepha2.Service<alepha2.Module>;
|
|
328
308
|
//#endregion
|
|
329
309
|
export { $batch, AlephaBatch, BatchContext, type BatchItemState, type BatchItemStatus, BatchOptions, BatchPrimitive, BatchPrimitiveOptions, BatchProvider, PartitionState };
|
|
330
310
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/batch/providers/BatchProvider.ts","../../src/batch/primitives/$batch.ts","../../src/batch/index.ts"],"mappings":";;;;;;;UAOiB,YAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/batch/providers/BatchProvider.ts","../../src/batch/primitives/$batch.ts","../../src/batch/index.ts"],"mappings":"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"}
|
package/dist/batch/index.js
CHANGED
|
@@ -13,10 +13,14 @@ var BatchProvider = class {
|
|
|
13
13
|
dateTime = $inject(DateTimeProvider);
|
|
14
14
|
retryProvider = $inject(RetryProvider);
|
|
15
15
|
/**
|
|
16
|
+
* All active batch contexts managed by this provider.
|
|
17
|
+
*/
|
|
18
|
+
contexts = /* @__PURE__ */ new Set();
|
|
19
|
+
/**
|
|
16
20
|
* Creates a new batch context with the given options.
|
|
17
21
|
*/
|
|
18
22
|
createContext(alepha, options) {
|
|
19
|
-
|
|
23
|
+
const context = {
|
|
20
24
|
options,
|
|
21
25
|
itemStates: /* @__PURE__ */ new Map(),
|
|
22
26
|
partitions: /* @__PURE__ */ new Map(),
|
|
@@ -25,8 +29,25 @@ var BatchProvider = class {
|
|
|
25
29
|
isReady: false,
|
|
26
30
|
alepha
|
|
27
31
|
};
|
|
32
|
+
this.contexts.add(context);
|
|
33
|
+
return context;
|
|
28
34
|
}
|
|
29
35
|
/**
|
|
36
|
+
* Shutdown hook - flushes all batch contexts on application stop.
|
|
37
|
+
*/
|
|
38
|
+
onStop = $hook({
|
|
39
|
+
on: "stop",
|
|
40
|
+
priority: "first",
|
|
41
|
+
handler: async () => {
|
|
42
|
+
if (this.contexts.size === 0) return;
|
|
43
|
+
this.log.debug(`Shutting down ${this.contexts.size} batch context(s)...`);
|
|
44
|
+
const promises = [];
|
|
45
|
+
for (const context of this.contexts) promises.push(this.shutdown(context));
|
|
46
|
+
await Promise.all(promises);
|
|
47
|
+
this.log.debug("All batch contexts shut down");
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
30
51
|
* Get the effective maxSize for a context.
|
|
31
52
|
*/
|
|
32
53
|
getMaxSize(context) {
|
|
@@ -334,58 +355,24 @@ var BatchPrimitive = class extends Primitive {
|
|
|
334
355
|
await this.batchProvider.markReady(this.context);
|
|
335
356
|
}
|
|
336
357
|
});
|
|
337
|
-
dispose = $hook({
|
|
338
|
-
on: "stop",
|
|
339
|
-
priority: "first",
|
|
340
|
-
handler: async () => {
|
|
341
|
-
await this.batchProvider.shutdown(this.context);
|
|
342
|
-
}
|
|
343
|
-
});
|
|
344
358
|
};
|
|
345
359
|
$batch[KIND] = BatchPrimitive;
|
|
346
360
|
|
|
347
361
|
//#endregion
|
|
348
362
|
//#region ../../src/batch/index.ts
|
|
349
363
|
/**
|
|
350
|
-
*
|
|
351
|
-
*
|
|
352
|
-
*
|
|
353
|
-
* ```ts
|
|
354
|
-
* import { Alepha, $hook, run, t } from "alepha";
|
|
355
|
-
* import { $batch } from "alepha/batch";
|
|
356
|
-
*
|
|
357
|
-
* class LoggingService {
|
|
358
|
-
* // define the batch processor
|
|
359
|
-
* logBatch = $batch({
|
|
360
|
-
* schema: t.text(),
|
|
361
|
-
* maxSize: 10,
|
|
362
|
-
* maxDuration: [5, "seconds"],
|
|
363
|
-
* handler: async (items) => {
|
|
364
|
-
* console.log(`[BATCH LOG] Processing ${items.length} events:`, items);
|
|
365
|
-
* },
|
|
366
|
-
* });
|
|
367
|
-
*
|
|
368
|
-
* // example of how to use it
|
|
369
|
-
* onReady = $hook({
|
|
370
|
-
* on: "ready",
|
|
371
|
-
* handler: async () => {
|
|
372
|
-
* // push() returns an ID immediately
|
|
373
|
-
* const id1 = await this.logBatch.push("Application started.");
|
|
374
|
-
* const id2 = await this.logBatch.push("User authenticated.");
|
|
364
|
+
* | type | quality | stability |
|
|
365
|
+
* |------|---------|-----------|
|
|
366
|
+
* | backend | standard | stable |
|
|
375
367
|
*
|
|
376
|
-
*
|
|
377
|
-
* await this.logBatch.wait(id1);
|
|
368
|
+
* Batch accumulation and processing.
|
|
378
369
|
*
|
|
379
|
-
*
|
|
380
|
-
*
|
|
381
|
-
*
|
|
382
|
-
*
|
|
383
|
-
*
|
|
384
|
-
* }
|
|
385
|
-
* ```
|
|
370
|
+
* **Features:**
|
|
371
|
+
* - Batch accumulator with handler
|
|
372
|
+
* - Configurable batch size
|
|
373
|
+
* - Time-based triggers
|
|
374
|
+
* - Status tracking
|
|
386
375
|
*
|
|
387
|
-
* @see {@link $batch}
|
|
388
|
-
* @see {@link BatchProvider}
|
|
389
376
|
* @module alepha.batch
|
|
390
377
|
*/
|
|
391
378
|
const AlephaBatch = $module({
|