@undefineds.co/xpod 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +164 -3
- package/config/cli.json +9 -71
- package/config/cloud.json +34 -7
- package/config/local.json +6 -2
- package/config/resolver.json +11 -49
- package/config/runtime-open.json +22 -0
- package/config/xpod.base.json +32 -0
- package/config/xpod.cluster.json +2 -44
- package/config/xpod.json +5 -2
- package/dist/agents/AgentExecutorFactory.js +1 -1
- package/dist/agents/AgentExecutorFactory.js.map +1 -1
- package/dist/agents/AgentManager.js +1 -1
- package/dist/agents/AgentManager.js.map +1 -1
- package/dist/agents/config/agent-meta-schema.d.ts +7 -7
- package/dist/agents/config/agent-meta-schema.js +1 -1
- package/dist/agents/config/agent-meta-schema.js.map +1 -1
- package/dist/agents/config/resolve.js +1 -1
- package/dist/agents/config/resolve.js.map +1 -1
- package/dist/agents/schema/agent-config.d.ts +18 -18
- package/dist/agents/schema/agent-config.js +1 -1
- package/dist/agents/schema/agent-config.js.map +1 -1
- package/dist/agents/schema/tables.d.ts +8 -8
- package/dist/agents/schema/tables.js +1 -1
- package/dist/agents/schema/tables.js.map +1 -1
- package/dist/ai/schema/config.d.ts +7 -7
- package/dist/ai/schema/config.js +1 -1
- package/dist/ai/schema/config.js.map +1 -1
- package/dist/ai/schema/model.d.ts +13 -13
- package/dist/ai/schema/model.js +1 -1
- package/dist/ai/schema/model.js.map +1 -1
- package/dist/ai/schema/provider.d.ts +7 -7
- package/dist/ai/schema/provider.js +1 -1
- package/dist/ai/schema/provider.js.map +1 -1
- package/dist/ai/schema/vector-store.d.ts +17 -17
- package/dist/ai/schema/vector-store.js +1 -1
- package/dist/ai/schema/vector-store.js.map +1 -1
- package/dist/ai/service/CredentialReaderImpl.js +1 -1
- package/dist/ai/service/CredentialReaderImpl.js.map +1 -1
- package/dist/ai/service/DefaultAiConfigService.js.map +1 -1
- package/dist/api/ApiServer.d.ts +3 -1
- package/dist/api/ApiServer.js +14 -1
- package/dist/api/ApiServer.js.map +1 -1
- package/dist/api/auth/AuthContext.d.ts +12 -1
- package/dist/api/auth/AuthContext.js +18 -1
- package/dist/api/auth/AuthContext.js.map +1 -1
- package/dist/api/auth/ClientCredentialsAuthenticator.d.ts +0 -1
- package/dist/api/auth/ClientCredentialsAuthenticator.js.map +1 -1
- package/dist/api/auth/ServiceTokenAuthenticator.d.ts +18 -0
- package/dist/api/auth/ServiceTokenAuthenticator.js +50 -0
- package/dist/api/auth/ServiceTokenAuthenticator.js.map +1 -0
- package/dist/api/auth/index.d.ts +1 -0
- package/dist/api/auth/index.js +1 -0
- package/dist/api/auth/index.js.map +1 -1
- package/dist/api/chatkit/ai-provider.d.ts +0 -10
- package/dist/api/chatkit/ai-provider.js +11 -120
- package/dist/api/chatkit/ai-provider.js.map +1 -1
- package/dist/api/chatkit/default-agent.js +11 -8
- package/dist/api/chatkit/default-agent.js.map +1 -1
- package/dist/api/chatkit/pod-store.d.ts +6 -0
- package/dist/api/chatkit/pod-store.js +103 -36
- package/dist/api/chatkit/pod-store.js.map +1 -1
- package/dist/api/chatkit/schema.d.ts +32 -26
- package/dist/api/chatkit/schema.js +16 -8
- package/dist/api/chatkit/schema.js.map +1 -1
- package/dist/api/container/business-token.d.ts +9 -0
- package/dist/api/container/business-token.js +32 -0
- package/dist/api/container/business-token.js.map +1 -0
- package/dist/api/container/cloud.js +36 -12
- package/dist/api/container/cloud.js.map +1 -1
- package/dist/api/container/common.js +13 -5
- package/dist/api/container/common.js.map +1 -1
- package/dist/api/container/index.js +94 -14
- package/dist/api/container/index.js.map +1 -1
- package/dist/api/container/local.js +2 -1
- package/dist/api/container/local.js.map +1 -1
- package/dist/api/container/routes.js +81 -9
- package/dist/api/container/routes.js.map +1 -1
- package/dist/api/container/types.d.ts +8 -6
- package/dist/api/container/types.js.map +1 -1
- package/dist/api/handlers/AdminHandler.js +9 -9
- package/dist/api/handlers/AdminHandler.js.map +1 -1
- package/dist/api/handlers/ApiKeyHandler.js +0 -6
- package/dist/api/handlers/ApiKeyHandler.js.map +1 -1
- package/dist/api/handlers/EdgeNodeSignalHandler.d.ts +17 -0
- package/dist/api/handlers/EdgeNodeSignalHandler.js +171 -0
- package/dist/api/handlers/EdgeNodeSignalHandler.js.map +1 -0
- package/dist/api/handlers/PodManagementHandler.d.ts +5 -4
- package/dist/api/handlers/PodManagementHandler.js +11 -10
- package/dist/api/handlers/PodManagementHandler.js.map +1 -1
- package/dist/api/handlers/ProvisionHandler.d.ts +42 -0
- package/dist/api/handlers/ProvisionHandler.js +161 -0
- package/dist/api/handlers/ProvisionHandler.js.map +1 -0
- package/dist/api/handlers/QuotaHandler.d.ts +7 -7
- package/dist/api/handlers/QuotaHandler.js +143 -73
- package/dist/api/handlers/QuotaHandler.js.map +1 -1
- package/dist/api/handlers/SubdomainClientHandler.js +2 -2
- package/dist/api/handlers/SubdomainClientHandler.js.map +1 -1
- package/dist/api/handlers/SubdomainHandler.js +13 -8
- package/dist/api/handlers/SubdomainHandler.js.map +1 -1
- package/dist/api/handlers/UsageHandler.d.ts +14 -0
- package/dist/api/handlers/UsageHandler.js +123 -0
- package/dist/api/handlers/UsageHandler.js.map +1 -0
- package/dist/api/handlers/index.d.ts +3 -1
- package/dist/api/handlers/index.js +3 -1
- package/dist/api/handlers/index.js.map +1 -1
- package/dist/api/main.js +18 -0
- package/dist/api/main.js.map +1 -1
- package/dist/api/middleware/OpenAuthMiddleware.d.ts +12 -0
- package/dist/api/middleware/OpenAuthMiddleware.js +27 -0
- package/dist/api/middleware/OpenAuthMiddleware.js.map +1 -0
- package/dist/api/runtime.d.ts +15 -0
- package/dist/api/runtime.js +125 -0
- package/dist/api/runtime.js.map +1 -0
- package/dist/api/service/VectorStoreService.js +1 -1
- package/dist/api/service/VectorStoreService.js.map +1 -1
- package/dist/api/service/VercelChatService.d.ts +16 -7
- package/dist/api/service/VercelChatService.js +98 -178
- package/dist/api/service/VercelChatService.js.map +1 -1
- package/dist/api/store/DrizzleClientCredentialsStore.d.ts +6 -11
- package/dist/api/store/DrizzleClientCredentialsStore.js +9 -39
- package/dist/api/store/DrizzleClientCredentialsStore.js.map +1 -1
- package/dist/authorization/AuthModeSelector.d.ts +10 -0
- package/dist/authorization/AuthModeSelector.js +27 -0
- package/dist/authorization/AuthModeSelector.js.map +1 -0
- package/dist/authorization/AuthModeSelector.jsonld +81 -0
- package/dist/cli/commands/account.d.ts +6 -0
- package/dist/cli/commands/account.js +119 -0
- package/dist/cli/commands/account.js.map +1 -0
- package/dist/cli/commands/auth.js +20 -29
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/backup.d.ts +15 -0
- package/dist/cli/commands/backup.js +286 -0
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/config.d.ts +34 -3
- package/dist/cli/commands/config.js +195 -258
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +6 -0
- package/dist/cli/commands/doctor.js +94 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/pod.d.ts +6 -0
- package/dist/cli/commands/pod.js +124 -0
- package/dist/cli/commands/pod.js.map +1 -0
- package/dist/cli/commands/start.js +28 -5
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/lib/credentials-store.d.ts +17 -0
- package/dist/cli/lib/credentials-store.js +73 -0
- package/dist/cli/lib/credentials-store.js.map +1 -0
- package/dist/cli/lib/css-account.d.ts +17 -0
- package/dist/cli/lib/css-account.js +56 -0
- package/dist/cli/lib/css-account.js.map +1 -1
- package/dist/cli/lib/pod-thread-store.d.ts +57 -0
- package/dist/cli/lib/pod-thread-store.js +310 -0
- package/dist/cli/lib/pod-thread-store.js.map +1 -0
- package/dist/cli/lib/solid-auth.d.ts +20 -0
- package/dist/cli/lib/solid-auth.js +70 -0
- package/dist/cli/lib/solid-auth.js.map +1 -0
- package/dist/components/components.jsonld +5 -8
- package/dist/components/context.jsonld +114 -244
- package/dist/credential/schema/tables.d.ts +14 -14
- package/dist/credential/schema/tables.js +1 -1
- package/dist/credential/schema/tables.js.map +1 -1
- package/dist/edge/EdgeNodeAgent.js +2 -2
- package/dist/edge/EdgeNodeAgent.js.map +1 -1
- package/dist/edge/EdgeNodeDnsCoordinator.d.ts +1 -7
- package/dist/edge/EdgeNodeDnsCoordinator.js +31 -41
- package/dist/edge/EdgeNodeDnsCoordinator.js.map +1 -1
- package/dist/edge/EdgeNodeDnsCoordinator.jsonld +1 -27
- package/dist/edge/EdgeNodeModeDetector.d.ts +1 -1
- package/dist/edge/EdgeNodeModeDetector.js +9 -11
- package/dist/edge/EdgeNodeModeDetector.js.map +1 -1
- package/dist/http/ClusterIngressRouter.js +3 -3
- package/dist/http/ClusterIngressRouter.js.map +1 -1
- package/dist/http/ClusterWebSocketConfigurator.js +2 -2
- package/dist/http/ClusterWebSocketConfigurator.js.map +1 -1
- package/dist/http/PodRoutingHttpHandler.js +2 -2
- package/dist/http/PodRoutingHttpHandler.js.map +1 -1
- package/dist/http/cluster/PodMigrationHttpHandler.d.ts +1 -1
- package/dist/http/cluster/PodMigrationHttpHandler.js +1 -1
- package/dist/http/cluster/PodMigrationHttpHandler.js.map +1 -1
- package/dist/identity/drizzle/EdgeNodeRepository.d.ts +37 -4
- package/dist/identity/drizzle/EdgeNodeRepository.js +120 -128
- package/dist/identity/drizzle/EdgeNodeRepository.js.map +1 -1
- package/dist/identity/drizzle/ServiceTokenRepository.d.ts +52 -0
- package/dist/identity/drizzle/ServiceTokenRepository.js +142 -0
- package/dist/identity/drizzle/ServiceTokenRepository.js.map +1 -0
- package/dist/identity/drizzle/db.d.ts +9 -0
- package/dist/identity/drizzle/db.js +235 -3
- package/dist/identity/drizzle/db.js.map +1 -1
- package/dist/identity/drizzle/schema.pg.d.ts +5 -0
- package/dist/identity/drizzle/schema.pg.js +49 -20
- package/dist/identity/drizzle/schema.pg.js.map +1 -1
- package/dist/identity/drizzle/schema.sqlite.d.ts +332 -57
- package/dist/identity/drizzle/schema.sqlite.js +48 -18
- package/dist/identity/drizzle/schema.sqlite.js.map +1 -1
- package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js +6 -4
- package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js.map +1 -1
- package/dist/index.d.ts +6 -9
- package/dist/index.js +12 -14
- package/dist/index.js.map +1 -1
- package/dist/main.js +25 -8
- package/dist/main.js.map +1 -1
- package/dist/provision/ProvisionCodeCodec.d.ts +39 -0
- package/dist/provision/ProvisionCodeCodec.js +65 -0
- package/dist/provision/ProvisionCodeCodec.js.map +1 -0
- package/dist/provision/ProvisionCodeCodec.jsonld +47 -0
- package/dist/provision/ProvisionPodCreator.d.ts +20 -0
- package/dist/provision/ProvisionPodCreator.js +84 -0
- package/dist/provision/ProvisionPodCreator.js.map +1 -0
- package/dist/provision/ProvisionPodCreator.jsonld +118 -0
- package/dist/quota/DrizzleQuotaService.d.ts +17 -3
- package/dist/quota/DrizzleQuotaService.js +108 -8
- package/dist/quota/DrizzleQuotaService.js.map +1 -1
- package/dist/quota/DrizzleQuotaService.jsonld +33 -22
- package/dist/quota/NoopQuotaService.d.ts +7 -1
- package/dist/quota/NoopQuotaService.js +12 -0
- package/dist/quota/NoopQuotaService.js.map +1 -1
- package/dist/quota/NoopQuotaService.jsonld +24 -0
- package/dist/quota/QuotaService.d.ts +17 -0
- package/dist/quota/QuotaService.js +5 -0
- package/dist/quota/QuotaService.js.map +1 -1
- package/dist/quota/QuotaService.jsonld +50 -0
- package/dist/runtime/Proxy.d.ts +22 -4
- package/dist/runtime/Proxy.js +154 -35
- package/dist/runtime/Proxy.js.map +1 -1
- package/dist/runtime/XpodRuntime.d.ts +49 -0
- package/dist/runtime/XpodRuntime.js +374 -0
- package/dist/runtime/XpodRuntime.js.map +1 -0
- package/dist/runtime/env-utils.d.ts +2 -0
- package/dist/runtime/env-utils.js +55 -0
- package/dist/runtime/env-utils.js.map +1 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.js +8 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/socket-fetch.d.ts +1 -0
- package/dist/runtime/socket-fetch.js +72 -0
- package/dist/runtime/socket-fetch.js.map +1 -0
- package/dist/runtime/socket-http.d.ts +1 -0
- package/dist/runtime/socket-http.js +142 -0
- package/dist/runtime/socket-http.js.map +1 -0
- package/dist/runtime/socket-utils.d.ts +2 -0
- package/dist/runtime/socket-utils.js +34 -0
- package/dist/runtime/socket-utils.js.map +1 -0
- package/dist/service/{EdgeNodeHeartbeatService.d.ts → EdgeNodeSignalClient.d.ts} +3 -3
- package/dist/service/{EdgeNodeHeartbeatService.js → EdgeNodeSignalClient.js} +4 -4
- package/dist/service/EdgeNodeSignalClient.js.map +1 -0
- package/dist/service/PodMigrationService.d.ts +1 -2
- package/dist/service/PodMigrationService.js +1 -2
- package/dist/service/PodMigrationService.js.map +1 -1
- package/dist/storage/SparqlUpdateResourceStore.js +1 -1
- package/dist/storage/SparqlUpdateResourceStore.js.map +1 -1
- package/dist/storage/accessors/MinioDataAccessor.d.ts +6 -0
- package/dist/storage/accessors/MinioDataAccessor.js +10 -0
- package/dist/storage/accessors/MinioDataAccessor.js.map +1 -1
- package/dist/storage/accessors/MinioDataAccessor.jsonld +4 -0
- package/dist/storage/accessors/MixDataAccessor.d.ts +2 -1
- package/dist/storage/accessors/MixDataAccessor.js +12 -1
- package/dist/storage/accessors/MixDataAccessor.js.map +1 -1
- package/dist/storage/accessors/MixDataAccessor.jsonld +19 -0
- package/dist/storage/locking/UrlAwareRedisLocker.d.ts +18 -0
- package/dist/storage/locking/UrlAwareRedisLocker.js +60 -0
- package/dist/storage/locking/UrlAwareRedisLocker.js.map +1 -0
- package/dist/storage/locking/UrlAwareRedisLocker.jsonld +123 -0
- package/dist/storage/quota/UsageRepository.d.ts +41 -8
- package/dist/storage/quota/UsageRepository.js +252 -50
- package/dist/storage/quota/UsageRepository.js.map +1 -1
- package/dist/storage/sparql/ComunicaQuintEngine.d.ts +9 -0
- package/dist/storage/sparql/ComunicaQuintEngine.js +50 -9
- package/dist/storage/sparql/ComunicaQuintEngine.js.map +1 -1
- package/dist/storage/sparql/QueryOptimizer.js +13 -1
- package/dist/storage/sparql/QueryOptimizer.js.map +1 -1
- package/dist/storage/sparql/QuintQuerySource.d.ts +14 -0
- package/dist/storage/sparql/QuintQuerySource.js +152 -1
- package/dist/storage/sparql/QuintQuerySource.js.map +1 -1
- package/dist/storage/sparql/SubgraphQueryEngine.d.ts +1 -0
- package/dist/storage/sparql/SubgraphQueryEngine.js +6 -2
- package/dist/storage/sparql/SubgraphQueryEngine.js.map +1 -1
- package/dist/storage/sparql/SubgraphQueryEngine.jsonld +4 -0
- package/dist/subdomain/SubdomainClient.d.ts +3 -3
- package/dist/subdomain/SubdomainClient.js +1 -1
- package/dist/subdomain/SubdomainClient.js.map +1 -1
- package/dist/subdomain/SubdomainService.d.ts +15 -16
- package/dist/subdomain/SubdomainService.js +80 -54
- package/dist/subdomain/SubdomainService.js.map +1 -1
- package/dist/subdomain/SubdomainService.jsonld +22 -26
- package/dist/supervisor/Supervisor.d.ts +7 -2
- package/dist/supervisor/Supervisor.js +33 -1
- package/dist/supervisor/Supervisor.js.map +1 -1
- package/dist/task/DrizzleTaskQueue.d.ts +1 -1
- package/dist/task/DrizzleTaskQueue.js +1 -1
- package/dist/task/DrizzleTaskQueue.js.map +1 -1
- package/dist/task/schema.d.ts +10 -10
- package/dist/task/schema.js +1 -1
- package/dist/task/schema.js.map +1 -1
- package/dist/test-utils/index.d.ts +4 -0
- package/dist/test-utils/index.js +8 -0
- package/dist/test-utils/index.js.map +1 -0
- package/dist/test-utils/no-auth-xpod.d.ts +11 -0
- package/dist/test-utils/no-auth-xpod.js +25 -0
- package/dist/test-utils/no-auth-xpod.js.map +1 -0
- package/dist/test-utils/seed-pod.d.ts +5 -0
- package/dist/test-utils/seed-pod.js +61 -0
- package/dist/test-utils/seed-pod.js.map +1 -0
- package/package.json +38 -10
- package/templates/identity/account/create-pod.html.ejs +110 -0
- package/templates/main.html.ejs +10 -0
- package/dist/api/handlers/DevHandler.d.ts +0 -18
- package/dist/api/handlers/DevHandler.js +0 -276
- package/dist/api/handlers/DevHandler.js.map +0 -1
- package/dist/api/handlers/SignalHandler.d.ts +0 -13
- package/dist/api/handlers/SignalHandler.js +0 -122
- package/dist/api/handlers/SignalHandler.js.map +0 -1
- package/dist/gateway/Proxy.d.ts +0 -24
- package/dist/gateway/Proxy.js +0 -209
- package/dist/gateway/Proxy.js.map +0 -1
- package/dist/gateway/Supervisor.d.ts +0 -2
- package/dist/gateway/Supervisor.js +0 -7
- package/dist/gateway/Supervisor.js.map +0 -1
- package/dist/gateway/port-finder.d.ts +0 -4
- package/dist/gateway/port-finder.js +0 -15
- package/dist/gateway/port-finder.js.map +0 -1
- package/dist/gateway/types.d.ts +0 -1
- package/dist/gateway/types.js +0 -3
- package/dist/gateway/types.js.map +0 -1
- package/dist/http/SignalInterceptHttpHandler.d.ts +0 -24
- package/dist/http/SignalInterceptHttpHandler.js +0 -47
- package/dist/http/SignalInterceptHttpHandler.js.map +0 -1
- package/dist/http/SignalInterceptHttpHandler.jsonld +0 -103
- package/dist/http/admin/EdgeNodeSignalHttpHandler.d.ts +0 -71
- package/dist/http/admin/EdgeNodeSignalHttpHandler.js +0 -674
- package/dist/http/admin/EdgeNodeSignalHttpHandler.js.map +0 -1
- package/dist/http/admin/EdgeNodeSignalHttpHandler.jsonld +0 -406
- package/dist/http/cluster/PodMigrationHttpHandler.jsonld +0 -169
- package/dist/quota/DefaultQuotaService.d.ts +0 -16
- package/dist/quota/DefaultQuotaService.js +0 -37
- package/dist/quota/DefaultQuotaService.js.map +0 -1
- package/dist/quota/DefaultQuotaService.jsonld +0 -85
- package/dist/service/EdgeNodeHeartbeatService.js.map +0 -1
- package/dist/service/PodMigrationService.jsonld +0 -76
- package/dist/storage/MigratableDataAccessor.d.ts +0 -63
- package/dist/storage/MigratableDataAccessor.js +0 -11
- package/dist/storage/MigratableDataAccessor.js.map +0 -1
- package/dist/storage/MigratableDataAccessor.jsonld +0 -60
- package/dist/storage/accessors/TieredMinioDataAccessor.d.ts +0 -150
- package/dist/storage/accessors/TieredMinioDataAccessor.js +0 -582
- package/dist/storage/accessors/TieredMinioDataAccessor.js.map +0 -1
- package/dist/storage/accessors/TieredMinioDataAccessor.jsonld +0 -333
- package/static/app/assets/index.css +0 -1
- package/static/app/assets/main.js +0 -11
|
@@ -36,16 +36,6 @@
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
|
-
"MigratableDataAccessor": {
|
|
40
|
-
"@id": "undefineds:dist/storage/MigratableDataAccessor.jsonld#MigratableDataAccessor",
|
|
41
|
-
"@prefix": true,
|
|
42
|
-
"@context": {}
|
|
43
|
-
},
|
|
44
|
-
"MigrationProgress": {
|
|
45
|
-
"@id": "undefineds:dist/storage/MigratableDataAccessor.jsonld#MigrationProgress",
|
|
46
|
-
"@prefix": true,
|
|
47
|
-
"@context": {}
|
|
48
|
-
},
|
|
49
39
|
"DnsProvider": {
|
|
50
40
|
"@id": "undefineds:dist/dns/DnsProvider.jsonld#DnsProvider",
|
|
51
41
|
"@prefix": true,
|
|
@@ -91,6 +81,11 @@
|
|
|
91
81
|
"@prefix": true,
|
|
92
82
|
"@context": {}
|
|
93
83
|
},
|
|
84
|
+
"AccountQuota": {
|
|
85
|
+
"@id": "undefineds:dist/quota/QuotaService.jsonld#AccountQuota",
|
|
86
|
+
"@prefix": true,
|
|
87
|
+
"@context": {}
|
|
88
|
+
},
|
|
94
89
|
"TunnelProvider": {
|
|
95
90
|
"@id": "undefineds:dist/tunnel/TunnelProvider.jsonld#TunnelProvider",
|
|
96
91
|
"@prefix": true,
|
|
@@ -139,8 +134,8 @@
|
|
|
139
134
|
"options_tunnelProvider": {
|
|
140
135
|
"@id": "undefineds:dist/subdomain/SubdomainService.jsonld#SubdomainService_options_tunnelProvider"
|
|
141
136
|
},
|
|
142
|
-
"
|
|
143
|
-
"@id": "undefineds:dist/subdomain/SubdomainService.jsonld#
|
|
137
|
+
"options_edgeNodeRepo": {
|
|
138
|
+
"@id": "undefineds:dist/subdomain/SubdomainService.jsonld#SubdomainService_options_edgeNodeRepo"
|
|
144
139
|
},
|
|
145
140
|
"options_reservedSubdomains": {
|
|
146
141
|
"@id": "undefineds:dist/subdomain/SubdomainService.jsonld#SubdomainService_options_reservedSubdomains",
|
|
@@ -155,8 +150,8 @@
|
|
|
155
150
|
"tunnelProvider": {
|
|
156
151
|
"@id": "undefineds:dist/subdomain/SubdomainService.jsonld#SubdomainService_options_tunnelProvider"
|
|
157
152
|
},
|
|
158
|
-
"
|
|
159
|
-
"@id": "undefineds:dist/subdomain/SubdomainService.jsonld#
|
|
153
|
+
"edgeNodeRepo": {
|
|
154
|
+
"@id": "undefineds:dist/subdomain/SubdomainService.jsonld#SubdomainService_options_edgeNodeRepo"
|
|
160
155
|
},
|
|
161
156
|
"reservedSubdomains": {
|
|
162
157
|
"@id": "undefineds:dist/subdomain/SubdomainService.jsonld#SubdomainService_options_reservedSubdomains",
|
|
@@ -299,6 +294,9 @@
|
|
|
299
294
|
"@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor",
|
|
300
295
|
"@prefix": true,
|
|
301
296
|
"@context": {
|
|
297
|
+
"presignedRedirectEnabled": {
|
|
298
|
+
"@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor_presignedRedirectEnabled"
|
|
299
|
+
},
|
|
302
300
|
"structuredDataAccessor": {
|
|
303
301
|
"@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor_structuredDataAccessor"
|
|
304
302
|
},
|
|
@@ -442,78 +440,6 @@
|
|
|
442
440
|
}
|
|
443
441
|
}
|
|
444
442
|
},
|
|
445
|
-
"EdgeNodeSignalHttpHandler": {
|
|
446
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler",
|
|
447
|
-
"@prefix": true,
|
|
448
|
-
"@context": {
|
|
449
|
-
"options_identityDbUrl": {
|
|
450
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_identityDbUrl"
|
|
451
|
-
},
|
|
452
|
-
"options_basePath": {
|
|
453
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_basePath"
|
|
454
|
-
},
|
|
455
|
-
"options_edgeNodesEnabled": {
|
|
456
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_edgeNodesEnabled"
|
|
457
|
-
},
|
|
458
|
-
"options_repository": {
|
|
459
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_repository"
|
|
460
|
-
},
|
|
461
|
-
"options_dnsCoordinator": {
|
|
462
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_dnsCoordinator"
|
|
463
|
-
},
|
|
464
|
-
"options_certificateProvisioner": {
|
|
465
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_certificateProvisioner"
|
|
466
|
-
},
|
|
467
|
-
"options_tunnelManager": {
|
|
468
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_tunnelManager"
|
|
469
|
-
},
|
|
470
|
-
"options_healthProbeService": {
|
|
471
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_healthProbeService"
|
|
472
|
-
},
|
|
473
|
-
"options_modeDetector": {
|
|
474
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_modeDetector"
|
|
475
|
-
},
|
|
476
|
-
"options_capabilityDetector": {
|
|
477
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_capabilityDetector"
|
|
478
|
-
},
|
|
479
|
-
"options_clusterBaseDomain": {
|
|
480
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_clusterBaseDomain"
|
|
481
|
-
},
|
|
482
|
-
"identityDbUrl": {
|
|
483
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_identityDbUrl"
|
|
484
|
-
},
|
|
485
|
-
"basePath": {
|
|
486
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_basePath"
|
|
487
|
-
},
|
|
488
|
-
"edgeNodesEnabled": {
|
|
489
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_edgeNodesEnabled"
|
|
490
|
-
},
|
|
491
|
-
"repository": {
|
|
492
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_repository"
|
|
493
|
-
},
|
|
494
|
-
"dnsCoordinator": {
|
|
495
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_dnsCoordinator"
|
|
496
|
-
},
|
|
497
|
-
"certificateProvisioner": {
|
|
498
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_certificateProvisioner"
|
|
499
|
-
},
|
|
500
|
-
"tunnelManager": {
|
|
501
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_tunnelManager"
|
|
502
|
-
},
|
|
503
|
-
"healthProbeService": {
|
|
504
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_healthProbeService"
|
|
505
|
-
},
|
|
506
|
-
"modeDetector": {
|
|
507
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_modeDetector"
|
|
508
|
-
},
|
|
509
|
-
"capabilityDetector": {
|
|
510
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_capabilityDetector"
|
|
511
|
-
},
|
|
512
|
-
"clusterBaseDomain": {
|
|
513
|
-
"@id": "undefineds:dist/http/admin/EdgeNodeSignalHttpHandler.jsonld#EdgeNodeSignalHttpHandler_options_clusterBaseDomain"
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
},
|
|
517
443
|
"ClusterIngressRouter": {
|
|
518
444
|
"@id": "undefineds:dist/http/ClusterIngressRouter.jsonld#ClusterIngressRouter",
|
|
519
445
|
"@prefix": true,
|
|
@@ -648,30 +574,6 @@
|
|
|
648
574
|
}
|
|
649
575
|
}
|
|
650
576
|
},
|
|
651
|
-
"SignalInterceptHttpHandler": {
|
|
652
|
-
"@id": "undefineds:dist/http/SignalInterceptHttpHandler.jsonld#SignalInterceptHttpHandler",
|
|
653
|
-
"@prefix": true,
|
|
654
|
-
"@context": {
|
|
655
|
-
"options_signalHandler": {
|
|
656
|
-
"@id": "undefineds:dist/http/SignalInterceptHttpHandler.jsonld#SignalInterceptHttpHandler_options_signalHandler"
|
|
657
|
-
},
|
|
658
|
-
"options_fallback": {
|
|
659
|
-
"@id": "undefineds:dist/http/SignalInterceptHttpHandler.jsonld#SignalInterceptHttpHandler_options_fallback"
|
|
660
|
-
},
|
|
661
|
-
"options_basePath": {
|
|
662
|
-
"@id": "undefineds:dist/http/SignalInterceptHttpHandler.jsonld#SignalInterceptHttpHandler_options_basePath"
|
|
663
|
-
},
|
|
664
|
-
"signalHandler": {
|
|
665
|
-
"@id": "undefineds:dist/http/SignalInterceptHttpHandler.jsonld#SignalInterceptHttpHandler_options_signalHandler"
|
|
666
|
-
},
|
|
667
|
-
"fallback": {
|
|
668
|
-
"@id": "undefineds:dist/http/SignalInterceptHttpHandler.jsonld#SignalInterceptHttpHandler_options_fallback"
|
|
669
|
-
},
|
|
670
|
-
"basePath": {
|
|
671
|
-
"@id": "undefineds:dist/http/SignalInterceptHttpHandler.jsonld#SignalInterceptHttpHandler_options_basePath"
|
|
672
|
-
}
|
|
673
|
-
}
|
|
674
|
-
},
|
|
675
577
|
"RouterHttpHandler": {
|
|
676
578
|
"@id": "undefineds:dist/http/RouterHttpHandler.jsonld#RouterHttpHandler",
|
|
677
579
|
"@prefix": true,
|
|
@@ -927,30 +829,12 @@
|
|
|
927
829
|
}
|
|
928
830
|
}
|
|
929
831
|
},
|
|
930
|
-
"DefaultQuotaService": {
|
|
931
|
-
"@id": "undefineds:dist/quota/DefaultQuotaService.jsonld#DefaultQuotaService",
|
|
932
|
-
"@prefix": true,
|
|
933
|
-
"@context": {
|
|
934
|
-
"options_defaultAccountQuotaBytes": {
|
|
935
|
-
"@id": "undefineds:dist/quota/DefaultQuotaService.jsonld#DefaultQuotaService_options_defaultAccountQuotaBytes"
|
|
936
|
-
}
|
|
937
|
-
}
|
|
938
|
-
},
|
|
939
832
|
"DrizzleQuotaService": {
|
|
940
833
|
"@id": "undefineds:dist/quota/DrizzleQuotaService.jsonld#DrizzleQuotaService",
|
|
941
834
|
"@prefix": true,
|
|
942
835
|
"@context": {
|
|
943
836
|
"options_identityDbUrl": {
|
|
944
837
|
"@id": "undefineds:dist/quota/DrizzleQuotaService.jsonld#DrizzleQuotaService_options_identityDbUrl"
|
|
945
|
-
},
|
|
946
|
-
"options_defaultAccountQuotaBytes": {
|
|
947
|
-
"@id": "undefineds:dist/quota/DrizzleQuotaService.jsonld#DrizzleQuotaService_options_defaultAccountQuotaBytes"
|
|
948
|
-
},
|
|
949
|
-
"identityDbUrl": {
|
|
950
|
-
"@id": "undefineds:dist/quota/DrizzleQuotaService.jsonld#DrizzleQuotaService_options_identityDbUrl"
|
|
951
|
-
},
|
|
952
|
-
"defaultAccountQuotaBytes": {
|
|
953
|
-
"@id": "undefineds:dist/quota/DrizzleQuotaService.jsonld#DrizzleQuotaService_options_defaultAccountQuotaBytes"
|
|
954
838
|
}
|
|
955
839
|
}
|
|
956
840
|
},
|
|
@@ -1035,9 +919,6 @@
|
|
|
1035
919
|
"options_ttl": {
|
|
1036
920
|
"@id": "undefineds:dist/edge/EdgeNodeDnsCoordinator.jsonld#EdgeNodeDnsCoordinator_options_ttl"
|
|
1037
921
|
},
|
|
1038
|
-
"options_clusterIp": {
|
|
1039
|
-
"@id": "undefineds:dist/edge/EdgeNodeDnsCoordinator.jsonld#EdgeNodeDnsCoordinator_options_clusterIp"
|
|
1040
|
-
},
|
|
1041
922
|
"provider": {
|
|
1042
923
|
"@id": "undefineds:dist/edge/EdgeNodeDnsCoordinator.jsonld#EdgeNodeDnsCoordinator_options_provider"
|
|
1043
924
|
},
|
|
@@ -1049,9 +930,6 @@
|
|
|
1049
930
|
},
|
|
1050
931
|
"ttl": {
|
|
1051
932
|
"@id": "undefineds:dist/edge/EdgeNodeDnsCoordinator.jsonld#EdgeNodeDnsCoordinator_options_ttl"
|
|
1052
|
-
},
|
|
1053
|
-
"clusterIp": {
|
|
1054
|
-
"@id": "undefineds:dist/edge/EdgeNodeDnsCoordinator.jsonld#EdgeNodeDnsCoordinator_options_clusterIp"
|
|
1055
933
|
}
|
|
1056
934
|
}
|
|
1057
935
|
},
|
|
@@ -1474,116 +1352,6 @@
|
|
|
1474
1352
|
}
|
|
1475
1353
|
}
|
|
1476
1354
|
},
|
|
1477
|
-
"TieredMinioDataAccessor": {
|
|
1478
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor",
|
|
1479
|
-
"@prefix": true,
|
|
1480
|
-
"@context": {
|
|
1481
|
-
"config_resourceMapper": {
|
|
1482
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_resourceMapper"
|
|
1483
|
-
},
|
|
1484
|
-
"config_accessKey": {
|
|
1485
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_accessKey"
|
|
1486
|
-
},
|
|
1487
|
-
"config_secretKey": {
|
|
1488
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_secretKey"
|
|
1489
|
-
},
|
|
1490
|
-
"config_endpoint": {
|
|
1491
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_endpoint"
|
|
1492
|
-
},
|
|
1493
|
-
"config_bucketName": {
|
|
1494
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_bucketName"
|
|
1495
|
-
},
|
|
1496
|
-
"config_cachePath": {
|
|
1497
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_cachePath"
|
|
1498
|
-
},
|
|
1499
|
-
"config_cacheMaxSize": {
|
|
1500
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_cacheMaxSize"
|
|
1501
|
-
},
|
|
1502
|
-
"config_region": {
|
|
1503
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_region"
|
|
1504
|
-
},
|
|
1505
|
-
"config_regionBuckets": {
|
|
1506
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_regionBuckets",
|
|
1507
|
-
"@container": "@list"
|
|
1508
|
-
},
|
|
1509
|
-
"resourceMapper": {
|
|
1510
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_resourceMapper"
|
|
1511
|
-
},
|
|
1512
|
-
"accessKey": {
|
|
1513
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_accessKey"
|
|
1514
|
-
},
|
|
1515
|
-
"secretKey": {
|
|
1516
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_secretKey"
|
|
1517
|
-
},
|
|
1518
|
-
"endpoint": {
|
|
1519
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_endpoint"
|
|
1520
|
-
},
|
|
1521
|
-
"bucketName": {
|
|
1522
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_bucketName"
|
|
1523
|
-
},
|
|
1524
|
-
"cachePath": {
|
|
1525
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_cachePath"
|
|
1526
|
-
},
|
|
1527
|
-
"cacheMaxSize": {
|
|
1528
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_cacheMaxSize"
|
|
1529
|
-
},
|
|
1530
|
-
"region": {
|
|
1531
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_region"
|
|
1532
|
-
},
|
|
1533
|
-
"regionBuckets": {
|
|
1534
|
-
"@id": "undefineds:dist/storage/accessors/TieredMinioDataAccessor.jsonld#TieredMinioDataAccessor_config_regionBuckets",
|
|
1535
|
-
"@container": "@list"
|
|
1536
|
-
}
|
|
1537
|
-
}
|
|
1538
|
-
},
|
|
1539
|
-
"PodMigrationHttpHandler": {
|
|
1540
|
-
"@id": "undefineds:dist/http/cluster/PodMigrationHttpHandler.jsonld#PodMigrationHttpHandler",
|
|
1541
|
-
"@prefix": true,
|
|
1542
|
-
"@context": {
|
|
1543
|
-
"options_identityDbUrl": {
|
|
1544
|
-
"@id": "undefineds:dist/http/cluster/PodMigrationHttpHandler.jsonld#PodMigrationHttpHandler_options_identityDbUrl"
|
|
1545
|
-
},
|
|
1546
|
-
"options_currentNodeId": {
|
|
1547
|
-
"@id": "undefineds:dist/http/cluster/PodMigrationHttpHandler.jsonld#PodMigrationHttpHandler_options_currentNodeId"
|
|
1548
|
-
},
|
|
1549
|
-
"options_basePath": {
|
|
1550
|
-
"@id": "undefineds:dist/http/cluster/PodMigrationHttpHandler.jsonld#PodMigrationHttpHandler_options_basePath"
|
|
1551
|
-
},
|
|
1552
|
-
"options_enabled": {
|
|
1553
|
-
"@id": "undefineds:dist/http/cluster/PodMigrationHttpHandler.jsonld#PodMigrationHttpHandler_options_enabled"
|
|
1554
|
-
},
|
|
1555
|
-
"identityDbUrl": {
|
|
1556
|
-
"@id": "undefineds:dist/http/cluster/PodMigrationHttpHandler.jsonld#PodMigrationHttpHandler_options_identityDbUrl"
|
|
1557
|
-
},
|
|
1558
|
-
"currentNodeId": {
|
|
1559
|
-
"@id": "undefineds:dist/http/cluster/PodMigrationHttpHandler.jsonld#PodMigrationHttpHandler_options_currentNodeId"
|
|
1560
|
-
},
|
|
1561
|
-
"basePath": {
|
|
1562
|
-
"@id": "undefineds:dist/http/cluster/PodMigrationHttpHandler.jsonld#PodMigrationHttpHandler_options_basePath"
|
|
1563
|
-
},
|
|
1564
|
-
"enabled": {
|
|
1565
|
-
"@id": "undefineds:dist/http/cluster/PodMigrationHttpHandler.jsonld#PodMigrationHttpHandler_options_enabled"
|
|
1566
|
-
}
|
|
1567
|
-
}
|
|
1568
|
-
},
|
|
1569
|
-
"PodMigrationService": {
|
|
1570
|
-
"@id": "undefineds:dist/service/PodMigrationService.jsonld#PodMigrationService",
|
|
1571
|
-
"@prefix": true,
|
|
1572
|
-
"@context": {
|
|
1573
|
-
"config_identityDbUrl": {
|
|
1574
|
-
"@id": "undefineds:dist/service/PodMigrationService.jsonld#PodMigrationService_config_identityDbUrl"
|
|
1575
|
-
},
|
|
1576
|
-
"config_currentNodeId": {
|
|
1577
|
-
"@id": "undefineds:dist/service/PodMigrationService.jsonld#PodMigrationService_config_currentNodeId"
|
|
1578
|
-
},
|
|
1579
|
-
"identityDbUrl": {
|
|
1580
|
-
"@id": "undefineds:dist/service/PodMigrationService.jsonld#PodMigrationService_config_identityDbUrl"
|
|
1581
|
-
},
|
|
1582
|
-
"currentNodeId": {
|
|
1583
|
-
"@id": "undefineds:dist/service/PodMigrationService.jsonld#PodMigrationService_config_currentNodeId"
|
|
1584
|
-
}
|
|
1585
|
-
}
|
|
1586
|
-
},
|
|
1587
1355
|
"ReactAppViewHandler": {
|
|
1588
1356
|
"@id": "undefineds:dist/identity/ReactAppViewHandler.jsonld#ReactAppViewHandler",
|
|
1589
1357
|
"@prefix": true,
|
|
@@ -1956,6 +1724,108 @@
|
|
|
1956
1724
|
"@id": "undefineds:dist/identity/oidc/AutoDetectIdentityProviderHandler.jsonld#AutoDetectIdentityProviderHandler_options_source"
|
|
1957
1725
|
}
|
|
1958
1726
|
}
|
|
1727
|
+
},
|
|
1728
|
+
"UrlAwareRedisLocker": {
|
|
1729
|
+
"@id": "undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld#UrlAwareRedisLocker",
|
|
1730
|
+
"@prefix": true,
|
|
1731
|
+
"@context": {
|
|
1732
|
+
"options_redisClient": {
|
|
1733
|
+
"@id": "undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld#UrlAwareRedisLocker_options_redisClient"
|
|
1734
|
+
},
|
|
1735
|
+
"options_attemptSettings_retryCount": {
|
|
1736
|
+
"@id": "undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld#UrlAwareRedisLocker_options_attemptSettings_retryCount"
|
|
1737
|
+
},
|
|
1738
|
+
"options_attemptSettings_retryDelay": {
|
|
1739
|
+
"@id": "undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld#UrlAwareRedisLocker_options_attemptSettings_retryDelay"
|
|
1740
|
+
},
|
|
1741
|
+
"options_attemptSettings_retryJitter": {
|
|
1742
|
+
"@id": "undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld#UrlAwareRedisLocker_options_attemptSettings_retryJitter"
|
|
1743
|
+
},
|
|
1744
|
+
"options_namespacePrefix": {
|
|
1745
|
+
"@id": "undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld#UrlAwareRedisLocker_options_namespacePrefix"
|
|
1746
|
+
},
|
|
1747
|
+
"redisClient": {
|
|
1748
|
+
"@id": "undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld#UrlAwareRedisLocker_options_redisClient"
|
|
1749
|
+
},
|
|
1750
|
+
"attemptSettings_retryCount": {
|
|
1751
|
+
"@id": "undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld#UrlAwareRedisLocker_options_attemptSettings_retryCount"
|
|
1752
|
+
},
|
|
1753
|
+
"attemptSettings_retryDelay": {
|
|
1754
|
+
"@id": "undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld#UrlAwareRedisLocker_options_attemptSettings_retryDelay"
|
|
1755
|
+
},
|
|
1756
|
+
"attemptSettings_retryJitter": {
|
|
1757
|
+
"@id": "undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld#UrlAwareRedisLocker_options_attemptSettings_retryJitter"
|
|
1758
|
+
},
|
|
1759
|
+
"namespacePrefix": {
|
|
1760
|
+
"@id": "undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld#UrlAwareRedisLocker_options_namespacePrefix"
|
|
1761
|
+
}
|
|
1762
|
+
}
|
|
1763
|
+
},
|
|
1764
|
+
"ProvisionPodCreator": {
|
|
1765
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator",
|
|
1766
|
+
"@prefix": true,
|
|
1767
|
+
"@context": {
|
|
1768
|
+
"args_provisionBaseUrl": {
|
|
1769
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_provisionBaseUrl"
|
|
1770
|
+
},
|
|
1771
|
+
"args_baseUrl": {
|
|
1772
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_baseUrl"
|
|
1773
|
+
},
|
|
1774
|
+
"args_identifierGenerator": {
|
|
1775
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_identifierGenerator"
|
|
1776
|
+
},
|
|
1777
|
+
"args_relativeWebIdPath": {
|
|
1778
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_relativeWebIdPath"
|
|
1779
|
+
},
|
|
1780
|
+
"args_webIdStore": {
|
|
1781
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_webIdStore"
|
|
1782
|
+
},
|
|
1783
|
+
"args_podStore": {
|
|
1784
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_podStore"
|
|
1785
|
+
},
|
|
1786
|
+
"provisionBaseUrl": {
|
|
1787
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_provisionBaseUrl"
|
|
1788
|
+
},
|
|
1789
|
+
"baseUrl": {
|
|
1790
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_baseUrl"
|
|
1791
|
+
},
|
|
1792
|
+
"identifierGenerator": {
|
|
1793
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_identifierGenerator"
|
|
1794
|
+
},
|
|
1795
|
+
"relativeWebIdPath": {
|
|
1796
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_relativeWebIdPath"
|
|
1797
|
+
},
|
|
1798
|
+
"webIdStore": {
|
|
1799
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_webIdStore"
|
|
1800
|
+
},
|
|
1801
|
+
"podStore": {
|
|
1802
|
+
"@id": "undefineds:dist/provision/ProvisionPodCreator.jsonld#ProvisionPodCreator_args_podStore"
|
|
1803
|
+
}
|
|
1804
|
+
}
|
|
1805
|
+
},
|
|
1806
|
+
"ProvisionCodeCodec": {
|
|
1807
|
+
"@id": "undefineds:dist/provision/ProvisionCodeCodec.jsonld#ProvisionCodeCodec",
|
|
1808
|
+
"@prefix": true,
|
|
1809
|
+
"@context": {
|
|
1810
|
+
"baseUrl": {
|
|
1811
|
+
"@id": "undefineds:dist/provision/ProvisionCodeCodec.jsonld#ProvisionCodeCodec_baseUrl"
|
|
1812
|
+
}
|
|
1813
|
+
}
|
|
1814
|
+
},
|
|
1815
|
+
"AuthModeSelector": {
|
|
1816
|
+
"@id": "undefineds:dist/authorization/AuthModeSelector.jsonld#AuthModeSelector",
|
|
1817
|
+
"@prefix": true,
|
|
1818
|
+
"@context": {
|
|
1819
|
+
"authMode": {
|
|
1820
|
+
"@id": "undefineds:dist/authorization/AuthModeSelector.jsonld#AuthModeSelector_authMode"
|
|
1821
|
+
},
|
|
1822
|
+
"acpReader": {
|
|
1823
|
+
"@id": "undefineds:dist/authorization/AuthModeSelector.jsonld#AuthModeSelector_acpReader"
|
|
1824
|
+
},
|
|
1825
|
+
"aclReader": {
|
|
1826
|
+
"@id": "undefineds:dist/authorization/AuthModeSelector.jsonld#AuthModeSelector_aclReader"
|
|
1827
|
+
}
|
|
1828
|
+
}
|
|
1959
1829
|
}
|
|
1960
1830
|
}
|
|
1961
1831
|
]
|
|
@@ -14,18 +14,18 @@
|
|
|
14
14
|
* udfs:apiKey "sk-xxx" ;
|
|
15
15
|
* udfs:label "Google AI" .
|
|
16
16
|
*/
|
|
17
|
-
export declare const Credential: import("drizzle-solid/dist/core/schema").PodTableWithColumns<import("drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
18
|
-
id: import("drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
|
|
19
|
-
provider: import("drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
20
|
-
service: import("drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
21
|
-
status: import("drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
22
|
-
apiKey: import("drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
23
|
-
baseUrl: import("drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
24
|
-
proxyUrl: import("drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
25
|
-
projectId: import("drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
26
|
-
organizationId: import("drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
27
|
-
label: import("drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
28
|
-
lastUsedAt: import("drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
29
|
-
failCount: import("drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>;
|
|
30
|
-
rateLimitResetAt: import("drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
17
|
+
export declare const Credential: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
18
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
|
|
19
|
+
provider: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
20
|
+
service: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
21
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
22
|
+
apiKey: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
23
|
+
baseUrl: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
24
|
+
proxyUrl: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
25
|
+
projectId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
26
|
+
organizationId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
27
|
+
label: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
28
|
+
lastUsedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
29
|
+
failCount: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>;
|
|
30
|
+
rateLimitResetAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
31
31
|
}>>;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Credential = void 0;
|
|
7
|
-
const drizzle_solid_1 = require("drizzle-solid");
|
|
7
|
+
const drizzle_solid_1 = require("@undefineds.co/drizzle-solid");
|
|
8
8
|
const vocab_1 = require("../../vocab");
|
|
9
9
|
/**
|
|
10
10
|
* Credential - 凭据存储
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../src/credential/schema/tables.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../src/credential/schema/tables.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,gEAAoF;AACpF,uCAAmD;AAEnD;;;;;;;;;;;;GAYG;AACU,QAAA,UAAU,GAAG,IAAA,wBAAQ,EAChC,YAAY,EACZ;IACE,EAAE,EAAE,IAAA,sBAAM,EAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC7B,QAAQ,EAAE,IAAA,mBAAG,EAAC,UAAU,CAAC;IACzB,OAAO,EAAE,IAAA,sBAAM,EAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,IAAA,sBAAM,EAAC,QAAQ,CAAC;IACxB,MAAM,EAAE,IAAA,sBAAM,EAAC,QAAQ,CAAC;IACxB,OAAO,EAAE,IAAA,sBAAM,EAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,IAAA,sBAAM,EAAC,UAAU,CAAC;IAC5B,SAAS,EAAE,IAAA,sBAAM,EAAC,WAAW,CAAC;IAC9B,cAAc,EAAE,IAAA,sBAAM,EAAC,gBAAgB,CAAC;IACxC,KAAK,EAAE,IAAA,sBAAM,EAAC,OAAO,CAAC;IACtB,UAAU,EAAE,IAAA,wBAAQ,EAAC,YAAY,CAAC;IAClC,SAAS,EAAE,IAAA,mBAAG,EAAC,WAAW,CAAC;IAC3B,gBAAgB,EAAE,IAAA,wBAAQ,EAAC,kBAAkB,CAAC;CAC/C,EACD;IACE,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE,YAAI,CAAC,UAAU;IACrB,SAAS,EAAE,sBAAc;IACzB,eAAe,EAAE,OAAO;CACzB,CACF,CAAC","sourcesContent":["/**\n * Credential Schema - Pod RDF 表定义\n */\n\nimport { podTable, string, int, datetime, uri } from '@undefineds.co/drizzle-solid';\nimport { UDFS, UDFS_NAMESPACE } from '../../vocab';\n\n/**\n * Credential - 凭据存储\n *\n * 存储位置: /settings/credentials.ttl\n *\n * RDF 示例:\n * <#cred-001> a udfs:Credential ;\n * udfs:provider </settings/ai/providers.ttl#google> ;\n * udfs:service \"ai\" ;\n * udfs:status \"active\" ;\n * udfs:apiKey \"sk-xxx\" ;\n * udfs:label \"Google AI\" .\n */\nexport const Credential = podTable(\n 'Credential',\n {\n id: string('id').primaryKey(),\n provider: uri('provider'),\n service: string('service'),\n status: string('status'),\n apiKey: string('apiKey'),\n baseUrl: string('baseUrl'),\n proxyUrl: string('proxyUrl'),\n projectId: string('projectId'),\n organizationId: string('organizationId'),\n label: string('label'),\n lastUsedAt: datetime('lastUsedAt'),\n failCount: int('failCount'),\n rateLimitResetAt: datetime('rateLimitResetAt'),\n },\n {\n base: '/settings/credentials.ttl',\n type: UDFS.Credential,\n namespace: UDFS_NAMESPACE,\n subjectTemplate: '#{id}',\n },\n);\n\n"]}
|
|
@@ -7,7 +7,7 @@ exports.EdgeNodeAgent = void 0;
|
|
|
7
7
|
const node_os_1 = __importDefault(require("node:os"));
|
|
8
8
|
const node_child_process_1 = require("node:child_process");
|
|
9
9
|
const global_logger_factory_1 = require("global-logger-factory");
|
|
10
|
-
const
|
|
10
|
+
const EdgeNodeSignalClient_1 = require("../service/EdgeNodeSignalClient");
|
|
11
11
|
const FrpcProcessManager_1 = require("./frp/FrpcProcessManager");
|
|
12
12
|
const AcmeCertificateManager_1 = require("./acme/AcmeCertificateManager");
|
|
13
13
|
const ClusterCertificateManager_1 = require("./acme/ClusterCertificateManager");
|
|
@@ -76,7 +76,7 @@ class EdgeNodeAgent {
|
|
|
76
76
|
if (this.frpManager) {
|
|
77
77
|
heartbeatOptions.tunnelSupplier = () => this.buildTunnelHeartbeatPayload();
|
|
78
78
|
}
|
|
79
|
-
this.heartbeat = new
|
|
79
|
+
this.heartbeat = new EdgeNodeSignalClient_1.EdgeNodeSignalClient(heartbeatOptions);
|
|
80
80
|
}
|
|
81
81
|
stop() {
|
|
82
82
|
if (this.heartbeat && typeof this.heartbeat.dispose === 'function') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdgeNodeAgent.js","sourceRoot":"","sources":["../../src/edge/EdgeNodeAgent.ts"],"names":[],"mappings":"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","sourcesContent":["import os from 'node:os';\nimport { spawn } from 'node:child_process';\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { EdgeNodeHeartbeatServiceOptions } from '../service/EdgeNodeHeartbeatService';\nimport { EdgeNodeHeartbeatService } from '../service/EdgeNodeHeartbeatService';\nimport { FrpcProcessManager, type FrpcRuntimeStatus } from './frp/FrpcProcessManager';\nimport { AcmeCertificateManager } from './acme/AcmeCertificateManager';\nimport { ClusterCertificateManager } from './acme/ClusterCertificateManager';\nimport { EdgeNodeCapabilityDetector, type NetworkAddressInfo } from './EdgeNodeCapabilityDetector';\n\nexport interface EdgeNodeAgentOptions {\n signalEndpoint: string;\n nodeId: string;\n nodeToken: string;\n baseUrl?: string;\n publicAddress?: string;\n pods?: string[];\n includeSystemMetrics?: boolean;\n enableNetworkDetection?: boolean;\n metadata?: Record<string, unknown>;\n intervalMs?: number;\n onHeartbeatResponse?: (data: unknown) => void;\n acme?: {\n mode?: 'local' | 'cluster';\n email?: string;\n domains?: string[];\n directoryUrl?: string;\n accountKeyPath?: string;\n certificateKeyPath: string;\n certificatePath: string;\n fullChainPath?: string;\n renewBeforeDays?: number;\n propagationDelayMs?: number;\n postDeployCommand?: string[];\n };\n frp?: {\n binaryPath: string;\n configPath: string;\n workingDirectory?: string;\n logPrefix?: string;\n autoRestart?: boolean;\n };\n}\n\nexport class EdgeNodeAgent {\n private readonly logger = getLoggerFor(this);\n private heartbeat?: EdgeNodeHeartbeatService;\n private frpManager?: FrpcProcessManager;\n private clusterCertificate?: ClusterCertificateManager;\n private networkDetector?: EdgeNodeCapabilityDetector;\n private cachedNetworkInfo?: NetworkAddressInfo;\n private lastNetworkDetection = 0;\n private readonly networkDetectionIntervalMs = 60_000; // 每分钟重新检测一次\n\n public async start(options: EdgeNodeAgentOptions): Promise<void> {\n if (options.acme) {\n const mode = options.acme.mode ?? 'local';\n if (mode === 'cluster') {\n await this.ensureClusterCertificate(options);\n } else {\n await this.issueCertificateLocally(options);\n }\n }\n if (options.frp) {\n this.frpManager = new FrpcProcessManager({\n binaryPath: options.frp.binaryPath,\n configPath: options.frp.configPath,\n workingDirectory: options.frp.workingDirectory,\n logPrefix: options.frp.logPrefix,\n autoRestart: options.frp.autoRestart,\n });\n }\n \n // 初始化网络检测器\n if (options.enableNetworkDetection !== false) {\n this.networkDetector = new EdgeNodeCapabilityDetector({\n dynamicDetection: {\n enableNetworkDetection: true,\n },\n });\n // 执行初始网络检测\n this.cachedNetworkInfo = await this.networkDetector.detectNetworkAddresses();\n this.lastNetworkDetection = Date.now();\n this.logger.info(`Network detection: IPv4=${this.cachedNetworkInfo.ipv4Public ?? this.cachedNetworkInfo.ipv4}, IPv6=${this.cachedNetworkInfo.ipv6Public ?? this.cachedNetworkInfo.ipv6}, hasPublicIPv6=${this.cachedNetworkInfo.hasPublicIPv6}`);\n }\n \n const systemMetrics = options.includeSystemMetrics ? this.collectSystemMetrics() : undefined;\n const metadataPayload = {\n ...(options.metadata ?? {}),\n system: systemMetrics,\n } as Record<string, unknown>;\n\n const certificatePayload = this.clusterCertificate?.getHeartbeatPayload();\n const heartbeatOptions: EdgeNodeHeartbeatServiceOptions = {\n edgeNodesEnabled: true,\n signalEndpoint: options.signalEndpoint,\n nodeId: options.nodeId,\n nodeToken: options.nodeToken,\n baseUrl: options.baseUrl,\n publicAddress: options.publicAddress,\n pods: options.pods,\n intervalMs: options.intervalMs,\n metadata: this.stringifyIfContent(metadataPayload),\n metrics: systemMetrics ? JSON.stringify(systemMetrics) : undefined,\n certificate: certificatePayload ? JSON.stringify(certificatePayload) : undefined,\n onHeartbeatResponse: (data: unknown): void => {\n this.handleHeartbeatResponse(data);\n options.onHeartbeatResponse?.(data);\n },\n networkSupplier: this.networkDetector ? () => this.getNetworkInfo() : undefined,\n };\n if (this.frpManager) {\n heartbeatOptions.tunnelSupplier = () => this.buildTunnelHeartbeatPayload();\n }\n\n this.heartbeat = new EdgeNodeHeartbeatService(heartbeatOptions);\n }\n\n public stop(): void {\n if (this.heartbeat && typeof (this.heartbeat as any).dispose === 'function') {\n (this.heartbeat as any).dispose();\n }\n this.heartbeat = undefined;\n void this.frpManager?.stop();\n this.clusterCertificate?.stop();\n }\n\n private stringifyIfContent(data: Record<string, unknown>): string | undefined {\n const sanitized: Record<string, unknown> = {};\n for (const [ key, value ] of Object.entries(data)) {\n if (value !== undefined) {\n sanitized[key] = value;\n }\n }\n return Object.keys(sanitized).length > 0 ? JSON.stringify(sanitized) : undefined;\n }\n\n private collectSystemMetrics(): Record<string, unknown> {\n const load = os.loadavg();\n return {\n hostname: os.hostname(),\n platform: os.platform(),\n arch: os.arch(),\n uptime: os.uptime(),\n cpuCount: os.cpus().length,\n load1: load[0],\n load5: load[1],\n load15: load[2],\n totalMem: os.totalmem(),\n freeMem: os.freemem(),\n };\n }\n\n private handleHeartbeatResponse(data: unknown): void {\n if (!data || typeof data !== 'object') {\n return;\n }\n const body = data as Record<string, any>;\n const metadata = body.metadata as Record<string, any> | undefined;\n this.clusterCertificate?.handleHeartbeatMetadata(metadata);\n const tunnel = metadata?.tunnel as Record<string, any> | undefined;\n const config = tunnel?.config as Record<string, any> | undefined;\n if (config) {\n this.logger.debug(`接收到隧道配置: ${JSON.stringify({ entrypoint: tunnel?.entrypoint, proxyName: config.proxyName })}`);\n }\n const entrypoint = typeof tunnel?.entrypoint === 'string' ? tunnel.entrypoint :\n typeof config?.publicUrl === 'string' ? config.publicUrl : undefined;\n void this.frpManager?.applyConfig(config as any, tunnel?.status as string | undefined, entrypoint);\n }\n\n private async issueCertificateLocally(options: EdgeNodeAgentOptions): Promise<void> {\n const acmeOptions = options.acme!;\n if (!acmeOptions.email || !acmeOptions.domains || acmeOptions.domains.length === 0) {\n throw new Error('本地 ACME 模式需要提供 email 与 domains。');\n }\n if (!acmeOptions.accountKeyPath) {\n throw new Error('本地 ACME 模式需要提供 accountKeyPath。');\n }\n const manager = new AcmeCertificateManager({\n signalEndpoint: options.signalEndpoint,\n nodeId: options.nodeId,\n nodeToken: options.nodeToken,\n email: acmeOptions.email!,\n domains: acmeOptions.domains!,\n directoryUrl: acmeOptions.directoryUrl,\n accountKeyPath: acmeOptions.accountKeyPath!,\n certificateKeyPath: acmeOptions.certificateKeyPath,\n certificatePath: acmeOptions.certificatePath,\n fullChainPath: acmeOptions.fullChainPath,\n renewBeforeDays: acmeOptions.renewBeforeDays,\n propagationDelayMs: acmeOptions.propagationDelayMs,\n });\n try {\n const issued = await manager.ensureCertificate();\n if (issued && acmeOptions.postDeployCommand && acmeOptions.postDeployCommand.length > 0) {\n await this.runPostDeploy(acmeOptions.postDeployCommand);\n }\n } catch (error: unknown) {\n this.logger.error(`自动签发证书失败:${(error as Error).message}`);\n throw error;\n }\n }\n\n private async ensureClusterCertificate(options: EdgeNodeAgentOptions): Promise<void> {\n const acmeOptions = options.acme!;\n if (!acmeOptions.certificateKeyPath || !acmeOptions.certificatePath) {\n throw new Error('Cluster 模式需要提供 certificateKeyPath 与 certificatePath。');\n }\n const manager = new ClusterCertificateManager({\n signalEndpoint: options.signalEndpoint,\n nodeId: options.nodeId,\n nodeToken: options.nodeToken,\n certificateKeyPath: acmeOptions.certificateKeyPath,\n certificatePath: acmeOptions.certificatePath,\n fullChainPath: acmeOptions.fullChainPath,\n renewBeforeDays: acmeOptions.renewBeforeDays,\n onCertificateInstalled: acmeOptions.postDeployCommand ? () => this.runPostDeploy(acmeOptions.postDeployCommand!) : undefined,\n });\n this.clusterCertificate = manager;\n await manager.start();\n }\n\n private async runPostDeploy(command: string[]): Promise<void> {\n const [ executable, ...args ] = command;\n if (!executable) {\n return;\n }\n await new Promise<void>((resolve, reject) => {\n const child = spawn(executable, args, { stdio: 'inherit' });\n child.on('error', reject);\n child.on('exit', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`命令 ${executable} 退出码 ${code}`));\n }\n });\n });\n }\n\n private buildTunnelHeartbeatPayload(): Record<string, unknown> | undefined {\n const status: FrpcRuntimeStatus | undefined = this.frpManager?.getStatus();\n if (!status) {\n return undefined;\n }\n return { client: status };\n }\n\n /**\n * 获取网络信息(带缓存,每分钟刷新一次)\n */\n private async getNetworkInfo(): Promise<{ ipv4?: string; ipv6?: string }> {\n const now = Date.now();\n \n // 如果缓存过期,重新检测\n if (!this.cachedNetworkInfo || (now - this.lastNetworkDetection) > this.networkDetectionIntervalMs) {\n if (this.networkDetector) {\n try {\n this.cachedNetworkInfo = await this.networkDetector.detectNetworkAddresses();\n this.lastNetworkDetection = now;\n } catch (error: unknown) {\n this.logger.debug(`Network detection failed: ${(error as Error).message}`);\n }\n }\n }\n \n // 优先返回公网地址\n return {\n ipv4: this.cachedNetworkInfo?.ipv4Public ?? this.cachedNetworkInfo?.ipv4,\n ipv6: this.cachedNetworkInfo?.ipv6Public ?? this.cachedNetworkInfo?.ipv6,\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"EdgeNodeAgent.js","sourceRoot":"","sources":["../../src/edge/EdgeNodeAgent.ts"],"names":[],"mappings":"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","sourcesContent":["import os from 'node:os';\nimport { spawn } from 'node:child_process';\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { EdgeNodeSignalClientOptions } from '../service/EdgeNodeSignalClient';\nimport { EdgeNodeSignalClient } from '../service/EdgeNodeSignalClient';\nimport { FrpcProcessManager, type FrpcRuntimeStatus } from './frp/FrpcProcessManager';\nimport { AcmeCertificateManager } from './acme/AcmeCertificateManager';\nimport { ClusterCertificateManager } from './acme/ClusterCertificateManager';\nimport { EdgeNodeCapabilityDetector, type NetworkAddressInfo } from './EdgeNodeCapabilityDetector';\n\nexport interface EdgeNodeAgentOptions {\n signalEndpoint: string;\n nodeId: string;\n nodeToken: string;\n baseUrl?: string;\n publicAddress?: string;\n pods?: string[];\n includeSystemMetrics?: boolean;\n enableNetworkDetection?: boolean;\n metadata?: Record<string, unknown>;\n intervalMs?: number;\n onHeartbeatResponse?: (data: unknown) => void;\n acme?: {\n mode?: 'local' | 'cluster';\n email?: string;\n domains?: string[];\n directoryUrl?: string;\n accountKeyPath?: string;\n certificateKeyPath: string;\n certificatePath: string;\n fullChainPath?: string;\n renewBeforeDays?: number;\n propagationDelayMs?: number;\n postDeployCommand?: string[];\n };\n frp?: {\n binaryPath: string;\n configPath: string;\n workingDirectory?: string;\n logPrefix?: string;\n autoRestart?: boolean;\n };\n}\n\nexport class EdgeNodeAgent {\n private readonly logger = getLoggerFor(this);\n private heartbeat?: EdgeNodeSignalClient;\n private frpManager?: FrpcProcessManager;\n private clusterCertificate?: ClusterCertificateManager;\n private networkDetector?: EdgeNodeCapabilityDetector;\n private cachedNetworkInfo?: NetworkAddressInfo;\n private lastNetworkDetection = 0;\n private readonly networkDetectionIntervalMs = 60_000; // 每分钟重新检测一次\n\n public async start(options: EdgeNodeAgentOptions): Promise<void> {\n if (options.acme) {\n const mode = options.acme.mode ?? 'local';\n if (mode === 'cluster') {\n await this.ensureClusterCertificate(options);\n } else {\n await this.issueCertificateLocally(options);\n }\n }\n if (options.frp) {\n this.frpManager = new FrpcProcessManager({\n binaryPath: options.frp.binaryPath,\n configPath: options.frp.configPath,\n workingDirectory: options.frp.workingDirectory,\n logPrefix: options.frp.logPrefix,\n autoRestart: options.frp.autoRestart,\n });\n }\n \n // 初始化网络检测器\n if (options.enableNetworkDetection !== false) {\n this.networkDetector = new EdgeNodeCapabilityDetector({\n dynamicDetection: {\n enableNetworkDetection: true,\n },\n });\n // 执行初始网络检测\n this.cachedNetworkInfo = await this.networkDetector.detectNetworkAddresses();\n this.lastNetworkDetection = Date.now();\n this.logger.info(`Network detection: IPv4=${this.cachedNetworkInfo.ipv4Public ?? this.cachedNetworkInfo.ipv4}, IPv6=${this.cachedNetworkInfo.ipv6Public ?? this.cachedNetworkInfo.ipv6}, hasPublicIPv6=${this.cachedNetworkInfo.hasPublicIPv6}`);\n }\n \n const systemMetrics = options.includeSystemMetrics ? this.collectSystemMetrics() : undefined;\n const metadataPayload = {\n ...(options.metadata ?? {}),\n system: systemMetrics,\n } as Record<string, unknown>;\n\n const certificatePayload = this.clusterCertificate?.getHeartbeatPayload();\n const heartbeatOptions: EdgeNodeSignalClientOptions = {\n edgeNodesEnabled: true,\n signalEndpoint: options.signalEndpoint,\n nodeId: options.nodeId,\n nodeToken: options.nodeToken,\n baseUrl: options.baseUrl,\n publicAddress: options.publicAddress,\n pods: options.pods,\n intervalMs: options.intervalMs,\n metadata: this.stringifyIfContent(metadataPayload),\n metrics: systemMetrics ? JSON.stringify(systemMetrics) : undefined,\n certificate: certificatePayload ? JSON.stringify(certificatePayload) : undefined,\n onHeartbeatResponse: (data: unknown): void => {\n this.handleHeartbeatResponse(data);\n options.onHeartbeatResponse?.(data);\n },\n networkSupplier: this.networkDetector ? () => this.getNetworkInfo() : undefined,\n };\n if (this.frpManager) {\n heartbeatOptions.tunnelSupplier = () => this.buildTunnelHeartbeatPayload();\n }\n\n this.heartbeat = new EdgeNodeSignalClient(heartbeatOptions);\n }\n\n public stop(): void {\n if (this.heartbeat && typeof (this.heartbeat as any).dispose === 'function') {\n (this.heartbeat as any).dispose();\n }\n this.heartbeat = undefined;\n void this.frpManager?.stop();\n this.clusterCertificate?.stop();\n }\n\n private stringifyIfContent(data: Record<string, unknown>): string | undefined {\n const sanitized: Record<string, unknown> = {};\n for (const [ key, value ] of Object.entries(data)) {\n if (value !== undefined) {\n sanitized[key] = value;\n }\n }\n return Object.keys(sanitized).length > 0 ? JSON.stringify(sanitized) : undefined;\n }\n\n private collectSystemMetrics(): Record<string, unknown> {\n const load = os.loadavg();\n return {\n hostname: os.hostname(),\n platform: os.platform(),\n arch: os.arch(),\n uptime: os.uptime(),\n cpuCount: os.cpus().length,\n load1: load[0],\n load5: load[1],\n load15: load[2],\n totalMem: os.totalmem(),\n freeMem: os.freemem(),\n };\n }\n\n private handleHeartbeatResponse(data: unknown): void {\n if (!data || typeof data !== 'object') {\n return;\n }\n const body = data as Record<string, any>;\n const metadata = body.metadata as Record<string, any> | undefined;\n this.clusterCertificate?.handleHeartbeatMetadata(metadata);\n const tunnel = metadata?.tunnel as Record<string, any> | undefined;\n const config = tunnel?.config as Record<string, any> | undefined;\n if (config) {\n this.logger.debug(`接收到隧道配置: ${JSON.stringify({ entrypoint: tunnel?.entrypoint, proxyName: config.proxyName })}`);\n }\n const entrypoint = typeof tunnel?.entrypoint === 'string' ? tunnel.entrypoint :\n typeof config?.publicUrl === 'string' ? config.publicUrl : undefined;\n void this.frpManager?.applyConfig(config as any, tunnel?.status as string | undefined, entrypoint);\n }\n\n private async issueCertificateLocally(options: EdgeNodeAgentOptions): Promise<void> {\n const acmeOptions = options.acme!;\n if (!acmeOptions.email || !acmeOptions.domains || acmeOptions.domains.length === 0) {\n throw new Error('本地 ACME 模式需要提供 email 与 domains。');\n }\n if (!acmeOptions.accountKeyPath) {\n throw new Error('本地 ACME 模式需要提供 accountKeyPath。');\n }\n const manager = new AcmeCertificateManager({\n signalEndpoint: options.signalEndpoint,\n nodeId: options.nodeId,\n nodeToken: options.nodeToken,\n email: acmeOptions.email!,\n domains: acmeOptions.domains!,\n directoryUrl: acmeOptions.directoryUrl,\n accountKeyPath: acmeOptions.accountKeyPath!,\n certificateKeyPath: acmeOptions.certificateKeyPath,\n certificatePath: acmeOptions.certificatePath,\n fullChainPath: acmeOptions.fullChainPath,\n renewBeforeDays: acmeOptions.renewBeforeDays,\n propagationDelayMs: acmeOptions.propagationDelayMs,\n });\n try {\n const issued = await manager.ensureCertificate();\n if (issued && acmeOptions.postDeployCommand && acmeOptions.postDeployCommand.length > 0) {\n await this.runPostDeploy(acmeOptions.postDeployCommand);\n }\n } catch (error: unknown) {\n this.logger.error(`自动签发证书失败:${(error as Error).message}`);\n throw error;\n }\n }\n\n private async ensureClusterCertificate(options: EdgeNodeAgentOptions): Promise<void> {\n const acmeOptions = options.acme!;\n if (!acmeOptions.certificateKeyPath || !acmeOptions.certificatePath) {\n throw new Error('Cluster 模式需要提供 certificateKeyPath 与 certificatePath。');\n }\n const manager = new ClusterCertificateManager({\n signalEndpoint: options.signalEndpoint,\n nodeId: options.nodeId,\n nodeToken: options.nodeToken,\n certificateKeyPath: acmeOptions.certificateKeyPath,\n certificatePath: acmeOptions.certificatePath,\n fullChainPath: acmeOptions.fullChainPath,\n renewBeforeDays: acmeOptions.renewBeforeDays,\n onCertificateInstalled: acmeOptions.postDeployCommand ? () => this.runPostDeploy(acmeOptions.postDeployCommand!) : undefined,\n });\n this.clusterCertificate = manager;\n await manager.start();\n }\n\n private async runPostDeploy(command: string[]): Promise<void> {\n const [ executable, ...args ] = command;\n if (!executable) {\n return;\n }\n await new Promise<void>((resolve, reject) => {\n const child = spawn(executable, args, { stdio: 'inherit' });\n child.on('error', reject);\n child.on('exit', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`命令 ${executable} 退出码 ${code}`));\n }\n });\n });\n }\n\n private buildTunnelHeartbeatPayload(): Record<string, unknown> | undefined {\n const status: FrpcRuntimeStatus | undefined = this.frpManager?.getStatus();\n if (!status) {\n return undefined;\n }\n return { client: status };\n }\n\n /**\n * 获取网络信息(带缓存,每分钟刷新一次)\n */\n private async getNetworkInfo(): Promise<{ ipv4?: string; ipv6?: string }> {\n const now = Date.now();\n \n // 如果缓存过期,重新检测\n if (!this.cachedNetworkInfo || (now - this.lastNetworkDetection) > this.networkDetectionIntervalMs) {\n if (this.networkDetector) {\n try {\n this.cachedNetworkInfo = await this.networkDetector.detectNetworkAddresses();\n this.lastNetworkDetection = now;\n } catch (error: unknown) {\n this.logger.debug(`Network detection failed: ${(error as Error).message}`);\n }\n }\n }\n \n // 优先返回公网地址\n return {\n ipv4: this.cachedNetworkInfo?.ipv4Public ?? this.cachedNetworkInfo?.ipv4,\n ipv6: this.cachedNetworkInfo?.ipv6Public ?? this.cachedNetworkInfo?.ipv6,\n };\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { DnsProvider, DnsRecordTypeValue } from '../dns/DnsProvider';
|
|
2
2
|
export interface EdgeNodeDnsCoordinatorOptions {
|
|
3
3
|
provider: DnsProvider;
|
|
4
|
-
/** 顶级域名,例如 `
|
|
4
|
+
/** 顶级域名,例如 `undefineds.site`。 */
|
|
5
5
|
rootDomain?: string | null;
|
|
6
6
|
/**
|
|
7
7
|
* 默认记录类型,当目标地址无法识别时回退使用。
|
|
@@ -10,11 +10,6 @@ export interface EdgeNodeDnsCoordinatorOptions {
|
|
|
10
10
|
defaultRecordType?: DnsRecordTypeValue;
|
|
11
11
|
/** TTL 秒数,缺省按供应商默认。 */
|
|
12
12
|
ttl?: number | string | null;
|
|
13
|
-
/**
|
|
14
|
-
* Cluster 的公网 IP 地址,用于 proxy 模式的 DNS 指向。
|
|
15
|
-
* 如果未设置,proxy 模式节点将跳过 DNS 同步。
|
|
16
|
-
*/
|
|
17
|
-
clusterIp?: string | null;
|
|
18
13
|
}
|
|
19
14
|
export declare class EdgeNodeDnsCoordinator {
|
|
20
15
|
private readonly logger;
|
|
@@ -22,7 +17,6 @@ export declare class EdgeNodeDnsCoordinator {
|
|
|
22
17
|
private readonly rootDomain?;
|
|
23
18
|
private readonly defaultRecordType;
|
|
24
19
|
private readonly ttl?;
|
|
25
|
-
private readonly clusterIp?;
|
|
26
20
|
private readonly enabled;
|
|
27
21
|
constructor(options: EdgeNodeDnsCoordinatorOptions);
|
|
28
22
|
synchronize(nodeId: string, metadata: Record<string, unknown>): Promise<void>;
|