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,9 +1,9 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as alepha622 from "alepha";
|
|
2
2
|
import { KIND, Primitive, Static, TNull, TObject, TOptional, TSchema, TUnion } from "alepha";
|
|
3
3
|
import * as alepha_server0 from "alepha/server";
|
|
4
4
|
import { DateTimeProvider } from "alepha/datetime";
|
|
5
5
|
import * as alepha_logger0 from "alepha/logger";
|
|
6
|
-
import * as
|
|
6
|
+
import * as alepha_orm14 from "alepha/orm";
|
|
7
7
|
import * as alepha_topic0 from "alepha/topic";
|
|
8
8
|
import * as alepha_scheduler0 from "alepha/scheduler";
|
|
9
9
|
import "drizzle-orm/d1";
|
|
@@ -18,7 +18,7 @@ import { UserAccount } from "alepha/security";
|
|
|
18
18
|
/**
|
|
19
19
|
* Parameter status enum schema.
|
|
20
20
|
*/
|
|
21
|
-
declare const parameterStatusSchema:
|
|
21
|
+
declare const parameterStatusSchema: alepha622.TUnsafe<"expired" | "current" | "next" | "future">;
|
|
22
22
|
type ParameterStatus = Static<typeof parameterStatusSchema>;
|
|
23
23
|
//#endregion
|
|
24
24
|
//#region ../../src/api/parameters/entities/parameters.d.ts
|
|
@@ -31,67 +31,67 @@ type ParameterStatus = Static<typeof parameterStatusSchema>;
|
|
|
31
31
|
* - Activation scheduling
|
|
32
32
|
* - Audit trail (creator info)
|
|
33
33
|
*/
|
|
34
|
-
declare const parameters:
|
|
35
|
-
id:
|
|
36
|
-
createdAt:
|
|
37
|
-
updatedAt:
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
name:
|
|
43
|
-
/**
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
content:
|
|
47
|
-
/**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
schemaHash:
|
|
52
|
-
/**
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
status:
|
|
56
|
-
/**
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
activationDate:
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
expiredAt:
|
|
66
|
-
/**
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
version:
|
|
71
|
-
/**
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
changeDescription:
|
|
75
|
-
/**
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
tags:
|
|
79
|
-
/**
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
creatorId:
|
|
83
|
-
/**
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
creatorName:
|
|
87
|
-
/**
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
previousContent:
|
|
91
|
-
/**
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
migrationLog:
|
|
34
|
+
declare const parameters: alepha_orm14.EntityPrimitive<alepha622.TObject<{
|
|
35
|
+
id: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha622.TString, typeof alepha_orm14.PG_PRIMARY_KEY>, typeof alepha_orm14.PG_DEFAULT>;
|
|
36
|
+
createdAt: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha622.TString, typeof alepha_orm14.PG_CREATED_AT>, typeof alepha_orm14.PG_DEFAULT>;
|
|
37
|
+
updatedAt: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha622.TString, typeof alepha_orm14.PG_UPDATED_AT>, typeof alepha_orm14.PG_DEFAULT>;
|
|
38
|
+
/**
|
|
39
|
+
* Configuration name using dot notation for tree hierarchy.
|
|
40
|
+
* Examples: "app.features", "app.pricing.tiers", "system.limits"
|
|
41
|
+
*/
|
|
42
|
+
name: alepha622.TString;
|
|
43
|
+
/**
|
|
44
|
+
* The configuration content as JSON.
|
|
45
|
+
*/
|
|
46
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
47
|
+
/**
|
|
48
|
+
* Schema version hash for detecting schema changes.
|
|
49
|
+
* Used for auto-migration when schema evolves.
|
|
50
|
+
*/
|
|
51
|
+
schemaHash: alepha622.TString;
|
|
52
|
+
/**
|
|
53
|
+
* Current status of this parameter version.
|
|
54
|
+
*/
|
|
55
|
+
status: alepha_orm14.PgAttr<alepha622.TUnsafe<"expired" | "current" | "next" | "future">, typeof alepha_orm14.PG_DEFAULT>;
|
|
56
|
+
/**
|
|
57
|
+
* When this version should become active.
|
|
58
|
+
* Default is immediate (now).
|
|
59
|
+
*/
|
|
60
|
+
activationDate: alepha622.TString;
|
|
61
|
+
/**
|
|
62
|
+
* When this version was deactivated (became expired).
|
|
63
|
+
* Null if still active or scheduled.
|
|
64
|
+
*/
|
|
65
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
66
|
+
/**
|
|
67
|
+
* Version number for this configuration.
|
|
68
|
+
* Auto-incremented per config name.
|
|
69
|
+
*/
|
|
70
|
+
version: alepha622.TInteger;
|
|
71
|
+
/**
|
|
72
|
+
* Optional description of changes in this version.
|
|
73
|
+
*/
|
|
74
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
75
|
+
/**
|
|
76
|
+
* Optional tags for filtering/categorization.
|
|
77
|
+
*/
|
|
78
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
79
|
+
/**
|
|
80
|
+
* Creator user ID (if available).
|
|
81
|
+
*/
|
|
82
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
83
|
+
/**
|
|
84
|
+
* Creator display name for audit trail.
|
|
85
|
+
*/
|
|
86
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
87
|
+
/**
|
|
88
|
+
* Previous content before this change (for rollback reference).
|
|
89
|
+
*/
|
|
90
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
91
|
+
/**
|
|
92
|
+
* Migration log if schema changed.
|
|
93
|
+
*/
|
|
94
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
95
95
|
}>>;
|
|
96
96
|
type Parameter = Static<typeof parameters.schema>;
|
|
97
97
|
type ParameterInsert = Omit<Parameter, "id" | "createdAt" | "updatedAt">;
|
|
@@ -126,114 +126,114 @@ type TObjectUpdate<T extends TObject> = TObject<{ [K in keyof T["properties"]]:
|
|
|
126
126
|
//#region ../../src/orm/primitives/$entity.d.ts
|
|
127
127
|
interface EntityPrimitiveOptions<T extends TObject, Keys = keyof Static<T>> {
|
|
128
128
|
/**
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
* The database table name that will be created for this entity.
|
|
130
|
+
* If not provided, name will be inferred from the $repository variable name.
|
|
131
|
+
*/
|
|
132
132
|
name: string;
|
|
133
133
|
/**
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
* TypeBox schema defining the table structure and column types.
|
|
135
|
+
*/
|
|
136
136
|
schema: T;
|
|
137
137
|
/**
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
* Database indexes to create for query optimization.
|
|
139
|
+
*/
|
|
140
140
|
indexes?: (Keys | {
|
|
141
141
|
/**
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
* Single column to index.
|
|
143
|
+
*/
|
|
144
144
|
column: Keys;
|
|
145
145
|
/**
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
* Whether this should be a unique index (enforces uniqueness constraint).
|
|
147
|
+
*/
|
|
148
148
|
unique?: boolean;
|
|
149
149
|
/**
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
* Custom name for the index. If not provided, generates name automatically.
|
|
151
|
+
*/
|
|
152
152
|
name?: string;
|
|
153
153
|
} | {
|
|
154
154
|
/**
|
|
155
|
-
|
|
156
|
-
|
|
155
|
+
* Multiple columns for composite index (order matters for query optimization).
|
|
156
|
+
*/
|
|
157
157
|
columns: Keys[];
|
|
158
158
|
/**
|
|
159
|
-
|
|
160
|
-
|
|
159
|
+
* Whether this should be a unique index (enforces uniqueness constraint).
|
|
160
|
+
*/
|
|
161
161
|
unique?: boolean;
|
|
162
162
|
/**
|
|
163
|
-
|
|
164
|
-
|
|
163
|
+
* Custom name for the index. If not provided, generates name automatically.
|
|
164
|
+
*/
|
|
165
165
|
name?: string;
|
|
166
166
|
})[];
|
|
167
167
|
/**
|
|
168
|
-
|
|
169
|
-
|
|
168
|
+
* Foreign key constraints to maintain referential integrity.
|
|
169
|
+
*/
|
|
170
170
|
foreignKeys?: Array<{
|
|
171
171
|
/**
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
* Optional name for the foreign key constraint.
|
|
173
|
+
*/
|
|
174
174
|
name?: string;
|
|
175
175
|
/**
|
|
176
|
-
|
|
177
|
-
|
|
176
|
+
* Local columns that reference the foreign table.
|
|
177
|
+
*/
|
|
178
178
|
columns: Array<keyof Static<T>>;
|
|
179
179
|
/**
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
180
|
+
* Referenced columns in the foreign table.
|
|
181
|
+
* Must be EntityColumn references from other entities.
|
|
182
|
+
*/
|
|
183
183
|
foreignColumns: Array<() => EntityColumn<any>>;
|
|
184
184
|
}>;
|
|
185
185
|
/**
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
186
|
+
* Additional table constraints for data validation.
|
|
187
|
+
*
|
|
188
|
+
* Constraints enforce business rules at the database level, providing
|
|
189
|
+
* an additional layer of data integrity beyond application validation.
|
|
190
|
+
*
|
|
191
|
+
* **Constraint Types**:
|
|
192
|
+
* - **Unique constraints**: Prevent duplicate values across columns
|
|
193
|
+
* - **Check constraints**: Enforce custom validation rules with SQL expressions
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```ts
|
|
197
|
+
* constraints: [
|
|
198
|
+
* {
|
|
199
|
+
* name: "unique_user_email",
|
|
200
|
+
* columns: ["email"],
|
|
201
|
+
* unique: true
|
|
202
|
+
* },
|
|
203
|
+
* {
|
|
204
|
+
* name: "valid_age_range",
|
|
205
|
+
* columns: ["age"],
|
|
206
|
+
* check: sql`age >= 0 AND age <= 150`
|
|
207
|
+
* },
|
|
208
|
+
* {
|
|
209
|
+
* name: "unique_user_username_per_tenant",
|
|
210
|
+
* columns: ["tenantId", "username"],
|
|
211
|
+
* unique: true
|
|
212
|
+
* }
|
|
213
|
+
* ]
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
216
|
constraints?: Array<{
|
|
217
217
|
/**
|
|
218
|
-
|
|
219
|
-
|
|
218
|
+
* Columns involved in this constraint.
|
|
219
|
+
*/
|
|
220
220
|
columns: Array<keyof Static<T>>;
|
|
221
221
|
/**
|
|
222
|
-
|
|
223
|
-
|
|
222
|
+
* Optional name for the constraint.
|
|
223
|
+
*/
|
|
224
224
|
name?: string;
|
|
225
225
|
/**
|
|
226
|
-
|
|
227
|
-
|
|
226
|
+
* Whether this is a unique constraint.
|
|
227
|
+
*/
|
|
228
228
|
unique?: boolean | {};
|
|
229
229
|
/**
|
|
230
|
-
|
|
231
|
-
|
|
230
|
+
* SQL expression for check constraint validation.
|
|
231
|
+
*/
|
|
232
232
|
check?: SQL;
|
|
233
233
|
}>;
|
|
234
234
|
/**
|
|
235
|
-
|
|
236
|
-
|
|
235
|
+
* Advanced Drizzle ORM configuration for complex table setups.
|
|
236
|
+
*/
|
|
237
237
|
config?: (self: BuildExtraConfigColumns<string, FromSchema<T>, "pg">) => PgTableExtraConfigValue[];
|
|
238
238
|
}
|
|
239
239
|
declare class EntityPrimitive<T extends TObject = TObject> {
|
|
@@ -281,8 +281,8 @@ type PgSymbols = {
|
|
|
281
281
|
[PG_REF]: PgRefOptions;
|
|
282
282
|
[PG_ENUM]: PgEnumOptions;
|
|
283
283
|
/**
|
|
284
|
-
|
|
285
|
-
|
|
284
|
+
* @deprecated Use `PG_IDENTITY` instead.
|
|
285
|
+
*/
|
|
286
286
|
[PG_SERIAL]: {};
|
|
287
287
|
};
|
|
288
288
|
type PgSymbolKeys = keyof PgSymbols;
|
|
@@ -359,74 +359,82 @@ type PgAttr<T extends TSchema, TAttr extends PgSymbolKeys> = T & { [K in TAttr]:
|
|
|
359
359
|
*/
|
|
360
360
|
interface ConfigPrimitiveOptions<T extends TObject> {
|
|
361
361
|
/**
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
362
|
+
* Configuration name using dot notation for tree hierarchy.
|
|
363
|
+
* Examples: "app.features", "app.pricing.tiers", "system.limits"
|
|
364
|
+
*/
|
|
365
365
|
name?: string;
|
|
366
366
|
/**
|
|
367
|
-
|
|
368
|
-
|
|
367
|
+
* Human-readable description of the configuration.
|
|
368
|
+
*/
|
|
369
369
|
description?: string;
|
|
370
370
|
/**
|
|
371
|
-
|
|
372
|
-
|
|
371
|
+
* TypeBox schema defining the configuration structure.
|
|
372
|
+
*/
|
|
373
373
|
schema: T;
|
|
374
374
|
/**
|
|
375
|
-
|
|
376
|
-
|
|
375
|
+
* Default value used when no configuration exists in database.
|
|
376
|
+
*/
|
|
377
377
|
default: Static<T>;
|
|
378
378
|
}
|
|
379
379
|
declare class ConfigPrimitive<T extends TObject> extends Primitive<ConfigPrimitiveOptions<T>> {
|
|
380
380
|
protected readonly log: alepha_logger0.Logger;
|
|
381
381
|
protected readonly store: ConfigStore;
|
|
382
|
-
/**
|
|
382
|
+
/**
|
|
383
|
+
* Internal atom key for state management.
|
|
384
|
+
*/
|
|
383
385
|
protected atomKey: string;
|
|
384
|
-
/**
|
|
386
|
+
/**
|
|
387
|
+
* Schema hash for migration detection.
|
|
388
|
+
*/
|
|
385
389
|
protected schemaHash: string;
|
|
386
|
-
/**
|
|
390
|
+
/**
|
|
391
|
+
* Whether we're currently syncing (to avoid loops).
|
|
392
|
+
*/
|
|
387
393
|
protected syncing: boolean;
|
|
388
|
-
/**
|
|
394
|
+
/**
|
|
395
|
+
* Whether initial load has completed.
|
|
396
|
+
*/
|
|
389
397
|
protected loaded: boolean;
|
|
390
398
|
/**
|
|
391
|
-
|
|
392
|
-
|
|
399
|
+
* Configuration name (uses property key if not specified).
|
|
400
|
+
*/
|
|
393
401
|
get name(): string;
|
|
394
402
|
/**
|
|
395
|
-
|
|
396
|
-
|
|
403
|
+
* The TypeBox schema for this configuration.
|
|
404
|
+
*/
|
|
397
405
|
get schema(): T;
|
|
398
406
|
/**
|
|
399
|
-
|
|
400
|
-
|
|
407
|
+
* Get the current configuration value.
|
|
408
|
+
*/
|
|
401
409
|
get current(): Static<T>;
|
|
402
410
|
/**
|
|
403
|
-
|
|
404
|
-
|
|
411
|
+
* Get a specific field from the current configuration.
|
|
412
|
+
*/
|
|
405
413
|
get<Key extends keyof Static<T>>(key: Key): Static<T>[Key];
|
|
406
414
|
/**
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
415
|
+
* Set a new configuration value.
|
|
416
|
+
*
|
|
417
|
+
* @param value - The new configuration value
|
|
418
|
+
* @param options - Optional settings (activation date, creator info, etc.)
|
|
419
|
+
*/
|
|
412
420
|
set(value: Static<T>, options?: SetConfigOptions): Promise<void>;
|
|
413
421
|
/**
|
|
414
|
-
|
|
415
|
-
|
|
422
|
+
* Subscribe to configuration changes.
|
|
423
|
+
*/
|
|
416
424
|
sub(fn: (curr: Static<T>) => void): () => void;
|
|
417
425
|
/**
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
426
|
+
* Reload configuration from database.
|
|
427
|
+
* Called when scheduled config activates or sync message received.
|
|
428
|
+
*/
|
|
421
429
|
reload(): Promise<void>;
|
|
422
430
|
/**
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
431
|
+
* Update from sync message (called by ConfigStore).
|
|
432
|
+
* Uses skipEvents to avoid infinite loops.
|
|
433
|
+
*/
|
|
426
434
|
updateFromSync(content: unknown): Promise<void>;
|
|
427
435
|
/**
|
|
428
|
-
|
|
429
|
-
|
|
436
|
+
* Get version history for this configuration.
|
|
437
|
+
*/
|
|
430
438
|
getHistory(): Promise<{
|
|
431
439
|
expiredAt?: string | undefined;
|
|
432
440
|
changeDescription?: string | undefined;
|
|
@@ -434,70 +442,70 @@ declare class ConfigPrimitive<T extends TObject> extends Primitive<ConfigPrimiti
|
|
|
434
442
|
creatorId?: string | undefined;
|
|
435
443
|
creatorName?: string | undefined;
|
|
436
444
|
previousContent?: typebox0.StaticRecord<[], "Decode", {}, {
|
|
437
|
-
id: PgAttr<PgAttr<
|
|
438
|
-
createdAt: PgAttr<PgAttr<
|
|
439
|
-
updatedAt: PgAttr<PgAttr<
|
|
440
|
-
name:
|
|
441
|
-
content:
|
|
442
|
-
schemaHash:
|
|
443
|
-
status: PgAttr<
|
|
444
|
-
activationDate:
|
|
445
|
-
expiredAt:
|
|
446
|
-
version:
|
|
447
|
-
changeDescription:
|
|
448
|
-
tags:
|
|
449
|
-
creatorId:
|
|
450
|
-
creatorName:
|
|
451
|
-
previousContent:
|
|
452
|
-
migrationLog:
|
|
453
|
-
}, string,
|
|
445
|
+
id: PgAttr<PgAttr<alepha622.TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
|
|
446
|
+
createdAt: PgAttr<PgAttr<alepha622.TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
|
|
447
|
+
updatedAt: PgAttr<PgAttr<alepha622.TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
|
|
448
|
+
name: alepha622.TString;
|
|
449
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
450
|
+
schemaHash: alepha622.TString;
|
|
451
|
+
status: PgAttr<alepha622.TUnsafe<"expired" | "current" | "next" | "future">, typeof PG_DEFAULT>;
|
|
452
|
+
activationDate: alepha622.TString;
|
|
453
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
454
|
+
version: alepha622.TInteger;
|
|
455
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
456
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
457
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
458
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
459
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
460
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
461
|
+
}, string, alepha622.TAny> | undefined;
|
|
454
462
|
migrationLog?: string | undefined;
|
|
455
|
-
name: string;
|
|
456
|
-
status: "expired" | "current" | "next" | "future";
|
|
457
463
|
id: string;
|
|
458
464
|
createdAt: string;
|
|
459
465
|
updatedAt: string;
|
|
466
|
+
name: string;
|
|
460
467
|
content: typebox0.StaticRecord<[], "Decode", {}, {
|
|
461
|
-
id: PgAttr<PgAttr<
|
|
462
|
-
createdAt: PgAttr<PgAttr<
|
|
463
|
-
updatedAt: PgAttr<PgAttr<
|
|
464
|
-
name:
|
|
465
|
-
content:
|
|
466
|
-
schemaHash:
|
|
467
|
-
status: PgAttr<
|
|
468
|
-
activationDate:
|
|
469
|
-
expiredAt:
|
|
470
|
-
version:
|
|
471
|
-
changeDescription:
|
|
472
|
-
tags:
|
|
473
|
-
creatorId:
|
|
474
|
-
creatorName:
|
|
475
|
-
previousContent:
|
|
476
|
-
migrationLog:
|
|
477
|
-
}, string,
|
|
468
|
+
id: PgAttr<PgAttr<alepha622.TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
|
|
469
|
+
createdAt: PgAttr<PgAttr<alepha622.TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
|
|
470
|
+
updatedAt: PgAttr<PgAttr<alepha622.TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
|
|
471
|
+
name: alepha622.TString;
|
|
472
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
473
|
+
schemaHash: alepha622.TString;
|
|
474
|
+
status: PgAttr<alepha622.TUnsafe<"expired" | "current" | "next" | "future">, typeof PG_DEFAULT>;
|
|
475
|
+
activationDate: alepha622.TString;
|
|
476
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
477
|
+
version: alepha622.TInteger;
|
|
478
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
479
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
480
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
481
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
482
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
483
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
484
|
+
}, string, alepha622.TAny>;
|
|
478
485
|
schemaHash: string;
|
|
486
|
+
status: "expired" | "current" | "next" | "future";
|
|
479
487
|
activationDate: string;
|
|
480
488
|
version: number;
|
|
481
489
|
}[]>;
|
|
482
490
|
/**
|
|
483
|
-
|
|
484
|
-
|
|
491
|
+
* Rollback to a specific version.
|
|
492
|
+
*/
|
|
485
493
|
rollback(version: number, options?: SetConfigOptions): Promise<void>;
|
|
486
494
|
/**
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
protected readonly onStart:
|
|
495
|
+
* Hook to load initial value from database on start.
|
|
496
|
+
*/
|
|
497
|
+
protected readonly onStart: alepha622.HookPrimitive<"start">;
|
|
490
498
|
/**
|
|
491
|
-
|
|
492
|
-
|
|
499
|
+
* Called after primitive creation to initialize.
|
|
500
|
+
*/
|
|
493
501
|
protected onInit(): void;
|
|
494
502
|
/**
|
|
495
|
-
|
|
496
|
-
|
|
503
|
+
* Load initial value from database.
|
|
504
|
+
*/
|
|
497
505
|
protected loadInitial(): Promise<void>;
|
|
498
506
|
/**
|
|
499
|
-
|
|
500
|
-
|
|
507
|
+
* Calculate a hash of the schema for migration detection.
|
|
508
|
+
*/
|
|
501
509
|
protected calculateSchemaHash(): string;
|
|
502
510
|
}
|
|
503
511
|
declare const $config: {
|
|
@@ -506,21 +514,21 @@ declare const $config: {
|
|
|
506
514
|
};
|
|
507
515
|
interface SetConfigOptions {
|
|
508
516
|
/**
|
|
509
|
-
|
|
510
|
-
|
|
517
|
+
* User making the change (for audit trail).
|
|
518
|
+
*/
|
|
511
519
|
user?: Pick<UserAccount, "id" | "email" | "name">;
|
|
512
520
|
/**
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
521
|
+
* When this configuration should become active.
|
|
522
|
+
* Default is immediate (now).
|
|
523
|
+
*/
|
|
516
524
|
activationDate?: Date;
|
|
517
525
|
/**
|
|
518
|
-
|
|
519
|
-
|
|
526
|
+
* Description of the change.
|
|
527
|
+
*/
|
|
520
528
|
changeDescription?: string;
|
|
521
529
|
/**
|
|
522
|
-
|
|
523
|
-
|
|
530
|
+
* Tags for filtering/categorization.
|
|
531
|
+
*/
|
|
524
532
|
tags?: string[];
|
|
525
533
|
}
|
|
526
534
|
//#endregion
|
|
@@ -548,83 +556,89 @@ interface ConfigSyncPayload {
|
|
|
548
556
|
declare class ConfigStore {
|
|
549
557
|
protected readonly log: alepha_logger0.Logger;
|
|
550
558
|
protected readonly dateTimeProvider: DateTimeProvider;
|
|
551
|
-
protected readonly repo:
|
|
552
|
-
id:
|
|
553
|
-
createdAt:
|
|
554
|
-
updatedAt:
|
|
555
|
-
name:
|
|
556
|
-
content:
|
|
557
|
-
schemaHash:
|
|
558
|
-
status:
|
|
559
|
-
activationDate:
|
|
560
|
-
expiredAt:
|
|
561
|
-
version:
|
|
562
|
-
changeDescription:
|
|
563
|
-
tags:
|
|
564
|
-
creatorId:
|
|
565
|
-
creatorName:
|
|
566
|
-
previousContent:
|
|
567
|
-
migrationLog:
|
|
559
|
+
protected readonly repo: alepha_orm14.Repository<TObject<{
|
|
560
|
+
id: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha622.TString, typeof alepha_orm14.PG_PRIMARY_KEY>, typeof alepha_orm14.PG_DEFAULT>;
|
|
561
|
+
createdAt: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha622.TString, typeof alepha_orm14.PG_CREATED_AT>, typeof alepha_orm14.PG_DEFAULT>;
|
|
562
|
+
updatedAt: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha622.TString, typeof alepha_orm14.PG_UPDATED_AT>, typeof alepha_orm14.PG_DEFAULT>;
|
|
563
|
+
name: alepha622.TString;
|
|
564
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
565
|
+
schemaHash: alepha622.TString;
|
|
566
|
+
status: alepha_orm14.PgAttr<alepha622.TUnsafe<"expired" | "current" | "next" | "future">, typeof alepha_orm14.PG_DEFAULT>;
|
|
567
|
+
activationDate: alepha622.TString;
|
|
568
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
569
|
+
version: alepha622.TInteger;
|
|
570
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
571
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
572
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
573
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
574
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
575
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
568
576
|
}>>;
|
|
569
|
-
/**
|
|
577
|
+
/**
|
|
578
|
+
* Unique identifier for this instance (to avoid self-updates).
|
|
579
|
+
*/
|
|
570
580
|
protected readonly instanceId: `${string}-${string}-${string}-${string}-${string}`;
|
|
571
|
-
/**
|
|
581
|
+
/**
|
|
582
|
+
* In-memory cache of registered configs.
|
|
583
|
+
*/
|
|
572
584
|
protected readonly configs: Map<string, ConfigPrimitive<any>>;
|
|
573
|
-
/**
|
|
585
|
+
/**
|
|
586
|
+
* Topic for cross-instance synchronization.
|
|
587
|
+
*/
|
|
574
588
|
readonly syncTopic: alepha_topic0.TopicPrimitive<{
|
|
575
589
|
payload: TObject<{
|
|
576
|
-
name:
|
|
577
|
-
version:
|
|
578
|
-
content:
|
|
579
|
-
status:
|
|
580
|
-
instanceId:
|
|
590
|
+
name: alepha622.TString;
|
|
591
|
+
version: alepha622.TInteger;
|
|
592
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
593
|
+
status: alepha622.TUnsafe<"expired" | "current" | "next" | "future">;
|
|
594
|
+
instanceId: alepha622.TString;
|
|
581
595
|
}>;
|
|
582
596
|
}>;
|
|
583
597
|
/**
|
|
584
|
-
|
|
585
|
-
|
|
598
|
+
* Register a config primitive with the store.
|
|
599
|
+
*/
|
|
586
600
|
register(config: ConfigPrimitive<any>): void;
|
|
587
601
|
/**
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
602
|
+
* Load the current config value from database.
|
|
603
|
+
* Returns the current or next version if no current exists.
|
|
604
|
+
*/
|
|
591
605
|
load<T extends TObject>(name: string): Promise<Static<T> | null>;
|
|
592
606
|
/**
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
607
|
+
* Save a new config version.
|
|
608
|
+
*
|
|
609
|
+
* @param name - Config name (e.g., "app.features.flags")
|
|
610
|
+
* @param content - New config content
|
|
611
|
+
* @param schemaHash - Hash of the schema for migration detection
|
|
612
|
+
* @param options - Additional options (activation date, creator info, etc.)
|
|
613
|
+
*/
|
|
600
614
|
save<T extends TObject>(name: string, content: Static<T>, schemaHash: string, options?: SaveConfigOptions): Promise<Parameter>;
|
|
601
615
|
/**
|
|
602
|
-
|
|
603
|
-
|
|
616
|
+
* Get all versions of a config.
|
|
617
|
+
*/
|
|
604
618
|
getHistory(name: string): Promise<Parameter[]>;
|
|
605
619
|
/**
|
|
606
|
-
|
|
607
|
-
|
|
620
|
+
* Get a specific version of a config.
|
|
621
|
+
*/
|
|
608
622
|
getVersion(name: string, version: number): Promise<Parameter | null>;
|
|
609
623
|
/**
|
|
610
|
-
|
|
611
|
-
|
|
624
|
+
* Rollback to a previous version by creating a new version with old content.
|
|
625
|
+
*/
|
|
612
626
|
rollback(name: string, targetVersion: number, options?: SaveConfigOptions): Promise<Parameter>;
|
|
613
627
|
/**
|
|
614
|
-
|
|
615
|
-
|
|
628
|
+
* Get all configs by status.
|
|
629
|
+
*/
|
|
616
630
|
getByStatus(status: ParameterStatus): Promise<Parameter[]>;
|
|
617
631
|
/**
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
632
|
+
* Get current config value with fallback to default from registered primitive.
|
|
633
|
+
* Returns the in-memory current value which may be the default if never saved.
|
|
634
|
+
*/
|
|
621
635
|
getCurrentValue(name: string): {
|
|
622
636
|
content: unknown;
|
|
623
637
|
isDefault: boolean;
|
|
624
638
|
} | null;
|
|
625
639
|
/**
|
|
626
|
-
|
|
627
|
-
|
|
640
|
+
* Get config info including current value with default fallback.
|
|
641
|
+
*/
|
|
628
642
|
getCurrentWithDefault(name: string): Promise<{
|
|
629
643
|
current: Parameter | null;
|
|
630
644
|
next: Parameter | null;
|
|
@@ -633,38 +647,38 @@ declare class ConfigStore {
|
|
|
633
647
|
schema: TObject | null;
|
|
634
648
|
}>;
|
|
635
649
|
/**
|
|
636
|
-
|
|
637
|
-
|
|
650
|
+
* Get all unique config names (for tree view).
|
|
651
|
+
*/
|
|
638
652
|
getConfigNames(): Promise<string[]>;
|
|
639
653
|
/**
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
654
|
+
* Build a tree structure from config names for UI.
|
|
655
|
+
* Includes both database configs and registered (but not yet saved) configs.
|
|
656
|
+
*/
|
|
643
657
|
getConfigTree(): Promise<ConfigTreeNode[]>;
|
|
644
658
|
/**
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
659
|
+
* Check and activate scheduled configs that are due.
|
|
660
|
+
* Should be called periodically (e.g., via scheduler).
|
|
661
|
+
*/
|
|
648
662
|
activateScheduledConfigs(): Promise<void>;
|
|
649
663
|
/**
|
|
650
|
-
|
|
651
|
-
|
|
664
|
+
* Transition config statuses when a new current is activated.
|
|
665
|
+
*/
|
|
652
666
|
protected transitionStatuses(name: string, now: Date): Promise<void>;
|
|
653
667
|
/**
|
|
654
|
-
|
|
655
|
-
|
|
668
|
+
* Recalculate statuses based on activation dates.
|
|
669
|
+
*/
|
|
656
670
|
protected recalculateStatuses(name: string): Promise<void>;
|
|
657
671
|
/**
|
|
658
|
-
|
|
659
|
-
|
|
672
|
+
* Publish sync event to other instances.
|
|
673
|
+
*/
|
|
660
674
|
protected publishSync(name: string, version: number, content: unknown, status: ParameterStatus): Promise<void>;
|
|
661
675
|
/**
|
|
662
|
-
|
|
663
|
-
|
|
676
|
+
* Handle incoming sync message from other instances.
|
|
677
|
+
*/
|
|
664
678
|
protected handleSyncMessage(payload: ConfigSyncPayload): Promise<void>;
|
|
665
679
|
/**
|
|
666
|
-
|
|
667
|
-
|
|
680
|
+
* Build tree structure from dot-notation names.
|
|
681
|
+
*/
|
|
668
682
|
protected buildTree(names: string[]): ConfigTreeNode[];
|
|
669
683
|
}
|
|
670
684
|
interface SaveConfigOptions {
|
|
@@ -698,266 +712,266 @@ declare class AdminConfigController {
|
|
|
698
712
|
protected readonly group = "admin:configs";
|
|
699
713
|
protected readonly store: ConfigStore;
|
|
700
714
|
/**
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
715
|
+
* Get tree structure of all configuration names.
|
|
716
|
+
* Useful for admin UI navigation.
|
|
717
|
+
*/
|
|
704
718
|
getConfigTree: alepha_server0.ActionPrimitiveFn<{
|
|
705
|
-
response:
|
|
706
|
-
name:
|
|
707
|
-
path:
|
|
708
|
-
isLeaf:
|
|
709
|
-
children:
|
|
719
|
+
response: alepha622.TArray<alepha622.TObject<{
|
|
720
|
+
name: alepha622.TString;
|
|
721
|
+
path: alepha622.TString;
|
|
722
|
+
isLeaf: alepha622.TBoolean;
|
|
723
|
+
children: alepha622.TArray<alepha622.TAny>;
|
|
710
724
|
}>>;
|
|
711
725
|
}>;
|
|
712
726
|
/**
|
|
713
|
-
|
|
714
|
-
|
|
727
|
+
* List all unique configuration names.
|
|
728
|
+
*/
|
|
715
729
|
listConfigNames: alepha_server0.ActionPrimitiveFn<{
|
|
716
|
-
response:
|
|
717
|
-
names:
|
|
730
|
+
response: alepha622.TObject<{
|
|
731
|
+
names: alepha622.TArray<alepha622.TString>;
|
|
718
732
|
}>;
|
|
719
733
|
}>;
|
|
720
734
|
/**
|
|
721
|
-
|
|
722
|
-
|
|
735
|
+
* Get configurations by status.
|
|
736
|
+
*/
|
|
723
737
|
getByStatus: alepha_server0.ActionPrimitiveFn<{
|
|
724
|
-
params:
|
|
725
|
-
status:
|
|
738
|
+
params: alepha622.TObject<{
|
|
739
|
+
status: alepha622.TUnsafe<"expired" | "current" | "next" | "future">;
|
|
726
740
|
}>;
|
|
727
|
-
response:
|
|
728
|
-
configs:
|
|
729
|
-
id:
|
|
730
|
-
createdAt:
|
|
731
|
-
updatedAt:
|
|
732
|
-
name:
|
|
733
|
-
content:
|
|
734
|
-
schemaHash:
|
|
735
|
-
status:
|
|
736
|
-
activationDate:
|
|
737
|
-
expiredAt:
|
|
738
|
-
version:
|
|
739
|
-
changeDescription:
|
|
740
|
-
tags:
|
|
741
|
-
creatorId:
|
|
742
|
-
creatorName:
|
|
743
|
-
previousContent:
|
|
744
|
-
migrationLog:
|
|
741
|
+
response: alepha622.TObject<{
|
|
742
|
+
configs: alepha622.TArray<alepha622.TObject<{
|
|
743
|
+
id: alepha622.TString;
|
|
744
|
+
createdAt: alepha622.TString;
|
|
745
|
+
updatedAt: alepha622.TString;
|
|
746
|
+
name: alepha622.TString;
|
|
747
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
748
|
+
schemaHash: alepha622.TString;
|
|
749
|
+
status: alepha622.TUnsafe<"expired" | "current" | "next" | "future">;
|
|
750
|
+
activationDate: alepha622.TString;
|
|
751
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
752
|
+
version: alepha622.TInteger;
|
|
753
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
754
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
755
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
756
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
757
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
758
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
745
759
|
}>>;
|
|
746
760
|
}>;
|
|
747
761
|
}>;
|
|
748
762
|
/**
|
|
749
|
-
|
|
750
|
-
|
|
763
|
+
* Get version history for a specific configuration.
|
|
764
|
+
*/
|
|
751
765
|
getHistory: alepha_server0.ActionPrimitiveFn<{
|
|
752
|
-
params:
|
|
753
|
-
name:
|
|
766
|
+
params: alepha622.TObject<{
|
|
767
|
+
name: alepha622.TString;
|
|
754
768
|
}>;
|
|
755
|
-
response:
|
|
756
|
-
versions:
|
|
757
|
-
id:
|
|
758
|
-
createdAt:
|
|
759
|
-
updatedAt:
|
|
760
|
-
name:
|
|
761
|
-
content:
|
|
762
|
-
schemaHash:
|
|
763
|
-
status:
|
|
764
|
-
activationDate:
|
|
765
|
-
expiredAt:
|
|
766
|
-
version:
|
|
767
|
-
changeDescription:
|
|
768
|
-
tags:
|
|
769
|
-
creatorId:
|
|
770
|
-
creatorName:
|
|
771
|
-
previousContent:
|
|
772
|
-
migrationLog:
|
|
769
|
+
response: alepha622.TObject<{
|
|
770
|
+
versions: alepha622.TArray<alepha622.TObject<{
|
|
771
|
+
id: alepha622.TString;
|
|
772
|
+
createdAt: alepha622.TString;
|
|
773
|
+
updatedAt: alepha622.TString;
|
|
774
|
+
name: alepha622.TString;
|
|
775
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
776
|
+
schemaHash: alepha622.TString;
|
|
777
|
+
status: alepha622.TUnsafe<"expired" | "current" | "next" | "future">;
|
|
778
|
+
activationDate: alepha622.TString;
|
|
779
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
780
|
+
version: alepha622.TInteger;
|
|
781
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
782
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
783
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
784
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
785
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
786
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
773
787
|
}>>;
|
|
774
788
|
}>;
|
|
775
789
|
}>;
|
|
776
790
|
/**
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
791
|
+
* Get current and next values for a configuration.
|
|
792
|
+
* Includes defaultValue and currentValue from the registered primitive
|
|
793
|
+
* even if no versions exist in the database yet.
|
|
794
|
+
*/
|
|
781
795
|
getCurrent: alepha_server0.ActionPrimitiveFn<{
|
|
782
|
-
params:
|
|
783
|
-
name:
|
|
796
|
+
params: alepha622.TObject<{
|
|
797
|
+
name: alepha622.TString;
|
|
784
798
|
}>;
|
|
785
|
-
response:
|
|
786
|
-
current:
|
|
787
|
-
id:
|
|
788
|
-
createdAt:
|
|
789
|
-
updatedAt:
|
|
790
|
-
name:
|
|
791
|
-
content:
|
|
792
|
-
schemaHash:
|
|
793
|
-
status:
|
|
794
|
-
activationDate:
|
|
795
|
-
expiredAt:
|
|
796
|
-
version:
|
|
797
|
-
changeDescription:
|
|
798
|
-
tags:
|
|
799
|
-
creatorId:
|
|
800
|
-
creatorName:
|
|
801
|
-
previousContent:
|
|
802
|
-
migrationLog:
|
|
799
|
+
response: alepha622.TObject<{
|
|
800
|
+
current: alepha622.TOptional<alepha622.TObject<{
|
|
801
|
+
id: alepha622.TString;
|
|
802
|
+
createdAt: alepha622.TString;
|
|
803
|
+
updatedAt: alepha622.TString;
|
|
804
|
+
name: alepha622.TString;
|
|
805
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
806
|
+
schemaHash: alepha622.TString;
|
|
807
|
+
status: alepha622.TUnsafe<"expired" | "current" | "next" | "future">;
|
|
808
|
+
activationDate: alepha622.TString;
|
|
809
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
810
|
+
version: alepha622.TInteger;
|
|
811
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
812
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
813
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
814
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
815
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
816
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
803
817
|
}>>;
|
|
804
|
-
next:
|
|
805
|
-
id:
|
|
806
|
-
createdAt:
|
|
807
|
-
updatedAt:
|
|
808
|
-
name:
|
|
809
|
-
content:
|
|
810
|
-
schemaHash:
|
|
811
|
-
status:
|
|
812
|
-
activationDate:
|
|
813
|
-
expiredAt:
|
|
814
|
-
version:
|
|
815
|
-
changeDescription:
|
|
816
|
-
tags:
|
|
817
|
-
creatorId:
|
|
818
|
-
creatorName:
|
|
819
|
-
previousContent:
|
|
820
|
-
migrationLog:
|
|
818
|
+
next: alepha622.TOptional<alepha622.TObject<{
|
|
819
|
+
id: alepha622.TString;
|
|
820
|
+
createdAt: alepha622.TString;
|
|
821
|
+
updatedAt: alepha622.TString;
|
|
822
|
+
name: alepha622.TString;
|
|
823
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
824
|
+
schemaHash: alepha622.TString;
|
|
825
|
+
status: alepha622.TUnsafe<"expired" | "current" | "next" | "future">;
|
|
826
|
+
activationDate: alepha622.TString;
|
|
827
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
828
|
+
version: alepha622.TInteger;
|
|
829
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
830
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
831
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
832
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
833
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
834
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
821
835
|
}>>;
|
|
822
|
-
defaultValue:
|
|
823
|
-
currentValue:
|
|
824
|
-
schema:
|
|
836
|
+
defaultValue: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
837
|
+
currentValue: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
838
|
+
schema: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
825
839
|
}>;
|
|
826
840
|
}>;
|
|
827
841
|
/**
|
|
828
|
-
|
|
829
|
-
|
|
842
|
+
* Get a specific version of a configuration.
|
|
843
|
+
*/
|
|
830
844
|
getVersion: alepha_server0.ActionPrimitiveFn<{
|
|
831
|
-
params:
|
|
832
|
-
name:
|
|
833
|
-
version:
|
|
845
|
+
params: alepha622.TObject<{
|
|
846
|
+
name: alepha622.TString;
|
|
847
|
+
version: alepha622.TInteger;
|
|
834
848
|
}>;
|
|
835
|
-
response:
|
|
836
|
-
config:
|
|
837
|
-
id:
|
|
838
|
-
createdAt:
|
|
839
|
-
updatedAt:
|
|
840
|
-
name:
|
|
841
|
-
content:
|
|
842
|
-
schemaHash:
|
|
843
|
-
status:
|
|
844
|
-
activationDate:
|
|
845
|
-
expiredAt:
|
|
846
|
-
version:
|
|
847
|
-
changeDescription:
|
|
848
|
-
tags:
|
|
849
|
-
creatorId:
|
|
850
|
-
creatorName:
|
|
851
|
-
previousContent:
|
|
852
|
-
migrationLog:
|
|
849
|
+
response: alepha622.TObject<{
|
|
850
|
+
config: alepha622.TOptional<alepha622.TObject<{
|
|
851
|
+
id: alepha622.TString;
|
|
852
|
+
createdAt: alepha622.TString;
|
|
853
|
+
updatedAt: alepha622.TString;
|
|
854
|
+
name: alepha622.TString;
|
|
855
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
856
|
+
schemaHash: alepha622.TString;
|
|
857
|
+
status: alepha622.TUnsafe<"expired" | "current" | "next" | "future">;
|
|
858
|
+
activationDate: alepha622.TString;
|
|
859
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
860
|
+
version: alepha622.TInteger;
|
|
861
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
862
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
863
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
864
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
865
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
866
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
853
867
|
}>>;
|
|
854
868
|
}>;
|
|
855
869
|
}>;
|
|
856
870
|
/**
|
|
857
|
-
|
|
858
|
-
|
|
871
|
+
* Create a new configuration version.
|
|
872
|
+
*/
|
|
859
873
|
createVersion: alepha_server0.ActionPrimitiveFn<{
|
|
860
|
-
params:
|
|
861
|
-
name:
|
|
874
|
+
params: alepha622.TObject<{
|
|
875
|
+
name: alepha622.TString;
|
|
862
876
|
}>;
|
|
863
|
-
body:
|
|
864
|
-
content:
|
|
865
|
-
schemaHash:
|
|
866
|
-
activationDate:
|
|
867
|
-
changeDescription:
|
|
868
|
-
tags:
|
|
869
|
-
creatorId:
|
|
870
|
-
creatorName:
|
|
877
|
+
body: alepha622.TObject<{
|
|
878
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
879
|
+
schemaHash: alepha622.TString;
|
|
880
|
+
activationDate: alepha622.TOptional<alepha622.TString>;
|
|
881
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
882
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
883
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
884
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
871
885
|
}>;
|
|
872
|
-
response:
|
|
873
|
-
id:
|
|
874
|
-
createdAt:
|
|
875
|
-
updatedAt:
|
|
876
|
-
name:
|
|
877
|
-
content:
|
|
878
|
-
schemaHash:
|
|
879
|
-
status:
|
|
880
|
-
activationDate:
|
|
881
|
-
expiredAt:
|
|
882
|
-
version:
|
|
883
|
-
changeDescription:
|
|
884
|
-
tags:
|
|
885
|
-
creatorId:
|
|
886
|
-
creatorName:
|
|
887
|
-
previousContent:
|
|
888
|
-
migrationLog:
|
|
886
|
+
response: alepha622.TObject<{
|
|
887
|
+
id: alepha622.TString;
|
|
888
|
+
createdAt: alepha622.TString;
|
|
889
|
+
updatedAt: alepha622.TString;
|
|
890
|
+
name: alepha622.TString;
|
|
891
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
892
|
+
schemaHash: alepha622.TString;
|
|
893
|
+
status: alepha622.TUnsafe<"expired" | "current" | "next" | "future">;
|
|
894
|
+
activationDate: alepha622.TString;
|
|
895
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
896
|
+
version: alepha622.TInteger;
|
|
897
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
898
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
899
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
900
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
901
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
902
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
889
903
|
}>;
|
|
890
904
|
}>;
|
|
891
905
|
/**
|
|
892
|
-
|
|
893
|
-
|
|
906
|
+
* Rollback to a previous version.
|
|
907
|
+
*/
|
|
894
908
|
rollback: alepha_server0.ActionPrimitiveFn<{
|
|
895
|
-
params:
|
|
896
|
-
name:
|
|
909
|
+
params: alepha622.TObject<{
|
|
910
|
+
name: alepha622.TString;
|
|
897
911
|
}>;
|
|
898
|
-
body:
|
|
899
|
-
targetVersion:
|
|
900
|
-
changeDescription:
|
|
901
|
-
creatorId:
|
|
902
|
-
creatorName:
|
|
912
|
+
body: alepha622.TObject<{
|
|
913
|
+
targetVersion: alepha622.TInteger;
|
|
914
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
915
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
916
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
903
917
|
}>;
|
|
904
|
-
response:
|
|
905
|
-
id:
|
|
906
|
-
createdAt:
|
|
907
|
-
updatedAt:
|
|
908
|
-
name:
|
|
909
|
-
content:
|
|
910
|
-
schemaHash:
|
|
911
|
-
status:
|
|
912
|
-
activationDate:
|
|
913
|
-
expiredAt:
|
|
914
|
-
version:
|
|
915
|
-
changeDescription:
|
|
916
|
-
tags:
|
|
917
|
-
creatorId:
|
|
918
|
-
creatorName:
|
|
919
|
-
previousContent:
|
|
920
|
-
migrationLog:
|
|
918
|
+
response: alepha622.TObject<{
|
|
919
|
+
id: alepha622.TString;
|
|
920
|
+
createdAt: alepha622.TString;
|
|
921
|
+
updatedAt: alepha622.TString;
|
|
922
|
+
name: alepha622.TString;
|
|
923
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
924
|
+
schemaHash: alepha622.TString;
|
|
925
|
+
status: alepha622.TUnsafe<"expired" | "current" | "next" | "future">;
|
|
926
|
+
activationDate: alepha622.TString;
|
|
927
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
928
|
+
version: alepha622.TInteger;
|
|
929
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
930
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
931
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
932
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
933
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
934
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
921
935
|
}>;
|
|
922
936
|
}>;
|
|
923
937
|
/**
|
|
924
|
-
|
|
925
|
-
|
|
938
|
+
* Activate a scheduled version immediately.
|
|
939
|
+
*/
|
|
926
940
|
activateNow: alepha_server0.ActionPrimitiveFn<{
|
|
927
|
-
params:
|
|
928
|
-
name:
|
|
941
|
+
params: alepha622.TObject<{
|
|
942
|
+
name: alepha622.TString;
|
|
929
943
|
}>;
|
|
930
|
-
body:
|
|
931
|
-
version:
|
|
932
|
-
creatorId:
|
|
933
|
-
creatorName:
|
|
944
|
+
body: alepha622.TObject<{
|
|
945
|
+
version: alepha622.TInteger;
|
|
946
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
947
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
934
948
|
}>;
|
|
935
|
-
response:
|
|
936
|
-
id:
|
|
937
|
-
createdAt:
|
|
938
|
-
updatedAt:
|
|
939
|
-
name:
|
|
940
|
-
content:
|
|
941
|
-
schemaHash:
|
|
942
|
-
status:
|
|
943
|
-
activationDate:
|
|
944
|
-
expiredAt:
|
|
945
|
-
version:
|
|
946
|
-
changeDescription:
|
|
947
|
-
tags:
|
|
948
|
-
creatorId:
|
|
949
|
-
creatorName:
|
|
950
|
-
previousContent:
|
|
951
|
-
migrationLog:
|
|
949
|
+
response: alepha622.TObject<{
|
|
950
|
+
id: alepha622.TString;
|
|
951
|
+
createdAt: alepha622.TString;
|
|
952
|
+
updatedAt: alepha622.TString;
|
|
953
|
+
name: alepha622.TString;
|
|
954
|
+
content: alepha622.TRecord<string, alepha622.TAny>;
|
|
955
|
+
schemaHash: alepha622.TString;
|
|
956
|
+
status: alepha622.TUnsafe<"expired" | "current" | "next" | "future">;
|
|
957
|
+
activationDate: alepha622.TString;
|
|
958
|
+
expiredAt: alepha622.TOptional<alepha622.TString>;
|
|
959
|
+
version: alepha622.TInteger;
|
|
960
|
+
changeDescription: alepha622.TOptional<alepha622.TString>;
|
|
961
|
+
tags: alepha622.TOptional<alepha622.TArray<alepha622.TString>>;
|
|
962
|
+
creatorId: alepha622.TOptional<alepha622.TString>;
|
|
963
|
+
creatorName: alepha622.TOptional<alepha622.TString>;
|
|
964
|
+
previousContent: alepha622.TOptional<alepha622.TRecord<string, alepha622.TAny>>;
|
|
965
|
+
migrationLog: alepha622.TOptional<alepha622.TString>;
|
|
952
966
|
}>;
|
|
953
967
|
}>;
|
|
954
968
|
/**
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
969
|
+
* Trigger activation check for all scheduled configs.
|
|
970
|
+
* Normally called by a scheduler, but exposed for manual triggering.
|
|
971
|
+
*/
|
|
958
972
|
checkScheduled: alepha_server0.ActionPrimitiveFn<{
|
|
959
|
-
response:
|
|
960
|
-
message:
|
|
973
|
+
response: alepha622.TObject<{
|
|
974
|
+
message: alepha622.TString;
|
|
961
975
|
}>;
|
|
962
976
|
}>;
|
|
963
977
|
}
|
|
@@ -974,49 +988,28 @@ declare class ConfigActivationScheduler {
|
|
|
974
988
|
protected readonly log: alepha_logger0.Logger;
|
|
975
989
|
protected readonly store: ConfigStore;
|
|
976
990
|
/**
|
|
977
|
-
|
|
978
|
-
|
|
991
|
+
* Check for scheduled configurations every minute.
|
|
992
|
+
*/
|
|
979
993
|
checkActivations: alepha_scheduler0.SchedulerPrimitive;
|
|
980
994
|
}
|
|
981
995
|
//#endregion
|
|
982
996
|
//#region ../../src/api/parameters/index.d.ts
|
|
983
997
|
/**
|
|
984
|
-
*
|
|
998
|
+
* | type | quality | stability |
|
|
999
|
+
* |------|---------|-----------|
|
|
1000
|
+
* | backend | standard | stable |
|
|
985
1001
|
*
|
|
986
|
-
*
|
|
987
|
-
* - Type-safe, versioned configuration with `$config` primitive
|
|
988
|
-
* - Schema validation with auto-migration detection
|
|
989
|
-
* - Scheduled activation (FUTURE, NEXT, CURRENT, EXPIRED statuses)
|
|
990
|
-
* - PostgreSQL persistence with full version history
|
|
991
|
-
* - Cross-instance synchronization via topic
|
|
992
|
-
* - Tree view support via dot-notation naming
|
|
993
|
-
* - REST API for configuration management
|
|
994
|
-
* - Automatic activation scheduler
|
|
1002
|
+
* Application configuration management.
|
|
995
1003
|
*
|
|
996
|
-
*
|
|
997
|
-
*
|
|
998
|
-
*
|
|
999
|
-
*
|
|
1000
|
-
*
|
|
1001
|
-
* const alepha = Alepha.create();
|
|
1002
|
-
* alepha.with(AlephaApiParameters);
|
|
1003
|
-
*
|
|
1004
|
-
* // Then use $config in your services:
|
|
1005
|
-
* class AppConfig {
|
|
1006
|
-
* features = $config({
|
|
1007
|
-
* name: "app.features.flags",
|
|
1008
|
-
* schema: t.object({
|
|
1009
|
-
* enableBeta: t.boolean(),
|
|
1010
|
-
* maxUploadSize: t.number()
|
|
1011
|
-
* }),
|
|
1012
|
-
* default: { enableBeta: false, maxUploadSize: 10485760 }
|
|
1013
|
-
* });
|
|
1014
|
-
* }
|
|
1015
|
-
* ```
|
|
1004
|
+
* **Features:**
|
|
1005
|
+
* - Versioned configuration definitions
|
|
1006
|
+
* - Scheduled activation (FUTURE, NEXT, CURRENT, EXPIRED)
|
|
1007
|
+
* - Schema validation with migration detection
|
|
1008
|
+
* - Cross-instance sync via pub/sub
|
|
1016
1009
|
*
|
|
1017
1010
|
* @module alepha.api.parameters
|
|
1018
1011
|
*/
|
|
1019
|
-
declare const AlephaApiParameters:
|
|
1012
|
+
declare const AlephaApiParameters: alepha622.Service<alepha622.Module>;
|
|
1020
1013
|
//#endregion
|
|
1021
1014
|
export { $config, AdminConfigController, AlephaApiParameters, ConfigActivationScheduler, ConfigPrimitive, ConfigPrimitiveOptions, ConfigStore, ConfigSyncPayload, ConfigTreeNode, Parameter, ParameterInsert, type ParameterStatus, SaveConfigOptions, SetConfigOptions, parameters };
|
|
1022
1015
|
//# sourceMappingURL=index.d.ts.map
|