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
|
@@ -12,38 +12,50 @@ import * as alepha_logger0 from "alepha/logger";
|
|
|
12
12
|
*/
|
|
13
13
|
declare abstract class CacheProvider {
|
|
14
14
|
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
* Get the value of a key.
|
|
16
|
+
*
|
|
17
|
+
* @param name Cache name, used to group keys. Should be Redis-like "some:group:name" format.
|
|
18
|
+
* @param key The key of the value to get.
|
|
19
|
+
*
|
|
20
|
+
* @return The value of the key, or undefined if the key does not exist.
|
|
21
|
+
*/
|
|
22
22
|
abstract get(name: string, key: string): Promise<Uint8Array | undefined>;
|
|
23
23
|
/**
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
* Set the string value of a key.
|
|
25
|
+
*
|
|
26
|
+
* @param name Cache name, used to group keys. Should be Redis-like "some:group:name" format.
|
|
27
|
+
* @param key The key of the value to set.
|
|
28
|
+
* @param value The value to set.
|
|
29
|
+
* @param ttl The time-to-live of the key, in milliseconds.
|
|
30
|
+
*
|
|
31
|
+
* @return The value of the key.
|
|
32
|
+
*/
|
|
33
33
|
abstract set(name: string, key: string, value: Uint8Array, ttl?: number): Promise<Uint8Array>;
|
|
34
34
|
/**
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
* Remove the specified keys.
|
|
36
|
+
*
|
|
37
|
+
* @param name Cache name, used to group keys. Should be Redis-like "some:group:name" format.
|
|
38
|
+
* @param keys The keys to delete.
|
|
39
|
+
*/
|
|
40
40
|
abstract del(name: string, ...keys: string[]): Promise<void>;
|
|
41
41
|
abstract has(name: string, key: string): Promise<boolean>;
|
|
42
42
|
abstract keys(name: string, filter?: string): Promise<string[]>;
|
|
43
43
|
/**
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
* Remove all keys from all cache names.
|
|
45
|
+
*/
|
|
46
46
|
abstract clear(): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Increment the integer value of a key by the given amount.
|
|
49
|
+
*
|
|
50
|
+
* If the key does not exist, it is set to 0 before performing the operation.
|
|
51
|
+
* This operation is atomic when using Redis.
|
|
52
|
+
*
|
|
53
|
+
* @param name Cache name, used to group keys.
|
|
54
|
+
* @param key The key to increment.
|
|
55
|
+
* @param amount The amount to increment by.
|
|
56
|
+
* @returns The new value after incrementing.
|
|
57
|
+
*/
|
|
58
|
+
abstract incr(name: string, key: string, amount: number): Promise<number>;
|
|
47
59
|
}
|
|
48
60
|
//#endregion
|
|
49
61
|
//#region ../../src/cache/core/primitives/$cache.d.ts
|
|
@@ -101,37 +113,37 @@ declare const $cache: {
|
|
|
101
113
|
};
|
|
102
114
|
interface CachePrimitiveOptions<TReturn = any, TParameter extends any[] = any[]> {
|
|
103
115
|
/**
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
116
|
+
* The cache name. This is useful for invalidating multiple caches at once.
|
|
117
|
+
*
|
|
118
|
+
* Store key as `cache:$name:$key`.
|
|
119
|
+
*
|
|
120
|
+
* @default Name of the key of the class.
|
|
121
|
+
*/
|
|
110
122
|
name?: string;
|
|
111
123
|
/**
|
|
112
|
-
|
|
113
|
-
|
|
124
|
+
* Function which returns cached data.
|
|
125
|
+
*/
|
|
114
126
|
handler?: (...args: TParameter) => TReturn;
|
|
115
127
|
/**
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
128
|
+
* The key generator for the cache.
|
|
129
|
+
* If not provided, the arguments will be json.stringify().
|
|
130
|
+
*/
|
|
119
131
|
key?: (...args: TParameter) => string;
|
|
120
132
|
/**
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
133
|
+
* The store provider for the cache.
|
|
134
|
+
* If not provided, the default store provider will be used.
|
|
135
|
+
*/
|
|
124
136
|
provider?: InstantiableClass<CacheProvider> | "memory";
|
|
125
137
|
/**
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
138
|
+
* The time-to-live for the cache in seconds.
|
|
139
|
+
* Set 0 to skip expiration.
|
|
140
|
+
*
|
|
141
|
+
* @default 300 (5 minutes).
|
|
142
|
+
*/
|
|
131
143
|
ttl?: DurationLike;
|
|
132
144
|
/**
|
|
133
|
-
|
|
134
|
-
|
|
145
|
+
* If the cache is disabled.
|
|
146
|
+
*/
|
|
135
147
|
disabled?: boolean;
|
|
136
148
|
}
|
|
137
149
|
declare class CachePrimitive<TReturn = any, TParameter extends any[] = any[]> extends Primitive<CachePrimitiveOptions<TReturn, TParameter>> {
|
|
@@ -160,8 +172,8 @@ declare class CachePrimitive<TReturn = any, TParameter extends any[] = any[]> ex
|
|
|
160
172
|
}
|
|
161
173
|
interface CachePrimitiveFn<TReturn = any, TParameter extends any[] = any[]> extends CachePrimitive<TReturn, TParameter> {
|
|
162
174
|
/**
|
|
163
|
-
|
|
164
|
-
|
|
175
|
+
* Run the cache primitive with the provided arguments.
|
|
176
|
+
*/
|
|
165
177
|
(...args: TParameter): Promise<TReturn>;
|
|
166
178
|
}
|
|
167
179
|
//#endregion
|
|
@@ -172,31 +184,191 @@ type CacheValue = {
|
|
|
172
184
|
data?: Uint8Array;
|
|
173
185
|
timeout?: Timeout;
|
|
174
186
|
};
|
|
187
|
+
interface MemoryCacheCall {
|
|
188
|
+
name: string;
|
|
189
|
+
key: string;
|
|
190
|
+
timestamp: number;
|
|
191
|
+
}
|
|
192
|
+
interface MemoryCacheSetCall extends MemoryCacheCall {
|
|
193
|
+
value: Uint8Array;
|
|
194
|
+
ttl?: number;
|
|
195
|
+
}
|
|
196
|
+
interface MemoryCacheDelCall {
|
|
197
|
+
name: string;
|
|
198
|
+
keys: string[];
|
|
199
|
+
timestamp: number;
|
|
200
|
+
}
|
|
201
|
+
interface MemoryCacheStats {
|
|
202
|
+
hits: number;
|
|
203
|
+
misses: number;
|
|
204
|
+
sets: number;
|
|
205
|
+
deletes: number;
|
|
206
|
+
}
|
|
207
|
+
interface MemoryCacheProviderOptions {
|
|
208
|
+
/**
|
|
209
|
+
* Error to throw on get operations (for testing error handling)
|
|
210
|
+
*/
|
|
211
|
+
getError?: Error | null;
|
|
212
|
+
/**
|
|
213
|
+
* Error to throw on set operations (for testing error handling)
|
|
214
|
+
*/
|
|
215
|
+
setError?: Error | null;
|
|
216
|
+
/**
|
|
217
|
+
* Error to throw on del operations (for testing error handling)
|
|
218
|
+
*/
|
|
219
|
+
delError?: Error | null;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* In-memory implementation of CacheProvider for testing.
|
|
223
|
+
*
|
|
224
|
+
* This provider stores all cache entries in memory, making it ideal for
|
|
225
|
+
* unit tests that need to verify cache operations without touching Redis or other backends.
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```typescript
|
|
229
|
+
* // In tests, substitute the real CacheProvider with MemoryCacheProvider
|
|
230
|
+
* const alepha = Alepha.create().with({
|
|
231
|
+
* provide: CacheProvider,
|
|
232
|
+
* use: MemoryCacheProvider,
|
|
233
|
+
* });
|
|
234
|
+
*
|
|
235
|
+
* // Run code that uses caching
|
|
236
|
+
* const service = alepha.inject(MyService);
|
|
237
|
+
* await service.fetchWithCache("key");
|
|
238
|
+
*
|
|
239
|
+
* // Verify cache behavior
|
|
240
|
+
* const cache = alepha.inject(MemoryCacheProvider);
|
|
241
|
+
* expect(cache.stats().misses).toBe(1);
|
|
242
|
+
* await service.fetchWithCache("key");
|
|
243
|
+
* expect(cache.stats().hits).toBe(1);
|
|
244
|
+
* ```
|
|
245
|
+
*/
|
|
175
246
|
declare class MemoryCacheProvider implements CacheProvider {
|
|
176
247
|
protected readonly dateTimeProvider: DateTimeProvider;
|
|
177
248
|
protected readonly log: alepha_logger0.Logger;
|
|
178
249
|
protected store: Record<CacheName, Record<CacheKey, CacheValue>>;
|
|
250
|
+
/**
|
|
251
|
+
* All recorded get calls.
|
|
252
|
+
*/
|
|
253
|
+
getCalls: MemoryCacheCall[];
|
|
254
|
+
/**
|
|
255
|
+
* All recorded set calls.
|
|
256
|
+
*/
|
|
257
|
+
setCalls: MemoryCacheSetCall[];
|
|
258
|
+
/**
|
|
259
|
+
* All recorded del calls.
|
|
260
|
+
*/
|
|
261
|
+
delCalls: MemoryCacheDelCall[];
|
|
262
|
+
/**
|
|
263
|
+
* Cache statistics.
|
|
264
|
+
*/
|
|
265
|
+
protected _stats: MemoryCacheStats;
|
|
266
|
+
/**
|
|
267
|
+
* Error to throw on get (for testing error handling)
|
|
268
|
+
*/
|
|
269
|
+
getError: Error | null;
|
|
270
|
+
/**
|
|
271
|
+
* Error to throw on set (for testing error handling)
|
|
272
|
+
*/
|
|
273
|
+
setError: Error | null;
|
|
274
|
+
/**
|
|
275
|
+
* Error to throw on del (for testing error handling)
|
|
276
|
+
*/
|
|
277
|
+
delError: Error | null;
|
|
278
|
+
constructor(options?: MemoryCacheProviderOptions);
|
|
179
279
|
get(name: string, key: string): Promise<Uint8Array | undefined>;
|
|
180
280
|
set(name: string, key: string, value: Uint8Array, ttl?: number): Promise<Uint8Array>;
|
|
181
281
|
del(name: string, ...keys: string[]): Promise<void>;
|
|
182
282
|
has(name: string, key: string): Promise<boolean>;
|
|
183
283
|
keys(name: string, filter?: string): Promise<string[]>;
|
|
184
284
|
clear(): Promise<void>;
|
|
285
|
+
incr(name: string, key: string, amount: number): Promise<number>;
|
|
286
|
+
/**
|
|
287
|
+
* Get cache statistics (hits, misses, sets, deletes).
|
|
288
|
+
*
|
|
289
|
+
* @example
|
|
290
|
+
* ```typescript
|
|
291
|
+
* expect(cache.stats().hits).toBe(1);
|
|
292
|
+
* expect(cache.stats().misses).toBe(0);
|
|
293
|
+
* ```
|
|
294
|
+
*/
|
|
295
|
+
stats(): MemoryCacheStats;
|
|
296
|
+
/**
|
|
297
|
+
* Check if a key was set during the test.
|
|
298
|
+
*
|
|
299
|
+
* @example
|
|
300
|
+
* ```typescript
|
|
301
|
+
* expect(cache.wasSet("my-cache", "user:123")).toBe(true);
|
|
302
|
+
* ```
|
|
303
|
+
*/
|
|
304
|
+
wasSet(name: string, key?: string): boolean;
|
|
305
|
+
/**
|
|
306
|
+
* Check if a key was retrieved during the test.
|
|
307
|
+
*
|
|
308
|
+
* @example
|
|
309
|
+
* ```typescript
|
|
310
|
+
* expect(cache.wasGet("my-cache", "user:123")).toBe(true);
|
|
311
|
+
* ```
|
|
312
|
+
*/
|
|
313
|
+
wasGet(name: string, key?: string): boolean;
|
|
314
|
+
/**
|
|
315
|
+
* Check if a key was deleted during the test.
|
|
316
|
+
*
|
|
317
|
+
* @example
|
|
318
|
+
* ```typescript
|
|
319
|
+
* expect(cache.wasDeleted("my-cache", "user:123")).toBe(true);
|
|
320
|
+
* ```
|
|
321
|
+
*/
|
|
322
|
+
wasDeleted(name: string, key?: string): boolean;
|
|
323
|
+
/**
|
|
324
|
+
* Get the number of cached entries for a specific cache name.
|
|
325
|
+
*
|
|
326
|
+
* @example
|
|
327
|
+
* ```typescript
|
|
328
|
+
* expect(cache.size("my-cache")).toBe(5);
|
|
329
|
+
* ```
|
|
330
|
+
*/
|
|
331
|
+
size(name?: string): number;
|
|
332
|
+
/**
|
|
333
|
+
* Get all cache names.
|
|
334
|
+
*
|
|
335
|
+
* @example
|
|
336
|
+
* ```typescript
|
|
337
|
+
* expect(cache.names()).toContain("my-cache");
|
|
338
|
+
* ```
|
|
339
|
+
*/
|
|
340
|
+
names(): string[];
|
|
341
|
+
/**
|
|
342
|
+
* Reset all in-memory state (useful between tests).
|
|
343
|
+
*
|
|
344
|
+
* @example
|
|
345
|
+
* ```typescript
|
|
346
|
+
* beforeEach(() => {
|
|
347
|
+
* cache.reset();
|
|
348
|
+
* });
|
|
349
|
+
* ```
|
|
350
|
+
*/
|
|
351
|
+
reset(): void;
|
|
185
352
|
}
|
|
186
353
|
//#endregion
|
|
187
354
|
//#region ../../src/cache/core/index.d.ts
|
|
188
355
|
/**
|
|
189
|
-
*
|
|
356
|
+
* | type | quality | stability |
|
|
357
|
+
* |------|---------|-----------|
|
|
358
|
+
* | backend | rare | stable |
|
|
359
|
+
*
|
|
360
|
+
* Type-safe caching with TTL support.
|
|
190
361
|
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
362
|
+
* **Features:**
|
|
363
|
+
* - Cached computations with type-safe keys and values
|
|
364
|
+
* - Configurable TTL
|
|
365
|
+
* - Cache invalidation
|
|
366
|
+
* - Automatic cache population
|
|
367
|
+
* - Providers: Memory (default), Redis
|
|
194
368
|
*
|
|
195
|
-
* @see {@link $cache}
|
|
196
|
-
* @see {@link CacheProvider}
|
|
197
369
|
* @module alepha.cache
|
|
198
370
|
*/
|
|
199
371
|
declare const AlephaCache: alepha0.Service<alepha0.Module>;
|
|
200
372
|
//#endregion
|
|
201
|
-
export { $cache, AlephaCache, CachePrimitive, CachePrimitiveFn, CachePrimitiveOptions, CacheProvider, MemoryCacheProvider };
|
|
373
|
+
export { $cache, AlephaCache, CachePrimitive, CachePrimitiveFn, CachePrimitiveOptions, CacheProvider, MemoryCacheCall, MemoryCacheDelCall, MemoryCacheProvider, MemoryCacheProviderOptions, MemoryCacheSetCall, MemoryCacheStats };
|
|
202
374
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/cache/core/providers/CacheProvider.ts","../../../src/cache/core/primitives/$cache.ts","../../../src/cache/core/providers/MemoryCacheProvider.ts","../../../src/cache/core/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/cache/core/providers/CacheProvider.ts","../../../src/cache/core/primitives/$cache.ts","../../../src/cache/core/providers/MemoryCacheProvider.ts","../../../src/cache/core/index.ts"],"mappings":"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"}
|
package/dist/cache/core/index.js
CHANGED
|
@@ -17,14 +17,95 @@ var CacheProvider = class {};
|
|
|
17
17
|
|
|
18
18
|
//#endregion
|
|
19
19
|
//#region ../../src/cache/core/providers/MemoryCacheProvider.ts
|
|
20
|
+
/**
|
|
21
|
+
* In-memory implementation of CacheProvider for testing.
|
|
22
|
+
*
|
|
23
|
+
* This provider stores all cache entries in memory, making it ideal for
|
|
24
|
+
* unit tests that need to verify cache operations without touching Redis or other backends.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // In tests, substitute the real CacheProvider with MemoryCacheProvider
|
|
29
|
+
* const alepha = Alepha.create().with({
|
|
30
|
+
* provide: CacheProvider,
|
|
31
|
+
* use: MemoryCacheProvider,
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* // Run code that uses caching
|
|
35
|
+
* const service = alepha.inject(MyService);
|
|
36
|
+
* await service.fetchWithCache("key");
|
|
37
|
+
*
|
|
38
|
+
* // Verify cache behavior
|
|
39
|
+
* const cache = alepha.inject(MemoryCacheProvider);
|
|
40
|
+
* expect(cache.stats().misses).toBe(1);
|
|
41
|
+
* await service.fetchWithCache("key");
|
|
42
|
+
* expect(cache.stats().hits).toBe(1);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
20
45
|
var MemoryCacheProvider = class {
|
|
21
46
|
dateTimeProvider = $inject(DateTimeProvider);
|
|
22
47
|
log = $logger();
|
|
23
48
|
store = {};
|
|
49
|
+
/**
|
|
50
|
+
* All recorded get calls.
|
|
51
|
+
*/
|
|
52
|
+
getCalls = [];
|
|
53
|
+
/**
|
|
54
|
+
* All recorded set calls.
|
|
55
|
+
*/
|
|
56
|
+
setCalls = [];
|
|
57
|
+
/**
|
|
58
|
+
* All recorded del calls.
|
|
59
|
+
*/
|
|
60
|
+
delCalls = [];
|
|
61
|
+
/**
|
|
62
|
+
* Cache statistics.
|
|
63
|
+
*/
|
|
64
|
+
_stats = {
|
|
65
|
+
hits: 0,
|
|
66
|
+
misses: 0,
|
|
67
|
+
sets: 0,
|
|
68
|
+
deletes: 0
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Error to throw on get (for testing error handling)
|
|
72
|
+
*/
|
|
73
|
+
getError = null;
|
|
74
|
+
/**
|
|
75
|
+
* Error to throw on set (for testing error handling)
|
|
76
|
+
*/
|
|
77
|
+
setError = null;
|
|
78
|
+
/**
|
|
79
|
+
* Error to throw on del (for testing error handling)
|
|
80
|
+
*/
|
|
81
|
+
delError = null;
|
|
82
|
+
constructor(options = {}) {
|
|
83
|
+
this.getError = options.getError ?? null;
|
|
84
|
+
this.setError = options.setError ?? null;
|
|
85
|
+
this.delError = options.delError ?? null;
|
|
86
|
+
}
|
|
24
87
|
async get(name, key) {
|
|
25
|
-
|
|
88
|
+
this.getCalls.push({
|
|
89
|
+
name,
|
|
90
|
+
key,
|
|
91
|
+
timestamp: Date.now()
|
|
92
|
+
});
|
|
93
|
+
if (this.getError) throw this.getError;
|
|
94
|
+
const data = this.store[name]?.[key]?.data;
|
|
95
|
+
if (data !== void 0) this._stats.hits++;
|
|
96
|
+
else this._stats.misses++;
|
|
97
|
+
return data;
|
|
26
98
|
}
|
|
27
99
|
async set(name, key, value, ttl) {
|
|
100
|
+
this.setCalls.push({
|
|
101
|
+
name,
|
|
102
|
+
key,
|
|
103
|
+
value,
|
|
104
|
+
ttl,
|
|
105
|
+
timestamp: Date.now()
|
|
106
|
+
});
|
|
107
|
+
this._stats.sets++;
|
|
108
|
+
if (this.setError) throw this.setError;
|
|
28
109
|
if (this.store[name] == null) this.store[name] = {};
|
|
29
110
|
this.store[name][key] ??= {};
|
|
30
111
|
this.store[name][key].data = value;
|
|
@@ -41,6 +122,13 @@ var MemoryCacheProvider = class {
|
|
|
41
122
|
return this.store[name][key].data;
|
|
42
123
|
}
|
|
43
124
|
async del(name, ...keys) {
|
|
125
|
+
this.delCalls.push({
|
|
126
|
+
name,
|
|
127
|
+
keys,
|
|
128
|
+
timestamp: Date.now()
|
|
129
|
+
});
|
|
130
|
+
this._stats.deletes++;
|
|
131
|
+
if (this.delError) throw this.delError;
|
|
44
132
|
if (keys.length === 0) {
|
|
45
133
|
this.log.debug(`Deleting all cache for name`, { name });
|
|
46
134
|
if (this.store[name]) for (const key of Object.keys(this.store[name])) {
|
|
@@ -79,6 +167,119 @@ var MemoryCacheProvider = class {
|
|
|
79
167
|
}
|
|
80
168
|
this.store = {};
|
|
81
169
|
}
|
|
170
|
+
async incr(name, key, amount) {
|
|
171
|
+
if (this.store[name] == null) this.store[name] = {};
|
|
172
|
+
const existing = this.store[name][key]?.data;
|
|
173
|
+
let current = 0;
|
|
174
|
+
if (existing) {
|
|
175
|
+
const str = new TextDecoder().decode(existing);
|
|
176
|
+
current = Number.parseInt(str, 10) || 0;
|
|
177
|
+
}
|
|
178
|
+
const newValue = current + amount;
|
|
179
|
+
this.store[name][key] ??= {};
|
|
180
|
+
this.store[name][key].data = new TextEncoder().encode(String(newValue));
|
|
181
|
+
return newValue;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get cache statistics (hits, misses, sets, deletes).
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* expect(cache.stats().hits).toBe(1);
|
|
189
|
+
* expect(cache.stats().misses).toBe(0);
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
stats() {
|
|
193
|
+
return { ...this._stats };
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Check if a key was set during the test.
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```typescript
|
|
200
|
+
* expect(cache.wasSet("my-cache", "user:123")).toBe(true);
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
wasSet(name, key) {
|
|
204
|
+
if (key === void 0) return this.setCalls.some((call) => call.name === name);
|
|
205
|
+
return this.setCalls.some((call) => call.name === name && call.key === key);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Check if a key was retrieved during the test.
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```typescript
|
|
212
|
+
* expect(cache.wasGet("my-cache", "user:123")).toBe(true);
|
|
213
|
+
* ```
|
|
214
|
+
*/
|
|
215
|
+
wasGet(name, key) {
|
|
216
|
+
if (key === void 0) return this.getCalls.some((call) => call.name === name);
|
|
217
|
+
return this.getCalls.some((call) => call.name === name && call.key === key);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Check if a key was deleted during the test.
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```typescript
|
|
224
|
+
* expect(cache.wasDeleted("my-cache", "user:123")).toBe(true);
|
|
225
|
+
* ```
|
|
226
|
+
*/
|
|
227
|
+
wasDeleted(name, key) {
|
|
228
|
+
if (key === void 0) return this.delCalls.some((call) => call.name === name);
|
|
229
|
+
return this.delCalls.some((call) => call.name === name && call.keys.includes(key));
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Get the number of cached entries for a specific cache name.
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```typescript
|
|
236
|
+
* expect(cache.size("my-cache")).toBe(5);
|
|
237
|
+
* ```
|
|
238
|
+
*/
|
|
239
|
+
size(name) {
|
|
240
|
+
if (name === void 0) return Object.values(this.store).reduce((total, entries) => total + Object.keys(entries).length, 0);
|
|
241
|
+
return Object.keys(this.store[name] ?? {}).length;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get all cache names.
|
|
245
|
+
*
|
|
246
|
+
* @example
|
|
247
|
+
* ```typescript
|
|
248
|
+
* expect(cache.names()).toContain("my-cache");
|
|
249
|
+
* ```
|
|
250
|
+
*/
|
|
251
|
+
names() {
|
|
252
|
+
return Object.keys(this.store);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Reset all in-memory state (useful between tests).
|
|
256
|
+
*
|
|
257
|
+
* @example
|
|
258
|
+
* ```typescript
|
|
259
|
+
* beforeEach(() => {
|
|
260
|
+
* cache.reset();
|
|
261
|
+
* });
|
|
262
|
+
* ```
|
|
263
|
+
*/
|
|
264
|
+
reset() {
|
|
265
|
+
for (const name of Object.keys(this.store)) for (const key of Object.keys(this.store[name])) {
|
|
266
|
+
const timeout = this.store[name][key]?.timeout;
|
|
267
|
+
if (timeout) this.dateTimeProvider.clearTimeout(timeout);
|
|
268
|
+
}
|
|
269
|
+
this.store = {};
|
|
270
|
+
this.getCalls = [];
|
|
271
|
+
this.setCalls = [];
|
|
272
|
+
this.delCalls = [];
|
|
273
|
+
this._stats = {
|
|
274
|
+
hits: 0,
|
|
275
|
+
misses: 0,
|
|
276
|
+
sets: 0,
|
|
277
|
+
deletes: 0
|
|
278
|
+
};
|
|
279
|
+
this.getError = null;
|
|
280
|
+
this.setError = null;
|
|
281
|
+
this.delError = null;
|
|
282
|
+
}
|
|
82
283
|
};
|
|
83
284
|
|
|
84
285
|
//#endregion
|
|
@@ -211,14 +412,19 @@ $cache[KIND] = CachePrimitive;
|
|
|
211
412
|
//#endregion
|
|
212
413
|
//#region ../../src/cache/core/index.ts
|
|
213
414
|
/**
|
|
214
|
-
*
|
|
415
|
+
* | type | quality | stability |
|
|
416
|
+
* |------|---------|-----------|
|
|
417
|
+
* | backend | rare | stable |
|
|
418
|
+
*
|
|
419
|
+
* Type-safe caching with TTL support.
|
|
215
420
|
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
*
|
|
421
|
+
* **Features:**
|
|
422
|
+
* - Cached computations with type-safe keys and values
|
|
423
|
+
* - Configurable TTL
|
|
424
|
+
* - Cache invalidation
|
|
425
|
+
* - Automatic cache population
|
|
426
|
+
* - Providers: Memory (default), Redis
|
|
219
427
|
*
|
|
220
|
-
* @see {@link $cache}
|
|
221
|
-
* @see {@link CacheProvider}
|
|
222
428
|
* @module alepha.cache
|
|
223
429
|
*/
|
|
224
430
|
const AlephaCache = $module({
|