@undefineds.co/xpod 0.4.14 → 0.4.15
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/config/cloud.json +0 -3
- package/config/local.json +0 -3
- package/config/xpod.base.json +0 -24
- package/dist/api/ai-config/AiConfigStore.d.ts +2 -2
- package/dist/api/ai-config/AiConfigStore.js +4 -1
- package/dist/api/ai-gateway/auth/CallerPodAccess.d.ts +2 -5
- package/dist/api/ai-gateway/auth/CallerPodAccess.js +3 -42
- package/dist/api/ai-gateway/auth/GatewayApiKeyAuthenticator.d.ts +2 -1
- package/dist/api/ai-gateway/auth/GatewayApiKeyAuthenticator.js +1 -1
- package/dist/api/ai-gateway/auth/PodGatewayAccessKeyRepository.d.ts +3 -8
- package/dist/api/ai-gateway/auth/PodGatewayAccessKeyRepository.js +9 -32
- package/dist/api/ai-gateway/connect/index.d.ts +3 -3
- package/dist/api/ai-gateway/connect/index.js +9 -38
- package/dist/api/ai-gateway/errors.js +2 -1
- package/dist/api/ai-gateway/models/PodModelSelectionRepository.d.ts +3 -3
- package/dist/api/ai-gateway/models/PodModelSelectionRepository.js +7 -11
- package/dist/api/ai-gateway/pod/HostedPodRoute.d.ts +27 -0
- package/dist/api/ai-gateway/pod/HostedPodRoute.js +47 -0
- package/dist/api/ai-gateway/pod/OwnerPodAccess.d.ts +79 -0
- package/dist/api/ai-gateway/pod/OwnerPodAccess.js +192 -0
- package/dist/api/ai-gateway/pod/PodInterfaceKeyStore.d.ts +52 -0
- package/dist/api/ai-gateway/pod/PodInterfaceKeyStore.js +61 -0
- package/dist/api/ai-gateway/quota/ProviderQuotaAdapter.d.ts +3 -3
- package/dist/api/ai-gateway/quota/ProviderQuotaAdapter.js +7 -32
- package/dist/api/auth/ClientCredentialsAuthenticator.js +5 -28
- package/dist/api/auth/TokenEndpointRoute.d.ts +18 -0
- package/dist/api/auth/TokenEndpointRoute.js +36 -0
- package/dist/api/chatkit/pod-store.d.ts +4 -4
- package/dist/api/chatkit/pod-store.js +24 -95
- package/dist/api/container/common.js +36 -23
- package/dist/api/container/local.js +62 -29
- package/dist/api/container/routes.js +39 -7
- package/dist/api/container/types.d.ts +2 -2
- package/dist/api/handlers/AiGatewayManagementHandler.d.ts +6 -0
- package/dist/api/handlers/AiGatewayManagementHandler.js +17 -4
- package/dist/api/handlers/NetworkSettingsHandler.d.ts +7 -0
- package/dist/api/handlers/NetworkSettingsHandler.js +7 -0
- package/dist/api/handlers/PodSettingsHandler.d.ts +3 -3
- package/dist/api/handlers/PodSettingsHandler.js +3 -3
- package/dist/api/handlers/ProvisionHandler.d.ts +29 -0
- package/dist/api/handlers/ProvisionHandler.js +46 -0
- package/dist/api/handlers/ReachabilityHandler.js +3 -1
- package/dist/api/runtime.d.ts +9 -0
- package/dist/api/runtime.js +16 -3
- package/dist/cli/commands/start.d.ts +9 -2
- package/dist/cli/commands/start.js +15 -17
- package/dist/components/components.jsonld +1 -1
- package/dist/components/context.jsonld +5 -42
- package/dist/edge/EdgeNodeAgent.d.ts +10 -0
- package/dist/edge/EdgeNodeAgent.js +55 -0
- package/dist/edge/EdgeNodeAgent.jsonld +8 -0
- package/dist/edge/reachability/ReachabilitySessionService.js +4 -1
- package/dist/edge/reachability/RouteSetBuilder.d.ts +18 -1
- package/dist/edge/reachability/RouteSetBuilder.js +47 -0
- package/dist/edge/reachability/RouteSetBuilder.jsonld +29 -0
- package/dist/edge/reachability/types.d.ts +8 -2
- package/dist/http/SubgraphSparqlHttpHandler.d.ts +1 -25
- package/dist/http/SubgraphSparqlHttpHandler.js +0 -100
- package/dist/http/SubgraphSparqlHttpHandler.jsonld +0 -8
- package/dist/identity/drizzle/PodInterfaceKeyRepository.d.ts +33 -0
- package/dist/identity/drizzle/PodInterfaceKeyRepository.js +78 -0
- package/dist/identity/drizzle/db.d.ts +7 -0
- package/dist/identity/drizzle/db.js +30 -0
- package/dist/identity/drizzle/schema.pg.d.ts +9 -0
- package/dist/identity/drizzle/schema.pg.js +16 -1
- package/dist/identity/drizzle/schema.sqlite.d.ts +106 -0
- package/dist/identity/drizzle/schema.sqlite.js +16 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.js +3 -5
- package/dist/runtime/GatewayAdminProxyAuth.d.ts +1 -16
- package/dist/runtime/GatewayAdminProxyAuth.js +2 -71
- package/dist/runtime/Proxy.d.ts +10 -1
- package/dist/runtime/Proxy.js +95 -28
- package/dist/runtime/bootstrap.d.ts +10 -0
- package/dist/runtime/bootstrap.js +24 -0
- package/dist/runtime/host/node/NodeRuntimeHost.js +5 -3
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +2 -3
- package/dist/runtime/js-runtime.js +10 -3
- package/dist/runtime/lifecycle.js +5 -4
- package/dist/runtime/port-finder.d.ts +9 -13
- package/dist/runtime/port-finder.js +18 -37
- package/dist/tunnel/AutoTunnelProvider.d.ts +56 -0
- package/dist/tunnel/AutoTunnelProvider.js +181 -0
- package/dist/tunnel/index.d.ts +1 -0
- package/dist/tunnel/index.js +3 -1
- package/node_modules/@undefineds.co/ai-connections/dist/error-wording.js +7 -2
- package/node_modules/@undefineds.co/solid-sdk/dist/access-route.cjs +230 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/access-route.d.ts +76 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/access-route.js +115 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/index.cjs +89 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/index.d.ts +1 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/index.js +1 -0
- package/node_modules/@undefineds.co/solid-sdk/package.json +6 -1
- package/package.json +2 -2
- package/static/app/assets/inrupt-smoke.js +23 -23
- package/static/auth-callback/assets/{AiConfigContext-DCXpjzpj.js → AiConfigContext-Bx0HCAW5.js} +1 -1
- package/static/auth-callback/assets/{AiConfigPage-fe-xMIXa.js → AiConfigPage-ChQImMbm.js} +1 -1
- package/static/auth-callback/assets/{DocumentProcessingPanel-BGnkfMuU.js → DocumentProcessingPanel-D830H4SH.js} +1 -1
- package/static/auth-callback/assets/{IndexLifecyclePanel-42Jups0j.js → IndexLifecyclePanel-CnlkjMF8.js} +1 -1
- package/static/auth-callback/assets/{IndexSubjectPanel-CYyLOlQU.js → IndexSubjectPanel-CdEfg_CO.js} +1 -1
- package/static/auth-callback/assets/{ModelAssignmentsPanel-BOvUH4yr.js → ModelAssignmentsPanel-D-8A8dZx.js} +1 -1
- package/static/auth-callback/assets/{ModelsPage-DwyITxt7.js → ModelsPage-Cim7cubp.js} +3 -3
- package/static/auth-callback/assets/{NetworkPage-CG9RelJA.js → NetworkPage-CfK3x-pb.js} +2 -2
- package/static/auth-callback/assets/{PaneListHeader-yvd5ohs6.js → PaneListHeader-Bf_kEd4U.js} +1 -1
- package/static/auth-callback/assets/{SearchIndexingPanel-2_a6ezzj.js → SearchIndexingPanel-4kD4RBEQ.js} +1 -1
- package/static/auth-callback/assets/{StatusSubjectPanel-8qtVxnzC.js → StatusSubjectPanel-Bw9AiTSf.js} +1 -1
- package/static/auth-callback/assets/{StatusWorkspace-CBdRahCF.js → StatusWorkspace-C-301H-0.js} +1 -1
- package/static/auth-callback/assets/{SystemSettingsPage-BZJ6vWkg.js → SystemSettingsPage-BbWn-eG6.js} +1 -1
- package/static/auth-callback/assets/{SystemSettingsSubjectPanel-xm08UhXP.js → SystemSettingsSubjectPanel-DA4wvNSm.js} +1 -1
- package/static/auth-callback/assets/{XpodAiConnectionsPodStore-V6vgGfuw.js → XpodAiConnectionsPodStore-CohdyLoX.js} +1 -1
- package/static/auth-callback/assets/{activity-CeM7xly8.js → activity-CCsb9Oam.js} +1 -1
- package/static/auth-callback/assets/ai-connections-DexTPyfC.js +1 -0
- package/static/auth-callback/assets/{auth-callback-DTG8cSj7.js → auth-callback-Ds-c62W3.js} +5 -5
- package/static/auth-callback/assets/{badge-qJo2Zr4d.js → badge-CQm5OyzR.js} +1 -1
- package/static/auth-callback/assets/{collection-runtime-Bztsz31a.js → collection-runtime-DlAuU5TW.js} +1 -1
- package/static/auth-callback/assets/{dialog-D-h6x5x0.js → dialog-CnGzg5Ff.js} +1 -1
- package/static/auth-callback/assets/{download-C2ir4lmR.js → download-DwMONJvm.js} +1 -1
- package/static/auth-callback/assets/{external-link-THLDL4On.js → external-link-Bu5AGqCO.js} +1 -1
- package/static/auth-callback/assets/{index-BlVZb9A7.js → index-B0T-1YO8.js} +1 -1
- package/static/auth-callback/assets/{index-BRpv4yO3.js → index-C8QZf_4W.js} +1 -1
- package/static/auth-callback/assets/{index-D983R1FV.js → index-DwIlrIDG.js} +1 -1
- package/static/auth-callback/assets/{index-browser-3FvR0aaf.js → index-browser-lRsMcP_7.js} +1 -1
- package/static/auth-callback/assets/{key-round-C9U5j1Ly.js → key-round-BDMtU57P.js} +1 -1
- package/static/auth-callback/assets/{rotate-ccw-DP45cD4o.js → rotate-ccw-CoKIGCsQ.js} +1 -1
- package/static/auth-callback/assets/{skeleton-Dn4EiSCS.js → skeleton-CPoSWHDr.js} +1 -1
- package/static/auth-callback/assets/{waypoints-uqFQ3uEG.js → waypoints-BeYHxqHv.js} +1 -1
- package/static/auth-callback/assets/{workspace-layout-DLYK0Wwu.js → workspace-layout-xA5YxiK3.js} +1 -1
- package/static/auth-callback/auth-callback.html +1 -1
- package/static/dashboard/assets/{AiConfigContext-DJcMECNw.js → AiConfigContext-rWx4TyiH.js} +1 -1
- package/static/dashboard/assets/{AiConfigPage-BvE7dOTy.js → AiConfigPage-StVJpDFT.js} +1 -1
- package/static/dashboard/assets/{DocumentProcessingPanel-D9780krf.js → DocumentProcessingPanel-DJ5yul2O.js} +1 -1
- package/static/dashboard/assets/{IndexLifecyclePanel-SjsUcnbM.js → IndexLifecyclePanel-CpjtgezK.js} +1 -1
- package/static/dashboard/assets/{IndexSubjectPanel-C-ym2Tqi.js → IndexSubjectPanel-BVKcot1_.js} +1 -1
- package/static/dashboard/assets/{ModelAssignmentsPanel-BRjZ-arB.js → ModelAssignmentsPanel-BxVgWZPc.js} +1 -1
- package/static/dashboard/assets/{ModelsPage-BtTU6du3.js → ModelsPage-CECBwmeO.js} +3 -3
- package/static/dashboard/assets/{NetworkPage-CV9qpkDg.js → NetworkPage-zQgFscEW.js} +2 -2
- package/static/dashboard/assets/{PaneListHeader-KyPTTBsv.js → PaneListHeader-DIPe8pS6.js} +1 -1
- package/static/dashboard/assets/{SearchIndexingPanel-DolHGawg.js → SearchIndexingPanel-lalFJ3c8.js} +1 -1
- package/static/dashboard/assets/{StatusSubjectPanel-_YZvKiYi.js → StatusSubjectPanel-CpY_KU-G.js} +1 -1
- package/static/dashboard/assets/{StatusWorkspace-Dlbh_G40.js → StatusWorkspace-BwWCii3A.js} +1 -1
- package/static/dashboard/assets/{SystemSettingsPage-Be7QSIoz.js → SystemSettingsPage-BKZxX-_n.js} +1 -1
- package/static/dashboard/assets/{SystemSettingsSubjectPanel-DBp0gja7.js → SystemSettingsSubjectPanel-BZrqb2C5.js} +1 -1
- package/static/dashboard/assets/{XpodAiConnectionsPodStore-ClpSjzpP.js → XpodAiConnectionsPodStore-Bbpx9dTN.js} +1 -1
- package/static/dashboard/assets/{activity-lsNbTXJu.js → activity-BJ15TLVP.js} +1 -1
- package/static/dashboard/assets/ai-connections-GG6qkTJt.js +1 -0
- package/static/dashboard/assets/{badge-CVatKjaG.js → badge-BBX5FlaB.js} +1 -1
- package/static/dashboard/assets/{collection-runtime-Ec4UnY28.js → collection-runtime-UBbHBzdf.js} +1 -1
- package/static/dashboard/assets/{dashboard-BEzsRsvF.js → dashboard-7Y6BHyV9.js} +62 -62
- package/static/dashboard/assets/{dialog-BuyelQ4V.js → dialog-QrOJ-hB0.js} +1 -1
- package/static/dashboard/assets/{download-B4Nf678F.js → download-DK9x-VOP.js} +1 -1
- package/static/dashboard/assets/{external-link-PYv9CvKL.js → external-link-Cnkn87mJ.js} +1 -1
- package/static/dashboard/assets/{index-C9XPE-mI.js → index-B1z84it5.js} +1 -1
- package/static/dashboard/assets/{index-awr7ulur.js → index-DzjauX3N.js} +1 -1
- package/static/dashboard/assets/{index-Cx69bTNh.js → index-cIa8_efI.js} +1 -1
- package/static/dashboard/assets/{key-round-VsY80U1Z.js → key-round-BoS6UqKz.js} +1 -1
- package/static/dashboard/assets/{rotate-ccw-Cz1K4vE9.js → rotate-ccw-BeWV76i0.js} +1 -1
- package/static/dashboard/assets/{skeleton-BhNv_8tO.js → skeleton-CypcJL07.js} +1 -1
- package/static/dashboard/assets/{waypoints-DYS9XFYV.js → waypoints-zHOOqfhi.js} +1 -1
- package/static/dashboard/assets/{workspace-layout-OZJAFx5V.js → workspace-layout-DZ9JuxnM.js} +1 -1
- package/static/dashboard/dashboard.html +1 -1
- package/static/settings/assets/{AiConfigContext-B8JS3MXF.js → AiConfigContext-D3b1l_Kw.js} +1 -1
- package/static/settings/assets/{AiConfigPage-C3Zl8LUl.js → AiConfigPage-DYKw-atP.js} +1 -1
- package/static/settings/assets/{DocumentProcessingPanel-DpDZAQvf.js → DocumentProcessingPanel-DguRfsIV.js} +1 -1
- package/static/settings/assets/{IndexLifecyclePanel-Ec1XF88t.js → IndexLifecyclePanel-B85qJJA4.js} +1 -1
- package/static/settings/assets/{IndexSubjectPanel-BulT9BmO.js → IndexSubjectPanel-CsN7IxaV.js} +1 -1
- package/static/settings/assets/{ModelAssignmentsPanel-BcGSmYjb.js → ModelAssignmentsPanel-DEp9byI6.js} +1 -1
- package/static/settings/assets/{ModelsPage-CvTCKy1T.js → ModelsPage-CzTnPs_G.js} +3 -3
- package/static/settings/assets/{NetworkPage-DQF5u9Bn.js → NetworkPage-BDVnmUU0.js} +2 -2
- package/static/settings/assets/{PaneListHeader-D40hqcVl.js → PaneListHeader-Cpe39N76.js} +1 -1
- package/static/settings/assets/{SearchIndexingPanel-iCUPOx_0.js → SearchIndexingPanel-DA9w8lLL.js} +1 -1
- package/static/settings/assets/{StatusSubjectPanel-E--ZHSql.js → StatusSubjectPanel-BU0Aq0CS.js} +1 -1
- package/static/settings/assets/{StatusWorkspace-YjDAx1II.js → StatusWorkspace-D1AC1i5N.js} +1 -1
- package/static/settings/assets/{SystemSettingsPage-CDdV3mC9.js → SystemSettingsPage-ChKvOioO.js} +1 -1
- package/static/settings/assets/{SystemSettingsSubjectPanel-Br8WazDq.js → SystemSettingsSubjectPanel-DyTpOnD2.js} +1 -1
- package/static/settings/assets/{XpodAiConnectionsPodStore-CLr38P_Z.js → XpodAiConnectionsPodStore-VU5Bsz1a.js} +1 -1
- package/static/settings/assets/{activity-C5DAHHTE.js → activity-DGpLfsQB.js} +1 -1
- package/static/settings/assets/ai-connections-DexTPyfC.js +1 -0
- package/static/settings/assets/{badge-D8eIyxKt.js → badge-_hCrrWRP.js} +1 -1
- package/static/settings/assets/{collection-runtime-DLc9zil8.js → collection-runtime-E40TZ8Cl.js} +1 -1
- package/static/settings/assets/{dialog-CyuR7Va4.js → dialog-DTr2JkHn.js} +1 -1
- package/static/settings/assets/{download-c0oxZrCz.js → download-B_D21DDX.js} +1 -1
- package/static/settings/assets/{external-link-D3Z34fP_.js → external-link-BATYaM13.js} +1 -1
- package/static/settings/assets/{index-CSr3-2Cj.js → index-BAlAVi-J.js} +1 -1
- package/static/settings/assets/{index-ComidxAm.js → index-Ckh4h9jj.js} +1 -1
- package/static/settings/assets/{index-CKGbRFlc.js → index-DOiwLF4B.js} +1 -1
- package/static/settings/assets/{index-browser-CAscEbae.js → index-browser-DFFWN3Kr.js} +1 -1
- package/static/settings/assets/{key-round-DyjLmXuB.js → key-round-ZTVU_1O1.js} +1 -1
- package/static/settings/assets/{rotate-ccw-679HF_ec.js → rotate-ccw-DDdw8PTU.js} +1 -1
- package/static/settings/assets/{settings-DKknqu4C.js → settings-CyLnISOv.js} +62 -62
- package/static/settings/assets/{skeleton-CkopNkPB.js → skeleton-DEzA3hc2.js} +1 -1
- package/static/settings/assets/{waypoints-CrqfAftE.js → waypoints-BSdfNvEb.js} +1 -1
- package/static/settings/assets/{workspace-layout-UN6c4qTG.js → workspace-layout-BOQnl_3d.js} +1 -1
- package/static/settings/settings.html +1 -1
- package/dist/api/ai-gateway/pod/HostedPodDataAccess.d.ts +0 -31
- package/dist/api/ai-gateway/pod/HostedPodDataAccess.js +0 -330
- package/dist/http/InternalPodDataHttpHandler.d.ts +0 -57
- package/dist/http/InternalPodDataHttpHandler.js +0 -551
- package/dist/http/InternalPodDataHttpHandler.jsonld +0 -243
- package/static/auth-callback/assets/ai-connections-C6yaE6WQ.js +0 -1
- package/static/dashboard/assets/ai-connections-CXp5gd1J.js +0 -1
- package/static/settings/assets/ai-connections-C6yaE6WQ.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HttpHandler } from '@solid/community-server';
|
|
2
|
-
import type { HttpHandlerInput
|
|
2
|
+
import type { HttpHandlerInput } from '@solid/community-server';
|
|
3
3
|
import type { ActivityEmitter, CredentialsExtractor, PermissionReader, Authorizer } from '@solid/community-server';
|
|
4
4
|
import { SubgraphQueryEngine } from '../storage/sparql/SubgraphQueryEngine';
|
|
5
5
|
import { MixDataAccessor } from '../storage/accessors/MixDataAccessor';
|
|
@@ -14,22 +14,6 @@ interface SubgraphSparqlHttpHandlerOptions {
|
|
|
14
14
|
usageDbUrl?: string;
|
|
15
15
|
defaultAccountBandwidthLimitBps?: number | null;
|
|
16
16
|
}
|
|
17
|
-
export interface TrustedSubgraphSparqlHandler {
|
|
18
|
-
handleTrustedInternalSelect(input: {
|
|
19
|
-
ownerWebId: string;
|
|
20
|
-
endpointUrl: string;
|
|
21
|
-
query: string;
|
|
22
|
-
request: HttpRequest;
|
|
23
|
-
response: HttpResponse;
|
|
24
|
-
}): Promise<void>;
|
|
25
|
-
handleTrustedInternalUpdate(input: {
|
|
26
|
-
ownerWebId: string;
|
|
27
|
-
endpointUrl: string;
|
|
28
|
-
query: string;
|
|
29
|
-
request: HttpRequest;
|
|
30
|
-
response: HttpResponse;
|
|
31
|
-
}): Promise<void>;
|
|
32
|
-
}
|
|
33
17
|
export declare class SubgraphSparqlHttpHandler extends HttpHandler {
|
|
34
18
|
protected readonly logger: import("global-logger-factory").Logger<unknown>;
|
|
35
19
|
private readonly engine;
|
|
@@ -47,14 +31,6 @@ export declare class SubgraphSparqlHttpHandler extends HttpHandler {
|
|
|
47
31
|
constructor(queryEngine: SubgraphQueryEngine, credentialsExtractor: CredentialsExtractor, permissionReader: PermissionReader, authorizer: Authorizer, options?: SubgraphSparqlHttpHandlerOptions, updateAuthority?: MixDataAccessor, emitter?: ActivityEmitter);
|
|
48
32
|
canHandle({ request }: HttpHandlerInput): Promise<void>;
|
|
49
33
|
handle({ request, response }: HttpHandlerInput): Promise<void>;
|
|
50
|
-
/**
|
|
51
|
-
* Execute the model collection SELECT after InternalPodDataHttpHandler has
|
|
52
|
-
* verified the signed owner intent. This is deliberately not reachable from
|
|
53
|
-
* the normal HTTP routing path and performs its own exact owner/endpoint
|
|
54
|
-
* validation before bypassing caller credentials.
|
|
55
|
-
*/
|
|
56
|
-
handleTrustedInternalSelect(input: Parameters<TrustedSubgraphSparqlHandler['handleTrustedInternalSelect']>[0]): Promise<void>;
|
|
57
|
-
handleTrustedInternalUpdate(input: Parameters<TrustedSubgraphSparqlHandler['handleTrustedInternalUpdate']>[0]): Promise<void>;
|
|
58
34
|
private sendErrorResponse;
|
|
59
35
|
private acceptsJson;
|
|
60
36
|
private executeSelect;
|
|
@@ -14,7 +14,6 @@ const db_1 = require("../identity/drizzle/db");
|
|
|
14
14
|
const PodLookupRepository_1 = require("../identity/drizzle/PodLookupRepository");
|
|
15
15
|
const UsageRepository_1 = require("../storage/quota/UsageRepository");
|
|
16
16
|
const BandwidthThrottleTransform_1 = require("../util/stream/BandwidthThrottleTransform");
|
|
17
|
-
const AiConnectionsServiceAccess_1 = require("../api/ai-gateway/service-access/AiConnectionsServiceAccess");
|
|
18
17
|
const ALLOWED_METHODS = ['GET', 'POST', 'OPTIONS'];
|
|
19
18
|
const MODEL_COLLECTION_SUFFIX = '/settings/providers/-/sparql';
|
|
20
19
|
const SETTINGS_COLLECTION_SUFFIX = '/settings/-/sparql';
|
|
@@ -141,64 +140,6 @@ class SubgraphSparqlHttpHandler extends community_server_1.HttpHandler {
|
|
|
141
140
|
throw error;
|
|
142
141
|
}
|
|
143
142
|
}
|
|
144
|
-
/**
|
|
145
|
-
* Execute the model collection SELECT after InternalPodDataHttpHandler has
|
|
146
|
-
* verified the signed owner intent. This is deliberately not reachable from
|
|
147
|
-
* the normal HTTP routing path and performs its own exact owner/endpoint
|
|
148
|
-
* validation before bypassing caller credentials.
|
|
149
|
-
*/
|
|
150
|
-
async handleTrustedInternalSelect(input) {
|
|
151
|
-
const target = trustedSelectTarget(input.ownerWebId, input.endpointUrl);
|
|
152
|
-
if (!target) {
|
|
153
|
-
throw new community_server_2.BadRequestHttpError('Trusted SPARQL endpoint is outside the owner Pod.');
|
|
154
|
-
}
|
|
155
|
-
const query = input.query.trim();
|
|
156
|
-
if (!query || (target.query && query !== target.query)) {
|
|
157
|
-
throw new community_server_2.BadRequestHttpError('A trusted SPARQL query is required.');
|
|
158
|
-
}
|
|
159
|
-
const parsed = new sparqljs_1.Parser({ baseIRI: target.baseUrl }).parse(query);
|
|
160
|
-
if (parsed.type !== 'query' || parsed.queryType !== 'SELECT') {
|
|
161
|
-
throw new community_server_2.BadRequestHttpError('Trusted SPARQL access only supports SELECT queries.');
|
|
162
|
-
}
|
|
163
|
-
const context = await this.resolveUsageContext(target.basePath);
|
|
164
|
-
await this.recordBandwidth(context, Buffer.byteLength(query, 'utf8'), 0);
|
|
165
|
-
await this.executeSelect(input.request, {
|
|
166
|
-
basePath: target.basePath,
|
|
167
|
-
baseUrl: target.baseUrl,
|
|
168
|
-
...(target.sourceUri === undefined ? {} : { sourceUri: target.sourceUri }),
|
|
169
|
-
defaultDataset: target.defaultDataset,
|
|
170
|
-
query,
|
|
171
|
-
origin: target.origin,
|
|
172
|
-
method: 'GET',
|
|
173
|
-
ingressBytes: Buffer.byteLength(query, 'utf8'),
|
|
174
|
-
}, input.response, context, true);
|
|
175
|
-
}
|
|
176
|
-
async handleTrustedInternalUpdate(input) {
|
|
177
|
-
const target = trustedSettingsCollectionTarget(input.ownerWebId, input.endpointUrl, false);
|
|
178
|
-
if (!target) {
|
|
179
|
-
throw new community_server_2.BadRequestHttpError('Trusted settings update endpoint is outside the owner Pod.');
|
|
180
|
-
}
|
|
181
|
-
const query = input.query.trim();
|
|
182
|
-
if (!query) {
|
|
183
|
-
throw new community_server_2.BadRequestHttpError('A trusted settings update is required.');
|
|
184
|
-
}
|
|
185
|
-
const parsed = new sparqljs_1.Parser({ baseIRI: target.baseUrl }).parse(query);
|
|
186
|
-
if (parsed.type !== 'update') {
|
|
187
|
-
throw new community_server_2.BadRequestHttpError('Trusted settings access only supports UPDATE operations.');
|
|
188
|
-
}
|
|
189
|
-
const context = await this.resolveUsageContext(target.basePath);
|
|
190
|
-
const ingressBytes = Buffer.byteLength(query, 'utf8');
|
|
191
|
-
await this.recordBandwidth(context, ingressBytes, 0);
|
|
192
|
-
await this.executeUpdate({
|
|
193
|
-
basePath: target.basePath,
|
|
194
|
-
baseUrl: target.baseUrl,
|
|
195
|
-
defaultDataset: target.defaultDataset,
|
|
196
|
-
query,
|
|
197
|
-
origin: target.origin,
|
|
198
|
-
method: 'POST',
|
|
199
|
-
ingressBytes,
|
|
200
|
-
}, parsed, input.request, input.response, context, true);
|
|
201
|
-
}
|
|
202
143
|
sendErrorResponse(request, response, statusCode, message, jsonPayload) {
|
|
203
144
|
response.statusCode = statusCode;
|
|
204
145
|
if (this.acceptsJson(request)) {
|
|
@@ -1127,47 +1068,6 @@ class SubgraphSparqlHttpHandler extends community_server_1.HttpHandler {
|
|
|
1127
1068
|
}
|
|
1128
1069
|
exports.SubgraphSparqlHttpHandler = SubgraphSparqlHttpHandler;
|
|
1129
1070
|
SubgraphSparqlHttpHandler.XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';
|
|
1130
|
-
function trustedSelectTarget(ownerWebId, endpointUrl) {
|
|
1131
|
-
return trustedGatewayAccessKeyDocumentTarget(ownerWebId, endpointUrl) ??
|
|
1132
|
-
trustedModelCollectionTarget(ownerWebId, endpointUrl) ??
|
|
1133
|
-
trustedSettingsCollectionTarget(ownerWebId, endpointUrl, true);
|
|
1134
|
-
}
|
|
1135
|
-
function trustedGatewayAccessKeyDocumentTarget(ownerWebId, endpointUrl) {
|
|
1136
|
-
let owner;
|
|
1137
|
-
let endpoint;
|
|
1138
|
-
try {
|
|
1139
|
-
owner = new URL(ownerWebId);
|
|
1140
|
-
endpoint = new URL(endpointUrl);
|
|
1141
|
-
}
|
|
1142
|
-
catch {
|
|
1143
|
-
return undefined;
|
|
1144
|
-
}
|
|
1145
|
-
if ((owner.protocol !== 'http:' && owner.protocol !== 'https:') ||
|
|
1146
|
-
owner.hash !== '#me' || !owner.pathname.endsWith('/profile/card') ||
|
|
1147
|
-
endpoint.username || endpoint.password || endpoint.hash ||
|
|
1148
|
-
!(0, AiConnectionsServiceAccess_1.isGatewayAccessKeySparqlEndpoint)(ownerWebId, endpoint)) {
|
|
1149
|
-
return undefined;
|
|
1150
|
-
}
|
|
1151
|
-
const keys = Array.from(endpoint.searchParams.keys());
|
|
1152
|
-
if (keys.length > 0 && (keys.length !== 1 || keys[0] !== 'query' || !endpoint.searchParams.get('query')?.trim())) {
|
|
1153
|
-
return undefined;
|
|
1154
|
-
}
|
|
1155
|
-
const basePath = endpoint.pathname.slice(0, -'/-/sparql'.length);
|
|
1156
|
-
return {
|
|
1157
|
-
basePath,
|
|
1158
|
-
baseUrl: `${endpoint.origin}${basePath}`,
|
|
1159
|
-
sourceUri: `${endpoint.origin}${basePath}`,
|
|
1160
|
-
defaultDataset: 'exactSource',
|
|
1161
|
-
origin: endpoint.origin,
|
|
1162
|
-
query: endpoint.searchParams.get('query')?.trim() ?? '',
|
|
1163
|
-
};
|
|
1164
|
-
}
|
|
1165
|
-
function trustedModelCollectionTarget(ownerWebId, endpointUrl) {
|
|
1166
|
-
return trustedCollectionTarget(ownerWebId, endpointUrl, MODEL_COLLECTION_SUFFIX, true);
|
|
1167
|
-
}
|
|
1168
|
-
function trustedSettingsCollectionTarget(ownerWebId, endpointUrl, allowQuery) {
|
|
1169
|
-
return trustedCollectionTarget(ownerWebId, endpointUrl, SETTINGS_COLLECTION_SUFFIX, allowQuery);
|
|
1170
|
-
}
|
|
1171
1071
|
function trustedCollectionTarget(ownerWebId, endpointUrl, suffix, allowQuery) {
|
|
1172
1072
|
let owner;
|
|
1173
1073
|
let endpoint;
|
|
@@ -200,14 +200,6 @@
|
|
|
200
200
|
"@id": "undefineds:dist/http/SubgraphSparqlHttpHandler.jsonld#SubgraphSparqlHttpHandler__member_handle",
|
|
201
201
|
"memberFieldName": "handle"
|
|
202
202
|
},
|
|
203
|
-
{
|
|
204
|
-
"@id": "undefineds:dist/http/SubgraphSparqlHttpHandler.jsonld#SubgraphSparqlHttpHandler__member_handleTrustedInternalSelect",
|
|
205
|
-
"memberFieldName": "handleTrustedInternalSelect"
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
"@id": "undefineds:dist/http/SubgraphSparqlHttpHandler.jsonld#SubgraphSparqlHttpHandler__member_handleTrustedInternalUpdate",
|
|
209
|
-
"memberFieldName": "handleTrustedInternalUpdate"
|
|
210
|
-
},
|
|
211
203
|
{
|
|
212
204
|
"@id": "undefineds:dist/http/SubgraphSparqlHttpHandler.jsonld#SubgraphSparqlHttpHandler__member_sendErrorResponse",
|
|
213
205
|
"memberFieldName": "sendErrorResponse"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { IdentityDatabase } from './db';
|
|
2
|
+
/**
|
|
3
|
+
* The interface access key a Pod grants its owner's server-side components.
|
|
4
|
+
*
|
|
5
|
+
* It is an ordinary Pod credential - the same kind a browser holds - so the server reaches the
|
|
6
|
+
* Pod through the standard interface as that user. The ciphertext lives here rather than in the
|
|
7
|
+
* Pod, because this key is what opens the Pod.
|
|
8
|
+
*/
|
|
9
|
+
export interface PodInterfaceKeyRecord {
|
|
10
|
+
ownerWebId: string;
|
|
11
|
+
clientId: string;
|
|
12
|
+
/** Vault-sealed JSON `{ clientSecret }`. */
|
|
13
|
+
sealedSecret: string;
|
|
14
|
+
createdAt: Date;
|
|
15
|
+
updatedAt: Date;
|
|
16
|
+
}
|
|
17
|
+
export interface PodInterfaceKeyRepositoryPort {
|
|
18
|
+
read(ownerWebId: string): Promise<PodInterfaceKeyRecord | undefined>;
|
|
19
|
+
write(record: Omit<PodInterfaceKeyRecord, 'createdAt' | 'updatedAt'>): Promise<void>;
|
|
20
|
+
remove(ownerWebId: string): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
export declare class PodInterfaceKeyRepository implements PodInterfaceKeyRepositoryPort {
|
|
23
|
+
private readonly db;
|
|
24
|
+
private readonly logger;
|
|
25
|
+
private readonly schema;
|
|
26
|
+
private readonly ready;
|
|
27
|
+
private initError?;
|
|
28
|
+
constructor(db: IdentityDatabase);
|
|
29
|
+
read(ownerWebId: string): Promise<PodInterfaceKeyRecord | undefined>;
|
|
30
|
+
write(record: Omit<PodInterfaceKeyRecord, 'createdAt' | 'updatedAt'>): Promise<void>;
|
|
31
|
+
remove(ownerWebId: string): Promise<void>;
|
|
32
|
+
private ensureReady;
|
|
33
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PodInterfaceKeyRepository = void 0;
|
|
4
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
5
|
+
const global_logger_factory_1 = require("global-logger-factory");
|
|
6
|
+
const db_1 = require("./db");
|
|
7
|
+
class PodInterfaceKeyRepository {
|
|
8
|
+
constructor(db) {
|
|
9
|
+
this.db = db;
|
|
10
|
+
this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
|
|
11
|
+
this.schema = (0, db_1.getSchema)(db);
|
|
12
|
+
// Bootstrap is lazy, and its failure belongs to the first caller that needs the table.
|
|
13
|
+
// Leaving the rejection unobserved would surface as an unhandled rejection from a
|
|
14
|
+
// constructor nobody awaits, which is both louder and less useful than a read error.
|
|
15
|
+
this.ready = (0, db_1.ensurePodInterfaceKeyTable)(db).catch((error) => {
|
|
16
|
+
this.initError = error;
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
async read(ownerWebId) {
|
|
20
|
+
await this.ensureReady();
|
|
21
|
+
const rows = await this.db
|
|
22
|
+
.select()
|
|
23
|
+
.from(this.schema.podInterfaceKeys)
|
|
24
|
+
.where((0, drizzle_orm_1.eq)(this.schema.podInterfaceKeys.ownerWebId, ownerWebId))
|
|
25
|
+
.limit(1);
|
|
26
|
+
const row = rows[0];
|
|
27
|
+
if (!row) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
ownerWebId: String(row.ownerWebId),
|
|
32
|
+
clientId: String(row.clientId),
|
|
33
|
+
sealedSecret: String(row.sealedSecret),
|
|
34
|
+
createdAt: (0, db_1.fromDbTimestamp)(row.createdAt) ?? new Date(),
|
|
35
|
+
updatedAt: (0, db_1.fromDbTimestamp)(row.updatedAt) ?? new Date(),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async write(record) {
|
|
39
|
+
await this.ensureReady();
|
|
40
|
+
const existing = await this.read(record.ownerWebId);
|
|
41
|
+
if (existing) {
|
|
42
|
+
await this.db
|
|
43
|
+
.update(this.schema.podInterfaceKeys)
|
|
44
|
+
.set({
|
|
45
|
+
clientId: record.clientId,
|
|
46
|
+
sealedSecret: record.sealedSecret,
|
|
47
|
+
updatedAt: (0, db_1.toDbTimestamp)(this.db, new Date()),
|
|
48
|
+
})
|
|
49
|
+
.where((0, drizzle_orm_1.eq)(this.schema.podInterfaceKeys.ownerWebId, record.ownerWebId));
|
|
50
|
+
this.logger.info(`Rotated the Pod interface key for ${record.ownerWebId}`);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
await this.db.insert(this.schema.podInterfaceKeys).values({
|
|
54
|
+
ownerWebId: record.ownerWebId,
|
|
55
|
+
clientId: record.clientId,
|
|
56
|
+
sealedSecret: record.sealedSecret,
|
|
57
|
+
createdAt: (0, db_1.toDbTimestamp)(this.db, new Date()),
|
|
58
|
+
updatedAt: (0, db_1.toDbTimestamp)(this.db, new Date()),
|
|
59
|
+
});
|
|
60
|
+
this.logger.info(`Stored a Pod interface key for ${record.ownerWebId}`);
|
|
61
|
+
}
|
|
62
|
+
async remove(ownerWebId) {
|
|
63
|
+
await this.ensureReady();
|
|
64
|
+
await this.db
|
|
65
|
+
.delete(this.schema.podInterfaceKeys)
|
|
66
|
+
.where((0, drizzle_orm_1.eq)(this.schema.podInterfaceKeys.ownerWebId, ownerWebId));
|
|
67
|
+
}
|
|
68
|
+
async ensureReady() {
|
|
69
|
+
await this.ready;
|
|
70
|
+
if (this.initError) {
|
|
71
|
+
throw this.initError instanceof Error
|
|
72
|
+
? this.initError
|
|
73
|
+
: new Error(`pod_interface_key_table_unavailable:${String(this.initError)}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.PodInterfaceKeyRepository = PodInterfaceKeyRepository;
|
|
78
|
+
//# sourceMappingURL=PodInterfaceKeyRepository.js.map
|
|
@@ -58,6 +58,13 @@ export declare function executeQuery<T = Record<string, unknown>>(db: IdentityDa
|
|
|
58
58
|
*/
|
|
59
59
|
export declare function executeStatement(db: IdentityDatabase, query: SQL): Promise<void>;
|
|
60
60
|
export declare function executePostgresLockedStatements(db: IdentityDatabase, lockKey: number, statements: string[]): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Creates the per-owner interface-key table.
|
|
63
|
+
*
|
|
64
|
+
* The table holds the owner's Pod credential, which the runtime needs *before* it can read
|
|
65
|
+
* anything inside that Pod, so it is created on first use rather than by a Pod-side migration.
|
|
66
|
+
*/
|
|
67
|
+
export declare function ensurePodInterfaceKeyTable(db: IdentityDatabase): Promise<void>;
|
|
61
68
|
export declare function ensureCloudClusterTables(db: IdentityDatabase): Promise<void>;
|
|
62
69
|
/**
|
|
63
70
|
* Convert a Date to a value suitable for the database.
|
|
@@ -33,6 +33,7 @@ exports.isDatabaseSqlite = isDatabaseSqlite;
|
|
|
33
33
|
exports.executeQuery = executeQuery;
|
|
34
34
|
exports.executeStatement = executeStatement;
|
|
35
35
|
exports.executePostgresLockedStatements = executePostgresLockedStatements;
|
|
36
|
+
exports.ensurePodInterfaceKeyTable = ensurePodInterfaceKeyTable;
|
|
36
37
|
exports.ensureCloudClusterTables = ensureCloudClusterTables;
|
|
37
38
|
exports.toDbTimestamp = toDbTimestamp;
|
|
38
39
|
exports.fromDbTimestamp = fromDbTimestamp;
|
|
@@ -260,6 +261,35 @@ async function executePostgresLockedStatements(db, lockKey, statements) {
|
|
|
260
261
|
client.release();
|
|
261
262
|
}
|
|
262
263
|
}
|
|
264
|
+
/**
|
|
265
|
+
* Creates the per-owner interface-key table.
|
|
266
|
+
*
|
|
267
|
+
* The table holds the owner's Pod credential, which the runtime needs *before* it can read
|
|
268
|
+
* anything inside that Pod, so it is created on first use rather than by a Pod-side migration.
|
|
269
|
+
*/
|
|
270
|
+
async function ensurePodInterfaceKeyTable(db) {
|
|
271
|
+
if (isDatabaseSqlite(db)) {
|
|
272
|
+
db.run((0, drizzle_orm_1.sql) `
|
|
273
|
+
CREATE TABLE IF NOT EXISTS identity_pod_interface_key (
|
|
274
|
+
owner_web_id TEXT PRIMARY KEY,
|
|
275
|
+
client_id TEXT NOT NULL,
|
|
276
|
+
sealed_secret TEXT NOT NULL,
|
|
277
|
+
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
|
|
278
|
+
updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
|
|
279
|
+
)
|
|
280
|
+
`);
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
await db.execute((0, drizzle_orm_1.sql) `
|
|
284
|
+
CREATE TABLE IF NOT EXISTS identity_pod_interface_key (
|
|
285
|
+
owner_web_id TEXT PRIMARY KEY,
|
|
286
|
+
client_id TEXT NOT NULL,
|
|
287
|
+
sealed_secret TEXT NOT NULL,
|
|
288
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
289
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
290
|
+
)
|
|
291
|
+
`);
|
|
292
|
+
}
|
|
263
293
|
async function ensureCloudClusterTables(db) {
|
|
264
294
|
await ensureDatabaseReady(db);
|
|
265
295
|
if (db && typeof db === 'object') {
|
|
@@ -10,3 +10,12 @@ export declare const edgeNodes: any;
|
|
|
10
10
|
* 用于服务间认证 (Business, Local SP, Cloud, Compute)
|
|
11
11
|
*/
|
|
12
12
|
export declare const serviceTokens: any;
|
|
13
|
+
/**
|
|
14
|
+
* Per-owner interface access key.
|
|
15
|
+
*
|
|
16
|
+
* A server-side component acts for a user through that user's own Pod credentials, so the
|
|
17
|
+
* client id/secret pair - the same kind of key a browser uses on the standard interface - is
|
|
18
|
+
* remembered here, sealed by the credential vault. It cannot live in the Pod: it is what
|
|
19
|
+
* grants access to the Pod.
|
|
20
|
+
*/
|
|
21
|
+
export declare const podInterfaceKeys: any;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.serviceTokens = exports.edgeNodes = exports.ddnsRecords = exports.usage = void 0;
|
|
3
|
+
exports.podInterfaceKeys = exports.serviceTokens = exports.edgeNodes = exports.ddnsRecords = exports.usage = void 0;
|
|
4
4
|
const pg_core_1 = require("drizzle-orm/pg-core");
|
|
5
5
|
const bigint_1 = require("drizzle-orm/pg-core/columns/bigint");
|
|
6
6
|
const integer_1 = require("drizzle-orm/pg-core/columns/integer");
|
|
@@ -79,4 +79,19 @@ exports.serviceTokens = (0, pg_core_1.pgTable)('cluster_service_token', {
|
|
|
79
79
|
createdAt: (0, pg_core_1.timestamp)('created_at', { withTimezone: true, mode: 'date' }).notNull().defaultNow(),
|
|
80
80
|
expiresAt: (0, pg_core_1.timestamp)('expires_at', { withTimezone: true, mode: 'date' }),
|
|
81
81
|
});
|
|
82
|
+
/**
|
|
83
|
+
* Per-owner interface access key.
|
|
84
|
+
*
|
|
85
|
+
* A server-side component acts for a user through that user's own Pod credentials, so the
|
|
86
|
+
* client id/secret pair - the same kind of key a browser uses on the standard interface - is
|
|
87
|
+
* remembered here, sealed by the credential vault. It cannot live in the Pod: it is what
|
|
88
|
+
* grants access to the Pod.
|
|
89
|
+
*/
|
|
90
|
+
exports.podInterfaceKeys = (0, pg_core_1.pgTable)('identity_pod_interface_key', {
|
|
91
|
+
ownerWebId: (0, pg_core_1.text)('owner_web_id').primaryKey(),
|
|
92
|
+
clientId: (0, pg_core_1.text)('client_id').notNull(),
|
|
93
|
+
sealedSecret: (0, pg_core_1.text)('sealed_secret').notNull(),
|
|
94
|
+
createdAt: (0, pg_core_1.timestamp)('created_at').notNull().defaultNow(),
|
|
95
|
+
updatedAt: (0, pg_core_1.timestamp)('updated_at').notNull().defaultNow(),
|
|
96
|
+
});
|
|
82
97
|
//# sourceMappingURL=schema.pg.js.map
|
|
@@ -1073,3 +1073,109 @@ export declare const serviceTokens: import("drizzle-orm/sqlite-core").SQLiteTabl
|
|
|
1073
1073
|
};
|
|
1074
1074
|
dialect: "sqlite";
|
|
1075
1075
|
}>;
|
|
1076
|
+
/**
|
|
1077
|
+
* Per-owner interface access key.
|
|
1078
|
+
*
|
|
1079
|
+
* A server-side component acts for a user through that user's own Pod credentials, so the
|
|
1080
|
+
* client id/secret pair - the same kind of key a browser uses on the standard interface - is
|
|
1081
|
+
* remembered here, sealed by the credential vault. It cannot live in the Pod: it is what
|
|
1082
|
+
* grants access to the Pod.
|
|
1083
|
+
*/
|
|
1084
|
+
export declare const podInterfaceKeys: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
1085
|
+
name: "identity_pod_interface_key";
|
|
1086
|
+
schema: undefined;
|
|
1087
|
+
columns: {
|
|
1088
|
+
ownerWebId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
1089
|
+
name: "owner_web_id";
|
|
1090
|
+
tableName: "identity_pod_interface_key";
|
|
1091
|
+
dataType: "string";
|
|
1092
|
+
columnType: "SQLiteText";
|
|
1093
|
+
data: string;
|
|
1094
|
+
driverParam: string;
|
|
1095
|
+
notNull: true;
|
|
1096
|
+
hasDefault: false;
|
|
1097
|
+
isPrimaryKey: true;
|
|
1098
|
+
isAutoincrement: false;
|
|
1099
|
+
hasRuntimeDefault: false;
|
|
1100
|
+
enumValues: [string, ...string[]];
|
|
1101
|
+
baseColumn: never;
|
|
1102
|
+
identity: undefined;
|
|
1103
|
+
generated: undefined;
|
|
1104
|
+
}, {}, {
|
|
1105
|
+
length: number | undefined;
|
|
1106
|
+
}>;
|
|
1107
|
+
clientId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
1108
|
+
name: "client_id";
|
|
1109
|
+
tableName: "identity_pod_interface_key";
|
|
1110
|
+
dataType: "string";
|
|
1111
|
+
columnType: "SQLiteText";
|
|
1112
|
+
data: string;
|
|
1113
|
+
driverParam: string;
|
|
1114
|
+
notNull: true;
|
|
1115
|
+
hasDefault: false;
|
|
1116
|
+
isPrimaryKey: false;
|
|
1117
|
+
isAutoincrement: false;
|
|
1118
|
+
hasRuntimeDefault: false;
|
|
1119
|
+
enumValues: [string, ...string[]];
|
|
1120
|
+
baseColumn: never;
|
|
1121
|
+
identity: undefined;
|
|
1122
|
+
generated: undefined;
|
|
1123
|
+
}, {}, {
|
|
1124
|
+
length: number | undefined;
|
|
1125
|
+
}>;
|
|
1126
|
+
sealedSecret: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
1127
|
+
name: "sealed_secret";
|
|
1128
|
+
tableName: "identity_pod_interface_key";
|
|
1129
|
+
dataType: "string";
|
|
1130
|
+
columnType: "SQLiteText";
|
|
1131
|
+
data: string;
|
|
1132
|
+
driverParam: string;
|
|
1133
|
+
notNull: true;
|
|
1134
|
+
hasDefault: false;
|
|
1135
|
+
isPrimaryKey: false;
|
|
1136
|
+
isAutoincrement: false;
|
|
1137
|
+
hasRuntimeDefault: false;
|
|
1138
|
+
enumValues: [string, ...string[]];
|
|
1139
|
+
baseColumn: never;
|
|
1140
|
+
identity: undefined;
|
|
1141
|
+
generated: undefined;
|
|
1142
|
+
}, {}, {
|
|
1143
|
+
length: number | undefined;
|
|
1144
|
+
}>;
|
|
1145
|
+
createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
1146
|
+
name: "created_at";
|
|
1147
|
+
tableName: "identity_pod_interface_key";
|
|
1148
|
+
dataType: "number";
|
|
1149
|
+
columnType: "SQLiteInteger";
|
|
1150
|
+
data: number;
|
|
1151
|
+
driverParam: number;
|
|
1152
|
+
notNull: true;
|
|
1153
|
+
hasDefault: true;
|
|
1154
|
+
isPrimaryKey: false;
|
|
1155
|
+
isAutoincrement: false;
|
|
1156
|
+
hasRuntimeDefault: true;
|
|
1157
|
+
enumValues: undefined;
|
|
1158
|
+
baseColumn: never;
|
|
1159
|
+
identity: undefined;
|
|
1160
|
+
generated: undefined;
|
|
1161
|
+
}, {}, {}>;
|
|
1162
|
+
updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
1163
|
+
name: "updated_at";
|
|
1164
|
+
tableName: "identity_pod_interface_key";
|
|
1165
|
+
dataType: "number";
|
|
1166
|
+
columnType: "SQLiteInteger";
|
|
1167
|
+
data: number;
|
|
1168
|
+
driverParam: number;
|
|
1169
|
+
notNull: true;
|
|
1170
|
+
hasDefault: true;
|
|
1171
|
+
isPrimaryKey: false;
|
|
1172
|
+
isAutoincrement: false;
|
|
1173
|
+
hasRuntimeDefault: true;
|
|
1174
|
+
enumValues: undefined;
|
|
1175
|
+
baseColumn: never;
|
|
1176
|
+
identity: undefined;
|
|
1177
|
+
generated: undefined;
|
|
1178
|
+
}, {}, {}>;
|
|
1179
|
+
};
|
|
1180
|
+
dialect: "sqlite";
|
|
1181
|
+
}>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.serviceTokens = exports.edgeNodes = exports.ddnsRecords = exports.usage = void 0;
|
|
3
|
+
exports.podInterfaceKeys = exports.serviceTokens = exports.edgeNodes = exports.ddnsRecords = exports.usage = void 0;
|
|
4
4
|
const sqlite_core_1 = require("drizzle-orm/sqlite-core");
|
|
5
5
|
exports.usage = (0, sqlite_core_1.sqliteTable)('identity_usage', {
|
|
6
6
|
scopeType: (0, sqlite_core_1.text)('scope_type').notNull(), // 'account' | 'pod'
|
|
@@ -79,4 +79,19 @@ exports.serviceTokens = (0, sqlite_core_1.sqliteTable)('cluster_service_token',
|
|
|
79
79
|
createdAt: (0, sqlite_core_1.integer)('created_at').notNull().$defaultFn(() => Math.floor(Date.now() / 1000)),
|
|
80
80
|
expiresAt: (0, sqlite_core_1.integer)('expires_at'),
|
|
81
81
|
});
|
|
82
|
+
/**
|
|
83
|
+
* Per-owner interface access key.
|
|
84
|
+
*
|
|
85
|
+
* A server-side component acts for a user through that user's own Pod credentials, so the
|
|
86
|
+
* client id/secret pair - the same kind of key a browser uses on the standard interface - is
|
|
87
|
+
* remembered here, sealed by the credential vault. It cannot live in the Pod: it is what
|
|
88
|
+
* grants access to the Pod.
|
|
89
|
+
*/
|
|
90
|
+
exports.podInterfaceKeys = (0, sqlite_core_1.sqliteTable)('identity_pod_interface_key', {
|
|
91
|
+
ownerWebId: (0, sqlite_core_1.text)('owner_web_id').primaryKey(),
|
|
92
|
+
clientId: (0, sqlite_core_1.text)('client_id').notNull(),
|
|
93
|
+
sealedSecret: (0, sqlite_core_1.text)('sealed_secret').notNull(),
|
|
94
|
+
createdAt: (0, sqlite_core_1.integer)('created_at').notNull().$defaultFn(() => Math.floor(Date.now() / 1000)),
|
|
95
|
+
updatedAt: (0, sqlite_core_1.integer)('updated_at').notNull().$defaultFn(() => Math.floor(Date.now() / 1000)),
|
|
96
|
+
});
|
|
82
97
|
//# sourceMappingURL=schema.sqlite.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,6 @@ export type { PostgresRdfTextIndexOptions } from './storage/rdf/PostgresRdfTextI
|
|
|
15
15
|
export type { PostgresRdfVectorIndexOptions } from './storage/rdf/PostgresRdfVectorIndex';
|
|
16
16
|
export * from './document';
|
|
17
17
|
import { SubgraphSparqlHttpHandler } from './http/SubgraphSparqlHttpHandler';
|
|
18
|
-
import { InternalPodDataHttpHandler } from './http/InternalPodDataHttpHandler';
|
|
19
18
|
import { QuotaAdminHttpHandler } from './http/quota/QuotaAdminHttpHandler';
|
|
20
19
|
import { SparqlUpdateResourceStore } from './storage/SparqlUpdateResourceStore';
|
|
21
20
|
import { ClusterIngressRouter } from './http/ClusterIngressRouter';
|
|
@@ -127,6 +126,6 @@ export type { OwnedWebIdEntry, PodOwnershipResolver, PodOwnershipTarget, CssPodO
|
|
|
127
126
|
export type { TunnelProvider, TunnelConfig, TunnelSetupOptions, TunnelStatus, } from './tunnel/TunnelProvider';
|
|
128
127
|
export type { SubdomainRegistration, ConnectivityResult, SubdomainServiceOptions, } from './subdomain/SubdomainService';
|
|
129
128
|
export { AppStaticAssetHandler } from './http/AppStaticAssetHandler';
|
|
130
|
-
export { RepresentationPartialConvertingStore, MinioDataAccessor, SolidRdfDataAccessor, MixDataAccessor, ConfigurableLoggerFactory, resolveLogFilePattern, resolveCurrentLogFile, LOG_FILE_PATTERN, SparqlUpdateResourceStore, SubgraphQueryEngine, SubgraphSparqlHttpHandler,
|
|
129
|
+
export { RepresentationPartialConvertingStore, MinioDataAccessor, SolidRdfDataAccessor, MixDataAccessor, ConfigurableLoggerFactory, resolveLogFilePattern, resolveCurrentLogFile, LOG_FILE_PATTERN, SparqlUpdateResourceStore, SubgraphQueryEngine, SubgraphSparqlHttpHandler, QuotaAdminHttpHandler, ClusterIngressRouter, ClusterWebSocketConfigurator, EdgeNodeDirectDebugHttpHandler, EdgeNodeProxyHttpHandler, RouterHttpHandler, RouterHttpRoute, TracingHandler, EdgeNodeCertificateHttpHandler, TerminalHttpHandler, DeviceNotificationHub, DeviceNotificationResourceListener, DeviceNotificationWebSocketServer, DeviceNotificationTicketHandler, registerDeviceNotificationRuntime, ReservedSuffixIdentifierGenerator, DrizzleIndexedStorage, LoginMethodGuardStorage, ValidatingIdentityProviderHttpHandler, PostgresKeyValueStorage, RedisKeyValueStorage, SqliteKeyValueStorage, BaseKeyValueStorage, DrizzleQuotaService, NoopQuotaService, HttpEntitlementProvider, NoopEntitlementProvider, PerAccountQuotaStrategy, TencentDnsProvider, EdgeNodeDnsCoordinator, Dns01CertificateProvisioner, SimpleEdgeNodeTunnelManager, NoopEdgeNodeTunnelManager, FrpTunnelManager, EdgeNodeHealthProbeService, assertPublicProbeTarget, createPinnedHeadProbeRequest, isPublicIpAddress, createPodOwnershipNodeAccessResolver, EdgeNodeAgent, EdgeNodeAgentInitializer, EdgeNodeCertificateService, AcmeCertificateManager, EdgeNodeModeDetector, ClusterIdentifierStrategy, UsageTrackingStore, CenterNodeRegistrationService, PodRoutingHttpHandler, ReactAppViewHandler, QuintStore, SqliteQuintStore, PgQuintStore, RdfTermDictionary, RdfQuadIndex, Rdf3xIndex, RdfTextIndex, RdfVectorIndex, PostgresRdfTextIndex, PostgresRdfVectorIndex, SolidRdfEngine, LocalQleverNativeSparqlClient, QleverSparqlEngine, RdfQuerySparqlEngine, PostgresRdfEngine, VectorStore, SqliteVectorStore, PostgresVectorStore, VectorHttpHandler, ProviderRegistry, ProviderRegistryImpl, EmbeddingService, EmbeddingServiceImpl, CredentialReader, CredentialReaderImpl, CloudflareTunnelProvider, LocalTunnelProvider, NgrokTunnelProvider, SubdomainService, MultiDomainIdentifierStrategy, SubdomainPodIdentifierStrategy, DisabledOidcHandler, DisabledIdentityProviderHandler, AutoDetectOidcHandler, AutoDetectIdentityProviderHandler, LoopbackClientIdAdapterFactory, RememberedClientGrantStore, RememberedConsentHandler, RememberedClientPromptFactory, SessionBoundIdentityProviderFactory, ScopedPickWebIdHandler, ConfiguredLoopbackDPoPWebIdExtractor, AccountStorageBindingsHandler, CssPodOwnershipResolver, UrlAwareRedisLocker, ProvisionPodCreator, ProvisionPodStore, ProvisionCodeCodec, LocalPodProvisioningService, SqliteSolidFsSyncJournal, RootedSolidFsSyncJournal, LocalRdfAuthorityRecoveryInitializer, ObservableResourceStore, RdfSearchReconciliationIntentSink, };
|
|
131
130
|
export type { ResourceChangeEvent, ResourceChangeListener, ResourceChangeRecorder, } from './storage/ObservableResourceStore';
|
|
132
131
|
export { RdfHandlebarsTemplateEngine } from './util/templates/RdfHandlebarsTemplateEngine';
|
package/dist/index.js
CHANGED
|
@@ -14,9 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.createPinnedHeadProbeRequest = exports.assertPublicProbeTarget = exports.EdgeNodeHealthProbeService = exports.FrpTunnelManager = exports.NoopEdgeNodeTunnelManager = exports.SimpleEdgeNodeTunnelManager = exports.Dns01CertificateProvisioner = exports.EdgeNodeDnsCoordinator = exports.TencentDnsProvider = exports.PerAccountQuotaStrategy = exports.NoopEntitlementProvider = exports.HttpEntitlementProvider = exports.NoopQuotaService = exports.DrizzleQuotaService = exports.BaseKeyValueStorage = exports.SqliteKeyValueStorage = exports.RedisKeyValueStorage = exports.PostgresKeyValueStorage = exports.ValidatingIdentityProviderHttpHandler = exports.LoginMethodGuardStorage = exports.DrizzleIndexedStorage = exports.ReservedSuffixIdentifierGenerator = exports.registerDeviceNotificationRuntime = exports.DeviceNotificationTicketHandler = exports.DeviceNotificationWebSocketServer = exports.DeviceNotificationResourceListener = exports.DeviceNotificationHub = exports.TerminalHttpHandler = exports.EdgeNodeCertificateHttpHandler = exports.TracingHandler = exports.RouterHttpRoute = exports.RouterHttpHandler = exports.EdgeNodeProxyHttpHandler = exports.EdgeNodeDirectDebugHttpHandler = exports.ClusterWebSocketConfigurator = exports.ClusterIngressRouter = exports.QuotaAdminHttpHandler = exports.
|
|
18
|
-
exports.RememberedConsentHandler = exports.RememberedClientGrantStore = exports.LoopbackClientIdAdapterFactory = exports.AutoDetectIdentityProviderHandler = exports.AutoDetectOidcHandler = exports.DisabledIdentityProviderHandler = exports.DisabledOidcHandler = exports.SubdomainPodIdentifierStrategy = exports.MultiDomainIdentifierStrategy = exports.SubdomainService = exports.NgrokTunnelProvider = exports.LocalTunnelProvider = exports.CloudflareTunnelProvider = exports.CredentialReaderImpl = exports.CredentialReader = exports.EmbeddingServiceImpl = exports.EmbeddingService = exports.ProviderRegistryImpl = exports.ProviderRegistry = exports.VectorHttpHandler = exports.PostgresVectorStore = exports.SqliteVectorStore = exports.VectorStore = exports.PostgresRdfEngine = exports.RdfQuerySparqlEngine = exports.QleverSparqlEngine = exports.LocalQleverNativeSparqlClient = exports.SolidRdfEngine = exports.PostgresRdfVectorIndex = exports.PostgresRdfTextIndex = exports.RdfVectorIndex = exports.RdfTextIndex = exports.Rdf3xIndex = exports.RdfQuadIndex = exports.RdfTermDictionary = exports.PgQuintStore = exports.SqliteQuintStore = exports.QuintStore = exports.ReactAppViewHandler = exports.PodRoutingHttpHandler = exports.CenterNodeRegistrationService = exports.UsageTrackingStore = exports.ClusterIdentifierStrategy = exports.EdgeNodeModeDetector = exports.AcmeCertificateManager = exports.EdgeNodeCertificateService = exports.EdgeNodeAgentInitializer = exports.EdgeNodeAgent = exports.createPodOwnershipNodeAccessResolver =
|
|
19
|
-
exports.RdfHandlebarsTemplateEngine = exports.RdfSearchReconciliationIntentSink = exports.ObservableResourceStore = exports.LocalRdfAuthorityRecoveryInitializer = exports.RootedSolidFsSyncJournal = exports.SqliteSolidFsSyncJournal = exports.LocalPodProvisioningService = exports.ProvisionCodeCodec = exports.ProvisionPodStore = exports.ProvisionPodCreator = exports.UrlAwareRedisLocker = exports.CssPodOwnershipResolver = exports.AccountStorageBindingsHandler = exports.ConfiguredLoopbackDPoPWebIdExtractor = exports.ScopedPickWebIdHandler = exports.SessionBoundIdentityProviderFactory =
|
|
17
|
+
exports.isPublicIpAddress = exports.createPinnedHeadProbeRequest = exports.assertPublicProbeTarget = exports.EdgeNodeHealthProbeService = exports.FrpTunnelManager = exports.NoopEdgeNodeTunnelManager = exports.SimpleEdgeNodeTunnelManager = exports.Dns01CertificateProvisioner = exports.EdgeNodeDnsCoordinator = exports.TencentDnsProvider = exports.PerAccountQuotaStrategy = exports.NoopEntitlementProvider = exports.HttpEntitlementProvider = exports.NoopQuotaService = exports.DrizzleQuotaService = exports.BaseKeyValueStorage = exports.SqliteKeyValueStorage = exports.RedisKeyValueStorage = exports.PostgresKeyValueStorage = exports.ValidatingIdentityProviderHttpHandler = exports.LoginMethodGuardStorage = exports.DrizzleIndexedStorage = exports.ReservedSuffixIdentifierGenerator = exports.registerDeviceNotificationRuntime = exports.DeviceNotificationTicketHandler = exports.DeviceNotificationWebSocketServer = exports.DeviceNotificationResourceListener = exports.DeviceNotificationHub = exports.TerminalHttpHandler = exports.EdgeNodeCertificateHttpHandler = exports.TracingHandler = exports.RouterHttpRoute = exports.RouterHttpHandler = exports.EdgeNodeProxyHttpHandler = exports.EdgeNodeDirectDebugHttpHandler = exports.ClusterWebSocketConfigurator = exports.ClusterIngressRouter = exports.QuotaAdminHttpHandler = exports.SubgraphSparqlHttpHandler = exports.SubgraphQueryEngine = exports.SparqlUpdateResourceStore = exports.LOG_FILE_PATTERN = exports.resolveCurrentLogFile = exports.resolveLogFilePattern = exports.ConfigurableLoggerFactory = exports.MixDataAccessor = exports.SolidRdfDataAccessor = exports.MinioDataAccessor = exports.RepresentationPartialConvertingStore = exports.AppStaticAssetHandler = void 0;
|
|
18
|
+
exports.RememberedClientPromptFactory = exports.RememberedConsentHandler = exports.RememberedClientGrantStore = exports.LoopbackClientIdAdapterFactory = exports.AutoDetectIdentityProviderHandler = exports.AutoDetectOidcHandler = exports.DisabledIdentityProviderHandler = exports.DisabledOidcHandler = exports.SubdomainPodIdentifierStrategy = exports.MultiDomainIdentifierStrategy = exports.SubdomainService = exports.NgrokTunnelProvider = exports.LocalTunnelProvider = exports.CloudflareTunnelProvider = exports.CredentialReaderImpl = exports.CredentialReader = exports.EmbeddingServiceImpl = exports.EmbeddingService = exports.ProviderRegistryImpl = exports.ProviderRegistry = exports.VectorHttpHandler = exports.PostgresVectorStore = exports.SqliteVectorStore = exports.VectorStore = exports.PostgresRdfEngine = exports.RdfQuerySparqlEngine = exports.QleverSparqlEngine = exports.LocalQleverNativeSparqlClient = exports.SolidRdfEngine = exports.PostgresRdfVectorIndex = exports.PostgresRdfTextIndex = exports.RdfVectorIndex = exports.RdfTextIndex = exports.Rdf3xIndex = exports.RdfQuadIndex = exports.RdfTermDictionary = exports.PgQuintStore = exports.SqliteQuintStore = exports.QuintStore = exports.ReactAppViewHandler = exports.PodRoutingHttpHandler = exports.CenterNodeRegistrationService = exports.UsageTrackingStore = exports.ClusterIdentifierStrategy = exports.EdgeNodeModeDetector = exports.AcmeCertificateManager = exports.EdgeNodeCertificateService = exports.EdgeNodeAgentInitializer = exports.EdgeNodeAgent = exports.createPodOwnershipNodeAccessResolver = void 0;
|
|
19
|
+
exports.RdfHandlebarsTemplateEngine = exports.RdfSearchReconciliationIntentSink = exports.ObservableResourceStore = exports.LocalRdfAuthorityRecoveryInitializer = exports.RootedSolidFsSyncJournal = exports.SqliteSolidFsSyncJournal = exports.LocalPodProvisioningService = exports.ProvisionCodeCodec = exports.ProvisionPodStore = exports.ProvisionPodCreator = exports.UrlAwareRedisLocker = exports.CssPodOwnershipResolver = exports.AccountStorageBindingsHandler = exports.ConfiguredLoopbackDPoPWebIdExtractor = exports.ScopedPickWebIdHandler = exports.SessionBoundIdentityProviderFactory = void 0;
|
|
20
20
|
require("./runtime/configure-drizzle-solid");
|
|
21
21
|
const RepresentationPartialConvertingStore_1 = require("./storage/RepresentationPartialConvertingStore");
|
|
22
22
|
Object.defineProperty(exports, "RepresentationPartialConvertingStore", { enumerable: true, get: function () { return RepresentationPartialConvertingStore_1.RepresentationPartialConvertingStore; } });
|
|
@@ -37,8 +37,6 @@ Object.defineProperty(exports, "SubgraphQueryEngine", { enumerable: true, get: f
|
|
|
37
37
|
__exportStar(require("./document"), exports);
|
|
38
38
|
const SubgraphSparqlHttpHandler_1 = require("./http/SubgraphSparqlHttpHandler");
|
|
39
39
|
Object.defineProperty(exports, "SubgraphSparqlHttpHandler", { enumerable: true, get: function () { return SubgraphSparqlHttpHandler_1.SubgraphSparqlHttpHandler; } });
|
|
40
|
-
const InternalPodDataHttpHandler_1 = require("./http/InternalPodDataHttpHandler");
|
|
41
|
-
Object.defineProperty(exports, "InternalPodDataHttpHandler", { enumerable: true, get: function () { return InternalPodDataHttpHandler_1.InternalPodDataHttpHandler; } });
|
|
42
40
|
const QuotaAdminHttpHandler_1 = require("./http/quota/QuotaAdminHttpHandler");
|
|
43
41
|
Object.defineProperty(exports, "QuotaAdminHttpHandler", { enumerable: true, get: function () { return QuotaAdminHttpHandler_1.QuotaAdminHttpHandler; } });
|
|
44
42
|
const SparqlUpdateResourceStore_1 = require("./storage/SparqlUpdateResourceStore");
|
|
@@ -2,9 +2,8 @@ import type { IncomingHttpHeaders, OutgoingHttpHeaders } from 'node:http';
|
|
|
2
2
|
export declare const GATEWAY_ADMIN_PROXY_LOOPBACK_HEADER = "x-xpod-admin-proxy-loopback";
|
|
3
3
|
export declare const GATEWAY_ADMIN_PROXY_TIMESTAMP_HEADER = "x-xpod-admin-proxy-timestamp";
|
|
4
4
|
export declare const GATEWAY_ADMIN_PROXY_SIGNATURE_HEADER = "x-xpod-admin-proxy-signature";
|
|
5
|
-
export declare const GATEWAY_ADMIN_PROXY_INTENT_HEADER = "x-xpod-admin-proxy-intent";
|
|
6
5
|
export declare const GATEWAY_ADMIN_PROXY_NONCE_HEADER = "x-xpod-admin-proxy-nonce";
|
|
7
|
-
export declare const GATEWAY_ADMIN_PROXY_HEADERS: readonly ["x-xpod-admin-proxy-loopback", "x-xpod-admin-proxy-timestamp", "x-xpod-admin-proxy-signature", "x-xpod-admin-proxy-
|
|
6
|
+
export declare const GATEWAY_ADMIN_PROXY_HEADERS: readonly ["x-xpod-admin-proxy-loopback", "x-xpod-admin-proxy-timestamp", "x-xpod-admin-proxy-signature", "x-xpod-admin-proxy-nonce"];
|
|
8
7
|
export declare function createGatewayAdminProxyAuthSecret(): string;
|
|
9
8
|
export interface GatewayAdminProxyMarkerInput {
|
|
10
9
|
secret: string;
|
|
@@ -13,27 +12,14 @@ export interface GatewayAdminProxyMarkerInput {
|
|
|
13
12
|
originalClientLoopback: boolean;
|
|
14
13
|
issuedAt?: number;
|
|
15
14
|
nonce?: string;
|
|
16
|
-
intent?: GatewayAdminProxyIntent;
|
|
17
15
|
}
|
|
18
16
|
export interface GatewayAdminProxyMarkerVerification {
|
|
19
17
|
present: boolean;
|
|
20
18
|
valid: boolean;
|
|
21
19
|
originalClientLoopback: boolean;
|
|
22
20
|
nonce?: string;
|
|
23
|
-
intent?: GatewayAdminProxyIntent;
|
|
24
21
|
reason?: string;
|
|
25
22
|
}
|
|
26
|
-
export interface GatewayAdminProxyIntent {
|
|
27
|
-
ownerWebId: string;
|
|
28
|
-
/** Physical Pod root when it differs from the identity provider WebID root. */
|
|
29
|
-
podBaseUrl?: string;
|
|
30
|
-
method: 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
31
|
-
resourceUrl: string;
|
|
32
|
-
principalKind: 'solid-user' | 'gateway-key-verifier';
|
|
33
|
-
scopes: string[];
|
|
34
|
-
/** SHA-256 hex digest of a POST body. Required for POST intents. */
|
|
35
|
-
bodyDigest?: string;
|
|
36
|
-
}
|
|
37
23
|
export declare function createGatewayAdminProxyHeaders(input: GatewayAdminProxyMarkerInput): OutgoingHttpHeaders;
|
|
38
24
|
export declare function stripGatewayAdminProxyHeaders(headers: IncomingHttpHeaders): void;
|
|
39
25
|
export declare function isLoopbackRemoteAddress(remoteAddress: string | undefined): boolean;
|
|
@@ -44,4 +30,3 @@ export declare function verifyGatewayAdminProxyHeaders(input: {
|
|
|
44
30
|
url: string | undefined;
|
|
45
31
|
now?: number;
|
|
46
32
|
}): GatewayAdminProxyMarkerVerification;
|
|
47
|
-
export declare function canonicalGatewayAdminProxyIntent(intent: GatewayAdminProxyIntent): string;
|