@undefineds.co/xpod 0.1.0-local.202602081751
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/LICENSE +22 -0
- package/README.md +146 -0
- package/components/components.jsonld +72 -0
- package/components/context.jsonld +1635 -0
- package/config/bun.json +90 -0
- package/config/cli.json +260 -0
- package/config/cloud.json +469 -0
- package/config/extensions.local.initializer.json +23 -0
- package/config/local.json +261 -0
- package/config/logging/configurable.json +18 -0
- package/config/main.json +200 -0
- package/config/main.vanilla.json +6 -0
- package/config/resolver.json +347 -0
- package/config/search.json +66 -0
- package/config/seed.dev.json +29 -0
- package/config/seeds/admin.example.json +11 -0
- package/config/seeds/test.json +11 -0
- package/config/terminal.json +22 -0
- package/config/vector.json +35 -0
- package/config/xpod.base.json +155 -0
- package/config/xpod.cluster.json +419 -0
- package/config/xpod.json +233 -0
- package/dist/agents/AgentExecutorFactory.d.ts +67 -0
- package/dist/agents/AgentExecutorFactory.js +193 -0
- package/dist/agents/AgentExecutorFactory.js.map +1 -0
- package/dist/agents/AgentManager.d.ts +114 -0
- package/dist/agents/AgentManager.js +289 -0
- package/dist/agents/AgentManager.js.map +1 -0
- package/dist/agents/BaseAgentExecutor.d.ts +67 -0
- package/dist/agents/BaseAgentExecutor.js +101 -0
- package/dist/agents/BaseAgentExecutor.js.map +1 -0
- package/dist/agents/ClaudeExecutor.d.ts +63 -0
- package/dist/agents/ClaudeExecutor.js +335 -0
- package/dist/agents/ClaudeExecutor.js.map +1 -0
- package/dist/agents/CodeBuddyExecutor.d.ts +54 -0
- package/dist/agents/CodeBuddyExecutor.js +273 -0
- package/dist/agents/CodeBuddyExecutor.js.map +1 -0
- package/dist/agents/IndexAgent.d.ts +70 -0
- package/dist/agents/IndexAgent.js +417 -0
- package/dist/agents/IndexAgent.js.map +1 -0
- package/dist/agents/index.d.ts +22 -0
- package/dist/agents/index.js +48 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/schema/agent-config.d.ts +58 -0
- package/dist/agents/schema/agent-config.js +74 -0
- package/dist/agents/schema/agent-config.js.map +1 -0
- package/dist/agents/schema/tables.d.ts +46 -0
- package/dist/agents/schema/tables.js +64 -0
- package/dist/agents/schema/tables.js.map +1 -0
- package/dist/agents/types.d.ts +266 -0
- package/dist/agents/types.js +9 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.js +22 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/schema/config.d.ts +27 -0
- package/dist/ai/schema/config.js +36 -0
- package/dist/ai/schema/config.js.map +1 -0
- package/dist/ai/schema/index.d.ts +8 -0
- package/dist/ai/schema/index.js +27 -0
- package/dist/ai/schema/index.js.map +1 -0
- package/dist/ai/schema/model.d.ts +40 -0
- package/dist/ai/schema/model.js +60 -0
- package/dist/ai/schema/model.js.map +1 -0
- package/dist/ai/schema/provider.d.ts +21 -0
- package/dist/ai/schema/provider.js +30 -0
- package/dist/ai/schema/provider.js.map +1 -0
- package/dist/ai/schema/types.d.ts +52 -0
- package/dist/ai/schema/types.js +62 -0
- package/dist/ai/schema/types.js.map +1 -0
- package/dist/ai/schema/vector-store.d.ts +53 -0
- package/dist/ai/schema/vector-store.js +65 -0
- package/dist/ai/schema/vector-store.js.map +1 -0
- package/dist/ai/service/CredentialReader.d.ts +7 -0
- package/dist/ai/service/CredentialReader.js +10 -0
- package/dist/ai/service/CredentialReader.js.map +1 -0
- package/dist/ai/service/CredentialReaderImpl.d.ts +6 -0
- package/dist/ai/service/CredentialReaderImpl.js +55 -0
- package/dist/ai/service/CredentialReaderImpl.js.map +1 -0
- package/dist/ai/service/EmbeddingService.d.ts +8 -0
- package/dist/ai/service/EmbeddingService.js +10 -0
- package/dist/ai/service/EmbeddingService.js.map +1 -0
- package/dist/ai/service/EmbeddingServiceImpl.d.ts +11 -0
- package/dist/ai/service/EmbeddingServiceImpl.js +73 -0
- package/dist/ai/service/EmbeddingServiceImpl.js.map +1 -0
- package/dist/ai/service/ProviderRegistry.d.ts +26 -0
- package/dist/ai/service/ProviderRegistry.js +10 -0
- package/dist/ai/service/ProviderRegistry.js.map +1 -0
- package/dist/ai/service/ProviderRegistryImpl.d.ts +14 -0
- package/dist/ai/service/ProviderRegistryImpl.js +112 -0
- package/dist/ai/service/ProviderRegistryImpl.js.map +1 -0
- package/dist/ai/service/index.d.ts +10 -0
- package/dist/ai/service/index.js +29 -0
- package/dist/ai/service/index.js.map +1 -0
- package/dist/ai/service/types.d.ts +12 -0
- package/dist/ai/service/types.js +6 -0
- package/dist/ai/service/types.js.map +1 -0
- package/dist/api/ApiServer.d.ts +77 -0
- package/dist/api/ApiServer.js +191 -0
- package/dist/api/ApiServer.js.map +1 -0
- package/dist/api/auth/AuthContext.d.ts +41 -0
- package/dist/api/auth/AuthContext.js +44 -0
- package/dist/api/auth/AuthContext.js.map +1 -0
- package/dist/api/auth/Authenticator.d.ts +23 -0
- package/dist/api/auth/Authenticator.js +3 -0
- package/dist/api/auth/Authenticator.js.map +1 -0
- package/dist/api/auth/ClientCredentialsAuthenticator.d.ts +56 -0
- package/dist/api/auth/ClientCredentialsAuthenticator.js +191 -0
- package/dist/api/auth/ClientCredentialsAuthenticator.js.map +1 -0
- package/dist/api/auth/MultiAuthenticator.d.ts +15 -0
- package/dist/api/auth/MultiAuthenticator.js +36 -0
- package/dist/api/auth/MultiAuthenticator.js.map +1 -0
- package/dist/api/auth/NodeTokenAuthenticator.d.ts +21 -0
- package/dist/api/auth/NodeTokenAuthenticator.js +124 -0
- package/dist/api/auth/NodeTokenAuthenticator.js.map +1 -0
- package/dist/api/auth/SolidTokenAuthenticator.d.ts +27 -0
- package/dist/api/auth/SolidTokenAuthenticator.js +144 -0
- package/dist/api/auth/SolidTokenAuthenticator.js.map +1 -0
- package/dist/api/auth/index.d.ts +5 -0
- package/dist/api/auth/index.js +23 -0
- package/dist/api/auth/index.js.map +1 -0
- package/dist/api/chatkit/ai-provider.d.ts +44 -0
- package/dist/api/chatkit/ai-provider.js +157 -0
- package/dist/api/chatkit/ai-provider.js.map +1 -0
- package/dist/api/chatkit/index.d.ts +11 -0
- package/dist/api/chatkit/index.js +44 -0
- package/dist/api/chatkit/index.js.map +1 -0
- package/dist/api/chatkit/pod-store.d.ts +154 -0
- package/dist/api/chatkit/pod-store.js +794 -0
- package/dist/api/chatkit/pod-store.js.map +1 -0
- package/dist/api/chatkit/schema.d.ts +139 -0
- package/dist/api/chatkit/schema.js +168 -0
- package/dist/api/chatkit/schema.js.map +1 -0
- package/dist/api/chatkit/service.d.ts +143 -0
- package/dist/api/chatkit/service.js +442 -0
- package/dist/api/chatkit/service.js.map +1 -0
- package/dist/api/chatkit/store.d.ts +63 -0
- package/dist/api/chatkit/store.js +178 -0
- package/dist/api/chatkit/store.js.map +1 -0
- package/dist/api/chatkit/types.d.ts +461 -0
- package/dist/api/chatkit/types.js +50 -0
- package/dist/api/chatkit/types.js.map +1 -0
- package/dist/api/container/cloud.d.ts +12 -0
- package/dist/api/container/cloud.js +97 -0
- package/dist/api/container/cloud.js.map +1 -0
- package/dist/api/container/common.d.ts +11 -0
- package/dist/api/container/common.js +82 -0
- package/dist/api/container/common.js.map +1 -0
- package/dist/api/container/index.d.ts +16 -0
- package/dist/api/container/index.js +90 -0
- package/dist/api/container/index.js.map +1 -0
- package/dist/api/container/local.d.ts +13 -0
- package/dist/api/container/local.js +197 -0
- package/dist/api/container/local.js.map +1 -0
- package/dist/api/container/routes.d.ts +11 -0
- package/dist/api/container/routes.js +129 -0
- package/dist/api/container/routes.js.map +1 -0
- package/dist/api/container/types.d.ts +92 -0
- package/dist/api/container/types.js +8 -0
- package/dist/api/container/types.js.map +1 -0
- package/dist/api/handlers/AdminHandler.d.ts +6 -0
- package/dist/api/handlers/AdminHandler.js +330 -0
- package/dist/api/handlers/AdminHandler.js.map +1 -0
- package/dist/api/handlers/ApiKeyHandler.d.ts +15 -0
- package/dist/api/handlers/ApiKeyHandler.js +159 -0
- package/dist/api/handlers/ApiKeyHandler.js.map +1 -0
- package/dist/api/handlers/ChatHandler.d.ts +60 -0
- package/dist/api/handlers/ChatHandler.js +230 -0
- package/dist/api/handlers/ChatHandler.js.map +1 -0
- package/dist/api/handlers/ChatKitHandler.d.ts +18 -0
- package/dist/api/handlers/ChatKitHandler.js +151 -0
- package/dist/api/handlers/ChatKitHandler.js.map +1 -0
- package/dist/api/handlers/DashboardHandler.d.ts +14 -0
- package/dist/api/handlers/DashboardHandler.js +117 -0
- package/dist/api/handlers/DashboardHandler.js.map +1 -0
- package/dist/api/handlers/DdnsHandler.d.ts +19 -0
- package/dist/api/handlers/DdnsHandler.js +306 -0
- package/dist/api/handlers/DdnsHandler.js.map +1 -0
- package/dist/api/handlers/DevHandler.d.ts +18 -0
- package/dist/api/handlers/DevHandler.js +276 -0
- package/dist/api/handlers/DevHandler.js.map +1 -0
- package/dist/api/handlers/NodeHandler.d.ts +16 -0
- package/dist/api/handlers/NodeHandler.js +190 -0
- package/dist/api/handlers/NodeHandler.js.map +1 -0
- package/dist/api/handlers/PodManagementHandler.d.ts +39 -0
- package/dist/api/handlers/PodManagementHandler.js +294 -0
- package/dist/api/handlers/PodManagementHandler.js.map +1 -0
- package/dist/api/handlers/QuotaHandler.d.ts +21 -0
- package/dist/api/handlers/QuotaHandler.js +209 -0
- package/dist/api/handlers/QuotaHandler.js.map +1 -0
- package/dist/api/handlers/SignalHandler.d.ts +13 -0
- package/dist/api/handlers/SignalHandler.js +122 -0
- package/dist/api/handlers/SignalHandler.js.map +1 -0
- package/dist/api/handlers/SubdomainClientHandler.d.ts +24 -0
- package/dist/api/handlers/SubdomainClientHandler.js +169 -0
- package/dist/api/handlers/SubdomainClientHandler.js.map +1 -0
- package/dist/api/handlers/SubdomainHandler.d.ts +17 -0
- package/dist/api/handlers/SubdomainHandler.js +312 -0
- package/dist/api/handlers/SubdomainHandler.js.map +1 -0
- package/dist/api/handlers/VectorHandler.d.ts +15 -0
- package/dist/api/handlers/VectorHandler.js +293 -0
- package/dist/api/handlers/VectorHandler.js.map +1 -0
- package/dist/api/handlers/VectorStoreHandler.d.ts +20 -0
- package/dist/api/handlers/VectorStoreHandler.js +348 -0
- package/dist/api/handlers/VectorStoreHandler.js.map +1 -0
- package/dist/api/handlers/VectorStoreWebhookHandler.d.ts +74 -0
- package/dist/api/handlers/VectorStoreWebhookHandler.js +121 -0
- package/dist/api/handlers/VectorStoreWebhookHandler.js.map +1 -0
- package/dist/api/handlers/WebIdProfileHandler.d.ts +14 -0
- package/dist/api/handlers/WebIdProfileHandler.js +204 -0
- package/dist/api/handlers/WebIdProfileHandler.js.map +1 -0
- package/dist/api/handlers/index.d.ts +11 -0
- package/dist/api/handlers/index.js +28 -0
- package/dist/api/handlers/index.js.map +1 -0
- package/dist/api/index.d.ts +12 -0
- package/dist/api/index.js +29 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/main.d.ts +14 -0
- package/dist/api/main.js +106 -0
- package/dist/api/main.js.map +1 -0
- package/dist/api/middleware/AuthMiddleware.d.ts +35 -0
- package/dist/api/middleware/AuthMiddleware.js +51 -0
- package/dist/api/middleware/AuthMiddleware.js.map +1 -0
- package/dist/api/middleware/index.d.ts +1 -0
- package/dist/api/middleware/index.js +18 -0
- package/dist/api/middleware/index.js.map +1 -0
- package/dist/api/models/model-provider.schema.d.ts +12 -0
- package/dist/api/models/model-provider.schema.js +21 -0
- package/dist/api/models/model-provider.schema.js.map +1 -0
- package/dist/api/models/namespaces.d.ts +9 -0
- package/dist/api/models/namespaces.js +34 -0
- package/dist/api/models/namespaces.js.map +1 -0
- package/dist/api/service/InternalPodService.d.ts +19 -0
- package/dist/api/service/InternalPodService.js +82 -0
- package/dist/api/service/InternalPodService.js.map +1 -0
- package/dist/api/service/VectorService.d.ts +156 -0
- package/dist/api/service/VectorService.js +202 -0
- package/dist/api/service/VectorService.js.map +1 -0
- package/dist/api/service/VectorStoreService.d.ts +262 -0
- package/dist/api/service/VectorStoreService.js +985 -0
- package/dist/api/service/VectorStoreService.js.map +1 -0
- package/dist/api/service/VercelChatService.d.ts +28 -0
- package/dist/api/service/VercelChatService.js +289 -0
- package/dist/api/service/VercelChatService.js.map +1 -0
- package/dist/api/store/DrizzleClientCredentialsStore.d.ts +56 -0
- package/dist/api/store/DrizzleClientCredentialsStore.js +145 -0
- package/dist/api/store/DrizzleClientCredentialsStore.js.map +1 -0
- package/dist/api/store/index.d.ts +1 -0
- package/dist/api/store/index.js +18 -0
- package/dist/api/store/index.js.map +1 -0
- package/dist/components/components.jsonld +88 -0
- package/dist/components/context.jsonld +1962 -0
- package/dist/credential/index.d.ts +1 -0
- package/dist/credential/index.js +18 -0
- package/dist/credential/index.js.map +1 -0
- package/dist/credential/schema/index.d.ts +2 -0
- package/dist/credential/schema/index.js +19 -0
- package/dist/credential/schema/index.js.map +1 -0
- package/dist/credential/schema/tables.d.ts +31 -0
- package/dist/credential/schema/tables.js +42 -0
- package/dist/credential/schema/tables.js.map +1 -0
- package/dist/credential/schema/types.d.ts +20 -0
- package/dist/credential/schema/types.js +26 -0
- package/dist/credential/schema/types.js.map +1 -0
- package/dist/dns/DnsProvider.d.ts +46 -0
- package/dist/dns/DnsProvider.js +3 -0
- package/dist/dns/DnsProvider.js.map +1 -0
- package/dist/dns/DnsProvider.jsonld +161 -0
- package/dist/dns/cloudflare/CloudflareDnsProvider.d.ts +51 -0
- package/dist/dns/cloudflare/CloudflareDnsProvider.js +227 -0
- package/dist/dns/cloudflare/CloudflareDnsProvider.js.map +1 -0
- package/dist/dns/cloudflare/index.d.ts +1 -0
- package/dist/dns/cloudflare/index.js +18 -0
- package/dist/dns/cloudflare/index.js.map +1 -0
- package/dist/dns/tencent/TencentDnsProvider.d.ts +42 -0
- package/dist/dns/tencent/TencentDnsProvider.js +221 -0
- package/dist/dns/tencent/TencentDnsProvider.js.map +1 -0
- package/dist/dns/tencent/TencentDnsProvider.jsonld +239 -0
- package/dist/document/Chunker.d.ts +64 -0
- package/dist/document/Chunker.js +8 -0
- package/dist/document/Chunker.js.map +1 -0
- package/dist/document/DocumentParser.d.ts +58 -0
- package/dist/document/DocumentParser.js +8 -0
- package/dist/document/DocumentParser.js.map +1 -0
- package/dist/document/HeadingChunker.d.ts +34 -0
- package/dist/document/HeadingChunker.js +182 -0
- package/dist/document/HeadingChunker.js.map +1 -0
- package/dist/document/JinaDocumentParser.d.ts +40 -0
- package/dist/document/JinaDocumentParser.js +129 -0
- package/dist/document/JinaDocumentParser.js.map +1 -0
- package/dist/document/index.d.ts +7 -0
- package/dist/document/index.js +26 -0
- package/dist/document/index.js.map +1 -0
- package/dist/edge/DdnsManager.d.ts +53 -0
- package/dist/edge/DdnsManager.js +153 -0
- package/dist/edge/DdnsManager.js.map +1 -0
- package/dist/edge/Dns01CertificateProvisioner.d.ts +27 -0
- package/dist/edge/Dns01CertificateProvisioner.js +160 -0
- package/dist/edge/Dns01CertificateProvisioner.js.map +1 -0
- package/dist/edge/Dns01CertificateProvisioner.jsonld +148 -0
- package/dist/edge/EdgeNodeAgent.d.ts +56 -0
- package/dist/edge/EdgeNodeAgent.js +230 -0
- package/dist/edge/EdgeNodeAgent.js.map +1 -0
- package/dist/edge/EdgeNodeAgent.jsonld +89 -0
- package/dist/edge/EdgeNodeAgentInitializer.d.ts +25 -0
- package/dist/edge/EdgeNodeAgentInitializer.js +64 -0
- package/dist/edge/EdgeNodeAgentInitializer.js.map +1 -0
- package/dist/edge/EdgeNodeCapabilityDetector.d.ts +98 -0
- package/dist/edge/EdgeNodeCapabilityDetector.js +425 -0
- package/dist/edge/EdgeNodeCapabilityDetector.js.map +1 -0
- package/dist/edge/EdgeNodeCertificateProvisioner.d.ts +3 -0
- package/dist/edge/EdgeNodeCertificateProvisioner.js +3 -0
- package/dist/edge/EdgeNodeCertificateProvisioner.js.map +1 -0
- package/dist/edge/EdgeNodeCertificateProvisioner.jsonld +21 -0
- package/dist/edge/EdgeNodeDnsCoordinator.d.ts +38 -0
- package/dist/edge/EdgeNodeDnsCoordinator.js +201 -0
- package/dist/edge/EdgeNodeDnsCoordinator.js.map +1 -0
- package/dist/edge/EdgeNodeDnsCoordinator.jsonld +212 -0
- package/dist/edge/EdgeNodeHealthProbeService.d.ts +25 -0
- package/dist/edge/EdgeNodeHealthProbeService.js +208 -0
- package/dist/edge/EdgeNodeHealthProbeService.js.map +1 -0
- package/dist/edge/EdgeNodeHealthProbeService.jsonld +176 -0
- package/dist/edge/EdgeNodeModeDetector.d.ts +50 -0
- package/dist/edge/EdgeNodeModeDetector.js +194 -0
- package/dist/edge/EdgeNodeModeDetector.js.map +1 -0
- package/dist/edge/EdgeNodeModeDetector.jsonld +114 -0
- package/dist/edge/EdgeNodeTunnelManager.d.ts +23 -0
- package/dist/edge/EdgeNodeTunnelManager.js +99 -0
- package/dist/edge/EdgeNodeTunnelManager.js.map +1 -0
- package/dist/edge/EdgeNodeTunnelManager.jsonld +128 -0
- package/dist/edge/FrpTunnelManager.d.ts +30 -0
- package/dist/edge/FrpTunnelManager.js +151 -0
- package/dist/edge/FrpTunnelManager.js.map +1 -0
- package/dist/edge/FrpTunnelManager.jsonld +192 -0
- package/dist/edge/LocalNetworkManager.d.ts +41 -0
- package/dist/edge/LocalNetworkManager.js +115 -0
- package/dist/edge/LocalNetworkManager.js.map +1 -0
- package/dist/edge/acme/AcmeCertificateManager.d.ts +65 -0
- package/dist/edge/acme/AcmeCertificateManager.js +233 -0
- package/dist/edge/acme/AcmeCertificateManager.js.map +1 -0
- package/dist/edge/acme/AcmeCertificateManager.jsonld +373 -0
- package/dist/edge/acme/ClusterCertificateManager.d.ts +40 -0
- package/dist/edge/acme/ClusterCertificateManager.js +184 -0
- package/dist/edge/acme/ClusterCertificateManager.js.map +1 -0
- package/dist/edge/acme/DnsChallengeClient.d.ts +15 -0
- package/dist/edge/acme/DnsChallengeClient.js +40 -0
- package/dist/edge/acme/DnsChallengeClient.js.map +1 -0
- package/dist/edge/acme/utils.d.ts +4 -0
- package/dist/edge/acme/utils.js +17 -0
- package/dist/edge/acme/utils.js.map +1 -0
- package/dist/edge/frp/FrpRelay.d.ts +11 -0
- package/dist/edge/frp/FrpRelay.js +29 -0
- package/dist/edge/frp/FrpRelay.js.map +1 -0
- package/dist/edge/frp/FrpcProcessManager.d.ts +51 -0
- package/dist/edge/frp/FrpcProcessManager.js +174 -0
- package/dist/edge/frp/FrpcProcessManager.js.map +1 -0
- package/dist/edge/interfaces/EdgeNodeTunnelManager.d.ts +6 -0
- package/dist/edge/interfaces/EdgeNodeTunnelManager.js +3 -0
- package/dist/edge/interfaces/EdgeNodeTunnelManager.js.map +1 -0
- package/dist/edge/interfaces/EdgeNodeTunnelManager.jsonld +21 -0
- package/dist/embedding/CredentialReader.d.ts +7 -0
- package/dist/embedding/CredentialReader.js +10 -0
- package/dist/embedding/CredentialReader.js.map +1 -0
- package/dist/embedding/CredentialReader.jsonld +22 -0
- package/dist/embedding/CredentialReaderImpl.d.ts +6 -0
- package/dist/embedding/CredentialReaderImpl.js +55 -0
- package/dist/embedding/CredentialReaderImpl.js.map +1 -0
- package/dist/embedding/CredentialReaderImpl.jsonld +31 -0
- package/dist/embedding/EmbeddingService.d.ts +8 -0
- package/dist/embedding/EmbeddingService.js +10 -0
- package/dist/embedding/EmbeddingService.js.map +1 -0
- package/dist/embedding/EmbeddingService.jsonld +26 -0
- package/dist/embedding/EmbeddingServiceImpl.d.ts +11 -0
- package/dist/embedding/EmbeddingServiceImpl.js +73 -0
- package/dist/embedding/EmbeddingServiceImpl.js.map +1 -0
- package/dist/embedding/EmbeddingServiceImpl.jsonld +53 -0
- package/dist/embedding/ProviderRegistry.d.ts +26 -0
- package/dist/embedding/ProviderRegistry.js +10 -0
- package/dist/embedding/ProviderRegistry.js.map +1 -0
- package/dist/embedding/ProviderRegistry.jsonld +30 -0
- package/dist/embedding/ProviderRegistryImpl.d.ts +14 -0
- package/dist/embedding/ProviderRegistryImpl.js +112 -0
- package/dist/embedding/ProviderRegistryImpl.js.map +1 -0
- package/dist/embedding/ProviderRegistryImpl.jsonld +40 -0
- package/dist/embedding/index.d.ts +5 -0
- package/dist/embedding/index.js +22 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/schema/index.d.ts +1 -0
- package/dist/embedding/schema/index.js +18 -0
- package/dist/embedding/schema/index.js.map +1 -0
- package/dist/embedding/schema/tables.d.ts +70 -0
- package/dist/embedding/schema/tables.js +102 -0
- package/dist/embedding/schema/tables.js.map +1 -0
- package/dist/embedding/types.d.ts +12 -0
- package/dist/embedding/types.js +6 -0
- package/dist/embedding/types.js.map +1 -0
- package/dist/gateway/port-finder.d.ts +4 -0
- package/dist/gateway/port-finder.js +15 -0
- package/dist/gateway/port-finder.js.map +1 -0
- package/dist/gateway/proxy.d.ts +22 -0
- package/dist/gateway/proxy.js +149 -0
- package/dist/gateway/proxy.js.map +1 -0
- package/dist/gateway/supervisor.d.ts +2 -0
- package/dist/gateway/supervisor.js +7 -0
- package/dist/gateway/supervisor.js.map +1 -0
- package/dist/gateway/types.d.ts +1 -0
- package/dist/gateway/types.js +3 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/http/AppStaticAssetHandler.d.ts +8 -0
- package/dist/http/AppStaticAssetHandler.js +27 -0
- package/dist/http/AppStaticAssetHandler.js.map +1 -0
- package/dist/http/AppStaticAssetHandler.jsonld +26 -0
- package/dist/http/ClusterIngressRouter.d.ts +93 -0
- package/dist/http/ClusterIngressRouter.js +355 -0
- package/dist/http/ClusterIngressRouter.js.map +1 -0
- package/dist/http/ClusterIngressRouter.jsonld +227 -0
- package/dist/http/ClusterWebSocketConfigurator.d.ts +59 -0
- package/dist/http/ClusterWebSocketConfigurator.js +226 -0
- package/dist/http/ClusterWebSocketConfigurator.js.map +1 -0
- package/dist/http/ClusterWebSocketConfigurator.jsonld +145 -0
- package/dist/http/EdgeNodeDirectDebugHttpHandler.d.ts +25 -0
- package/dist/http/EdgeNodeDirectDebugHttpHandler.js +126 -0
- package/dist/http/EdgeNodeDirectDebugHttpHandler.js.map +1 -0
- package/dist/http/EdgeNodeDirectDebugHttpHandler.jsonld +151 -0
- package/dist/http/EdgeNodeProxyHttpHandler.d.ts +28 -0
- package/dist/http/EdgeNodeProxyHttpHandler.js +190 -0
- package/dist/http/EdgeNodeProxyHttpHandler.js.map +1 -0
- package/dist/http/EdgeNodeProxyHttpHandler.jsonld +162 -0
- package/dist/http/PodRoutingHttpHandler.d.ts +64 -0
- package/dist/http/PodRoutingHttpHandler.js +233 -0
- package/dist/http/PodRoutingHttpHandler.js.map +1 -0
- package/dist/http/PodRoutingHttpHandler.jsonld +171 -0
- package/dist/http/RequestIdHttpHandler.d.ts +15 -0
- package/dist/http/RequestIdHttpHandler.js +59 -0
- package/dist/http/RequestIdHttpHandler.js.map +1 -0
- package/dist/http/RouterHttpHandler.d.ts +21 -0
- package/dist/http/RouterHttpHandler.js +49 -0
- package/dist/http/RouterHttpHandler.js.map +1 -0
- package/dist/http/RouterHttpHandler.jsonld +80 -0
- package/dist/http/RouterHttpRoute.d.ts +6 -0
- package/dist/http/RouterHttpRoute.js +11 -0
- package/dist/http/RouterHttpRoute.js.map +1 -0
- package/dist/http/RouterHttpRoute.jsonld +48 -0
- package/dist/http/SignalInterceptHttpHandler.d.ts +24 -0
- package/dist/http/SignalInterceptHttpHandler.js +47 -0
- package/dist/http/SignalInterceptHttpHandler.js.map +1 -0
- package/dist/http/SignalInterceptHttpHandler.jsonld +103 -0
- package/dist/http/SubgraphSparqlHttpHandler.d.ts +70 -0
- package/dist/http/SubgraphSparqlHttpHandler.js +640 -0
- package/dist/http/SubgraphSparqlHttpHandler.js.map +1 -0
- package/dist/http/SubgraphSparqlHttpHandler.jsonld +363 -0
- package/dist/http/TracingHandler.d.ts +19 -0
- package/dist/http/TracingHandler.js +60 -0
- package/dist/http/TracingHandler.js.map +1 -0
- package/dist/http/TracingHandler.jsonld +37 -0
- package/dist/http/admin/EdgeNodeAdminHttpHandler.d.ts +45 -0
- package/dist/http/admin/EdgeNodeAdminHttpHandler.js +292 -0
- package/dist/http/admin/EdgeNodeAdminHttpHandler.js.map +1 -0
- package/dist/http/admin/EdgeNodeCertificateHttpHandler.d.ts +33 -0
- package/dist/http/admin/EdgeNodeCertificateHttpHandler.js +172 -0
- package/dist/http/admin/EdgeNodeCertificateHttpHandler.js.map +1 -0
- package/dist/http/admin/EdgeNodeCertificateHttpHandler.jsonld +182 -0
- package/dist/http/admin/EdgeNodeSignalHttpHandler.d.ts +71 -0
- package/dist/http/admin/EdgeNodeSignalHttpHandler.js +674 -0
- package/dist/http/admin/EdgeNodeSignalHttpHandler.js.map +1 -0
- package/dist/http/admin/EdgeNodeSignalHttpHandler.jsonld +406 -0
- package/dist/http/cluster/PodMigrationHttpHandler.d.ts +52 -0
- package/dist/http/cluster/PodMigrationHttpHandler.js +208 -0
- package/dist/http/cluster/PodMigrationHttpHandler.js.map +1 -0
- package/dist/http/cluster/PodMigrationHttpHandler.jsonld +169 -0
- package/dist/http/quota/QuotaAdminHttpHandler.d.ts +34 -0
- package/dist/http/quota/QuotaAdminHttpHandler.js +241 -0
- package/dist/http/quota/QuotaAdminHttpHandler.js.map +1 -0
- package/dist/http/quota/QuotaAdminHttpHandler.jsonld +171 -0
- package/dist/http/search/SearchHttpHandler.d.ts +59 -0
- package/dist/http/search/SearchHttpHandler.js +312 -0
- package/dist/http/search/SearchHttpHandler.js.map +1 -0
- package/dist/http/search/index.d.ts +1 -0
- package/dist/http/search/index.js +18 -0
- package/dist/http/search/index.js.map +1 -0
- package/dist/http/terminal/TerminalHttpHandler.d.ts +45 -0
- package/dist/http/terminal/TerminalHttpHandler.js +306 -0
- package/dist/http/terminal/TerminalHttpHandler.js.map +1 -0
- package/dist/http/terminal/TerminalHttpHandler.jsonld +232 -0
- package/dist/http/terminal/index.d.ts +1 -0
- package/dist/http/terminal/index.js +18 -0
- package/dist/http/terminal/index.js.map +1 -0
- package/dist/http/vector/VectorHttpHandler.d.ts +42 -0
- package/dist/http/vector/VectorHttpHandler.js +301 -0
- package/dist/http/vector/VectorHttpHandler.js.map +1 -0
- package/dist/http/vector/VectorHttpHandler.jsonld +157 -0
- package/dist/http/vector/index.d.ts +1 -0
- package/dist/http/vector/index.js +18 -0
- package/dist/http/vector/index.js.map +1 -0
- package/dist/ice/IceServerProvider.d.ts +85 -0
- package/dist/ice/IceServerProvider.js +122 -0
- package/dist/ice/IceServerProvider.js.map +1 -0
- package/dist/ice/index.d.ts +8 -0
- package/dist/ice/index.js +25 -0
- package/dist/ice/index.js.map +1 -0
- package/dist/identity/CenterNodeRegistrationService.d.ts +102 -0
- package/dist/identity/CenterNodeRegistrationService.js +266 -0
- package/dist/identity/CenterNodeRegistrationService.js.map +1 -0
- package/dist/identity/CenterNodeRegistrationService.jsonld +251 -0
- package/dist/identity/ReactAppViewHandler.d.ts +31 -0
- package/dist/identity/ReactAppViewHandler.js +79 -0
- package/dist/identity/ReactAppViewHandler.js.map +1 -0
- package/dist/identity/ReactAppViewHandler.jsonld +99 -0
- package/dist/identity/drizzle/AccountRepository.d.ts +31 -0
- package/dist/identity/drizzle/AccountRepository.js +130 -0
- package/dist/identity/drizzle/AccountRepository.js.map +1 -0
- package/dist/identity/drizzle/AccountRoleRepository.d.ts +23 -0
- package/dist/identity/drizzle/AccountRoleRepository.js +233 -0
- package/dist/identity/drizzle/AccountRoleRepository.js.map +1 -0
- package/dist/identity/drizzle/DdnsRepository.d.ts +87 -0
- package/dist/identity/drizzle/DdnsRepository.js +284 -0
- package/dist/identity/drizzle/DdnsRepository.js.map +1 -0
- package/dist/identity/drizzle/DrizzleIndexedStorage.d.ts +26 -0
- package/dist/identity/drizzle/DrizzleIndexedStorage.js +159 -0
- package/dist/identity/drizzle/DrizzleIndexedStorage.js.map +1 -0
- package/dist/identity/drizzle/DrizzleIndexedStorage.jsonld +130 -0
- package/dist/identity/drizzle/EdgeNodeRepository.d.ts +155 -0
- package/dist/identity/drizzle/EdgeNodeRepository.js +555 -0
- package/dist/identity/drizzle/EdgeNodeRepository.js.map +1 -0
- package/dist/identity/drizzle/PodLookupRepository.d.ts +59 -0
- package/dist/identity/drizzle/PodLookupRepository.js +153 -0
- package/dist/identity/drizzle/PodLookupRepository.js.map +1 -0
- package/dist/identity/drizzle/WebIdProfileRepository.d.ts +58 -0
- package/dist/identity/drizzle/WebIdProfileRepository.js +157 -0
- package/dist/identity/drizzle/WebIdProfileRepository.js.map +1 -0
- package/dist/identity/drizzle/db.d.ts +60 -0
- package/dist/identity/drizzle/db.js +269 -0
- package/dist/identity/drizzle/db.js.map +1 -0
- package/dist/identity/drizzle/schema.d.ts +1 -0
- package/dist/identity/drizzle/schema.js +20 -0
- package/dist/identity/drizzle/schema.js.map +1 -0
- package/dist/identity/drizzle/schema.pg.d.ts +20 -0
- package/dist/identity/drizzle/schema.pg.js +103 -0
- package/dist/identity/drizzle/schema.pg.js.map +1 -0
- package/dist/identity/drizzle/schema.sqlite.d.ts +872 -0
- package/dist/identity/drizzle/schema.sqlite.js +100 -0
- package/dist/identity/drizzle/schema.sqlite.js.map +1 -0
- package/dist/identity/oidc/AutoDetectIdentityProviderHandler.d.ts +43 -0
- package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js +92 -0
- package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js.map +1 -0
- package/dist/identity/oidc/AutoDetectIdentityProviderHandler.jsonld +122 -0
- package/dist/identity/oidc/AutoDetectOidcHandler.d.ts +55 -0
- package/dist/identity/oidc/AutoDetectOidcHandler.js +137 -0
- package/dist/identity/oidc/AutoDetectOidcHandler.js.map +1 -0
- package/dist/identity/oidc/AutoDetectOidcHandler.jsonld +138 -0
- package/dist/identity/oidc/DisabledIdentityProviderHandler.d.ts +51 -0
- package/dist/identity/oidc/DisabledIdentityProviderHandler.js +104 -0
- package/dist/identity/oidc/DisabledIdentityProviderHandler.js.map +1 -0
- package/dist/identity/oidc/DisabledIdentityProviderHandler.jsonld +111 -0
- package/dist/identity/oidc/DisabledOidcHandler.d.ts +55 -0
- package/dist/identity/oidc/DisabledOidcHandler.js +132 -0
- package/dist/identity/oidc/DisabledOidcHandler.js.map +1 -0
- package/dist/identity/oidc/DisabledOidcHandler.jsonld +157 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.js +155 -0
- package/dist/index.js.map +1 -0
- package/dist/legacy/DrizzleClientCredentialsStore.d.ts +51 -0
- package/dist/legacy/DrizzleClientCredentialsStore.js +142 -0
- package/dist/legacy/DrizzleClientCredentialsStore.js.map +1 -0
- package/dist/legacy/DrizzleIndexedStorage.d.ts +26 -0
- package/dist/legacy/DrizzleIndexedStorage.js +159 -0
- package/dist/legacy/DrizzleIndexedStorage.js.map +1 -0
- package/dist/legacy/DrizzleQuotaService.d.ts +16 -0
- package/dist/legacy/DrizzleQuotaService.js +37 -0
- package/dist/legacy/DrizzleQuotaService.js.map +1 -0
- package/dist/libs/backends/index.d.ts +6 -0
- package/dist/libs/backends/index.js +31 -0
- package/dist/libs/backends/index.js.map +1 -0
- package/dist/libs/backends/sqlup.d.ts +44 -0
- package/dist/libs/backends/sqlup.js +437 -0
- package/dist/libs/backends/sqlup.js.map +1 -0
- package/dist/logging/ConfigurableLoggerFactory.d.ts +24 -0
- package/dist/logging/ConfigurableLoggerFactory.js +77 -0
- package/dist/logging/ConfigurableLoggerFactory.js.map +1 -0
- package/dist/logging/ConfigurableLoggerFactory.jsonld +169 -0
- package/dist/logging/LogContext.d.ts +5 -0
- package/dist/logging/LogContext.js +6 -0
- package/dist/logging/LogContext.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +148 -0
- package/dist/main.js.map +1 -0
- package/dist/network/LocalNetworkDetector.d.ts +65 -0
- package/dist/network/LocalNetworkDetector.js +185 -0
- package/dist/network/LocalNetworkDetector.js.map +1 -0
- package/dist/network/index.d.ts +4 -0
- package/dist/network/index.js +21 -0
- package/dist/network/index.js.map +1 -0
- package/dist/pods/ReservedSuffixIdentifierGenerator.d.ts +13 -0
- package/dist/pods/ReservedSuffixIdentifierGenerator.js +26 -0
- package/dist/pods/ReservedSuffixIdentifierGenerator.js.map +1 -0
- package/dist/pods/ReservedSuffixIdentifierGenerator.jsonld +75 -0
- package/dist/quota/DefaultQuotaService.d.ts +16 -0
- package/dist/quota/DefaultQuotaService.js +37 -0
- package/dist/quota/DefaultQuotaService.js.map +1 -0
- package/dist/quota/DefaultQuotaService.jsonld +85 -0
- package/dist/quota/DrizzleQuotaService.d.ts +16 -0
- package/dist/quota/DrizzleQuotaService.js +37 -0
- package/dist/quota/DrizzleQuotaService.js.map +1 -0
- package/dist/quota/DrizzleQuotaService.jsonld +87 -0
- package/dist/quota/NoopQuotaService.d.ts +7 -0
- package/dist/quota/NoopQuotaService.js +15 -0
- package/dist/quota/NoopQuotaService.js.map +1 -0
- package/dist/quota/NoopQuotaService.jsonld +36 -0
- package/dist/quota/QuotaService.d.ts +6 -0
- package/dist/quota/QuotaService.js +3 -0
- package/dist/quota/QuotaService.js.map +1 -0
- package/dist/quota/QuotaService.jsonld +33 -0
- package/dist/sdk/SignalingClientAdapter.d.ts +38 -0
- package/dist/sdk/SignalingClientAdapter.js +99 -0
- package/dist/sdk/SignalingClientAdapter.js.map +1 -0
- package/dist/sdk/createFetch.d.ts +23 -0
- package/dist/sdk/createFetch.js +258 -0
- package/dist/sdk/createFetch.js.map +1 -0
- package/dist/sdk/index.d.ts +29 -0
- package/dist/sdk/index.js +34 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/xpodFetch.d.ts +112 -0
- package/dist/sdk/xpodFetch.js +251 -0
- package/dist/sdk/xpodFetch.js.map +1 -0
- package/dist/service/EdgeNodeCertificateService.d.ts +45 -0
- package/dist/service/EdgeNodeCertificateService.js +164 -0
- package/dist/service/EdgeNodeCertificateService.js.map +1 -0
- package/dist/service/EdgeNodeCertificateService.jsonld +216 -0
- package/dist/service/EdgeNodeHeartbeatService.d.ts +68 -0
- package/dist/service/EdgeNodeHeartbeatService.js +262 -0
- package/dist/service/EdgeNodeHeartbeatService.js.map +1 -0
- package/dist/service/PodMigrationService.d.ts +43 -0
- package/dist/service/PodMigrationService.js +72 -0
- package/dist/service/PodMigrationService.js.map +1 -0
- package/dist/service/PodMigrationService.jsonld +76 -0
- package/dist/signaling/SignalingClient.d.ts +142 -0
- package/dist/signaling/SignalingClient.js +305 -0
- package/dist/signaling/SignalingClient.js.map +1 -0
- package/dist/signaling/SignalingService.d.ts +104 -0
- package/dist/signaling/SignalingService.js +440 -0
- package/dist/signaling/SignalingService.js.map +1 -0
- package/dist/signaling/index.d.ts +11 -0
- package/dist/signaling/index.js +28 -0
- package/dist/signaling/index.js.map +1 -0
- package/dist/signaling/types.d.ts +237 -0
- package/dist/signaling/types.js +18 -0
- package/dist/signaling/types.js.map +1 -0
- package/dist/storage/DrizzleCompat.d.ts +15 -0
- package/dist/storage/DrizzleCompat.js +60 -0
- package/dist/storage/DrizzleCompat.js.map +1 -0
- package/dist/storage/LockingResourceStore.d.ts +8 -0
- package/dist/storage/LockingResourceStore.js +68 -0
- package/dist/storage/LockingResourceStore.js.map +1 -0
- package/dist/storage/MigratableDataAccessor.d.ts +63 -0
- package/dist/storage/MigratableDataAccessor.js +11 -0
- package/dist/storage/MigratableDataAccessor.js.map +1 -0
- package/dist/storage/MigratableDataAccessor.jsonld +60 -0
- package/dist/storage/ObservableResourceStore.d.ts +89 -0
- package/dist/storage/ObservableResourceStore.js +125 -0
- package/dist/storage/ObservableResourceStore.js.map +1 -0
- package/dist/storage/RepresentationPartialConvertingStore.d.ts +22 -0
- package/dist/storage/RepresentationPartialConvertingStore.js +94 -0
- package/dist/storage/RepresentationPartialConvertingStore.js.map +1 -0
- package/dist/storage/RepresentationPartialConvertingStore.jsonld +332 -0
- package/dist/storage/SparqlUpdateResourceStore.d.ts +30 -0
- package/dist/storage/SparqlUpdateResourceStore.js +292 -0
- package/dist/storage/SparqlUpdateResourceStore.js.map +1 -0
- package/dist/storage/SparqlUpdateResourceStore.jsonld +112 -0
- package/dist/storage/SqliteCompat.d.ts +60 -0
- package/dist/storage/SqliteCompat.js +158 -0
- package/dist/storage/SqliteCompat.js.map +1 -0
- package/dist/storage/accessors/MinioDataAccessor.d.ts +127 -0
- package/dist/storage/accessors/MinioDataAccessor.js +249 -0
- package/dist/storage/accessors/MinioDataAccessor.js.map +1 -0
- package/dist/storage/accessors/MinioDataAccessor.jsonld +138 -0
- package/dist/storage/accessors/MixDataAccessor.d.ts +43 -0
- package/dist/storage/accessors/MixDataAccessor.js +130 -0
- package/dist/storage/accessors/MixDataAccessor.js.map +1 -0
- package/dist/storage/accessors/MixDataAccessor.jsonld +101 -0
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +146 -0
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +415 -0
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js.map +1 -0
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +180 -0
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +95 -0
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +376 -0
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js.map +1 -0
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +168 -0
- package/dist/storage/accessors/TieredMinioDataAccessor.d.ts +150 -0
- package/dist/storage/accessors/TieredMinioDataAccessor.js +582 -0
- package/dist/storage/accessors/TieredMinioDataAccessor.js.map +1 -0
- package/dist/storage/accessors/TieredMinioDataAccessor.jsonld +333 -0
- package/dist/storage/database/PostgresPoolManager.d.ts +56 -0
- package/dist/storage/database/PostgresPoolManager.js +117 -0
- package/dist/storage/database/PostgresPoolManager.js.map +1 -0
- package/dist/storage/keyvalue/PostgresKeyValueStorage.d.ts +34 -0
- package/dist/storage/keyvalue/PostgresKeyValueStorage.js +146 -0
- package/dist/storage/keyvalue/PostgresKeyValueStorage.js.map +1 -0
- package/dist/storage/keyvalue/PostgresKeyValueStorage.jsonld +192 -0
- package/dist/storage/keyvalue/RedisKeyValueStorage.d.ts +30 -0
- package/dist/storage/keyvalue/RedisKeyValueStorage.js +133 -0
- package/dist/storage/keyvalue/RedisKeyValueStorage.js.map +1 -0
- package/dist/storage/keyvalue/RedisKeyValueStorage.jsonld +237 -0
- package/dist/storage/keyvalue/SqliteKeyValueStorage.d.ts +30 -0
- package/dist/storage/keyvalue/SqliteKeyValueStorage.js +164 -0
- package/dist/storage/keyvalue/SqliteKeyValueStorage.js.map +1 -0
- package/dist/storage/keyvalue/SqliteKeyValueStorage.jsonld +167 -0
- package/dist/storage/quint/BaseQuintStore.d.ts +80 -0
- package/dist/storage/quint/BaseQuintStore.js +535 -0
- package/dist/storage/quint/BaseQuintStore.js.map +1 -0
- package/dist/storage/quint/BaseQuintStore.jsonld +175 -0
- package/dist/storage/quint/PgQuintStore.d.ts +61 -0
- package/dist/storage/quint/PgQuintStore.drizzle.d.ts +45 -0
- package/dist/storage/quint/PgQuintStore.drizzle.js +327 -0
- package/dist/storage/quint/PgQuintStore.drizzle.js.map +1 -0
- package/dist/storage/quint/PgQuintStore.js +275 -0
- package/dist/storage/quint/PgQuintStore.js.map +1 -0
- package/dist/storage/quint/PgQuintStore.jsonld +258 -0
- package/dist/storage/quint/SqliteQuintStore.d.ts +55 -0
- package/dist/storage/quint/SqliteQuintStore.js +630 -0
- package/dist/storage/quint/SqliteQuintStore.js.map +1 -0
- package/dist/storage/quint/SqliteQuintStore.jsonld +157 -0
- package/dist/storage/quint/index.d.ts +11 -0
- package/dist/storage/quint/index.js +30 -0
- package/dist/storage/quint/index.js.map +1 -0
- package/dist/storage/quint/schema.d.ts +82 -0
- package/dist/storage/quint/schema.js +33 -0
- package/dist/storage/quint/schema.js.map +1 -0
- package/dist/storage/quint/serialization.d.ts +56 -0
- package/dist/storage/quint/serialization.js +198 -0
- package/dist/storage/quint/serialization.js.map +1 -0
- package/dist/storage/quint/types.d.ts +152 -0
- package/dist/storage/quint/types.js +27 -0
- package/dist/storage/quint/types.js.map +1 -0
- package/dist/storage/quint/types.jsonld +78 -0
- package/dist/storage/quota/PerAccountQuotaStrategy.d.ts +19 -0
- package/dist/storage/quota/PerAccountQuotaStrategy.js +63 -0
- package/dist/storage/quota/PerAccountQuotaStrategy.js.map +1 -0
- package/dist/storage/quota/PerAccountQuotaStrategy.jsonld +113 -0
- package/dist/storage/quota/UsageRepository.d.ts +46 -0
- package/dist/storage/quota/UsageRepository.js +278 -0
- package/dist/storage/quota/UsageRepository.js.map +1 -0
- package/dist/storage/quota/UsageTrackingStore.d.ts +37 -0
- package/dist/storage/quota/UsageTrackingStore.js +355 -0
- package/dist/storage/quota/UsageTrackingStore.js.map +1 -0
- package/dist/storage/quota/UsageTrackingStore.jsonld +193 -0
- package/dist/storage/sparql/AlgebraUtils.d.ts +48 -0
- package/dist/storage/sparql/AlgebraUtils.js +118 -0
- package/dist/storage/sparql/AlgebraUtils.js.map +1 -0
- package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +59 -0
- package/dist/storage/sparql/ComunicaOptimizedEngine.js +254 -0
- package/dist/storage/sparql/ComunicaOptimizedEngine.js.map +1 -0
- package/dist/storage/sparql/ComunicaQuintEngine.d.ts +134 -0
- package/dist/storage/sparql/ComunicaQuintEngine.js +727 -0
- package/dist/storage/sparql/ComunicaQuintEngine.js.map +1 -0
- package/dist/storage/sparql/ExpressionEvaluator.d.ts +54 -0
- package/dist/storage/sparql/ExpressionEvaluator.js +340 -0
- package/dist/storage/sparql/ExpressionEvaluator.js.map +1 -0
- package/dist/storage/sparql/FilterPushdownExtractor.d.ts +74 -0
- package/dist/storage/sparql/FilterPushdownExtractor.js +409 -0
- package/dist/storage/sparql/FilterPushdownExtractor.js.map +1 -0
- package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +65 -0
- package/dist/storage/sparql/OptimizedQuadstoreEngine.js +327 -0
- package/dist/storage/sparql/OptimizedQuadstoreEngine.js.map +1 -0
- package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +46 -0
- package/dist/storage/sparql/OptimizedQuadstoreSource.js +118 -0
- package/dist/storage/sparql/OptimizedQuadstoreSource.js.map +1 -0
- package/dist/storage/sparql/PatternBuilder.d.ts +41 -0
- package/dist/storage/sparql/PatternBuilder.js +118 -0
- package/dist/storage/sparql/PatternBuilder.js.map +1 -0
- package/dist/storage/sparql/QueryOptimizer.d.ts +125 -0
- package/dist/storage/sparql/QueryOptimizer.js +363 -0
- package/dist/storage/sparql/QueryOptimizer.js.map +1 -0
- package/dist/storage/sparql/QuintEngine.d.ts +92 -0
- package/dist/storage/sparql/QuintEngine.js +150 -0
- package/dist/storage/sparql/QuintEngine.js.map +1 -0
- package/dist/storage/sparql/QuintQuerySource.d.ts +227 -0
- package/dist/storage/sparql/QuintQuerySource.js +918 -0
- package/dist/storage/sparql/QuintQuerySource.js.map +1 -0
- package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +40 -0
- package/dist/storage/sparql/SimpleSparqlExecutor.js +131 -0
- package/dist/storage/sparql/SimpleSparqlExecutor.js.map +1 -0
- package/dist/storage/sparql/SubgraphQueryEngine.d.ts +74 -0
- package/dist/storage/sparql/SubgraphQueryEngine.js +248 -0
- package/dist/storage/sparql/SubgraphQueryEngine.js.map +1 -0
- package/dist/storage/sparql/SubgraphQueryEngine.jsonld +250 -0
- package/dist/storage/vector/PostgresVectorStore.d.ts +46 -0
- package/dist/storage/vector/PostgresVectorStore.js +291 -0
- package/dist/storage/vector/PostgresVectorStore.js.map +1 -0
- package/dist/storage/vector/PostgresVectorStore.jsonld +142 -0
- package/dist/storage/vector/SqliteVectorStore.d.ts +44 -0
- package/dist/storage/vector/SqliteVectorStore.js +282 -0
- package/dist/storage/vector/SqliteVectorStore.js.map +1 -0
- package/dist/storage/vector/SqliteVectorStore.jsonld +137 -0
- package/dist/storage/vector/VectorIndexingListener.d.ts +114 -0
- package/dist/storage/vector/VectorIndexingListener.js +351 -0
- package/dist/storage/vector/VectorIndexingListener.js.map +1 -0
- package/dist/storage/vector/VectorStore.d.ts +42 -0
- package/dist/storage/vector/VectorStore.js +50 -0
- package/dist/storage/vector/VectorStore.js.map +1 -0
- package/dist/storage/vector/VectorStore.jsonld +87 -0
- package/dist/storage/vector/VectorStoreInit.d.ts +28 -0
- package/dist/storage/vector/VectorStoreInit.js +104 -0
- package/dist/storage/vector/VectorStoreInit.js.map +1 -0
- package/dist/storage/vector/index.d.ts +5 -0
- package/dist/storage/vector/index.js +22 -0
- package/dist/storage/vector/index.js.map +1 -0
- package/dist/storage/vector/types.d.ts +39 -0
- package/dist/storage/vector/types.js +8 -0
- package/dist/storage/vector/types.js.map +1 -0
- package/dist/subdomain/SubdomainClient.d.ts +156 -0
- package/dist/subdomain/SubdomainClient.js +220 -0
- package/dist/subdomain/SubdomainClient.js.map +1 -0
- package/dist/subdomain/SubdomainService.d.ts +114 -0
- package/dist/subdomain/SubdomainService.js +212 -0
- package/dist/subdomain/SubdomainService.js.map +1 -0
- package/dist/subdomain/SubdomainService.jsonld +261 -0
- package/dist/subdomain/index.d.ts +2 -0
- package/dist/subdomain/index.js +9 -0
- package/dist/subdomain/index.js.map +1 -0
- package/dist/supervisor/Supervisor.d.ts +20 -0
- package/dist/supervisor/Supervisor.js +174 -0
- package/dist/supervisor/Supervisor.js.map +1 -0
- package/dist/supervisor/index.d.ts +2 -0
- package/dist/supervisor/index.js +6 -0
- package/dist/supervisor/index.js.map +1 -0
- package/dist/supervisor/types.d.ts +19 -0
- package/dist/supervisor/types.js +3 -0
- package/dist/supervisor/types.js.map +1 -0
- package/dist/task/DrizzleTaskQueue.d.ts +60 -0
- package/dist/task/DrizzleTaskQueue.js +171 -0
- package/dist/task/DrizzleTaskQueue.js.map +1 -0
- package/dist/task/TaskExecutor.d.ts +82 -0
- package/dist/task/TaskExecutor.js +198 -0
- package/dist/task/TaskExecutor.js.map +1 -0
- package/dist/task/index.d.ts +10 -0
- package/dist/task/index.js +20 -0
- package/dist/task/index.js.map +1 -0
- package/dist/task/schema.d.ts +53 -0
- package/dist/task/schema.js +71 -0
- package/dist/task/schema.js.map +1 -0
- package/dist/task/types.d.ts +186 -0
- package/dist/task/types.js +12 -0
- package/dist/task/types.js.map +1 -0
- package/dist/terminal/AclPermissionService.d.ts +28 -0
- package/dist/terminal/AclPermissionService.js +141 -0
- package/dist/terminal/AclPermissionService.js.map +1 -0
- package/dist/terminal/BubblewrapSandbox.d.ts +51 -0
- package/dist/terminal/BubblewrapSandbox.js +147 -0
- package/dist/terminal/BubblewrapSandbox.js.map +1 -0
- package/dist/terminal/TerminalSession.d.ts +33 -0
- package/dist/terminal/TerminalSession.js +164 -0
- package/dist/terminal/TerminalSession.js.map +1 -0
- package/dist/terminal/TerminalSessionManager.d.ts +69 -0
- package/dist/terminal/TerminalSessionManager.js +196 -0
- package/dist/terminal/TerminalSessionManager.js.map +1 -0
- package/dist/terminal/index.d.ts +5 -0
- package/dist/terminal/index.js +22 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/sandbox/BubblewrapSandbox.d.ts +8 -0
- package/dist/terminal/sandbox/BubblewrapSandbox.js +105 -0
- package/dist/terminal/sandbox/BubblewrapSandbox.js.map +1 -0
- package/dist/terminal/sandbox/MacOSSandbox.d.ts +19 -0
- package/dist/terminal/sandbox/MacOSSandbox.js +120 -0
- package/dist/terminal/sandbox/MacOSSandbox.js.map +1 -0
- package/dist/terminal/sandbox/index.d.ts +29 -0
- package/dist/terminal/sandbox/index.js +113 -0
- package/dist/terminal/sandbox/index.js.map +1 -0
- package/dist/terminal/sandbox/types.d.ts +38 -0
- package/dist/terminal/sandbox/types.js +3 -0
- package/dist/terminal/sandbox/types.js.map +1 -0
- package/dist/terminal/types.d.ts +80 -0
- package/dist/terminal/types.js +16 -0
- package/dist/terminal/types.js.map +1 -0
- package/dist/tunnel/CloudflareTunnelProvider.d.ts +120 -0
- package/dist/tunnel/CloudflareTunnelProvider.js +376 -0
- package/dist/tunnel/CloudflareTunnelProvider.js.map +1 -0
- package/dist/tunnel/CloudflareTunnelProvider.jsonld +204 -0
- package/dist/tunnel/LocalTunnelProvider.d.ts +85 -0
- package/dist/tunnel/LocalTunnelProvider.js +295 -0
- package/dist/tunnel/LocalTunnelProvider.js.map +1 -0
- package/dist/tunnel/LocalTunnelProvider.jsonld +142 -0
- package/dist/tunnel/SakuraFrpTunnelProvider.d.ts +59 -0
- package/dist/tunnel/SakuraFrpTunnelProvider.js +207 -0
- package/dist/tunnel/SakuraFrpTunnelProvider.js.map +1 -0
- package/dist/tunnel/TunnelProvider.d.ts +91 -0
- package/dist/tunnel/TunnelProvider.js +10 -0
- package/dist/tunnel/TunnelProvider.js.map +1 -0
- package/dist/tunnel/TunnelProvider.jsonld +144 -0
- package/dist/tunnel/index.d.ts +3 -0
- package/dist/tunnel/index.js +8 -0
- package/dist/tunnel/index.js.map +1 -0
- package/dist/util/LockContext.d.ts +3 -0
- package/dist/util/LockContext.js +6 -0
- package/dist/util/LockContext.js.map +1 -0
- package/dist/util/ResourceStoreFetch.d.ts +11 -0
- package/dist/util/ResourceStoreFetch.js +147 -0
- package/dist/util/ResourceStoreFetch.js.map +1 -0
- package/dist/util/database/DatabaseMaintenance.d.ts +23 -0
- package/dist/util/database/DatabaseMaintenance.js +82 -0
- package/dist/util/database/DatabaseMaintenance.js.map +1 -0
- package/dist/util/identifiers/ClusterIdentifierStrategy.d.ts +23 -0
- package/dist/util/identifiers/ClusterIdentifierStrategy.js +73 -0
- package/dist/util/identifiers/ClusterIdentifierStrategy.js.map +1 -0
- package/dist/util/identifiers/ClusterIdentifierStrategy.jsonld +90 -0
- package/dist/util/identifiers/MultiDomainIdentifierStrategy.d.ts +40 -0
- package/dist/util/identifiers/MultiDomainIdentifierStrategy.js +73 -0
- package/dist/util/identifiers/MultiDomainIdentifierStrategy.js.map +1 -0
- package/dist/util/identifiers/MultiDomainIdentifierStrategy.jsonld +90 -0
- package/dist/util/identifiers/PathBasedPodIdentifierStrategy.d.ts +78 -0
- package/dist/util/identifiers/PathBasedPodIdentifierStrategy.js +182 -0
- package/dist/util/identifiers/PathBasedPodIdentifierStrategy.js.map +1 -0
- package/dist/util/identifiers/PathBasedPodIdentifierStrategy.jsonld +88 -0
- package/dist/util/identifiers/SubdomainPodIdentifierStrategy.d.ts +68 -0
- package/dist/util/identifiers/SubdomainPodIdentifierStrategy.js +149 -0
- package/dist/util/identifiers/SubdomainPodIdentifierStrategy.js.map +1 -0
- package/dist/util/identifiers/SubdomainPodIdentifierStrategy.jsonld +84 -0
- package/dist/util/locking/DebugRedisLocker.d.ts +8 -0
- package/dist/util/locking/DebugRedisLocker.js +33 -0
- package/dist/util/locking/DebugRedisLocker.js.map +1 -0
- package/dist/util/logger.d.ts +13 -0
- package/dist/util/logger.js +36 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/util/stream/BandwidthThrottleTransform.d.ts +8 -0
- package/dist/util/stream/BandwidthThrottleTransform.js +55 -0
- package/dist/util/stream/BandwidthThrottleTransform.js.map +1 -0
- package/dist/vocab/external.d.ts +216 -0
- package/dist/vocab/external.js +276 -0
- package/dist/vocab/external.js.map +1 -0
- package/dist/vocab/index.d.ts +26 -0
- package/dist/vocab/index.js +46 -0
- package/dist/vocab/index.js.map +1 -0
- package/dist/vocab/udfs.d.ts +184 -0
- package/dist/vocab/udfs.js +217 -0
- package/dist/vocab/udfs.js.map +1 -0
- package/dist/webrtc/WebRTCClient.d.ts +109 -0
- package/dist/webrtc/WebRTCClient.js +344 -0
- package/dist/webrtc/WebRTCClient.js.map +1 -0
- package/dist/webrtc/WebRTCPeerManager.d.ts +112 -0
- package/dist/webrtc/WebRTCPeerManager.js +289 -0
- package/dist/webrtc/WebRTCPeerManager.js.map +1 -0
- package/dist/webrtc/WeriftPeerConnectionFactory.d.ts +13 -0
- package/dist/webrtc/WeriftPeerConnectionFactory.js +255 -0
- package/dist/webrtc/WeriftPeerConnectionFactory.js.map +1 -0
- package/dist/webrtc/index.d.ts +13 -0
- package/dist/webrtc/index.js +30 -0
- package/dist/webrtc/index.js.map +1 -0
- package/dist/webrtc/types.d.ts +169 -0
- package/dist/webrtc/types.js +6 -0
- package/dist/webrtc/types.js.map +1 -0
- package/dist/xpod.single.cjs +826 -0
- package/dist/xpod.single.cjs.map +7 -0
- package/package.json +173 -0
- package/static/app/assets/index.css +1 -0
- package/static/app/assets/main.js +11 -0
- package/static/app/auth.html +21 -0
- package/static/app/index.html +14 -0
- package/static/app/vite.svg +1 -0
- package/static/dashboard/assets/dashboard-G96F8267.js +52 -0
- package/static/dashboard/assets/dashboard-PJyGDppf.css +1 -0
- package/static/dashboard/auth.html +21 -0
- package/static/dashboard/index.html +13 -0
- package/static/dashboard/vite.svg +1 -0
- package/static/landing/index.html +165 -0
- package/templates/identity/index.html.ejs +12 -0
- package/templates/identity/login.html.ejs +49 -0
- package/templates/identity/oidc/consent.html.ejs +103 -0
- package/templates/identity/password/forgot.html.ejs +49 -0
- package/templates/identity/password/login.html.ejs +58 -0
- package/templates/identity/password/register.html.ejs +65 -0
- package/templates/main.html.ejs +1 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ResourceStoreFetch - 将 ResourceStore 包装成 fetch 接口
|
|
4
|
+
*
|
|
5
|
+
* 用于在服务端内部访问 Pod 数据,绕过 HTTP 层和 DPoP 认证。
|
|
6
|
+
* drizzle-solid 可以直接使用这个 fetch 函数。
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createResourceStoreFetch = createResourceStoreFetch;
|
|
10
|
+
const global_logger_factory_1 = require("global-logger-factory");
|
|
11
|
+
const community_server_1 = require("@solid/community-server");
|
|
12
|
+
const node_stream_1 = require("node:stream");
|
|
13
|
+
const logger = (0, global_logger_factory_1.getLoggerFor)('ResourceStoreFetch');
|
|
14
|
+
/**
|
|
15
|
+
* 创建一个基于 ResourceStore 的 fetch 函数
|
|
16
|
+
*/
|
|
17
|
+
function createResourceStoreFetch(resourceStore) {
|
|
18
|
+
return async (input, init) => {
|
|
19
|
+
const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;
|
|
20
|
+
const method = init?.method?.toUpperCase() ?? 'GET';
|
|
21
|
+
logger.debug(`ResourceStoreFetch: ${method} ${url}`);
|
|
22
|
+
try {
|
|
23
|
+
if (method === 'GET' || method === 'HEAD') {
|
|
24
|
+
return await handleGet(resourceStore, url, method === 'HEAD');
|
|
25
|
+
}
|
|
26
|
+
if (method === 'PUT') {
|
|
27
|
+
return await handlePut(resourceStore, url, init);
|
|
28
|
+
}
|
|
29
|
+
if (method === 'DELETE') {
|
|
30
|
+
return await handleDelete(resourceStore, url);
|
|
31
|
+
}
|
|
32
|
+
if (method === 'PATCH') {
|
|
33
|
+
return await handlePatch(resourceStore, url, init);
|
|
34
|
+
}
|
|
35
|
+
// 不支持的方法
|
|
36
|
+
return new Response(null, { status: 405, statusText: 'Method Not Allowed' });
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
logger.error(`ResourceStoreFetch error: ${error.message}`);
|
|
40
|
+
// 处理常见错误
|
|
41
|
+
if (error.statusCode === 404 || error.name === 'NotFoundHttpError') {
|
|
42
|
+
return new Response(null, { status: 404, statusText: 'Not Found' });
|
|
43
|
+
}
|
|
44
|
+
if (error.statusCode === 401 || error.name === 'UnauthorizedHttpError') {
|
|
45
|
+
return new Response(null, { status: 401, statusText: 'Unauthorized' });
|
|
46
|
+
}
|
|
47
|
+
if (error.statusCode === 403 || error.name === 'ForbiddenHttpError') {
|
|
48
|
+
return new Response(null, { status: 403, statusText: 'Forbidden' });
|
|
49
|
+
}
|
|
50
|
+
return new Response(error.message, { status: 500, statusText: 'Internal Server Error' });
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async function handleGet(resourceStore, url, headOnly) {
|
|
55
|
+
const identifier = { path: url };
|
|
56
|
+
const preferences = {
|
|
57
|
+
type: { 'text/turtle': 1, 'application/ld+json': 0.9, '*/*': 0.1 },
|
|
58
|
+
};
|
|
59
|
+
const representation = await resourceStore.getRepresentation(identifier, preferences);
|
|
60
|
+
const contentType = representation.metadata.contentType ?? 'application/octet-stream';
|
|
61
|
+
if (headOnly) {
|
|
62
|
+
// HEAD 请求,不返回 body
|
|
63
|
+
representation.data.destroy();
|
|
64
|
+
return new Response(null, {
|
|
65
|
+
status: 200,
|
|
66
|
+
headers: { 'Content-Type': contentType },
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
// 将 Node.js Readable 流转换为 Web ReadableStream
|
|
70
|
+
const webStream = node_stream_1.Readable.toWeb(representation.data);
|
|
71
|
+
return new Response(webStream, {
|
|
72
|
+
status: 200,
|
|
73
|
+
headers: { 'Content-Type': contentType },
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
async function handlePut(resourceStore, url, init) {
|
|
77
|
+
const identifier = { path: url };
|
|
78
|
+
const contentType = getContentType(init?.headers) ?? 'text/turtle';
|
|
79
|
+
// 获取请求体
|
|
80
|
+
const body = init?.body;
|
|
81
|
+
let data;
|
|
82
|
+
if (typeof body === 'string') {
|
|
83
|
+
data = node_stream_1.Readable.from([body]);
|
|
84
|
+
}
|
|
85
|
+
else if (body instanceof ArrayBuffer) {
|
|
86
|
+
data = node_stream_1.Readable.from([Buffer.from(new Uint8Array(body))]);
|
|
87
|
+
}
|
|
88
|
+
else if (body instanceof Uint8Array) {
|
|
89
|
+
data = node_stream_1.Readable.from([Buffer.from(body)]);
|
|
90
|
+
}
|
|
91
|
+
else if (body && typeof body.getReader === 'function') {
|
|
92
|
+
// Web ReadableStream
|
|
93
|
+
data = node_stream_1.Readable.fromWeb(body);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
data = node_stream_1.Readable.from([]);
|
|
97
|
+
}
|
|
98
|
+
const metadata = new community_server_1.RepresentationMetadata({ path: url }, { 'content-type': contentType });
|
|
99
|
+
const representation = new community_server_1.BasicRepresentation(data, metadata);
|
|
100
|
+
await resourceStore.setRepresentation(identifier, representation);
|
|
101
|
+
return new Response(null, { status: 201, statusText: 'Created' });
|
|
102
|
+
}
|
|
103
|
+
async function handleDelete(resourceStore, url) {
|
|
104
|
+
const identifier = { path: url };
|
|
105
|
+
await resourceStore.deleteResource(identifier);
|
|
106
|
+
return new Response(null, { status: 204, statusText: 'No Content' });
|
|
107
|
+
}
|
|
108
|
+
async function handlePatch(resourceStore, url, init) {
|
|
109
|
+
const identifier = { path: url };
|
|
110
|
+
const contentType = getContentType(init?.headers) ?? 'application/sparql-update';
|
|
111
|
+
const body = init?.body;
|
|
112
|
+
let data;
|
|
113
|
+
if (typeof body === 'string') {
|
|
114
|
+
data = node_stream_1.Readable.from([body]);
|
|
115
|
+
}
|
|
116
|
+
else if (body && typeof body.getReader === 'function') {
|
|
117
|
+
data = node_stream_1.Readable.fromWeb(body);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
data = node_stream_1.Readable.from([]);
|
|
121
|
+
}
|
|
122
|
+
const metadata = new community_server_1.RepresentationMetadata({ path: url }, { 'content-type': contentType });
|
|
123
|
+
const patch = new community_server_1.BasicRepresentation(data, metadata);
|
|
124
|
+
await resourceStore.modifyResource(identifier, patch);
|
|
125
|
+
return new Response(null, { status: 204, statusText: 'No Content' });
|
|
126
|
+
}
|
|
127
|
+
function getContentType(headers) {
|
|
128
|
+
if (!headers)
|
|
129
|
+
return undefined;
|
|
130
|
+
if (headers instanceof Headers) {
|
|
131
|
+
return headers.get('content-type') ?? undefined;
|
|
132
|
+
}
|
|
133
|
+
if (Array.isArray(headers)) {
|
|
134
|
+
const found = headers.find(([key]) => key.toLowerCase() === 'content-type');
|
|
135
|
+
return found ? found[1] : undefined;
|
|
136
|
+
}
|
|
137
|
+
// Record<string, string>
|
|
138
|
+
if (typeof headers === 'object') {
|
|
139
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
140
|
+
if (key.toLowerCase() === 'content-type') {
|
|
141
|
+
return typeof value === 'string' ? value : undefined;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=ResourceStoreFetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceStoreFetch.js","sourceRoot":"","sources":["../../src/util/ResourceStoreFetch.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ResourceStoreFetch - 将 ResourceStore 包装成 fetch 接口\n *\n * 用于在服务端内部访问 Pod 数据,绕过 HTTP 层和 DPoP 认证。\n * drizzle-solid 可以直接使用这个 fetch 函数。\n */\n\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { ResourceStore } from '@solid/community-server';\nimport { BasicRepresentation, RepresentationMetadata } from '@solid/community-server';\nimport { Readable } from 'node:stream';\n\nconst logger = getLoggerFor('ResourceStoreFetch');\n\n/**\n * 创建一个基于 ResourceStore 的 fetch 函数\n */\nexport function createResourceStoreFetch(resourceStore: ResourceStore): typeof fetch {\n return async (input: string | URL | Request, init?: RequestInit): Promise<Response> => {\n const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;\n const method = init?.method?.toUpperCase() ?? 'GET';\n\n logger.debug(`ResourceStoreFetch: ${method} ${url}`);\n\n try {\n if (method === 'GET' || method === 'HEAD') {\n return await handleGet(resourceStore, url, method === 'HEAD');\n }\n\n if (method === 'PUT') {\n return await handlePut(resourceStore, url, init);\n }\n\n if (method === 'DELETE') {\n return await handleDelete(resourceStore, url);\n }\n\n if (method === 'PATCH') {\n return await handlePatch(resourceStore, url, init);\n }\n\n // 不支持的方法\n return new Response(null, { status: 405, statusText: 'Method Not Allowed' });\n } catch (error: any) {\n logger.error(`ResourceStoreFetch error: ${error.message}`);\n\n // 处理常见错误\n if (error.statusCode === 404 || error.name === 'NotFoundHttpError') {\n return new Response(null, { status: 404, statusText: 'Not Found' });\n }\n\n if (error.statusCode === 401 || error.name === 'UnauthorizedHttpError') {\n return new Response(null, { status: 401, statusText: 'Unauthorized' });\n }\n\n if (error.statusCode === 403 || error.name === 'ForbiddenHttpError') {\n return new Response(null, { status: 403, statusText: 'Forbidden' });\n }\n\n return new Response(error.message, { status: 500, statusText: 'Internal Server Error' });\n }\n };\n}\n\nasync function handleGet(resourceStore: ResourceStore, url: string, headOnly: boolean): Promise<Response> {\n const identifier = { path: url };\n const preferences = {\n type: { 'text/turtle': 1, 'application/ld+json': 0.9, '*/*': 0.1 },\n };\n\n const representation = await resourceStore.getRepresentation(identifier, preferences);\n const contentType = representation.metadata.contentType ?? 'application/octet-stream';\n\n if (headOnly) {\n // HEAD 请求,不返回 body\n representation.data.destroy();\n return new Response(null, {\n status: 200,\n headers: { 'Content-Type': contentType },\n });\n }\n\n // 将 Node.js Readable 流转换为 Web ReadableStream\n const webStream = Readable.toWeb(representation.data) as ReadableStream;\n\n return new Response(webStream, {\n status: 200,\n headers: { 'Content-Type': contentType },\n });\n}\n\nasync function handlePut(resourceStore: ResourceStore, url: string, init?: RequestInit): Promise<Response> {\n const identifier = { path: url };\n const contentType = getContentType(init?.headers) ?? 'text/turtle';\n\n // 获取请求体\n const body = init?.body;\n let data: Readable;\n\n if (typeof body === 'string') {\n data = Readable.from([body]);\n } else if (body instanceof ArrayBuffer) {\n data = Readable.from([Buffer.from(new Uint8Array(body))]);\n } else if (body instanceof Uint8Array) {\n data = Readable.from([Buffer.from(body)]);\n } else if (body && typeof (body as any).getReader === 'function') {\n // Web ReadableStream\n data = Readable.fromWeb(body as ReadableStream);\n } else {\n data = Readable.from([]);\n }\n\n const metadata = new RepresentationMetadata({ path: url }, { 'content-type': contentType });\n const representation = new BasicRepresentation(data, metadata);\n\n await resourceStore.setRepresentation(identifier, representation);\n\n return new Response(null, { status: 201, statusText: 'Created' });\n}\n\nasync function handleDelete(resourceStore: ResourceStore, url: string): Promise<Response> {\n const identifier = { path: url };\n await resourceStore.deleteResource(identifier);\n return new Response(null, { status: 204, statusText: 'No Content' });\n}\n\nasync function handlePatch(resourceStore: ResourceStore, url: string, init?: RequestInit): Promise<Response> {\n const identifier = { path: url };\n const contentType = getContentType(init?.headers) ?? 'application/sparql-update';\n\n const body = init?.body;\n let data: Readable;\n\n if (typeof body === 'string') {\n data = Readable.from([body]);\n } else if (body && typeof (body as any).getReader === 'function') {\n data = Readable.fromWeb(body as ReadableStream);\n } else {\n data = Readable.from([]);\n }\n\n const metadata = new RepresentationMetadata({ path: url }, { 'content-type': contentType });\n const patch = new BasicRepresentation(data, metadata);\n\n await resourceStore.modifyResource(identifier, patch as any);\n\n return new Response(null, { status: 204, statusText: 'No Content' });\n}\n\nfunction getContentType(headers?: RequestInit['headers']): string | undefined {\n if (!headers) return undefined;\n\n if (headers instanceof Headers) {\n return headers.get('content-type') ?? undefined;\n }\n\n if (Array.isArray(headers)) {\n const found = headers.find(([key]) => key.toLowerCase() === 'content-type');\n return found ? found[1] : undefined;\n }\n\n // Record<string, string>\n if (typeof headers === 'object') {\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === 'content-type') {\n return typeof value === 'string' ? value : undefined;\n }\n }\n }\n\n return undefined;\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface DatabaseMaintenanceOptions {
|
|
2
|
+
connectionString: string;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Database maintenance utilities for cleaning up invalid data
|
|
6
|
+
*/
|
|
7
|
+
export declare class DatabaseMaintenance {
|
|
8
|
+
protected readonly logger: import("global-logger-factory").Logger<unknown>;
|
|
9
|
+
private readonly pool;
|
|
10
|
+
constructor(options: DatabaseMaintenanceOptions);
|
|
11
|
+
/**
|
|
12
|
+
* Clean up invalid JSON values from key-value storage tables
|
|
13
|
+
*/
|
|
14
|
+
cleanInvalidJsonValues(tableName?: string): Promise<number>;
|
|
15
|
+
/**
|
|
16
|
+
* Get statistics about the database tables
|
|
17
|
+
*/
|
|
18
|
+
getTableStats(): Promise<Record<string, number>>;
|
|
19
|
+
/**
|
|
20
|
+
* Close the database connection
|
|
21
|
+
*/
|
|
22
|
+
close(): Promise<void>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatabaseMaintenance = void 0;
|
|
4
|
+
const pg_1 = require("pg");
|
|
5
|
+
const global_logger_factory_1 = require("global-logger-factory");
|
|
6
|
+
/**
|
|
7
|
+
* Database maintenance utilities for cleaning up invalid data
|
|
8
|
+
*/
|
|
9
|
+
class DatabaseMaintenance {
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
|
|
12
|
+
this.pool = new pg_1.Pool({ connectionString: options.connectionString });
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Clean up invalid JSON values from key-value storage tables
|
|
16
|
+
*/
|
|
17
|
+
async cleanInvalidJsonValues(tableName = 'internal_kv') {
|
|
18
|
+
const quotedTableName = `"${tableName}"`;
|
|
19
|
+
try {
|
|
20
|
+
// First, check what we're going to delete
|
|
21
|
+
const checkResult = await this.pool.query(`SELECT key, value::text FROM ${quotedTableName} WHERE value::text = '[object Object]' LIMIT 10`);
|
|
22
|
+
const foundCount = checkResult.rowCount ?? 0;
|
|
23
|
+
if (foundCount > 0) {
|
|
24
|
+
this.logger.info(`Found ${foundCount} invalid JSON entries in ${tableName}:`);
|
|
25
|
+
checkResult.rows.forEach(row => {
|
|
26
|
+
this.logger.info(` Key: ${row.key}, Value: ${row.value}`);
|
|
27
|
+
});
|
|
28
|
+
// Delete invalid values
|
|
29
|
+
const deleteResult = await this.pool.query(`DELETE FROM ${quotedTableName} WHERE value::text = '[object Object]'`);
|
|
30
|
+
const deletedCount = deleteResult.rowCount ?? 0;
|
|
31
|
+
this.logger.info(`Successfully cleaned ${deletedCount} invalid entries from ${tableName}.`);
|
|
32
|
+
return deletedCount;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.logger.info(`No invalid JSON entries found in ${tableName}.`);
|
|
36
|
+
return 0;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
this.logger.error(`Error cleaning invalid JSON values from ${tableName}: ${error}`);
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get statistics about the database tables
|
|
46
|
+
*/
|
|
47
|
+
async getTableStats() {
|
|
48
|
+
try {
|
|
49
|
+
const result = await this.pool.query(`
|
|
50
|
+
SELECT
|
|
51
|
+
schemaname,
|
|
52
|
+
relname as tablename,
|
|
53
|
+
n_tup_ins as inserts,
|
|
54
|
+
n_tup_upd as updates,
|
|
55
|
+
n_tup_del as deletes,
|
|
56
|
+
n_live_tup as live_tuples,
|
|
57
|
+
n_dead_tup as dead_tuples
|
|
58
|
+
FROM pg_stat_user_tables
|
|
59
|
+
WHERE relname LIKE '%kv%' OR relname LIKE 'identity_%'
|
|
60
|
+
`);
|
|
61
|
+
const stats = {};
|
|
62
|
+
result.rows.forEach(row => {
|
|
63
|
+
stats[row.tablename] = row.live_tuples;
|
|
64
|
+
});
|
|
65
|
+
return stats;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
this.logger.error(`Error getting table stats: ${error}`);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Close the database connection
|
|
74
|
+
*/
|
|
75
|
+
async close() {
|
|
76
|
+
await this.pool.end().catch((error) => {
|
|
77
|
+
this.logger.warn(`Failed to close database pool: ${error}`);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.DatabaseMaintenance = DatabaseMaintenance;
|
|
82
|
+
//# sourceMappingURL=DatabaseMaintenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseMaintenance.js","sourceRoot":"","sources":["../../../src/util/database/DatabaseMaintenance.ts"],"names":[],"mappings":";;;AAAA,2BAA0B;AAC1B,iEAAqD;AAMrD;;GAEG;AACH,MAAa,mBAAmB;IAI9B,YAAmB,OAAmC;QAHnC,WAAM,GAAG,IAAA,oCAAY,EAAC,IAAI,CAAC,CAAC;QAI7C,IAAI,CAAC,IAAI,GAAG,IAAI,SAAI,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,sBAAsB,CAAC,YAAoB,aAAa;QACnE,MAAM,eAAe,GAAG,IAAI,SAAS,GAAG,CAAC;QAEzC,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACvC,gCAAgC,eAAe,iDAAiD,CACjG,CAAC;YAEF,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,IAAI,CAAC,CAAC;YAC7C,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,UAAU,4BAA4B,SAAS,GAAG,CAAC,CAAC;gBAC9E,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7D,CAAC,CAAC,CAAC;gBAEH,wBAAwB;gBACxB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACxC,eAAe,eAAe,wCAAwC,CACvE,CAAC;gBAEF,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,IAAI,CAAC,CAAC;gBAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,YAAY,yBAAyB,SAAS,GAAG,CAAC,CAAC;gBAC5F,OAAO,YAAY,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,SAAS,GAAG,CAAC,CAAC;gBACnE,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC;YACpF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;OAWpC,CAAC,CAAC;YAEH,MAAM,KAAK,GAA2B,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACxB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;YACzD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAnFD,kDAmFC","sourcesContent":["import { Pool } from 'pg';\nimport { getLoggerFor } from 'global-logger-factory';\n\nexport interface DatabaseMaintenanceOptions {\n connectionString: string;\n}\n\n/**\n * Database maintenance utilities for cleaning up invalid data\n */\nexport class DatabaseMaintenance {\n protected readonly logger = getLoggerFor(this);\n private readonly pool: Pool;\n\n public constructor(options: DatabaseMaintenanceOptions) {\n this.pool = new Pool({ connectionString: options.connectionString });\n }\n\n /**\n * Clean up invalid JSON values from key-value storage tables\n */\n public async cleanInvalidJsonValues(tableName: string = 'internal_kv'): Promise<number> {\n const quotedTableName = `\"${tableName}\"`;\n \n try {\n // First, check what we're going to delete\n const checkResult = await this.pool.query(\n `SELECT key, value::text FROM ${quotedTableName} WHERE value::text = '[object Object]' LIMIT 10`\n );\n \n const foundCount = checkResult.rowCount ?? 0;\n if (foundCount > 0) {\n this.logger.info(`Found ${foundCount} invalid JSON entries in ${tableName}:`);\n checkResult.rows.forEach(row => {\n this.logger.info(` Key: ${row.key}, Value: ${row.value}`);\n });\n\n // Delete invalid values\n const deleteResult = await this.pool.query(\n `DELETE FROM ${quotedTableName} WHERE value::text = '[object Object]'`\n );\n \n const deletedCount = deleteResult.rowCount ?? 0;\n this.logger.info(`Successfully cleaned ${deletedCount} invalid entries from ${tableName}.`);\n return deletedCount;\n } else {\n this.logger.info(`No invalid JSON entries found in ${tableName}.`);\n return 0;\n }\n } catch (error: unknown) {\n this.logger.error(`Error cleaning invalid JSON values from ${tableName}: ${error}`);\n throw error;\n }\n }\n\n /**\n * Get statistics about the database tables\n */\n public async getTableStats(): Promise<Record<string, number>> {\n try {\n const result = await this.pool.query(`\n SELECT \n schemaname,\n relname as tablename,\n n_tup_ins as inserts,\n n_tup_upd as updates,\n n_tup_del as deletes,\n n_live_tup as live_tuples,\n n_dead_tup as dead_tuples\n FROM pg_stat_user_tables \n WHERE relname LIKE '%kv%' OR relname LIKE 'identity_%'\n `);\n \n const stats: Record<string, number> = {};\n result.rows.forEach(row => {\n stats[row.tablename] = row.live_tuples;\n });\n \n return stats;\n } catch (error: unknown) {\n this.logger.error(`Error getting table stats: ${error}`);\n throw error;\n }\n }\n\n /**\n * Close the database connection\n */\n public async close(): Promise<void> {\n await this.pool.end().catch((error: unknown) => {\n this.logger.warn(`Failed to close database pool: ${error}`);\n });\n }\n}"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BaseIdentifierStrategy } from '@solid/community-server';
|
|
2
|
+
import type { ResourceIdentifier } from '@solid/community-server';
|
|
3
|
+
export interface ClusterIdentifierStrategyOptions {
|
|
4
|
+
baseUrl: string;
|
|
5
|
+
/**
|
|
6
|
+
* 允许的额外 host 列表(用于 Docker/容器环境)
|
|
7
|
+
* 可以是数组或逗号分隔的字符串,例如: ['cloud', 'idp'] 或 "cloud,idp,localhost"
|
|
8
|
+
*/
|
|
9
|
+
allowedHosts?: string[] | string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Identifier strategy that accepts both the primary cluster host and any
|
|
13
|
+
* node subdomain under the same base domain.
|
|
14
|
+
*/
|
|
15
|
+
export declare class ClusterIdentifierStrategy extends BaseIdentifierStrategy {
|
|
16
|
+
private readonly logger;
|
|
17
|
+
private readonly baseUrl;
|
|
18
|
+
private readonly baseHost;
|
|
19
|
+
private readonly allowedHosts;
|
|
20
|
+
constructor(options: ClusterIdentifierStrategyOptions);
|
|
21
|
+
supportsIdentifier(identifier: ResourceIdentifier): boolean;
|
|
22
|
+
isRootContainer(identifier: ResourceIdentifier): boolean;
|
|
23
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClusterIdentifierStrategy = void 0;
|
|
4
|
+
const node_url_1 = require("node:url");
|
|
5
|
+
const global_logger_factory_1 = require("global-logger-factory");
|
|
6
|
+
const community_server_1 = require("@solid/community-server");
|
|
7
|
+
const PathUtil_1 = require("@solid/community-server/dist/util/PathUtil");
|
|
8
|
+
/**
|
|
9
|
+
* Identifier strategy that accepts both the primary cluster host and any
|
|
10
|
+
* node subdomain under the same base domain.
|
|
11
|
+
*/
|
|
12
|
+
class ClusterIdentifierStrategy extends community_server_1.BaseIdentifierStrategy {
|
|
13
|
+
constructor(options) {
|
|
14
|
+
super();
|
|
15
|
+
this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
|
|
16
|
+
if (!options.baseUrl) {
|
|
17
|
+
throw new Error('ClusterIdentifierStrategy requires a baseUrl.');
|
|
18
|
+
}
|
|
19
|
+
const parsed = new node_url_1.URL(options.baseUrl);
|
|
20
|
+
this.baseHost = parsed.hostname.toLowerCase();
|
|
21
|
+
this.baseUrl = (0, PathUtil_1.ensureTrailingSlash)(parsed.href);
|
|
22
|
+
// 处理 allowedHosts:可以是数组或逗号分隔的字符串
|
|
23
|
+
const hostsInput = options.allowedHosts ?? [];
|
|
24
|
+
const hostsArray = Array.isArray(hostsInput)
|
|
25
|
+
? hostsInput
|
|
26
|
+
: typeof hostsInput === 'string' && hostsInput.length > 0
|
|
27
|
+
? hostsInput.split(',').map(h => h.trim())
|
|
28
|
+
: [];
|
|
29
|
+
this.allowedHosts = hostsArray.map(h => h.toLowerCase());
|
|
30
|
+
this.logger.info(`ClusterIdentifierStrategy initialized: baseUrl=${this.baseUrl}, baseHost=${this.baseHost}, allowedHosts=[${this.allowedHosts.join(', ')}]`);
|
|
31
|
+
}
|
|
32
|
+
supportsIdentifier(identifier) {
|
|
33
|
+
try {
|
|
34
|
+
const target = new node_url_1.URL(identifier.path);
|
|
35
|
+
const host = target.hostname.toLowerCase();
|
|
36
|
+
// 检查是否在允许的 hosts 列表中
|
|
37
|
+
if (this.allowedHosts.includes(host)) {
|
|
38
|
+
this.logger.debug(`supportsIdentifier: ${identifier.path} -> true (allowedHosts match: ${host})`);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
const hostMatches = host === this.baseHost || host.endsWith(`.${this.baseHost}`);
|
|
42
|
+
if (!hostMatches) {
|
|
43
|
+
this.logger.debug(`supportsIdentifier: ${identifier.path} -> false (host mismatch: ${host} vs ${this.baseHost})`);
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
if (host === this.baseHost) {
|
|
47
|
+
const supported = identifier.path.startsWith(this.baseUrl);
|
|
48
|
+
this.logger.debug(`supportsIdentifier: ${identifier.path} -> ${supported} (baseUrl check)`);
|
|
49
|
+
return supported;
|
|
50
|
+
}
|
|
51
|
+
this.logger.debug(`supportsIdentifier: ${identifier.path} -> true (subdomain match)`);
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
this.logger.warn(`Failed to parse identifier ${identifier.path}: ${error.message}`);
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
isRootContainer(identifier) {
|
|
60
|
+
try {
|
|
61
|
+
const target = new node_url_1.URL(identifier.path);
|
|
62
|
+
if (target.hostname.toLowerCase() === this.baseHost) {
|
|
63
|
+
return (0, PathUtil_1.ensureTrailingSlash)(target.href) === this.baseUrl;
|
|
64
|
+
}
|
|
65
|
+
return target.pathname === '/' || target.pathname === '';
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.ClusterIdentifierStrategy = ClusterIdentifierStrategy;
|
|
73
|
+
//# sourceMappingURL=ClusterIdentifierStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClusterIdentifierStrategy.js","sourceRoot":"","sources":["../../../src/util/identifiers/ClusterIdentifierStrategy.ts"],"names":[],"mappings":"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","sourcesContent":["import { URL } from 'node:url';\nimport { getLoggerFor } from 'global-logger-factory';\nimport { BaseIdentifierStrategy } from '@solid/community-server';\nimport type { ResourceIdentifier } from '@solid/community-server';\nimport { ensureTrailingSlash } from '@solid/community-server/dist/util/PathUtil';\n\nexport interface ClusterIdentifierStrategyOptions {\n baseUrl: string;\n /**\n * 允许的额外 host 列表(用于 Docker/容器环境)\n * 可以是数组或逗号分隔的字符串,例如: ['cloud', 'idp'] 或 \"cloud,idp,localhost\"\n */\n allowedHosts?: string[] | string;\n}\n\n/**\n * Identifier strategy that accepts both the primary cluster host and any\n * node subdomain under the same base domain.\n */\nexport class ClusterIdentifierStrategy extends BaseIdentifierStrategy {\n private readonly logger = getLoggerFor(this);\n private readonly baseUrl: string;\n private readonly baseHost: string;\n private readonly allowedHosts: string[];\n\n public constructor(options: ClusterIdentifierStrategyOptions) {\n super();\n if (!options.baseUrl) {\n throw new Error('ClusterIdentifierStrategy requires a baseUrl.');\n }\n const parsed = new URL(options.baseUrl);\n this.baseHost = parsed.hostname.toLowerCase();\n this.baseUrl = ensureTrailingSlash(parsed.href);\n // 处理 allowedHosts:可以是数组或逗号分隔的字符串\n const hostsInput = options.allowedHosts ?? [];\n const hostsArray = Array.isArray(hostsInput)\n ? hostsInput\n : typeof hostsInput === 'string' && hostsInput.length > 0\n ? hostsInput.split(',').map(h => h.trim())\n : [];\n this.allowedHosts = hostsArray.map(h => h.toLowerCase());\n this.logger.info(`ClusterIdentifierStrategy initialized: baseUrl=${this.baseUrl}, baseHost=${this.baseHost}, allowedHosts=[${this.allowedHosts.join(', ')}]`);\n }\n\n public override supportsIdentifier(identifier: ResourceIdentifier): boolean {\n try {\n const target = new URL(identifier.path);\n const host = target.hostname.toLowerCase();\n\n // 检查是否在允许的 hosts 列表中\n if (this.allowedHosts.includes(host)) {\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> true (allowedHosts match: ${host})`);\n return true;\n }\n\n const hostMatches = host === this.baseHost || host.endsWith(`.${this.baseHost}`);\n\n if (!hostMatches) {\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> false (host mismatch: ${host} vs ${this.baseHost})`);\n return false;\n }\n\n if (host === this.baseHost) {\n const supported = identifier.path.startsWith(this.baseUrl);\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> ${supported} (baseUrl check)`);\n return supported;\n }\n\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> true (subdomain match)`);\n return true;\n } catch (error: unknown) {\n this.logger.warn(`Failed to parse identifier ${identifier.path}: ${(error as Error).message}`);\n return false;\n }\n }\n\n public override isRootContainer(identifier: ResourceIdentifier): boolean {\n try {\n const target = new URL(identifier.path);\n if (target.hostname.toLowerCase() === this.baseHost) {\n return ensureTrailingSlash(target.href) === this.baseUrl;\n }\n return target.pathname === '/' || target.pathname === '';\n } catch {\n return false;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": [
|
|
3
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@undefineds.co/xpod/^0.0.0/components/context.jsonld",
|
|
4
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^8.0.0/components/context.jsonld"
|
|
5
|
+
],
|
|
6
|
+
"@id": "npmd:@undefineds.co/xpod",
|
|
7
|
+
"components": [
|
|
8
|
+
{
|
|
9
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy",
|
|
10
|
+
"@type": "Class",
|
|
11
|
+
"requireElement": "ClusterIdentifierStrategy",
|
|
12
|
+
"extends": [
|
|
13
|
+
"css:dist/util/identifiers/BaseIdentifierStrategy.jsonld#BaseIdentifierStrategy"
|
|
14
|
+
],
|
|
15
|
+
"comment": "Identifier strategy that accepts both the primary cluster host and any node subdomain under the same base domain.",
|
|
16
|
+
"parameters": [
|
|
17
|
+
{
|
|
18
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy_options_baseUrl",
|
|
19
|
+
"range": "xsd:string"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy_options_allowedHosts",
|
|
23
|
+
"range": {
|
|
24
|
+
"@type": "ParameterRangeUnion",
|
|
25
|
+
"parameterRangeElements": [
|
|
26
|
+
{
|
|
27
|
+
"@type": "ParameterRangeArray",
|
|
28
|
+
"parameterRangeValue": "xsd:string"
|
|
29
|
+
},
|
|
30
|
+
"xsd:string",
|
|
31
|
+
{
|
|
32
|
+
"@type": "ParameterRangeUndefined"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"comment": "允许的额外 host 列表(用于 Docker/容器环境) 可以是数组或逗号分隔的字符串,例如: ['cloud', 'idp'] 或 \"cloud,idp,localhost\""
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"memberFields": [
|
|
40
|
+
{
|
|
41
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy__member_logger",
|
|
42
|
+
"memberFieldName": "logger"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy__member_baseUrl",
|
|
46
|
+
"memberFieldName": "baseUrl"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy__member_baseHost",
|
|
50
|
+
"memberFieldName": "baseHost"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy__member_allowedHosts",
|
|
54
|
+
"memberFieldName": "allowedHosts"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy__member_constructor",
|
|
58
|
+
"memberFieldName": "constructor"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy__member_supportsIdentifier",
|
|
62
|
+
"memberFieldName": "supportsIdentifier"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy__member_isRootContainer",
|
|
66
|
+
"memberFieldName": "isRootContainer"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"constructorArguments": [
|
|
70
|
+
{
|
|
71
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy_options__constructorArgument",
|
|
72
|
+
"fields": [
|
|
73
|
+
{
|
|
74
|
+
"keyRaw": "baseUrl",
|
|
75
|
+
"value": {
|
|
76
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy_options_baseUrl"
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"keyRaw": "allowedHosts",
|
|
81
|
+
"value": {
|
|
82
|
+
"@id": "undefineds:dist/util/identifiers/ClusterIdentifierStrategy.jsonld#ClusterIdentifierStrategy_options_allowedHosts"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ResourceIdentifier } from '@solid/community-server';
|
|
2
|
+
import { SingleRootIdentifierStrategy } from '@solid/community-server';
|
|
3
|
+
/**
|
|
4
|
+
* MultiDomainIdentifierStrategy - 支持多个域名的 IdentifierStrategy
|
|
5
|
+
*
|
|
6
|
+
* 特性:
|
|
7
|
+
* 1. 支持多个 baseUrl(如 id.undefineds.co 和 pods.undefineds.co)
|
|
8
|
+
* 2. 存储使用完整 URI(各域名数据独立存储)
|
|
9
|
+
* 3. 适用于 Cloud 模式同时处理 WebID 和 Pod 数据
|
|
10
|
+
*/
|
|
11
|
+
export declare class MultiDomainIdentifierStrategy extends SingleRootIdentifierStrategy {
|
|
12
|
+
protected readonly logger: import("global-logger-factory").Logger<unknown>;
|
|
13
|
+
private readonly primaryBaseUrl;
|
|
14
|
+
private readonly additionalBaseUrls;
|
|
15
|
+
/**
|
|
16
|
+
* @param primaryBaseUrl - 主要 baseUrl(用于生成新资源路径)
|
|
17
|
+
* @param additionalBaseUrls - 额外支持的 baseUrl 列表
|
|
18
|
+
*/
|
|
19
|
+
constructor(primaryBaseUrl: string, additionalBaseUrls?: string[]);
|
|
20
|
+
/**
|
|
21
|
+
* 检查 identifier 是否被支持(属于任一 baseUrl)
|
|
22
|
+
*/
|
|
23
|
+
supportsIdentifier(identifier: ResourceIdentifier): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* 获取资源在存储中的相对路径(去掉域名前缀)
|
|
26
|
+
*/
|
|
27
|
+
getStoragePath(identifier: ResourceIdentifier): string;
|
|
28
|
+
/**
|
|
29
|
+
* 将相对路径转换为完整 URL(使用 primary baseUrl)
|
|
30
|
+
*/
|
|
31
|
+
getCanonicalUrl(relativePath: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* 获取主要 baseUrl
|
|
34
|
+
*/
|
|
35
|
+
getPrimaryBaseUrl(): string;
|
|
36
|
+
/**
|
|
37
|
+
* 获取所有支持的 baseUrls
|
|
38
|
+
*/
|
|
39
|
+
getAllBaseUrls(): string[];
|
|
40
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MultiDomainIdentifierStrategy = void 0;
|
|
4
|
+
const global_logger_factory_1 = require("global-logger-factory");
|
|
5
|
+
const community_server_1 = require("@solid/community-server");
|
|
6
|
+
/**
|
|
7
|
+
* MultiDomainIdentifierStrategy - 支持多个域名的 IdentifierStrategy
|
|
8
|
+
*
|
|
9
|
+
* 特性:
|
|
10
|
+
* 1. 支持多个 baseUrl(如 id.undefineds.co 和 pods.undefineds.co)
|
|
11
|
+
* 2. 存储使用完整 URI(各域名数据独立存储)
|
|
12
|
+
* 3. 适用于 Cloud 模式同时处理 WebID 和 Pod 数据
|
|
13
|
+
*/
|
|
14
|
+
class MultiDomainIdentifierStrategy extends community_server_1.SingleRootIdentifierStrategy {
|
|
15
|
+
/**
|
|
16
|
+
* @param primaryBaseUrl - 主要 baseUrl(用于生成新资源路径)
|
|
17
|
+
* @param additionalBaseUrls - 额外支持的 baseUrl 列表
|
|
18
|
+
*/
|
|
19
|
+
constructor(primaryBaseUrl, additionalBaseUrls = []) {
|
|
20
|
+
super(primaryBaseUrl);
|
|
21
|
+
this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
|
|
22
|
+
this.primaryBaseUrl = primaryBaseUrl;
|
|
23
|
+
this.additionalBaseUrls = additionalBaseUrls;
|
|
24
|
+
this.logger.info(`MultiDomainIdentifierStrategy initialized with primary: ${primaryBaseUrl}, additional: ${additionalBaseUrls.join(', ')}`);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 检查 identifier 是否被支持(属于任一 baseUrl)
|
|
28
|
+
*/
|
|
29
|
+
supportsIdentifier(identifier) {
|
|
30
|
+
const allBaseUrls = [this.primaryBaseUrl, ...this.additionalBaseUrls];
|
|
31
|
+
const supported = allBaseUrls.some(baseUrl => identifier.path.startsWith(baseUrl));
|
|
32
|
+
this.logger.debug(supported
|
|
33
|
+
? `Identifier ${identifier.path} is supported`
|
|
34
|
+
: `Identifier ${identifier.path} is not supported by any domain`);
|
|
35
|
+
return supported;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 获取资源在存储中的相对路径(去掉域名前缀)
|
|
39
|
+
*/
|
|
40
|
+
getStoragePath(identifier) {
|
|
41
|
+
const allBaseUrls = [this.primaryBaseUrl, ...this.additionalBaseUrls];
|
|
42
|
+
for (const baseUrl of allBaseUrls) {
|
|
43
|
+
if (identifier.path.startsWith(baseUrl)) {
|
|
44
|
+
const relativePath = identifier.path.slice(baseUrl.length);
|
|
45
|
+
// 确保以 / 开头
|
|
46
|
+
return relativePath.startsWith('/') ? relativePath : `/${relativePath}`;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// 不匹配任何 baseUrl,返回原路径
|
|
50
|
+
return identifier.path;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 将相对路径转换为完整 URL(使用 primary baseUrl)
|
|
54
|
+
*/
|
|
55
|
+
getCanonicalUrl(relativePath) {
|
|
56
|
+
const cleanPath = relativePath.startsWith('/') ? relativePath.slice(1) : relativePath;
|
|
57
|
+
return `${this.primaryBaseUrl}${cleanPath}`;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 获取主要 baseUrl
|
|
61
|
+
*/
|
|
62
|
+
getPrimaryBaseUrl() {
|
|
63
|
+
return this.primaryBaseUrl;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 获取所有支持的 baseUrls
|
|
67
|
+
*/
|
|
68
|
+
getAllBaseUrls() {
|
|
69
|
+
return [this.primaryBaseUrl, ...this.additionalBaseUrls];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.MultiDomainIdentifierStrategy = MultiDomainIdentifierStrategy;
|
|
73
|
+
//# sourceMappingURL=MultiDomainIdentifierStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiDomainIdentifierStrategy.js","sourceRoot":"","sources":["../../../src/util/identifiers/MultiDomainIdentifierStrategy.ts"],"names":[],"mappings":";;;AAAA,iEAAqD;AAErD,8DAAuE;AAEvE;;;;;;;GAOG;AACH,MAAa,6BAA8B,SAAQ,+CAA4B;IAK7E;;;OAGG;IACH,YAAY,cAAsB,EAAE,qBAA+B,EAAE;QACnE,KAAK,CAAC,cAAc,CAAC,CAAC;QATI,WAAM,GAAG,IAAA,oCAAY,EAAC,IAAI,CAAC,CAAC;QAUtD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2DAA2D,cAAc,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9I,CAAC;IAED;;OAEG;IACa,kBAAkB,CAAC,UAA8B;QAC/D,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS;YACzB,CAAC,CAAC,cAAc,UAAU,CAAC,IAAI,eAAe;YAC9C,CAAC,CAAC,cAAc,UAAU,CAAC,IAAI,iCAAiC,CAAC,CAAC;QAEpE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,UAA8B;QAClD,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEtE,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC3D,WAAW;gBACX,OAAO,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,OAAO,UAAU,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,YAAoB;QACzC,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QACtF,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,iBAAiB;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,cAAc;QACnB,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC3D,CAAC;CACF;AArED,sEAqEC","sourcesContent":["import { getLoggerFor } from 'global-logger-factory';\nimport type { ResourceIdentifier } from '@solid/community-server';\nimport { SingleRootIdentifierStrategy } from '@solid/community-server';\n\n/**\n * MultiDomainIdentifierStrategy - 支持多个域名的 IdentifierStrategy\n *\n * 特性:\n * 1. 支持多个 baseUrl(如 id.undefineds.co 和 pods.undefineds.co)\n * 2. 存储使用完整 URI(各域名数据独立存储)\n * 3. 适用于 Cloud 模式同时处理 WebID 和 Pod 数据\n */\nexport class MultiDomainIdentifierStrategy extends SingleRootIdentifierStrategy {\n protected override readonly logger = getLoggerFor(this);\n private readonly primaryBaseUrl: string;\n private readonly additionalBaseUrls: string[];\n\n /**\n * @param primaryBaseUrl - 主要 baseUrl(用于生成新资源路径)\n * @param additionalBaseUrls - 额外支持的 baseUrl 列表\n */\n constructor(primaryBaseUrl: string, additionalBaseUrls: string[] = []) {\n super(primaryBaseUrl);\n this.primaryBaseUrl = primaryBaseUrl;\n this.additionalBaseUrls = additionalBaseUrls;\n this.logger.info(`MultiDomainIdentifierStrategy initialized with primary: ${primaryBaseUrl}, additional: ${additionalBaseUrls.join(', ')}`);\n }\n\n /**\n * 检查 identifier 是否被支持(属于任一 baseUrl)\n */\n public override supportsIdentifier(identifier: ResourceIdentifier): boolean {\n const allBaseUrls = [this.primaryBaseUrl, ...this.additionalBaseUrls];\n const supported = allBaseUrls.some(baseUrl => identifier.path.startsWith(baseUrl));\n\n this.logger.debug(supported\n ? `Identifier ${identifier.path} is supported`\n : `Identifier ${identifier.path} is not supported by any domain`);\n\n return supported;\n }\n\n /**\n * 获取资源在存储中的相对路径(去掉域名前缀)\n */\n public getStoragePath(identifier: ResourceIdentifier): string {\n const allBaseUrls = [this.primaryBaseUrl, ...this.additionalBaseUrls];\n\n for (const baseUrl of allBaseUrls) {\n if (identifier.path.startsWith(baseUrl)) {\n const relativePath = identifier.path.slice(baseUrl.length);\n // 确保以 / 开头\n return relativePath.startsWith('/') ? relativePath : `/${relativePath}`;\n }\n }\n\n // 不匹配任何 baseUrl,返回原路径\n return identifier.path;\n }\n\n /**\n * 将相对路径转换为完整 URL(使用 primary baseUrl)\n */\n public getCanonicalUrl(relativePath: string): string {\n const cleanPath = relativePath.startsWith('/') ? relativePath.slice(1) : relativePath;\n return `${this.primaryBaseUrl}${cleanPath}`;\n }\n\n /**\n * 获取主要 baseUrl\n */\n public getPrimaryBaseUrl(): string {\n return this.primaryBaseUrl;\n }\n\n /**\n * 获取所有支持的 baseUrls\n */\n public getAllBaseUrls(): string[] {\n return [this.primaryBaseUrl, ...this.additionalBaseUrls];\n }\n}\n"]}
|