@opendatalabs/personal-server-ts-core 0.0.1-canary.c357ffa → 0.0.1-canary.ce76db7
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/dist/api/index.d.ts +88 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +509 -0
- package/dist/api/index.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/request.d.ts +28 -0
- package/dist/auth/request.d.ts.map +1 -0
- package/dist/auth/request.js +106 -0
- package/dist/auth/request.js.map +1 -0
- package/dist/client.d.ts +226 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +225 -0
- package/dist/client.js.map +1 -0
- package/dist/config/defaults.d.ts +11 -4
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +11 -6
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +2 -2
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +9 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +14 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/contracts/access-logs.d.ts +8 -0
- package/dist/contracts/access-logs.d.ts.map +1 -0
- package/dist/contracts/access-logs.js +7 -0
- package/dist/contracts/access-logs.js.map +1 -0
- package/dist/contracts/auth-device.d.ts +70 -0
- package/dist/contracts/auth-device.d.ts.map +1 -0
- package/dist/contracts/auth-device.js +163 -0
- package/dist/contracts/auth-device.js.map +1 -0
- package/dist/contracts/binary.d.ts +54 -0
- package/dist/contracts/binary.d.ts.map +1 -0
- package/dist/contracts/binary.js +92 -0
- package/dist/contracts/binary.js.map +1 -0
- package/dist/contracts/config.d.ts +5 -0
- package/dist/contracts/config.d.ts.map +1 -0
- package/dist/contracts/config.js +30 -0
- package/dist/contracts/config.js.map +1 -0
- package/dist/contracts/data.d.ts +119 -0
- package/dist/contracts/data.d.ts.map +1 -0
- package/dist/contracts/data.js +235 -0
- package/dist/contracts/data.js.map +1 -0
- package/dist/contracts/grants.d.ts +43 -0
- package/dist/contracts/grants.d.ts.map +1 -0
- package/dist/contracts/grants.js +154 -0
- package/dist/contracts/grants.js.map +1 -0
- package/dist/contracts/http.d.ts +21 -0
- package/dist/contracts/http.d.ts.map +1 -0
- package/dist/contracts/http.js +49 -0
- package/dist/contracts/http.js.map +1 -0
- package/dist/contracts/index.d.ts +16 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +10 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/oauth.d.ts +38 -0
- package/dist/contracts/oauth.d.ts.map +1 -0
- package/dist/contracts/oauth.js +130 -0
- package/dist/contracts/oauth.js.map +1 -0
- package/dist/contracts/sync.d.ts +10 -0
- package/dist/contracts/sync.d.ts.map +1 -0
- package/dist/contracts/sync.js +34 -0
- package/dist/contracts/sync.js.map +1 -0
- package/dist/errors/catalog.d.ts +9 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/catalog.js +15 -0
- package/dist/errors/catalog.js.map +1 -1
- package/dist/grants/index.d.ts +1 -4
- package/dist/grants/index.d.ts.map +1 -1
- package/dist/grants/index.js +1 -2
- package/dist/grants/index.js.map +1 -1
- package/dist/keys/index.d.ts +1 -2
- package/dist/keys/index.d.ts.map +1 -1
- package/dist/keys/index.js +1 -2
- package/dist/keys/index.js.map +1 -1
- package/dist/keys/server-account.d.ts +7 -9
- package/dist/keys/server-account.d.ts.map +1 -1
- package/dist/keys/server-account.js +1 -44
- package/dist/keys/server-account.js.map +1 -1
- package/dist/logger/index.d.ts +6 -2
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +2 -6
- package/dist/logger/index.js.map +1 -1
- package/dist/logging/access-log.d.ts +0 -1
- package/dist/logging/access-log.d.ts.map +1 -1
- package/dist/logging/access-log.js +1 -24
- package/dist/logging/access-log.js.map +1 -1
- package/dist/logging/access-reader.d.ts +0 -5
- package/dist/logging/access-reader.d.ts.map +1 -1
- package/dist/logging/access-reader.js +1 -49
- package/dist/logging/access-reader.js.map +1 -1
- package/dist/mcp/activity.d.ts +55 -0
- package/dist/mcp/activity.d.ts.map +1 -0
- package/dist/mcp/activity.js +90 -0
- package/dist/mcp/activity.js.map +1 -0
- package/dist/mcp/builder-registration.d.ts +24 -0
- package/dist/mcp/builder-registration.d.ts.map +1 -0
- package/dist/mcp/builder-registration.js +89 -0
- package/dist/mcp/builder-registration.js.map +1 -0
- package/dist/mcp/connection-api.d.ts +170 -0
- package/dist/mcp/connection-api.d.ts.map +1 -0
- package/dist/mcp/connection-api.js +380 -0
- package/dist/mcp/connection-api.js.map +1 -0
- package/dist/mcp/grantee.d.ts +52 -0
- package/dist/mcp/grantee.d.ts.map +1 -0
- package/dist/mcp/grantee.js +91 -0
- package/dist/mcp/grantee.js.map +1 -0
- package/dist/mcp/index.d.ts +10 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +10 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/read-client.d.ts +114 -0
- package/dist/mcp/read-client.d.ts.map +1 -0
- package/dist/mcp/read-client.js +221 -0
- package/dist/mcp/read-client.js.map +1 -0
- package/dist/mcp/search/index.d.ts +34 -0
- package/dist/mcp/search/index.d.ts.map +1 -0
- package/dist/mcp/search/index.js +69 -0
- package/dist/mcp/search/index.js.map +1 -0
- package/dist/mcp/server.d.ts +38 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +227 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/store.d.ts +13 -0
- package/dist/mcp/store.d.ts.map +1 -0
- package/dist/mcp/store.js +98 -0
- package/dist/mcp/store.js.map +1 -0
- package/dist/mcp/tools.d.ts +44 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +834 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +97 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +24 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/policy/data-read.d.ts +16 -0
- package/dist/policy/data-read.d.ts.map +1 -0
- package/dist/policy/data-read.js +97 -0
- package/dist/policy/data-read.js.map +1 -0
- package/dist/policy/index.d.ts +2 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +2 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/ports/index.d.ts +112 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +6 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/schemas/server-config.d.ts +44 -0
- package/dist/schemas/server-config.d.ts.map +1 -1
- package/dist/schemas/server-config.js +70 -0
- package/dist/schemas/server-config.js.map +1 -1
- package/dist/signing/index.d.ts +2 -2
- package/dist/signing/index.d.ts.map +1 -1
- package/dist/signing/index.js +2 -2
- package/dist/signing/index.js.map +1 -1
- package/dist/signing/request-signer.d.ts +18 -0
- package/dist/signing/request-signer.d.ts.map +1 -0
- package/dist/signing/request-signer.js +22 -0
- package/dist/signing/request-signer.js.map +1 -0
- package/dist/signing/signer.d.ts +25 -1
- package/dist/signing/signer.d.ts.map +1 -1
- package/dist/signing/signer.js +44 -1
- package/dist/signing/signer.js.map +1 -1
- package/dist/storage/adapters/index.d.ts +4 -0
- package/dist/storage/adapters/index.d.ts.map +1 -0
- package/dist/storage/adapters/index.js +3 -0
- package/dist/storage/adapters/index.js.map +1 -0
- package/dist/storage/adapters/interface.d.ts +47 -0
- package/dist/storage/adapters/interface.d.ts.map +1 -0
- package/dist/storage/adapters/interface.js +2 -0
- package/dist/storage/adapters/interface.js.map +1 -0
- package/dist/storage/adapters/sdk.d.ts +13 -0
- package/dist/storage/adapters/sdk.d.ts.map +1 -0
- package/dist/storage/adapters/sdk.js +38 -0
- package/dist/storage/adapters/sdk.js.map +1 -0
- package/dist/storage/adapters/vana.d.ts +9 -0
- package/dist/storage/adapters/vana.d.ts.map +1 -0
- package/dist/storage/adapters/vana.js +13 -0
- package/dist/storage/adapters/vana.js.map +1 -0
- package/dist/storage/blocks/build.d.ts +19 -0
- package/dist/storage/blocks/build.d.ts.map +1 -0
- package/dist/storage/blocks/build.js +261 -0
- package/dist/storage/blocks/build.js.map +1 -0
- package/dist/storage/blocks/cursor.d.ts +33 -0
- package/dist/storage/blocks/cursor.d.ts.map +1 -0
- package/dist/storage/blocks/cursor.js +142 -0
- package/dist/storage/blocks/cursor.js.map +1 -0
- package/dist/storage/blocks/errors.d.ts +6 -0
- package/dist/storage/blocks/errors.d.ts.map +1 -0
- package/dist/storage/blocks/errors.js +9 -0
- package/dist/storage/blocks/errors.js.map +1 -0
- package/dist/storage/blocks/index.d.ts +4 -0
- package/dist/storage/blocks/index.d.ts.map +1 -0
- package/dist/storage/blocks/index.js +3 -0
- package/dist/storage/blocks/index.js.map +1 -0
- package/dist/storage/blocks/types.d.ts +49 -0
- package/dist/storage/blocks/types.d.ts.map +1 -0
- package/dist/storage/blocks/types.js +2 -0
- package/dist/{grants → storage/blocks}/types.js.map +1 -1
- package/dist/storage/hierarchy/index.d.ts +0 -1
- package/dist/storage/hierarchy/index.d.ts.map +1 -1
- package/dist/storage/hierarchy/index.js +0 -1
- package/dist/storage/hierarchy/index.js.map +1 -1
- package/dist/storage/hierarchy/manager.d.ts +0 -14
- package/dist/storage/hierarchy/manager.d.ts.map +1 -1
- package/dist/storage/hierarchy/manager.js +1 -59
- package/dist/storage/hierarchy/manager.js.map +1 -1
- package/dist/storage/hierarchy/paths.d.ts.map +1 -1
- package/dist/storage/hierarchy/paths.js +11 -4
- package/dist/storage/hierarchy/paths.js.map +1 -1
- package/dist/storage/index/index.d.ts +2 -3
- package/dist/storage/index/index.d.ts.map +1 -1
- package/dist/storage/index/index.js +1 -2
- package/dist/storage/index/index.js.map +1 -1
- package/dist/storage/index/manager.d.ts +14 -4
- package/dist/storage/index/manager.d.ts.map +1 -1
- package/dist/storage/index/manager.js +1 -114
- package/dist/storage/index/manager.js.map +1 -1
- package/dist/storage/index/schema.d.ts +1 -3
- package/dist/storage/index/schema.d.ts.map +1 -1
- package/dist/storage/index/schema.js +1 -26
- package/dist/storage/index/schema.js.map +1 -1
- package/dist/storage/index/types.d.ts +12 -0
- package/dist/storage/index/types.d.ts.map +1 -1
- package/dist/storage/preview.d.ts +12 -0
- package/dist/storage/preview.d.ts.map +1 -0
- package/dist/storage/preview.js +239 -0
- package/dist/storage/preview.js.map +1 -0
- package/dist/sync/cursor.d.ts +10 -0
- package/dist/sync/cursor.d.ts.map +1 -0
- package/dist/sync/cursor.js +2 -0
- package/dist/sync/cursor.js.map +1 -0
- package/dist/sync/engine/sync-manager.d.ts +42 -0
- package/dist/sync/engine/sync-manager.d.ts.map +1 -0
- package/dist/sync/engine/sync-manager.js +186 -0
- package/dist/sync/engine/sync-manager.js.map +1 -0
- package/dist/sync/index.d.ts +6 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +3 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/issues.d.ts +55 -0
- package/dist/sync/issues.d.ts.map +1 -0
- package/dist/sync/issues.js +150 -0
- package/dist/sync/issues.js.map +1 -0
- package/dist/sync/types.d.ts +25 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +2 -0
- package/dist/sync/types.js.map +1 -0
- package/dist/sync/workers/delete.d.ts +42 -0
- package/dist/sync/workers/delete.d.ts.map +1 -0
- package/dist/sync/workers/delete.js +72 -0
- package/dist/sync/workers/delete.js.map +1 -0
- package/dist/sync/workers/download.d.ts +56 -0
- package/dist/sync/workers/download.d.ts.map +1 -0
- package/dist/sync/workers/download.js +238 -0
- package/dist/sync/workers/download.js.map +1 -0
- package/dist/sync/workers/upload.d.ts +43 -0
- package/dist/sync/workers/upload.d.ts.map +1 -0
- package/dist/sync/workers/upload.js +83 -0
- package/dist/sync/workers/upload.js.map +1 -0
- package/dist/test-utils/wallet.d.ts +1 -0
- package/dist/test-utils/wallet.d.ts.map +1 -1
- package/dist/test-utils/wallet.js +9 -29
- package/dist/test-utils/wallet.js.map +1 -1
- package/package.json +55 -23
- package/dist/auth/web3-signed.d.ts +0 -48
- package/dist/auth/web3-signed.d.ts.map +0 -1
- package/dist/auth/web3-signed.js +0 -110
- package/dist/auth/web3-signed.js.map +0 -1
- package/dist/config/loader.d.ts +0 -6
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js +0 -31
- package/dist/config/loader.js.map +0 -1
- package/dist/gateway/client.d.ts +0 -94
- package/dist/gateway/client.d.ts.map +0 -1
- package/dist/gateway/client.js +0 -142
- package/dist/gateway/client.js.map +0 -1
- package/dist/grants/eip712.d.ts +0 -28
- package/dist/grants/eip712.d.ts.map +0 -1
- package/dist/grants/eip712.js +0 -30
- package/dist/grants/eip712.js.map +0 -1
- package/dist/grants/types.d.ts +0 -29
- package/dist/grants/types.d.ts.map +0 -1
- package/dist/grants/types.js +0 -6
- package/dist/grants/verify.d.ts +0 -24
- package/dist/grants/verify.d.ts.map +0 -1
- package/dist/grants/verify.js +0 -71
- package/dist/grants/verify.js.map +0 -1
- package/dist/keys/derive.d.ts +0 -18
- package/dist/keys/derive.d.ts.map +0 -1
- package/dist/keys/derive.js +0 -43
- package/dist/keys/derive.js.map +0 -1
- package/dist/schemas/data-file.d.ts +0 -20
- package/dist/schemas/data-file.d.ts.map +0 -1
- package/dist/schemas/data-file.js +0 -23
- package/dist/schemas/data-file.js.map +0 -1
- package/dist/scopes/index.d.ts +0 -3
- package/dist/scopes/index.d.ts.map +0 -1
- package/dist/scopes/index.js +0 -3
- package/dist/scopes/index.js.map +0 -1
- package/dist/scopes/match.d.ts +0 -13
- package/dist/scopes/match.d.ts.map +0 -1
- package/dist/scopes/match.js +0 -23
- package/dist/scopes/match.js.map +0 -1
- package/dist/scopes/parse.d.ts +0 -12
- package/dist/scopes/parse.d.ts.map +0 -1
- package/dist/scopes/parse.js +0 -29
- package/dist/scopes/parse.js.map +0 -1
- package/dist/signing/eip712.d.ts +0 -56
- package/dist/signing/eip712.d.ts.map +0 -1
- package/dist/signing/eip712.js +0 -57
- package/dist/signing/eip712.js.map +0 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { AccessLogWriter } from "../logging/access-log.js";
|
|
2
|
+
import type { AccessLogReader } from "../logging/access-reader.js";
|
|
3
|
+
import { type DataStoragePort, type RuntimeAvailabilityPort, type SchemaResolverPort, type SchemaRegistrarPort, type FeeVerifierPort } from "../ports/index.js";
|
|
4
|
+
import type { DataReadPolicyPorts } from "../policy/index.js";
|
|
5
|
+
import type { SyncManager } from "../sync/index.js";
|
|
6
|
+
import { type OAuthDeviceSessionLookup, type OAuthTokenStorePort } from "../contracts/index.js";
|
|
7
|
+
import type { DataPortabilityGatewayConfig, GatewayClient } from "@opendatalabs/vana-sdk/browser";
|
|
8
|
+
import type { ServerSigner } from "../signing/index.js";
|
|
9
|
+
export interface PersonalServerReadAuthInput {
|
|
10
|
+
request: Request;
|
|
11
|
+
scope: string;
|
|
12
|
+
grantId?: string;
|
|
13
|
+
fileId?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface PersonalServerReadAuthResult {
|
|
16
|
+
builder?: `0x${string}` | string;
|
|
17
|
+
grantId?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface PersonalServerApiAuthPort {
|
|
20
|
+
authorizeOwner(request: Request): Promise<void>;
|
|
21
|
+
authorizeBuilderList(request: Request): Promise<void>;
|
|
22
|
+
authorizeBuilderRead(input: PersonalServerReadAuthInput): Promise<PersonalServerReadAuthResult | void>;
|
|
23
|
+
}
|
|
24
|
+
export interface PersonalServerApiLogger {
|
|
25
|
+
info?(payload: Record<string, unknown>, message: string): void;
|
|
26
|
+
error?(payload: Record<string, unknown>, message: string): void;
|
|
27
|
+
}
|
|
28
|
+
export interface PersonalServerIngestSyncManager {
|
|
29
|
+
trigger(): Promise<void>;
|
|
30
|
+
notifyNewData?(): void;
|
|
31
|
+
/** Propagate a scope deletion to R2 + the gateway before the local delete. */
|
|
32
|
+
deleteScopeRemote?(scope: string): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export interface PersonalServerDataApiDeps {
|
|
35
|
+
storage: DataStoragePort;
|
|
36
|
+
auth: PersonalServerApiAuthPort;
|
|
37
|
+
schemaResolver?: SchemaResolverPort;
|
|
38
|
+
/** Auto-registers a "no-schema" schema for binary scopes that lack one. */
|
|
39
|
+
schemaRegistrar?: SchemaRegistrarPort;
|
|
40
|
+
accessLogWriter: AccessLogWriter;
|
|
41
|
+
syncManager?: PersonalServerIngestSyncManager | null;
|
|
42
|
+
runtimeAvailability?: RuntimeAvailabilityPort;
|
|
43
|
+
feeVerifier?: FeeVerifierPort;
|
|
44
|
+
now?: () => Date;
|
|
45
|
+
createLogId?: () => string;
|
|
46
|
+
logger?: PersonalServerApiLogger;
|
|
47
|
+
}
|
|
48
|
+
export interface PersonalServerAccessLogsApiDeps {
|
|
49
|
+
auth: Pick<PersonalServerApiAuthPort, "authorizeOwner">;
|
|
50
|
+
accessLogReader: AccessLogReader;
|
|
51
|
+
}
|
|
52
|
+
export interface PersonalServerSyncApiDeps {
|
|
53
|
+
auth: Pick<PersonalServerApiAuthPort, "authorizeOwner">;
|
|
54
|
+
syncManager: Pick<SyncManager, "trigger" | "getStatus"> | null;
|
|
55
|
+
logger?: PersonalServerApiLogger;
|
|
56
|
+
}
|
|
57
|
+
export interface PersonalServerGrantsApiDeps {
|
|
58
|
+
auth: Pick<PersonalServerApiAuthPort, "authorizeOwner">;
|
|
59
|
+
gateway?: Pick<GatewayClient, "getBuilder" | "createGrant" | "listGrantsByUser" | "revokeGrant">;
|
|
60
|
+
gatewayConfig?: DataPortabilityGatewayConfig;
|
|
61
|
+
serverOwner?: `0x${string}`;
|
|
62
|
+
serverSigner?: Pick<ServerSigner, "signGrantRegistration"> & Partial<Pick<ServerSigner, "signGrantRevocation">>;
|
|
63
|
+
now?: () => Date;
|
|
64
|
+
}
|
|
65
|
+
export interface PersonalServerConfigApiDeps {
|
|
66
|
+
auth: Pick<PersonalServerApiAuthPort, "authorizeOwner">;
|
|
67
|
+
readConfig(): Promise<unknown>;
|
|
68
|
+
writeConfig(config: unknown): Promise<void>;
|
|
69
|
+
}
|
|
70
|
+
export interface PersonalServerOauthTokenApiDeps {
|
|
71
|
+
tokenStore: OAuthTokenStorePort;
|
|
72
|
+
controlPlaneSecret?: string;
|
|
73
|
+
deviceSessions?: OAuthDeviceSessionLookup;
|
|
74
|
+
randomToken(): string;
|
|
75
|
+
now?: () => Date;
|
|
76
|
+
safeCompare?: (left: string, right: string) => boolean;
|
|
77
|
+
}
|
|
78
|
+
export interface PersonalServerApiDispatchOptions {
|
|
79
|
+
basePath?: string;
|
|
80
|
+
}
|
|
81
|
+
export declare function handlePersonalServerDataRequest(request: Request, deps: PersonalServerDataApiDeps, options?: PersonalServerApiDispatchOptions): Promise<Response>;
|
|
82
|
+
export declare function handlePersonalServerAccessLogsRequest(request: Request, deps: PersonalServerAccessLogsApiDeps, options?: PersonalServerApiDispatchOptions): Promise<Response>;
|
|
83
|
+
export declare function handlePersonalServerSyncRequest(request: Request, deps: PersonalServerSyncApiDeps, options?: PersonalServerApiDispatchOptions): Promise<Response>;
|
|
84
|
+
export declare function handlePersonalServerGrantsRequest(request: Request, deps: PersonalServerGrantsApiDeps, options?: PersonalServerApiDispatchOptions): Promise<Response>;
|
|
85
|
+
export declare function handlePersonalServerConfigRequest(request: Request, deps: PersonalServerConfigApiDeps): Promise<Response>;
|
|
86
|
+
export declare function handlePersonalServerOauthTokenRequest(request: Request, deps: PersonalServerOauthTokenApiDeps): Promise<Response>;
|
|
87
|
+
export type { DataReadPolicyPorts };
|
|
88
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
import { ProtocolError } from "../errors/catalog.js";
|
|
2
|
+
import { deleteDataScopeContract, ingestDataContract, ingestBinaryDataContract, listAccessLogsContract, listDataScopesContract, listDataVersionsContract, parseDataScopeContract, parseJsonObjectBody, readDataContract, syncFileContract, triggerSyncContract, getSyncStatusContract, configReadErrorContract, configWriteErrorContract, createGrantContract, listGrantsContract, oauthTokenContract, revokeGrantContract, validateServerConfigContract, verifyGrantContract, decodeBinaryEnvelope, isBinaryEnvelope, parseMetadataHeader, stringifyMetadataHeader, } from "../contracts/index.js";
|
|
3
|
+
function jsonResponse(body, init) {
|
|
4
|
+
const headers = new Headers(init?.headers);
|
|
5
|
+
headers.set("Content-Type", "application/json");
|
|
6
|
+
return new Response(JSON.stringify(body), { ...init, headers });
|
|
7
|
+
}
|
|
8
|
+
function contractResponse(result) {
|
|
9
|
+
return jsonResponse(result.body, { status: result.status });
|
|
10
|
+
}
|
|
11
|
+
function contractErrorResponse(err) {
|
|
12
|
+
return jsonResponse(err.body, { status: err.status });
|
|
13
|
+
}
|
|
14
|
+
function protocolErrorResponse(err) {
|
|
15
|
+
return jsonResponse(err.toJSON(), { status: err.code });
|
|
16
|
+
}
|
|
17
|
+
function errorResponse(status, errorCode, message) {
|
|
18
|
+
return jsonResponse({
|
|
19
|
+
error: {
|
|
20
|
+
code: status,
|
|
21
|
+
errorCode,
|
|
22
|
+
message,
|
|
23
|
+
},
|
|
24
|
+
}, { status });
|
|
25
|
+
}
|
|
26
|
+
function methodNotAllowed() {
|
|
27
|
+
return errorResponse(405, "METHOD_NOT_ALLOWED", "Method not allowed");
|
|
28
|
+
}
|
|
29
|
+
function notFound() {
|
|
30
|
+
return errorResponse(404, "NOT_FOUND", "Not found");
|
|
31
|
+
}
|
|
32
|
+
async function withApiErrors(handler) {
|
|
33
|
+
try {
|
|
34
|
+
return await handler();
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
if (err instanceof ProtocolError) {
|
|
38
|
+
return protocolErrorResponse(err);
|
|
39
|
+
}
|
|
40
|
+
return errorResponse(500, "INTERNAL_ERROR", "Internal server error");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function normalizeLimit(value, fallback) {
|
|
44
|
+
if (value === null)
|
|
45
|
+
return fallback;
|
|
46
|
+
const parsed = Number(value);
|
|
47
|
+
return Number.isInteger(parsed) && parsed >= 0 ? parsed : fallback;
|
|
48
|
+
}
|
|
49
|
+
function stripBasePath(pathname, basePath) {
|
|
50
|
+
if (!basePath || basePath === "/")
|
|
51
|
+
return pathname;
|
|
52
|
+
if (pathname === basePath)
|
|
53
|
+
return "/";
|
|
54
|
+
if (pathname.startsWith(`${basePath}/`)) {
|
|
55
|
+
return pathname.slice(basePath.length);
|
|
56
|
+
}
|
|
57
|
+
return pathname;
|
|
58
|
+
}
|
|
59
|
+
function decodePathPart(value) {
|
|
60
|
+
return decodeURIComponent(value ?? "");
|
|
61
|
+
}
|
|
62
|
+
function selectedGrantId(request, url) {
|
|
63
|
+
return (url.searchParams.get("grantId") ??
|
|
64
|
+
request.headers.get("x-ps-grant-id") ??
|
|
65
|
+
undefined);
|
|
66
|
+
}
|
|
67
|
+
function collectedAt(now) {
|
|
68
|
+
return now()
|
|
69
|
+
.toISOString()
|
|
70
|
+
.replace(/\.\d{3}Z$/, "Z");
|
|
71
|
+
}
|
|
72
|
+
async function resolveSchema(deps, scope) {
|
|
73
|
+
if (!deps.schemaResolver) {
|
|
74
|
+
return {
|
|
75
|
+
ok: false,
|
|
76
|
+
response: errorResponse(500, "SERVER_NOT_CONFIGURED", "Gateway is not configured"),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const schema = await deps.schemaResolver.getSchemaForScope(scope);
|
|
81
|
+
if (!schema) {
|
|
82
|
+
return {
|
|
83
|
+
ok: false,
|
|
84
|
+
response: jsonResponse({
|
|
85
|
+
error: "NO_SCHEMA",
|
|
86
|
+
message: `No schema registered for scope: ${scope}`,
|
|
87
|
+
}, { status: 400 }),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
ok: true,
|
|
92
|
+
schemaUrl: schema.definitionUrl,
|
|
93
|
+
schemaId: schema.id,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
deps.logger?.error?.({ err, scope }, "Gateway schema lookup failed");
|
|
98
|
+
return {
|
|
99
|
+
ok: false,
|
|
100
|
+
response: jsonResponse({
|
|
101
|
+
error: "GATEWAY_ERROR",
|
|
102
|
+
message: "Failed to look up schema for scope",
|
|
103
|
+
}, { status: 502 }),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** True when the request body should be treated as a JSON object (the legacy
|
|
108
|
+
* path). Missing/blank Content-Type is treated as JSON for backward compat. */
|
|
109
|
+
function isJsonContentType(request) {
|
|
110
|
+
const ct = request.headers.get("content-type");
|
|
111
|
+
if (!ct)
|
|
112
|
+
return true;
|
|
113
|
+
return ct.toLowerCase().includes("application/json");
|
|
114
|
+
}
|
|
115
|
+
function binaryMimeType(request) {
|
|
116
|
+
const ct = request.headers.get("content-type");
|
|
117
|
+
if (!ct)
|
|
118
|
+
return "application/octet-stream";
|
|
119
|
+
// Strip any "; charset=..." / boundary parameters.
|
|
120
|
+
return ct.split(";")[0].trim() || "application/octet-stream";
|
|
121
|
+
}
|
|
122
|
+
/** Extract a filename from X-Filename or a Content-Disposition header. */
|
|
123
|
+
function binaryFilename(request) {
|
|
124
|
+
const explicit = request.headers.get("x-filename");
|
|
125
|
+
if (explicit)
|
|
126
|
+
return explicit;
|
|
127
|
+
const disposition = request.headers.get("content-disposition");
|
|
128
|
+
const match = disposition?.match(/filename\*?=(?:UTF-8'')?"?([^";]+)"?/i);
|
|
129
|
+
return match ? decodeURIComponent(match[1]) : undefined;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Resolve a schema for a binary scope, registering a permissive "no-schema"
|
|
133
|
+
* schema when none exists. Unlike the JSON path this never hard-fails on a
|
|
134
|
+
* missing schema: if there is no registrar, ingestion proceeds with no schemaId
|
|
135
|
+
* (the entry is registered against the gateway's resolved schema later).
|
|
136
|
+
*/
|
|
137
|
+
async function resolveBinarySchema(deps, scope) {
|
|
138
|
+
if (deps.schemaResolver) {
|
|
139
|
+
const schema = await deps.schemaResolver.getSchemaForScope(scope);
|
|
140
|
+
if (schema) {
|
|
141
|
+
return { schemaId: schema.id, schemaUrl: schema.definitionUrl };
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (deps.schemaRegistrar) {
|
|
145
|
+
const registered = await deps.schemaRegistrar.registerNoSchema(scope);
|
|
146
|
+
deps.logger?.info?.({ scope, schemaId: registered.schemaId }, "Registered no-schema schema for binary scope");
|
|
147
|
+
return {
|
|
148
|
+
schemaId: registered.schemaId,
|
|
149
|
+
schemaUrl: registered.definitionUrl,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return {};
|
|
153
|
+
}
|
|
154
|
+
function notifyNewData(syncManager) {
|
|
155
|
+
if (!syncManager)
|
|
156
|
+
return;
|
|
157
|
+
if (syncManager.notifyNewData) {
|
|
158
|
+
syncManager.notifyNewData();
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
void syncManager.trigger().catch(() => undefined);
|
|
162
|
+
}
|
|
163
|
+
export async function handlePersonalServerDataRequest(request, deps, options = {}) {
|
|
164
|
+
return withApiErrors(async () => {
|
|
165
|
+
const url = new URL(request.url);
|
|
166
|
+
const pathname = stripBasePath(url.pathname, options.basePath);
|
|
167
|
+
if (pathname === "/" || pathname === "") {
|
|
168
|
+
if (request.method !== "GET")
|
|
169
|
+
return methodNotAllowed();
|
|
170
|
+
await deps.auth.authorizeBuilderList(request);
|
|
171
|
+
const result = await listDataScopesContract({
|
|
172
|
+
storage: deps.storage,
|
|
173
|
+
scopePrefix: url.searchParams.get("scopePrefix") ?? undefined,
|
|
174
|
+
limit: normalizeLimit(url.searchParams.get("limit"), 20),
|
|
175
|
+
offset: normalizeLimit(url.searchParams.get("offset"), 0),
|
|
176
|
+
});
|
|
177
|
+
return jsonResponse(result.response);
|
|
178
|
+
}
|
|
179
|
+
const parts = pathname.split("/").filter(Boolean);
|
|
180
|
+
if (parts.length === 2 && parts[1] === "versions") {
|
|
181
|
+
if (request.method !== "GET")
|
|
182
|
+
return methodNotAllowed();
|
|
183
|
+
await deps.auth.authorizeBuilderList(request);
|
|
184
|
+
const result = listDataVersionsContract({
|
|
185
|
+
storage: deps.storage,
|
|
186
|
+
scopeParam: decodePathPart(parts[0]),
|
|
187
|
+
limit: normalizeLimit(url.searchParams.get("limit"), 20),
|
|
188
|
+
offset: normalizeLimit(url.searchParams.get("offset"), 0),
|
|
189
|
+
});
|
|
190
|
+
if (!result.ok)
|
|
191
|
+
return contractErrorResponse(result);
|
|
192
|
+
return jsonResponse(result.response);
|
|
193
|
+
}
|
|
194
|
+
if (parts.length !== 1)
|
|
195
|
+
return notFound();
|
|
196
|
+
const scopeParam = decodePathPart(parts[0]);
|
|
197
|
+
if (request.method === "GET") {
|
|
198
|
+
const scopeResult = parseDataScopeContract(scopeParam);
|
|
199
|
+
if (!scopeResult.ok)
|
|
200
|
+
return contractErrorResponse(scopeResult);
|
|
201
|
+
const selectedEntry = deps.storage.findEntry({
|
|
202
|
+
scope: scopeResult.scope,
|
|
203
|
+
fileId: url.searchParams.get("fileId") ?? undefined,
|
|
204
|
+
at: url.searchParams.get("at") ?? undefined,
|
|
205
|
+
});
|
|
206
|
+
const grantId = selectedGrantId(request, url);
|
|
207
|
+
const authResult = await deps.auth.authorizeBuilderRead({
|
|
208
|
+
request,
|
|
209
|
+
scope: scopeResult.scope,
|
|
210
|
+
grantId,
|
|
211
|
+
fileId: url.searchParams.get("fileId") ?? selectedEntry?.fileId ?? undefined,
|
|
212
|
+
});
|
|
213
|
+
const result = await readDataContract({
|
|
214
|
+
storage: deps.storage,
|
|
215
|
+
scopeParam: scopeResult.scope,
|
|
216
|
+
fileId: url.searchParams.get("fileId") ?? undefined,
|
|
217
|
+
at: url.searchParams.get("at") ?? undefined,
|
|
218
|
+
});
|
|
219
|
+
if (!result.ok)
|
|
220
|
+
return contractErrorResponse(result);
|
|
221
|
+
await deps.accessLogWriter.write({
|
|
222
|
+
logId: deps.createLogId?.() ?? crypto.randomUUID(),
|
|
223
|
+
grantId: authResult?.grantId ?? grantId ?? "unknown",
|
|
224
|
+
builder: authResult?.builder ?? "unknown",
|
|
225
|
+
action: "read",
|
|
226
|
+
scope: scopeResult.scope,
|
|
227
|
+
timestamp: (deps.now ?? (() => new Date()))().toISOString(),
|
|
228
|
+
ipAddress: request.headers.get("x-forwarded-for") ??
|
|
229
|
+
request.headers.get("x-real-ip") ??
|
|
230
|
+
"unknown",
|
|
231
|
+
userAgent: request.headers.get("user-agent") ?? "unknown",
|
|
232
|
+
});
|
|
233
|
+
// `?content=raw` streams the decoded bytes of a binary envelope with its
|
|
234
|
+
// original media type, so a builder can download the file directly.
|
|
235
|
+
if (url.searchParams.get("content") === "raw" &&
|
|
236
|
+
isBinaryEnvelope(result.envelope)) {
|
|
237
|
+
const decoded = decodeBinaryEnvelope(result.envelope);
|
|
238
|
+
const headers = {
|
|
239
|
+
"Content-Type": decoded.mimeType,
|
|
240
|
+
"Content-Length": String(decoded.bytes.length),
|
|
241
|
+
};
|
|
242
|
+
if (decoded.filename) {
|
|
243
|
+
headers["Content-Disposition"] =
|
|
244
|
+
`attachment; filename="${decoded.filename}"`;
|
|
245
|
+
}
|
|
246
|
+
if (decoded.metadata !== undefined) {
|
|
247
|
+
headers["X-Vana-Metadata"] = stringifyMetadataHeader(decoded.metadata);
|
|
248
|
+
}
|
|
249
|
+
return new Response(decoded.bytes, {
|
|
250
|
+
status: 200,
|
|
251
|
+
headers,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
return jsonResponse(result.envelope);
|
|
255
|
+
}
|
|
256
|
+
if (request.method === "POST") {
|
|
257
|
+
await deps.auth.authorizeOwner(request);
|
|
258
|
+
const scopeResult = parseDataScopeContract(scopeParam);
|
|
259
|
+
if (!scopeResult.ok)
|
|
260
|
+
return contractErrorResponse(scopeResult);
|
|
261
|
+
const collectedAtValue = collectedAt(deps.now ?? (() => new Date()));
|
|
262
|
+
const status = deps.syncManager ? "syncing" : "stored";
|
|
263
|
+
// Binary / unstructured data (e.g. a PDF): the body is raw bytes and the
|
|
264
|
+
// scope may not have a registered schema — auto-register a no-schema one.
|
|
265
|
+
if (!isJsonContentType(request)) {
|
|
266
|
+
const { schemaId, schemaUrl } = await resolveBinarySchema(deps, scopeResult.scope);
|
|
267
|
+
const bytes = new Uint8Array(await request.arrayBuffer());
|
|
268
|
+
const result = await ingestBinaryDataContract({
|
|
269
|
+
storage: deps.storage,
|
|
270
|
+
scopeParam: scopeResult.scope,
|
|
271
|
+
bytes,
|
|
272
|
+
mimeType: binaryMimeType(request),
|
|
273
|
+
filename: binaryFilename(request),
|
|
274
|
+
metadata: parseMetadataHeader(request.headers.get("x-vana-metadata")),
|
|
275
|
+
collectedAt: collectedAtValue,
|
|
276
|
+
status,
|
|
277
|
+
schemaUrl,
|
|
278
|
+
schemaId,
|
|
279
|
+
});
|
|
280
|
+
if (!result.ok)
|
|
281
|
+
return contractErrorResponse(result);
|
|
282
|
+
deps.logger?.info?.({
|
|
283
|
+
scope: scopeResult.scope,
|
|
284
|
+
collectedAt: collectedAtValue,
|
|
285
|
+
path: result.writeResult.relativePath,
|
|
286
|
+
mimeType: binaryMimeType(request),
|
|
287
|
+
sizeBytes: bytes.length,
|
|
288
|
+
}, "Binary data file ingested");
|
|
289
|
+
notifyNewData(deps.syncManager);
|
|
290
|
+
return jsonResponse(result.response, { status: 201 });
|
|
291
|
+
}
|
|
292
|
+
const parsed = await parseJsonObjectBody(request, "Request body must be valid JSON");
|
|
293
|
+
if (!parsed.ok)
|
|
294
|
+
return contractResponse(parsed.result);
|
|
295
|
+
const schema = await resolveSchema(deps, scopeResult.scope);
|
|
296
|
+
if (!schema.ok)
|
|
297
|
+
return schema.response;
|
|
298
|
+
const result = await ingestDataContract({
|
|
299
|
+
storage: deps.storage,
|
|
300
|
+
scopeParam: scopeResult.scope,
|
|
301
|
+
body: parsed.body,
|
|
302
|
+
collectedAt: collectedAtValue,
|
|
303
|
+
status,
|
|
304
|
+
schemaUrl: schema.schemaUrl,
|
|
305
|
+
schemaId: schema.schemaId,
|
|
306
|
+
});
|
|
307
|
+
if (!result.ok)
|
|
308
|
+
return contractErrorResponse(result);
|
|
309
|
+
deps.logger?.info?.({
|
|
310
|
+
scope: scopeResult.scope,
|
|
311
|
+
collectedAt: collectedAtValue,
|
|
312
|
+
path: result.writeResult.relativePath,
|
|
313
|
+
}, "Data file ingested");
|
|
314
|
+
notifyNewData(deps.syncManager);
|
|
315
|
+
return jsonResponse(result.response, { status: 201 });
|
|
316
|
+
}
|
|
317
|
+
if (request.method === "DELETE") {
|
|
318
|
+
await deps.auth.authorizeOwner(request);
|
|
319
|
+
// Propagate the deletion to the authoritative stores (R2 blobs + gateway records) BEFORE the
|
|
320
|
+
// local delete — it reads the local index to find what to remove. Best-effort: a remote
|
|
321
|
+
// failure must not block the owner's local delete (and sync would otherwise resurrect it; the
|
|
322
|
+
// download-worker reconciliation is the backstop). Parse the scope first so an invalid scope
|
|
323
|
+
// still 400s without a wasted remote call.
|
|
324
|
+
const parsed = parseDataScopeContract(scopeParam);
|
|
325
|
+
if (parsed.ok && deps.syncManager?.deleteScopeRemote) {
|
|
326
|
+
try {
|
|
327
|
+
await deps.syncManager.deleteScopeRemote(parsed.scope);
|
|
328
|
+
}
|
|
329
|
+
catch (err) {
|
|
330
|
+
deps.logger?.info?.({ scope: scopeParam, error: err.message }, "Remote scope deletion failed; proceeding with local delete");
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
const result = await deleteDataScopeContract({
|
|
334
|
+
storage: deps.storage,
|
|
335
|
+
scopeParam,
|
|
336
|
+
});
|
|
337
|
+
if (!result.ok)
|
|
338
|
+
return contractErrorResponse(result);
|
|
339
|
+
deps.logger?.info?.({ scope: scopeParam, deletedCount: result.deletedCount }, "Scope deleted");
|
|
340
|
+
return new Response(null, { status: 204 });
|
|
341
|
+
}
|
|
342
|
+
return methodNotAllowed();
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
export async function handlePersonalServerAccessLogsRequest(request, deps, options = {}) {
|
|
346
|
+
return withApiErrors(async () => {
|
|
347
|
+
const url = new URL(request.url);
|
|
348
|
+
const pathname = stripBasePath(url.pathname, options.basePath);
|
|
349
|
+
if (pathname !== "/" && pathname !== "")
|
|
350
|
+
return notFound();
|
|
351
|
+
if (request.method !== "GET")
|
|
352
|
+
return methodNotAllowed();
|
|
353
|
+
await deps.auth.authorizeOwner(request);
|
|
354
|
+
return contractResponse(await listAccessLogsContract({
|
|
355
|
+
accessLogReader: deps.accessLogReader,
|
|
356
|
+
limit: url.searchParams.get("limit"),
|
|
357
|
+
offset: url.searchParams.get("offset"),
|
|
358
|
+
}));
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
export async function handlePersonalServerSyncRequest(request, deps, options = {}) {
|
|
362
|
+
return withApiErrors(async () => {
|
|
363
|
+
const url = new URL(request.url);
|
|
364
|
+
const pathname = stripBasePath(url.pathname, options.basePath);
|
|
365
|
+
if (pathname === "/trigger") {
|
|
366
|
+
if (request.method !== "POST")
|
|
367
|
+
return methodNotAllowed();
|
|
368
|
+
await deps.auth.authorizeOwner(request);
|
|
369
|
+
return contractResponse(await triggerSyncContract(deps.syncManager));
|
|
370
|
+
}
|
|
371
|
+
if (pathname === "/status") {
|
|
372
|
+
if (request.method !== "GET")
|
|
373
|
+
return methodNotAllowed();
|
|
374
|
+
await deps.auth.authorizeOwner(request);
|
|
375
|
+
return contractResponse(getSyncStatusContract(deps.syncManager));
|
|
376
|
+
}
|
|
377
|
+
if (pathname.startsWith("/file/")) {
|
|
378
|
+
if (request.method !== "POST")
|
|
379
|
+
return methodNotAllowed();
|
|
380
|
+
await deps.auth.authorizeOwner(request);
|
|
381
|
+
const fileId = decodeURIComponent(pathname.slice("/file/".length));
|
|
382
|
+
deps.logger?.info?.({ fileId }, "File sync requested, triggering full sync");
|
|
383
|
+
return contractResponse(await syncFileContract({
|
|
384
|
+
fileId,
|
|
385
|
+
syncManager: deps.syncManager,
|
|
386
|
+
}));
|
|
387
|
+
}
|
|
388
|
+
return notFound();
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
export async function handlePersonalServerGrantsRequest(request, deps, options = {}) {
|
|
392
|
+
return withApiErrors(async () => {
|
|
393
|
+
const url = new URL(request.url);
|
|
394
|
+
const pathname = stripBasePath(url.pathname, options.basePath);
|
|
395
|
+
if (pathname === "/" || pathname === "") {
|
|
396
|
+
await deps.auth.authorizeOwner(request);
|
|
397
|
+
if (!deps.gateway) {
|
|
398
|
+
return errorResponse(500, "SERVER_NOT_CONFIGURED", "Gateway is not configured");
|
|
399
|
+
}
|
|
400
|
+
if (request.method === "GET") {
|
|
401
|
+
return contractResponse(await listGrantsContract({
|
|
402
|
+
gateway: deps.gateway,
|
|
403
|
+
serverOwner: deps.serverOwner,
|
|
404
|
+
}));
|
|
405
|
+
}
|
|
406
|
+
if (request.method === "POST") {
|
|
407
|
+
const parsed = await parseJsonObjectBody(request);
|
|
408
|
+
if (!parsed.ok)
|
|
409
|
+
return contractResponse(parsed.result);
|
|
410
|
+
return contractResponse(await createGrantContract({
|
|
411
|
+
gateway: deps.gateway,
|
|
412
|
+
serverOwner: deps.serverOwner,
|
|
413
|
+
serverSigner: deps.serverSigner,
|
|
414
|
+
body: parsed.body,
|
|
415
|
+
now: () => deps.now?.().getTime() ?? Date.now(),
|
|
416
|
+
}));
|
|
417
|
+
}
|
|
418
|
+
return methodNotAllowed();
|
|
419
|
+
}
|
|
420
|
+
if (pathname === "/verify") {
|
|
421
|
+
if (request.method !== "POST")
|
|
422
|
+
return methodNotAllowed();
|
|
423
|
+
const parsed = await parseJsonObjectBody(request);
|
|
424
|
+
if (!parsed.ok)
|
|
425
|
+
return contractResponse(parsed.result);
|
|
426
|
+
return contractResponse(await verifyGrantContract({
|
|
427
|
+
body: parsed.body,
|
|
428
|
+
gatewayConfig: deps.gatewayConfig,
|
|
429
|
+
}));
|
|
430
|
+
}
|
|
431
|
+
if (pathname.startsWith("/")) {
|
|
432
|
+
if (request.method !== "DELETE")
|
|
433
|
+
return methodNotAllowed();
|
|
434
|
+
await deps.auth.authorizeOwner(request);
|
|
435
|
+
if (!deps.gateway) {
|
|
436
|
+
return errorResponse(500, "SERVER_NOT_CONFIGURED", "Gateway is not configured");
|
|
437
|
+
}
|
|
438
|
+
return contractResponse(await revokeGrantContract({
|
|
439
|
+
gateway: deps.gateway,
|
|
440
|
+
serverOwner: deps.serverOwner,
|
|
441
|
+
serverSigner: deps.serverSigner,
|
|
442
|
+
grantId: decodeURIComponent(pathname.slice(1)),
|
|
443
|
+
}));
|
|
444
|
+
}
|
|
445
|
+
return notFound();
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
export async function handlePersonalServerConfigRequest(request, deps) {
|
|
449
|
+
return withApiErrors(async () => {
|
|
450
|
+
await deps.auth.authorizeOwner(request);
|
|
451
|
+
if (request.method === "GET") {
|
|
452
|
+
try {
|
|
453
|
+
return jsonResponse(await deps.readConfig());
|
|
454
|
+
}
|
|
455
|
+
catch (err) {
|
|
456
|
+
const kind = err instanceof Error &&
|
|
457
|
+
"code" in err &&
|
|
458
|
+
err.code === "ENOENT"
|
|
459
|
+
? "not-found"
|
|
460
|
+
: "read";
|
|
461
|
+
return contractResponse(configReadErrorContract(kind));
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
if (request.method === "PUT") {
|
|
465
|
+
const parsed = await parseJsonObjectBody(request);
|
|
466
|
+
if (!parsed.ok)
|
|
467
|
+
return contractResponse(parsed.result);
|
|
468
|
+
const result = validateServerConfigContract(parsed.body);
|
|
469
|
+
if (!result.ok)
|
|
470
|
+
return contractResponse(result);
|
|
471
|
+
try {
|
|
472
|
+
await deps.writeConfig(result.body.config);
|
|
473
|
+
}
|
|
474
|
+
catch {
|
|
475
|
+
return contractResponse(configWriteErrorContract());
|
|
476
|
+
}
|
|
477
|
+
return contractResponse(result);
|
|
478
|
+
}
|
|
479
|
+
return methodNotAllowed();
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
export async function handlePersonalServerOauthTokenRequest(request, deps) {
|
|
483
|
+
return withApiErrors(async () => {
|
|
484
|
+
if (request.method !== "POST")
|
|
485
|
+
return methodNotAllowed();
|
|
486
|
+
const contentType = request.headers.get("content-type") ?? "";
|
|
487
|
+
if (!contentType.includes("application/x-www-form-urlencoded")) {
|
|
488
|
+
return jsonResponse({
|
|
489
|
+
error: "invalid_request",
|
|
490
|
+
error_description: "Content-Type must be application/x-www-form-urlencoded",
|
|
491
|
+
}, { status: 400 });
|
|
492
|
+
}
|
|
493
|
+
const result = await oauthTokenContract({
|
|
494
|
+
body: new URLSearchParams(await request.text()),
|
|
495
|
+
authorizationHeader: request.headers.get("authorization"),
|
|
496
|
+
tokenStore: deps.tokenStore,
|
|
497
|
+
controlPlaneSecret: deps.controlPlaneSecret,
|
|
498
|
+
deviceSessions: deps.deviceSessions,
|
|
499
|
+
randomToken: deps.randomToken,
|
|
500
|
+
now: deps.now,
|
|
501
|
+
safeCompare: deps.safeCompare,
|
|
502
|
+
});
|
|
503
|
+
return jsonResponse(result.body, {
|
|
504
|
+
status: result.status,
|
|
505
|
+
headers: result.headers,
|
|
506
|
+
});
|
|
507
|
+
});
|
|
508
|
+
}
|
|
509
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,wBAAwB,GAC9B,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,eAAe,GAMhB,MAAM,cAAc,CAAC"}
|