alepha 0.15.0 → 0.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -98
- package/dist/api/audits/index.d.ts +630 -653
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/audits/index.js +12 -35
- package/dist/api/audits/index.js.map +1 -1
- package/dist/api/files/index.d.ts +365 -358
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +12 -5
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.d.ts +255 -248
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/jobs/index.js +10 -3
- package/dist/api/jobs/index.js.map +1 -1
- package/dist/api/keys/index.d.ts +413 -0
- package/dist/api/keys/index.d.ts.map +1 -0
- package/dist/api/keys/index.js +476 -0
- package/dist/api/keys/index.js.map +1 -0
- package/dist/api/notifications/index.browser.js +4 -4
- package/dist/api/notifications/index.browser.js.map +1 -1
- package/dist/api/notifications/index.d.ts +84 -78
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/notifications/index.js +14 -8
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/parameters/index.d.ts +528 -535
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/parameters/index.js +30 -37
- package/dist/api/parameters/index.js.map +1 -1
- package/dist/api/users/index.d.ts +1221 -910
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +2556 -248
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +142 -136
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/api/verifications/index.js +12 -4
- package/dist/api/verifications/index.js.map +1 -1
- package/dist/batch/index.d.ts +142 -162
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/batch/index.js +31 -44
- package/dist/batch/index.js.map +1 -1
- package/dist/bucket/index.d.ts +595 -171
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/bucket/index.js +1856 -12
- package/dist/bucket/index.js.map +1 -1
- package/dist/cache/core/index.d.ts +225 -53
- package/dist/cache/core/index.d.ts.map +1 -1
- package/dist/cache/core/index.js +213 -7
- package/dist/cache/core/index.js.map +1 -1
- package/dist/cache/redis/index.d.ts +1 -0
- package/dist/cache/redis/index.d.ts.map +1 -1
- package/dist/cache/redis/index.js +6 -2
- package/dist/cache/redis/index.js.map +1 -1
- package/dist/cli/index.d.ts +834 -226
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2872 -417
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +458 -310
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +2011 -76
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +309 -97
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +796 -701
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +329 -97
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +309 -97
- package/dist/core/index.native.js.map +1 -1
- package/dist/datetime/index.d.ts +59 -44
- package/dist/datetime/index.d.ts.map +1 -1
- package/dist/datetime/index.js +15 -0
- package/dist/datetime/index.js.map +1 -1
- package/dist/email/index.d.ts +314 -19
- package/dist/email/index.d.ts.map +1 -1
- package/dist/email/index.js +1852 -7
- package/dist/email/index.js.map +1 -1
- package/dist/fake/index.d.ts +5500 -5418
- package/dist/fake/index.d.ts.map +1 -1
- package/dist/fake/index.js +113 -42
- package/dist/fake/index.js.map +1 -1
- package/dist/lock/core/index.d.ts +219 -212
- package/dist/lock/core/index.d.ts.map +1 -1
- package/dist/lock/core/index.js +11 -4
- package/dist/lock/core/index.js.map +1 -1
- package/dist/lock/redis/index.d.ts.map +1 -1
- package/dist/logger/index.d.ts +41 -90
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +15 -68
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +228 -230
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +32 -31
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/index.browser.js +12 -12
- package/dist/orm/index.browser.js.map +1 -1
- package/dist/orm/index.bun.js +90 -80
- package/dist/orm/index.bun.js.map +1 -1
- package/dist/orm/index.d.ts +1434 -1459
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +112 -130
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +262 -254
- package/dist/queue/core/index.d.ts.map +1 -1
- package/dist/queue/core/index.js +14 -6
- package/dist/queue/core/index.js.map +1 -1
- package/dist/queue/redis/index.d.ts.map +1 -1
- package/dist/react/auth/index.browser.js +108 -0
- package/dist/react/auth/index.browser.js.map +1 -0
- package/dist/react/auth/index.d.ts +100 -0
- package/dist/react/auth/index.d.ts.map +1 -0
- package/dist/react/auth/index.js +145 -0
- package/dist/react/auth/index.js.map +1 -0
- package/dist/react/core/index.d.ts +469 -0
- package/dist/react/core/index.d.ts.map +1 -0
- package/dist/react/core/index.js +464 -0
- package/dist/react/core/index.js.map +1 -0
- package/dist/react/form/index.d.ts +232 -0
- package/dist/react/form/index.d.ts.map +1 -0
- package/dist/react/form/index.js +432 -0
- package/dist/react/form/index.js.map +1 -0
- package/dist/react/head/index.browser.js +423 -0
- package/dist/react/head/index.browser.js.map +1 -0
- package/dist/react/head/index.d.ts +288 -0
- package/dist/react/head/index.d.ts.map +1 -0
- package/dist/react/head/index.js +465 -0
- package/dist/react/head/index.js.map +1 -0
- package/dist/react/i18n/index.d.ts +175 -0
- package/dist/react/i18n/index.d.ts.map +1 -0
- package/dist/react/i18n/index.js +224 -0
- package/dist/react/i18n/index.js.map +1 -0
- package/dist/react/router/index.browser.js +1980 -0
- package/dist/react/router/index.browser.js.map +1 -0
- package/dist/react/router/index.d.ts +2068 -0
- package/dist/react/router/index.d.ts.map +1 -0
- package/dist/react/router/index.js +4932 -0
- package/dist/react/router/index.js.map +1 -0
- package/dist/react/websocket/index.d.ts +117 -0
- package/dist/react/websocket/index.d.ts.map +1 -0
- package/dist/react/websocket/index.js +107 -0
- package/dist/react/websocket/index.js.map +1 -0
- package/dist/redis/index.bun.js +4 -0
- package/dist/redis/index.bun.js.map +1 -1
- package/dist/redis/index.d.ts +127 -130
- package/dist/redis/index.d.ts.map +1 -1
- package/dist/redis/index.js +16 -25
- package/dist/redis/index.js.map +1 -1
- package/dist/retry/index.d.ts +80 -71
- package/dist/retry/index.d.ts.map +1 -1
- package/dist/retry/index.js +11 -2
- package/dist/retry/index.js.map +1 -1
- package/dist/router/index.d.ts +6 -6
- package/dist/router/index.d.ts.map +1 -1
- package/dist/scheduler/index.d.ts +119 -28
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +404 -3
- package/dist/scheduler/index.js.map +1 -1
- package/dist/security/index.d.ts +642 -228
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +1579 -37
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +1141 -111
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +1261 -25
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cache/index.d.ts +63 -78
- package/dist/server/cache/index.d.ts.map +1 -1
- package/dist/server/cache/index.js +7 -22
- package/dist/server/cache/index.js.map +1 -1
- package/dist/server/compress/index.d.ts +13 -5
- package/dist/server/compress/index.d.ts.map +1 -1
- package/dist/server/compress/index.js +10 -2
- package/dist/server/compress/index.js.map +1 -1
- package/dist/server/cookies/index.d.ts +46 -22
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/cookies/index.js +7 -5
- package/dist/server/cookies/index.js.map +1 -1
- package/dist/server/core/index.d.ts +307 -196
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +271 -38
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +24 -34
- package/dist/server/cors/index.d.ts.map +1 -1
- package/dist/server/cors/index.js +7 -21
- package/dist/server/cors/index.js.map +1 -1
- package/dist/server/health/index.d.ts +25 -19
- package/dist/server/health/index.d.ts.map +1 -1
- package/dist/server/health/index.js +8 -2
- package/dist/server/health/index.js.map +1 -1
- package/dist/server/helmet/index.d.ts +13 -5
- package/dist/server/helmet/index.d.ts.map +1 -1
- package/dist/server/helmet/index.js +11 -3
- package/dist/server/helmet/index.js.map +1 -1
- package/dist/server/links/index.browser.js +9 -1
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +133 -128
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +24 -11
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts +524 -4
- package/dist/server/metrics/index.d.ts.map +1 -1
- package/dist/server/metrics/index.js +4472 -7
- package/dist/server/metrics/index.js.map +1 -1
- package/dist/server/multipart/index.d.ts +15 -9
- package/dist/server/multipart/index.d.ts.map +1 -1
- package/dist/server/multipart/index.js +9 -3
- package/dist/server/multipart/index.js.map +1 -1
- package/dist/server/proxy/index.d.ts +110 -104
- package/dist/server/proxy/index.d.ts.map +1 -1
- package/dist/server/proxy/index.js +8 -2
- package/dist/server/proxy/index.js.map +1 -1
- package/dist/server/rate-limit/index.d.ts +46 -51
- package/dist/server/rate-limit/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.js +18 -55
- package/dist/server/rate-limit/index.js.map +1 -1
- package/dist/server/static/index.d.ts +181 -48
- package/dist/server/static/index.d.ts.map +1 -1
- package/dist/server/static/index.js +1848 -5
- package/dist/server/static/index.js.map +1 -1
- package/dist/server/swagger/index.d.ts +348 -53
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js +1849 -6
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +312 -18
- package/dist/sms/index.d.ts.map +1 -1
- package/dist/sms/index.js +1854 -10
- package/dist/sms/index.js.map +1 -1
- package/dist/system/index.browser.js +496 -0
- package/dist/system/index.browser.js.map +1 -0
- package/dist/system/index.d.ts +1158 -0
- package/dist/system/index.d.ts.map +1 -0
- package/dist/{file → system}/index.js +412 -20
- package/dist/system/index.js.map +1 -0
- package/dist/thread/index.d.ts +82 -73
- package/dist/thread/index.d.ts.map +1 -1
- package/dist/thread/index.js +13 -4
- package/dist/thread/index.js.map +1 -1
- package/dist/topic/core/index.d.ts +330 -323
- package/dist/topic/core/index.d.ts.map +1 -1
- package/dist/topic/core/index.js +12 -5
- package/dist/topic/core/index.js.map +1 -1
- package/dist/topic/redis/index.d.ts +6 -6
- package/dist/topic/redis/index.d.ts.map +1 -1
- package/dist/vite/index.d.ts +163 -5825
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +130 -477
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.browser.js +3 -3
- package/dist/websocket/index.browser.js.map +1 -1
- package/dist/websocket/index.d.ts +287 -283
- package/dist/websocket/index.d.ts.map +1 -1
- package/dist/websocket/index.js +15 -11
- package/dist/websocket/index.js.map +1 -1
- package/package.json +86 -17
- package/src/api/audits/index.ts +10 -33
- package/src/api/files/__tests__/$bucket.spec.ts +1 -1
- package/src/api/files/controllers/AdminFileStatsController.spec.ts +1 -1
- package/src/api/files/controllers/FileController.spec.ts +1 -1
- package/src/api/files/index.ts +10 -3
- package/src/api/files/jobs/FileJobs.spec.ts +1 -1
- package/src/api/files/services/FileService.spec.ts +1 -1
- package/src/api/jobs/index.ts +10 -3
- package/src/api/keys/controllers/AdminApiKeyController.ts +75 -0
- package/src/api/keys/controllers/ApiKeyController.ts +103 -0
- package/src/api/keys/entities/apiKeyEntity.ts +41 -0
- package/src/api/keys/index.ts +49 -0
- package/src/api/keys/schemas/adminApiKeyQuerySchema.ts +7 -0
- package/src/api/keys/schemas/adminApiKeyResourceSchema.ts +17 -0
- package/src/api/keys/schemas/createApiKeyBodySchema.ts +7 -0
- package/src/api/keys/schemas/createApiKeyResponseSchema.ts +11 -0
- package/src/api/keys/schemas/listApiKeyResponseSchema.ts +15 -0
- package/src/api/keys/schemas/revokeApiKeyParamsSchema.ts +5 -0
- package/src/api/keys/schemas/revokeApiKeyResponseSchema.ts +5 -0
- package/src/api/keys/services/ApiKeyService.spec.ts +553 -0
- package/src/api/keys/services/ApiKeyService.ts +306 -0
- package/src/api/logs/TODO.md +52 -0
- package/src/api/notifications/index.ts +10 -4
- package/src/api/parameters/index.ts +9 -30
- package/src/api/parameters/primitives/$config.ts +12 -4
- package/src/api/parameters/services/ConfigStore.ts +9 -3
- package/src/api/users/__tests__/ApiKeys-integration.spec.ts +1035 -0
- package/src/api/users/__tests__/ApiKeys.spec.ts +401 -0
- package/src/api/users/index.ts +14 -3
- package/src/api/users/primitives/$realm.ts +33 -5
- package/src/api/users/providers/RealmProvider.ts +1 -12
- package/src/api/users/services/SessionService.ts +1 -11
- package/src/api/verifications/controllers/VerificationController.ts +2 -0
- package/src/api/verifications/index.ts +10 -4
- package/src/batch/index.ts +9 -36
- package/src/batch/primitives/$batch.ts +0 -8
- package/src/batch/providers/BatchProvider.ts +29 -2
- package/src/bucket/__tests__/shared.ts +1 -1
- package/src/bucket/index.ts +13 -6
- package/src/bucket/primitives/$bucket.ts +1 -1
- package/src/bucket/providers/LocalFileStorageProvider.ts +1 -1
- package/src/bucket/providers/MemoryFileStorageProvider.ts +1 -1
- package/src/cache/core/__tests__/shared.ts +30 -0
- package/src/cache/core/index.ts +11 -6
- package/src/cache/core/primitives/$cache.spec.ts +5 -0
- package/src/cache/core/providers/CacheProvider.ts +17 -0
- package/src/cache/core/providers/MemoryCacheProvider.ts +300 -1
- package/src/cache/redis/__tests__/cache-redis.spec.ts +5 -0
- package/src/cache/redis/providers/RedisCacheProvider.ts +9 -0
- package/src/cli/apps/AlephaCli.ts +3 -16
- package/src/cli/apps/AlephaPackageBuilderCli.ts +10 -2
- package/src/cli/atoms/appEntryOptions.ts +13 -0
- package/src/cli/atoms/buildOptions.ts +1 -1
- package/src/cli/atoms/changelogOptions.ts +1 -1
- package/src/cli/commands/build.ts +64 -52
- package/src/cli/commands/db.ts +17 -11
- package/src/cli/commands/deploy.ts +1 -1
- package/src/cli/commands/dev.ts +13 -49
- package/src/cli/commands/gen/env.ts +6 -3
- package/src/cli/commands/gen/openapi.ts +5 -2
- package/src/cli/commands/init.spec.ts +544 -0
- package/src/cli/commands/init.ts +101 -58
- package/src/cli/commands/lint.ts +8 -2
- package/src/cli/commands/typecheck.ts +11 -0
- package/src/cli/defineConfig.ts +9 -0
- package/src/cli/index.ts +2 -1
- package/src/cli/providers/AppEntryProvider.ts +131 -0
- package/src/cli/providers/ViteBuildProvider.ts +40 -0
- package/src/cli/providers/ViteDevServerProvider.ts +378 -0
- package/src/cli/services/AlephaCliUtils.ts +39 -93
- package/src/cli/services/PackageManagerUtils.ts +140 -17
- package/src/cli/services/ProjectScaffolder.ts +169 -101
- package/src/cli/services/ViteUtils.ts +82 -0
- package/src/cli/{assets/claudeMd.ts → templates/agentMd.ts} +41 -28
- package/src/cli/{assets → templates}/apiHelloControllerTs.ts +2 -1
- package/src/cli/{assets → templates}/biomeJson.ts +2 -1
- package/src/cli/{assets → templates}/dummySpecTs.ts +2 -1
- package/src/cli/{assets → templates}/editorconfig.ts +2 -1
- package/src/cli/templates/gitignore.ts +39 -0
- package/src/cli/{assets → templates}/mainBrowserTs.ts +2 -1
- package/src/cli/templates/mainCss.ts +33 -0
- package/src/cli/templates/mainServerTs.ts +33 -0
- package/src/cli/{assets → templates}/tsconfigJson.ts +2 -1
- package/src/cli/templates/webAppRouterTs.ts +50 -0
- package/src/cli/templates/webHelloComponentTsx.ts +20 -0
- package/src/command/helpers/Runner.spec.ts +4 -0
- package/src/command/helpers/Runner.ts +3 -21
- package/src/command/index.ts +12 -4
- package/src/command/providers/CliProvider.spec.ts +1067 -0
- package/src/command/providers/CliProvider.ts +203 -40
- package/src/core/Alepha.ts +3 -9
- package/src/core/__tests__/Alepha-start.spec.ts +4 -4
- package/src/core/helpers/jsonSchemaToTypeBox.spec.ts +771 -0
- package/src/core/helpers/jsonSchemaToTypeBox.ts +62 -10
- package/src/core/index.shared.ts +1 -0
- package/src/core/index.ts +20 -0
- package/src/core/primitives/$module.ts +12 -0
- package/src/core/providers/EventManager.spec.ts +0 -71
- package/src/core/providers/EventManager.ts +3 -15
- package/src/core/providers/Json.ts +2 -14
- package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +257 -0
- package/src/core/providers/KeylessJsonSchemaCodec.ts +396 -14
- package/src/core/providers/SchemaValidator.spec.ts +236 -0
- package/src/datetime/index.ts +15 -0
- package/src/email/index.ts +10 -5
- package/src/email/providers/LocalEmailProvider.spec.ts +1 -1
- package/src/email/providers/LocalEmailProvider.ts +1 -1
- package/src/fake/__tests__/keyName.example.ts +1 -1
- package/src/fake/__tests__/keyName.spec.ts +5 -5
- package/src/fake/index.ts +9 -6
- package/src/fake/providers/FakeProvider.spec.ts +258 -40
- package/src/fake/providers/FakeProvider.ts +133 -19
- package/src/lock/core/index.ts +11 -4
- package/src/logger/index.ts +17 -66
- package/src/logger/providers/PrettyFormatterProvider.ts +0 -9
- package/src/mcp/errors/McpError.ts +30 -0
- package/src/mcp/index.ts +13 -27
- package/src/mcp/transports/SseMcpTransport.ts +6 -7
- package/src/orm/__tests__/PostgresProvider.spec.ts +2 -2
- package/src/orm/index.browser.ts +2 -2
- package/src/orm/index.bun.ts +4 -2
- package/src/orm/index.ts +21 -47
- package/src/orm/providers/DrizzleKitProvider.ts +3 -5
- package/src/orm/providers/drivers/BunSqliteProvider.ts +1 -0
- package/src/orm/services/Repository.ts +18 -3
- package/src/queue/core/index.ts +14 -6
- package/src/react/auth/__tests__/$auth.spec.ts +202 -0
- package/src/react/auth/hooks/useAuth.ts +32 -0
- package/src/react/auth/index.browser.ts +13 -0
- package/src/react/auth/index.shared.ts +2 -0
- package/src/react/auth/index.ts +48 -0
- package/src/react/auth/providers/ReactAuthProvider.ts +16 -0
- package/src/react/auth/services/ReactAuth.ts +135 -0
- package/src/react/core/__tests__/Router.spec.tsx +169 -0
- package/src/react/core/components/ClientOnly.tsx +49 -0
- package/src/react/core/components/ErrorBoundary.tsx +73 -0
- package/src/react/core/contexts/AlephaContext.ts +7 -0
- package/src/react/core/contexts/AlephaProvider.tsx +42 -0
- package/src/react/core/hooks/useAction.browser.spec.tsx +569 -0
- package/src/react/core/hooks/useAction.ts +480 -0
- package/src/react/core/hooks/useAlepha.ts +26 -0
- package/src/react/core/hooks/useClient.ts +17 -0
- package/src/react/core/hooks/useEvents.ts +51 -0
- package/src/react/core/hooks/useInject.ts +12 -0
- package/src/react/core/hooks/useStore.ts +52 -0
- package/src/react/core/index.ts +90 -0
- package/src/react/form/components/FormState.tsx +17 -0
- package/src/react/form/errors/FormValidationError.ts +18 -0
- package/src/react/form/hooks/useForm.browser.spec.tsx +366 -0
- package/src/react/form/hooks/useForm.ts +47 -0
- package/src/react/form/hooks/useFormState.ts +130 -0
- package/src/react/form/index.ts +44 -0
- package/src/react/form/services/FormModel.ts +614 -0
- package/src/react/head/helpers/SeoExpander.spec.ts +203 -0
- package/src/react/head/helpers/SeoExpander.ts +142 -0
- package/src/react/head/hooks/useHead.spec.tsx +288 -0
- package/src/react/head/hooks/useHead.ts +62 -0
- package/src/react/head/index.browser.ts +26 -0
- package/src/react/head/index.ts +44 -0
- package/src/react/head/interfaces/Head.ts +105 -0
- package/src/react/head/primitives/$head.ts +25 -0
- package/src/react/head/providers/BrowserHeadProvider.browser.spec.ts +196 -0
- package/src/react/head/providers/BrowserHeadProvider.ts +212 -0
- package/src/react/head/providers/HeadProvider.ts +168 -0
- package/src/react/head/providers/ServerHeadProvider.ts +31 -0
- package/src/react/i18n/__tests__/integration.spec.tsx +239 -0
- package/src/react/i18n/components/Localize.spec.tsx +357 -0
- package/src/react/i18n/components/Localize.tsx +35 -0
- package/src/react/i18n/hooks/useI18n.browser.spec.tsx +438 -0
- package/src/react/i18n/hooks/useI18n.ts +18 -0
- package/src/react/i18n/index.ts +41 -0
- package/src/react/i18n/primitives/$dictionary.ts +69 -0
- package/src/react/i18n/providers/I18nProvider.spec.ts +389 -0
- package/src/react/i18n/providers/I18nProvider.ts +278 -0
- package/src/react/router/__tests__/page-head-browser.browser.spec.ts +95 -0
- package/src/react/router/__tests__/page-head.spec.ts +48 -0
- package/src/react/router/__tests__/seo-head.spec.ts +125 -0
- package/src/react/router/atoms/ssrManifestAtom.ts +58 -0
- package/src/react/router/components/ErrorViewer.tsx +872 -0
- package/src/react/router/components/Link.tsx +23 -0
- package/src/react/router/components/NestedView.tsx +223 -0
- package/src/react/router/components/NotFound.tsx +30 -0
- package/src/react/router/constants/PAGE_PRELOAD_KEY.ts +6 -0
- package/src/react/router/contexts/RouterLayerContext.ts +12 -0
- package/src/react/router/errors/Redirection.ts +28 -0
- package/src/react/router/hooks/useActive.ts +52 -0
- package/src/react/router/hooks/useQueryParams.ts +63 -0
- package/src/react/router/hooks/useRouter.ts +20 -0
- package/src/react/router/hooks/useRouterState.ts +11 -0
- package/src/react/router/index.browser.ts +45 -0
- package/src/react/router/index.shared.ts +19 -0
- package/src/react/router/index.ts +142 -0
- package/src/react/router/primitives/$page.browser.spec.tsx +851 -0
- package/src/react/router/primitives/$page.spec.tsx +708 -0
- package/src/react/router/primitives/$page.ts +497 -0
- package/src/react/router/providers/ReactBrowserProvider.ts +309 -0
- package/src/react/router/providers/ReactBrowserRendererProvider.ts +25 -0
- package/src/react/router/providers/ReactBrowserRouterProvider.ts +168 -0
- package/src/react/router/providers/ReactPageProvider.ts +726 -0
- package/src/react/router/providers/ReactServerProvider.spec.tsx +316 -0
- package/src/react/router/providers/ReactServerProvider.ts +558 -0
- package/src/react/router/providers/ReactServerTemplateProvider.ts +979 -0
- package/src/react/router/providers/SSRManifestProvider.ts +334 -0
- package/src/react/router/services/ReactPageServerService.ts +48 -0
- package/src/react/router/services/ReactPageService.ts +27 -0
- package/src/react/router/services/ReactRouter.ts +262 -0
- package/src/react/websocket/hooks/useRoom.tsx +242 -0
- package/src/react/websocket/index.ts +7 -0
- package/src/redis/__tests__/redis.spec.ts +13 -0
- package/src/redis/index.ts +9 -25
- package/src/redis/providers/BunRedisProvider.ts +9 -0
- package/src/redis/providers/NodeRedisProvider.ts +8 -0
- package/src/redis/providers/RedisProvider.ts +16 -0
- package/src/retry/index.ts +11 -2
- package/src/router/index.ts +15 -0
- package/src/scheduler/index.ts +11 -2
- package/src/security/__tests__/BasicAuth.spec.ts +2 -0
- package/src/security/__tests__/ServerSecurityProvider.spec.ts +13 -5
- package/src/security/index.ts +15 -10
- package/src/security/interfaces/IssuerResolver.ts +27 -0
- package/src/security/primitives/$issuer.ts +55 -0
- package/src/security/providers/SecurityProvider.ts +179 -0
- package/src/security/providers/ServerBasicAuthProvider.ts +6 -2
- package/src/security/providers/ServerSecurityProvider.ts +36 -22
- package/src/server/auth/index.ts +12 -7
- package/src/server/cache/index.ts +7 -22
- package/src/server/compress/index.ts +10 -2
- package/src/server/cookies/index.ts +7 -5
- package/src/server/cookies/primitives/$cookie.ts +33 -11
- package/src/server/core/index.ts +17 -7
- package/src/server/core/interfaces/ServerRequest.ts +83 -1
- package/src/server/core/primitives/$action.spec.ts +1 -1
- package/src/server/core/primitives/$action.ts +8 -3
- package/src/server/core/providers/BunHttpServerProvider.ts +1 -1
- package/src/server/core/providers/NodeHttpServerProvider.spec.ts +125 -0
- package/src/server/core/providers/NodeHttpServerProvider.ts +77 -22
- package/src/server/core/providers/ServerLoggerProvider.ts +2 -2
- package/src/server/core/providers/ServerProvider.ts +9 -12
- package/src/server/core/services/ServerRequestParser.spec.ts +520 -0
- package/src/server/core/services/ServerRequestParser.ts +306 -13
- package/src/server/cors/index.ts +7 -21
- package/src/server/cors/primitives/$cors.ts +6 -2
- package/src/server/health/index.ts +8 -2
- package/src/server/helmet/index.ts +11 -3
- package/src/server/links/atoms/apiLinksAtom.ts +7 -0
- package/src/server/links/index.browser.ts +2 -0
- package/src/server/links/index.ts +13 -6
- package/src/server/metrics/index.ts +10 -3
- package/src/server/multipart/index.ts +9 -3
- package/src/server/proxy/index.ts +8 -2
- package/src/server/rate-limit/index.ts +21 -25
- package/src/server/rate-limit/primitives/$rateLimit.ts +6 -2
- package/src/server/rate-limit/providers/ServerRateLimitProvider.spec.ts +38 -14
- package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +22 -56
- package/src/server/static/index.ts +8 -2
- package/src/server/static/providers/ServerStaticProvider.ts +1 -1
- package/src/server/swagger/index.ts +9 -4
- package/src/server/swagger/providers/ServerSwaggerProvider.ts +1 -1
- package/src/sms/index.ts +9 -5
- package/src/sms/providers/LocalSmsProvider.spec.ts +1 -1
- package/src/sms/providers/LocalSmsProvider.ts +1 -1
- package/src/system/index.browser.ts +11 -0
- package/src/system/index.ts +62 -0
- package/src/{file → system}/providers/FileSystemProvider.ts +16 -0
- package/src/{file → system}/providers/MemoryFileSystemProvider.ts +116 -3
- package/src/system/providers/MemoryShellProvider.ts +164 -0
- package/src/{file → system}/providers/NodeFileSystemProvider.spec.ts +2 -2
- package/src/{file → system}/providers/NodeFileSystemProvider.ts +36 -0
- package/src/system/providers/NodeShellProvider.ts +184 -0
- package/src/system/providers/ShellProvider.ts +74 -0
- package/src/{file → system}/services/FileDetector.spec.ts +2 -2
- package/src/thread/index.ts +11 -2
- package/src/topic/core/index.ts +12 -5
- package/src/vite/index.ts +3 -2
- package/src/vite/tasks/buildClient.ts +2 -8
- package/src/vite/tasks/buildServer.ts +84 -21
- package/src/vite/tasks/copyAssets.ts +5 -4
- package/src/vite/tasks/generateSitemap.ts +64 -23
- package/src/vite/tasks/index.ts +0 -2
- package/src/vite/tasks/prerenderPages.ts +49 -24
- package/src/websocket/index.ts +12 -8
- package/dist/file/index.d.ts +0 -839
- package/dist/file/index.d.ts.map +0 -1
- package/dist/file/index.js.map +0 -1
- package/src/cli/assets/indexHtml.ts +0 -15
- package/src/cli/assets/mainServerTs.ts +0 -24
- package/src/cli/assets/webAppRouterTs.ts +0 -15
- package/src/cli/assets/webHelloComponentTsx.ts +0 -16
- package/src/cli/commands/format.ts +0 -23
- package/src/file/index.ts +0 -43
- package/src/vite/helpers/boot.ts +0 -117
- package/src/vite/plugins/viteAlephaDev.ts +0 -177
- package/src/vite/tasks/devServer.ts +0 -71
- package/src/vite/tasks/runAlepha.ts +0 -270
- /package/dist/orm/{chunk-DtkW-qnP.js → chunk-DH6iiROE.js} +0 -0
- /package/src/cli/{assets → templates}/apiIndexTs.ts +0 -0
- /package/src/cli/{assets → templates}/webIndexTs.ts +0 -0
- /package/src/{file → system}/errors/FileError.ts +0 -0
- /package/src/{file → system}/services/FileDetector.ts +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ServerRouteSecure, ServiceAccountPrimitive, UserAccountToken } from "alepha/security";
|
|
2
|
-
import * as
|
|
2
|
+
import * as alepha25 from "alepha";
|
|
3
3
|
import { Alepha, Async, KIND, Primitive, Static } from "alepha";
|
|
4
4
|
import * as alepha_server0 from "alepha/server";
|
|
5
5
|
import { ActionPrimitive, ClientRequestEntry, ClientRequestOptions, ClientRequestResponse, FetchResponse, HttpClient, RequestConfigSchema, ServerRequest, ServerRequestConfigEntry, ServerResponseBody, ServerTimingProvider } from "alepha/server";
|
|
@@ -8,30 +8,30 @@ import * as alepha_retry0 from "alepha/retry";
|
|
|
8
8
|
import { ProxyPrimitiveOptions, ServerProxyProvider } from "alepha/server/proxy";
|
|
9
9
|
|
|
10
10
|
//#region ../../src/server/links/schemas/apiLinksResponseSchema.d.ts
|
|
11
|
-
declare const apiLinkSchema:
|
|
12
|
-
name:
|
|
13
|
-
group:
|
|
14
|
-
path:
|
|
15
|
-
method:
|
|
16
|
-
requestBodyType:
|
|
17
|
-
service:
|
|
18
|
-
rawSchema:
|
|
19
|
-
body:
|
|
20
|
-
response:
|
|
11
|
+
declare const apiLinkSchema: alepha25.TObject<{
|
|
12
|
+
name: alepha25.TString;
|
|
13
|
+
group: alepha25.TOptional<alepha25.TString>;
|
|
14
|
+
path: alepha25.TString;
|
|
15
|
+
method: alepha25.TOptional<alepha25.TString>;
|
|
16
|
+
requestBodyType: alepha25.TOptional<alepha25.TString>;
|
|
17
|
+
service: alepha25.TOptional<alepha25.TString>;
|
|
18
|
+
rawSchema: alepha25.TOptional<alepha25.TObject<{
|
|
19
|
+
body: alepha25.TOptional<alepha25.TString>;
|
|
20
|
+
response: alepha25.TOptional<alepha25.TString>;
|
|
21
21
|
}>>;
|
|
22
22
|
}>;
|
|
23
|
-
declare const apiLinksResponseSchema:
|
|
24
|
-
prefix:
|
|
25
|
-
links:
|
|
26
|
-
name:
|
|
27
|
-
group:
|
|
28
|
-
path:
|
|
29
|
-
method:
|
|
30
|
-
requestBodyType:
|
|
31
|
-
service:
|
|
32
|
-
rawSchema:
|
|
33
|
-
body:
|
|
34
|
-
response:
|
|
23
|
+
declare const apiLinksResponseSchema: alepha25.TObject<{
|
|
24
|
+
prefix: alepha25.TOptional<alepha25.TString>;
|
|
25
|
+
links: alepha25.TArray<alepha25.TObject<{
|
|
26
|
+
name: alepha25.TString;
|
|
27
|
+
group: alepha25.TOptional<alepha25.TString>;
|
|
28
|
+
path: alepha25.TString;
|
|
29
|
+
method: alepha25.TOptional<alepha25.TString>;
|
|
30
|
+
requestBodyType: alepha25.TOptional<alepha25.TString>;
|
|
31
|
+
service: alepha25.TOptional<alepha25.TString>;
|
|
32
|
+
rawSchema: alepha25.TOptional<alepha25.TObject<{
|
|
33
|
+
body: alepha25.TOptional<alepha25.TString>;
|
|
34
|
+
response: alepha25.TOptional<alepha25.TString>;
|
|
35
35
|
}>>;
|
|
36
36
|
}>>;
|
|
37
37
|
}>;
|
|
@@ -51,35 +51,35 @@ declare class LinkProvider {
|
|
|
51
51
|
protected readonly httpClient: HttpClient;
|
|
52
52
|
protected serverLinks: Array<HttpClientLink>;
|
|
53
53
|
/**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
* Get applicative links registered on the server.
|
|
55
|
+
* This does not include lazy-loaded remote links.
|
|
56
|
+
*/
|
|
57
57
|
getServerLinks(): HttpClientLink[];
|
|
58
58
|
/**
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
* Register a new link for the application.
|
|
60
|
+
*/
|
|
61
61
|
registerLink(link: HttpClientLink): void;
|
|
62
62
|
get links(): HttpClientLink[];
|
|
63
63
|
/**
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
* Force browser to refresh links from the server.
|
|
65
|
+
*/
|
|
66
66
|
fetchLinks(): Promise<HttpClientLink[]>;
|
|
67
67
|
/**
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
* Create a virtual client that can be used to call actions.
|
|
69
|
+
*
|
|
70
|
+
* Use js Proxy under the hood.
|
|
71
|
+
*/
|
|
72
72
|
client<T extends object>(scope?: ClientScope): HttpVirtualClient<T>;
|
|
73
73
|
/**
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
* Check if a link with the given name exists.
|
|
75
|
+
* @param name
|
|
76
|
+
*/
|
|
77
77
|
can(name: string): boolean;
|
|
78
78
|
/**
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
* Resolve a link by its name and call it.
|
|
80
|
+
* - If link is local, it will call the local handler.
|
|
81
|
+
* - If link is remote, it will make a fetch request to the remote server.
|
|
82
|
+
*/
|
|
83
83
|
follow(name: string, config?: Partial<ServerRequestConfigEntry>, options?: ClientRequestOptions & ClientScope): Promise<any>;
|
|
84
84
|
protected createVirtualAction<T extends RequestConfigSchema>(name: string, scope?: ClientScope): VirtualAction<T>;
|
|
85
85
|
protected followRemote(link: HttpClientLink, config?: Partial<ServerRequestConfigEntry>, options?: ClientRequestOptions): Promise<FetchResponse>;
|
|
@@ -133,46 +133,46 @@ declare const $remote: {
|
|
|
133
133
|
};
|
|
134
134
|
interface RemotePrimitiveOptions {
|
|
135
135
|
/**
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
136
|
+
* The URL of the remote service.
|
|
137
|
+
* You can use a function to generate the URL dynamically.
|
|
138
|
+
* You probably should use $env(env) to get the URL from the environment.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts
|
|
142
|
+
* import { $remote } from "alepha/server";
|
|
143
|
+
* import { $inject, t } from "alepha";
|
|
144
|
+
*
|
|
145
|
+
* class App {
|
|
146
|
+
* env = $env(t.object({
|
|
147
|
+
* REMOTE_URL: t.text({default: "http://localhost:3000"}),
|
|
148
|
+
* }));
|
|
149
|
+
* remote = $remote({
|
|
150
|
+
* url: this.env.REMOTE_URL,
|
|
151
|
+
* });
|
|
152
|
+
* }
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
155
|
url: string | (() => string);
|
|
156
156
|
/**
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
157
|
+
* The name of the remote service.
|
|
158
|
+
*
|
|
159
|
+
* @default Member of the class containing the remote service.
|
|
160
|
+
*/
|
|
161
161
|
name?: string;
|
|
162
162
|
/**
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
* If true, all methods of the remote service will be exposed as actions in this context.
|
|
164
|
+
* > Note: Proxy will never use the service account, it just... proxies the request.
|
|
165
|
+
*/
|
|
166
166
|
proxy?: boolean | Partial<ProxyPrimitiveOptions & {
|
|
167
167
|
/**
|
|
168
|
-
|
|
169
|
-
|
|
168
|
+
* If true, the remote service won't be available internally, only through the proxy.
|
|
169
|
+
*/
|
|
170
170
|
noInternal: boolean;
|
|
171
171
|
}>;
|
|
172
172
|
/**
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
* For communication between the server and the remote service with a security layer.
|
|
174
|
+
* This will be used for internal communication and will not be exposed to the client.
|
|
175
|
+
*/
|
|
176
176
|
serviceAccount?: ServiceAccountPrimitive;
|
|
177
177
|
}
|
|
178
178
|
declare class RemotePrimitive extends Primitive<RemotePrimitiveOptions> {
|
|
@@ -190,62 +190,62 @@ declare class RemotePrimitiveProvider {
|
|
|
190
190
|
protected readonly remotes: Array<ServerRemote>;
|
|
191
191
|
protected readonly log: alepha_logger0.Logger;
|
|
192
192
|
getRemotes(): ServerRemote[];
|
|
193
|
-
readonly configure:
|
|
194
|
-
readonly start:
|
|
193
|
+
readonly configure: alepha25.HookPrimitive<"configure">;
|
|
194
|
+
readonly start: alepha25.HookPrimitive<"start">;
|
|
195
195
|
registerRemote(value: RemotePrimitive): Promise<void>;
|
|
196
196
|
protected readonly fetchLinks: alepha_retry0.RetryPrimitiveFn<(opts: FetchLinksOptions) => Promise<ApiLinksResponse>>;
|
|
197
197
|
}
|
|
198
198
|
interface FetchLinksOptions {
|
|
199
199
|
/**
|
|
200
|
-
|
|
201
|
-
|
|
200
|
+
* Name of the remote service.
|
|
201
|
+
*/
|
|
202
202
|
service: string;
|
|
203
203
|
/**
|
|
204
|
-
|
|
205
|
-
|
|
204
|
+
* URL to fetch links from.
|
|
205
|
+
*/
|
|
206
206
|
url: string;
|
|
207
207
|
/**
|
|
208
|
-
|
|
209
|
-
|
|
208
|
+
* Authorization header containing access token.
|
|
209
|
+
*/
|
|
210
210
|
authorization?: string;
|
|
211
211
|
}
|
|
212
212
|
interface ServerRemote {
|
|
213
213
|
/**
|
|
214
|
-
|
|
215
|
-
|
|
214
|
+
* URL of the remote service.
|
|
215
|
+
*/
|
|
216
216
|
url: string;
|
|
217
217
|
/**
|
|
218
|
-
|
|
219
|
-
|
|
218
|
+
* Name of the remote service.
|
|
219
|
+
*/
|
|
220
220
|
name: string;
|
|
221
221
|
/**
|
|
222
|
-
|
|
223
|
-
|
|
222
|
+
* Expose links as endpoint. It's not only internal.
|
|
223
|
+
*/
|
|
224
224
|
proxy: boolean;
|
|
225
225
|
/**
|
|
226
|
-
|
|
227
|
-
|
|
226
|
+
* It's only used inside the application.
|
|
227
|
+
*/
|
|
228
228
|
internal: boolean;
|
|
229
229
|
/**
|
|
230
|
-
|
|
231
|
-
|
|
230
|
+
* Links fetcher.
|
|
231
|
+
*/
|
|
232
232
|
links: (args: {
|
|
233
233
|
authorization?: string;
|
|
234
234
|
}) => Promise<ApiLinksResponse>;
|
|
235
235
|
/**
|
|
236
|
-
|
|
237
|
-
|
|
236
|
+
* Fetches schema for the remote service.
|
|
237
|
+
*/
|
|
238
238
|
schema: (args: {
|
|
239
239
|
name: string;
|
|
240
240
|
authorization?: string;
|
|
241
241
|
}) => Promise<any>;
|
|
242
242
|
/**
|
|
243
|
-
|
|
244
|
-
|
|
243
|
+
* Force a default access token provider when not provided.
|
|
244
|
+
*/
|
|
245
245
|
serviceAccount?: ServiceAccountPrimitive;
|
|
246
246
|
/**
|
|
247
|
-
|
|
248
|
-
|
|
247
|
+
* Prefix for the remote service links.
|
|
248
|
+
*/
|
|
249
249
|
prefix: string;
|
|
250
250
|
}
|
|
251
251
|
//#endregion
|
|
@@ -259,33 +259,33 @@ declare class ServerLinksProvider {
|
|
|
259
259
|
protected readonly remoteProvider: RemotePrimitiveProvider;
|
|
260
260
|
protected readonly serverTimingProvider: ServerTimingProvider;
|
|
261
261
|
get prefix(): string;
|
|
262
|
-
readonly onRoute:
|
|
262
|
+
readonly onRoute: alepha25.HookPrimitive<"configure">;
|
|
263
263
|
/**
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
264
|
+
* First API - Get all API links for the user.
|
|
265
|
+
*
|
|
266
|
+
* This is based on the user's permissions.
|
|
267
|
+
*/
|
|
268
268
|
readonly links: alepha_server0.RoutePrimitive<{
|
|
269
|
-
response:
|
|
270
|
-
prefix:
|
|
271
|
-
links:
|
|
272
|
-
name:
|
|
273
|
-
group:
|
|
274
|
-
path:
|
|
275
|
-
method:
|
|
276
|
-
requestBodyType:
|
|
277
|
-
service:
|
|
278
|
-
rawSchema:
|
|
279
|
-
body:
|
|
280
|
-
response:
|
|
269
|
+
response: alepha25.TObject<{
|
|
270
|
+
prefix: alepha25.TOptional<alepha25.TString>;
|
|
271
|
+
links: alepha25.TArray<alepha25.TObject<{
|
|
272
|
+
name: alepha25.TString;
|
|
273
|
+
group: alepha25.TOptional<alepha25.TString>;
|
|
274
|
+
path: alepha25.TString;
|
|
275
|
+
method: alepha25.TOptional<alepha25.TString>;
|
|
276
|
+
requestBodyType: alepha25.TOptional<alepha25.TString>;
|
|
277
|
+
service: alepha25.TOptional<alepha25.TString>;
|
|
278
|
+
rawSchema: alepha25.TOptional<alepha25.TObject<{
|
|
279
|
+
body: alepha25.TOptional<alepha25.TString>;
|
|
280
|
+
response: alepha25.TOptional<alepha25.TString>;
|
|
281
281
|
}>>;
|
|
282
282
|
}>>;
|
|
283
283
|
}>;
|
|
284
284
|
}>;
|
|
285
285
|
/**
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
286
|
+
* Retrieves API links for the user based on their permissions.
|
|
287
|
+
* Will check on local links and remote links.
|
|
288
|
+
*/
|
|
289
289
|
getUserApiLinks(options: GetApiLinksOptions): Promise<ApiLinksResponse>;
|
|
290
290
|
}
|
|
291
291
|
interface GetApiLinksOptions {
|
|
@@ -297,26 +297,31 @@ interface GetApiLinksOptions {
|
|
|
297
297
|
declare module "alepha" {
|
|
298
298
|
interface State {
|
|
299
299
|
/**
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
300
|
+
* API links attached to the server request state.
|
|
301
|
+
*
|
|
302
|
+
* @see {@link ApiLinksResponse}
|
|
303
|
+
* @internal
|
|
304
|
+
*/
|
|
305
305
|
"alepha.server.request.apiLinks"?: ApiLinksResponse;
|
|
306
306
|
}
|
|
307
307
|
}
|
|
308
308
|
/**
|
|
309
|
-
*
|
|
309
|
+
* | type | quality | stability |
|
|
310
|
+
* |------|---------|-----------|
|
|
311
|
+
* | backend | standard | stable |
|
|
310
312
|
*
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
*
|
|
313
|
+
* Type-safe API client with request deduplication.
|
|
314
|
+
*
|
|
315
|
+
* **Features:**
|
|
316
|
+
* - Virtual HTTP client for type-safe API calls
|
|
317
|
+
* - Remote action definitions
|
|
318
|
+
* - Type inference from action schemas
|
|
319
|
+
* - Request deduplication
|
|
320
|
+
* - Automatic error handling
|
|
314
321
|
*
|
|
315
|
-
* @see {@link $remote}
|
|
316
|
-
* @see {@link $client}
|
|
317
322
|
* @module alepha.server.links
|
|
318
323
|
*/
|
|
319
|
-
declare const AlephaServerLinks:
|
|
324
|
+
declare const AlephaServerLinks: alepha25.Service<alepha25.Module>;
|
|
320
325
|
//#endregion
|
|
321
326
|
export { $client, $remote, AlephaServerLinks, ApiLink, ApiLinksResponse, ClientScope, FetchLinksOptions, GetApiLinksOptions, HttpClientLink, HttpVirtualClient, LinkProvider, RemotePrimitive, RemotePrimitiveOptions, RemotePrimitiveProvider, ServerLinksProvider, ServerRemote, VirtualAction, apiLinkSchema, apiLinksResponseSchema };
|
|
322
327
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/links/schemas/apiLinksResponseSchema.ts","../../../src/server/links/providers/LinkProvider.ts","../../../src/server/links/primitives/$client.ts","../../../src/server/links/primitives/$remote.ts","../../../src/server/links/providers/RemotePrimitiveProvider.ts","../../../src/server/links/providers/ServerLinksProvider.ts","../../../src/server/links/index.ts"],"mappings":";;;;;;;;;;cAGa,aAAA,WAAa,OAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/links/schemas/apiLinksResponseSchema.ts","../../../src/server/links/providers/LinkProvider.ts","../../../src/server/links/primitives/$client.ts","../../../src/server/links/primitives/$remote.ts","../../../src/server/links/providers/RemotePrimitiveProvider.ts","../../../src/server/links/providers/ServerLinksProvider.ts","../../../src/server/links/index.ts"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SecurityProvider } from "alepha/security";
|
|
2
|
-
import { $env, $hook, $inject, $module, Alepha, AlephaError, KIND, Primitive, createPrimitive, jsonSchemaToTypeBox, t } from "alepha";
|
|
2
|
+
import { $atom, $env, $hook, $inject, $module, Alepha, AlephaError, KIND, Primitive, createPrimitive, jsonSchemaToTypeBox, t } from "alepha";
|
|
3
3
|
import { $action, $route, AlephaServer, HttpClient, ServerReply, ServerTimingProvider, UnauthorizedError } from "alepha/server";
|
|
4
4
|
import { $logger } from "alepha/logger";
|
|
5
5
|
import { $retry } from "alepha/retry";
|
|
@@ -23,6 +23,13 @@ const apiLinksResponseSchema = t.object({
|
|
|
23
23
|
links: t.array(apiLinkSchema)
|
|
24
24
|
});
|
|
25
25
|
|
|
26
|
+
//#endregion
|
|
27
|
+
//#region ../../src/server/links/atoms/apiLinksAtom.ts
|
|
28
|
+
const apiLinksAtom = $atom({
|
|
29
|
+
name: "alepha.server.request.apiLinks",
|
|
30
|
+
schema: t.optional(apiLinksResponseSchema)
|
|
31
|
+
});
|
|
32
|
+
|
|
26
33
|
//#endregion
|
|
27
34
|
//#region ../../src/server/links/providers/LinkProvider.ts
|
|
28
35
|
/**
|
|
@@ -309,8 +316,8 @@ var RemotePrimitiveProvider = class {
|
|
|
309
316
|
proxy: !!options.proxy,
|
|
310
317
|
internal: !proxy.noInternal,
|
|
311
318
|
schema: async (opts) => {
|
|
312
|
-
const { authorization, name
|
|
313
|
-
return await fetch(`${url}${linkPath}/${name
|
|
319
|
+
const { authorization, name } = opts;
|
|
320
|
+
return await fetch(`${url}${linkPath}/${name}/schema`, { headers: new Headers(authorization ? { authorization } : {}) }).then((it) => it.json());
|
|
314
321
|
},
|
|
315
322
|
links: async (opts) => {
|
|
316
323
|
const { authorization } = opts;
|
|
@@ -327,8 +334,8 @@ var RemotePrimitiveProvider = class {
|
|
|
327
334
|
if (options.proxy) this.proxyProvider.createProxy({
|
|
328
335
|
path: `${this.env.SERVER_API_PREFIX}/${name}/*`,
|
|
329
336
|
target: url,
|
|
330
|
-
rewrite: (url
|
|
331
|
-
url
|
|
337
|
+
rewrite: (url) => {
|
|
338
|
+
url.pathname = url.pathname.replace(`${this.env.SERVER_API_PREFIX}/${name}`, remote.prefix);
|
|
332
339
|
},
|
|
333
340
|
...proxy
|
|
334
341
|
});
|
|
@@ -461,18 +468,24 @@ var ServerLinksProvider = class {
|
|
|
461
468
|
//#endregion
|
|
462
469
|
//#region ../../src/server/links/index.ts
|
|
463
470
|
/**
|
|
464
|
-
*
|
|
471
|
+
* | type | quality | stability |
|
|
472
|
+
* |------|---------|-----------|
|
|
473
|
+
* | backend | standard | stable |
|
|
474
|
+
*
|
|
475
|
+
* Type-safe API client with request deduplication.
|
|
465
476
|
*
|
|
466
|
-
*
|
|
467
|
-
*
|
|
468
|
-
*
|
|
477
|
+
* **Features:**
|
|
478
|
+
* - Virtual HTTP client for type-safe API calls
|
|
479
|
+
* - Remote action definitions
|
|
480
|
+
* - Type inference from action schemas
|
|
481
|
+
* - Request deduplication
|
|
482
|
+
* - Automatic error handling
|
|
469
483
|
*
|
|
470
|
-
* @see {@link $remote}
|
|
471
|
-
* @see {@link $client}
|
|
472
484
|
* @module alepha.server.links
|
|
473
485
|
*/
|
|
474
486
|
const AlephaServerLinks = $module({
|
|
475
487
|
name: "alepha.server.links",
|
|
488
|
+
atoms: [apiLinksAtom],
|
|
476
489
|
primitives: [$remote, $client],
|
|
477
490
|
services: [
|
|
478
491
|
AlephaServer,
|