@opendatalabs/personal-server-ts-server 0.0.1-canary.e647e76 → 0.0.1-canary.eee90fe
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/app.d.ts +20 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +50 -2
- package/dist/app.js.map +1 -1
- package/dist/bootstrap.d.ts +5 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +169 -79
- package/dist/bootstrap.js.map +1 -1
- package/dist/hono-context.d.ts +14 -0
- package/dist/hono-context.d.ts.map +1 -0
- package/dist/hono-context.js +2 -0
- package/dist/hono-context.js.map +1 -0
- package/dist/index.js +87 -11
- package/dist/index.js.map +1 -1
- package/dist/middleware/access-log.d.ts.map +1 -1
- package/dist/middleware/access-log.js +8 -2
- package/dist/middleware/access-log.js.map +1 -1
- package/dist/middleware/builder-check.d.ts +2 -2
- package/dist/middleware/builder-check.d.ts.map +1 -1
- package/dist/middleware/builder-check.js +7 -2
- package/dist/middleware/builder-check.js.map +1 -1
- package/dist/middleware/data-read-policy.d.ts +11 -0
- package/dist/middleware/data-read-policy.d.ts.map +1 -0
- package/dist/middleware/data-read-policy.js +39 -0
- package/dist/middleware/data-read-policy.js.map +1 -0
- package/dist/middleware/owner-check.js +1 -1
- package/dist/middleware/owner-check.js.map +1 -1
- package/dist/middleware/web3-auth.d.ts +12 -1
- package/dist/middleware/web3-auth.d.ts.map +1 -1
- package/dist/middleware/web3-auth.js +21 -29
- package/dist/middleware/web3-auth.js.map +1 -1
- package/dist/migrations/local-state.d.ts +21 -0
- package/dist/migrations/local-state.d.ts.map +1 -0
- package/dist/migrations/local-state.js +106 -0
- package/dist/migrations/local-state.js.map +1 -0
- package/dist/routes/access-logs.d.ts +3 -1
- package/dist/routes/access-logs.d.ts.map +1 -1
- package/dist/routes/access-logs.js +7 -8
- package/dist/routes/access-logs.js.map +1 -1
- package/dist/routes/auth-device.d.ts +48 -0
- package/dist/routes/auth-device.d.ts.map +1 -0
- package/dist/routes/auth-device.js +575 -0
- package/dist/routes/auth-device.js.map +1 -0
- package/dist/routes/data.d.ts +8 -2
- package/dist/routes/data.d.ts.map +1 -1
- package/dist/routes/data.js +63 -117
- package/dist/routes/data.js.map +1 -1
- package/dist/routes/grants.d.ts +7 -4
- package/dist/routes/grants.d.ts.map +1 -1
- package/dist/routes/grants.js +24 -90
- package/dist/routes/grants.js.map +1 -1
- package/dist/routes/health.d.ts +7 -1
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +24 -1
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/oauth-token.d.ts +56 -0
- package/dist/routes/oauth-token.d.ts.map +1 -0
- package/dist/routes/oauth-token.js +74 -0
- package/dist/routes/oauth-token.js.map +1 -0
- package/dist/routes/sync.d.ts +3 -1
- package/dist/routes/sync.d.ts.map +1 -1
- package/dist/routes/sync.js +11 -23
- package/dist/routes/sync.js.map +1 -1
- package/dist/routes/ui-config.d.ts.map +1 -1
- package/dist/routes/ui-config.js +13 -35
- package/dist/routes/ui-config.js.map +1 -1
- package/dist/routes/ui-registration.d.ts +7 -0
- package/dist/routes/ui-registration.d.ts.map +1 -0
- package/dist/routes/ui-registration.js +209 -0
- package/dist/routes/ui-registration.js.map +1 -0
- package/dist/routes/ui.d.ts +1 -0
- package/dist/routes/ui.d.ts.map +1 -1
- package/dist/routes/ui.js +46 -4
- package/dist/routes/ui.js.map +1 -1
- package/dist/storage/node-data-storage.d.ts +9 -0
- package/dist/storage/node-data-storage.d.ts.map +1 -0
- package/dist/storage/node-data-storage.js +48 -0
- package/dist/storage/node-data-storage.js.map +1 -0
- package/dist/token-store.d.ts +22 -0
- package/dist/token-store.d.ts.map +1 -0
- package/dist/token-store.js +120 -0
- package/dist/token-store.js.map +1 -0
- package/dist/tunnel/auth.d.ts +2 -0
- package/dist/tunnel/auth.d.ts.map +1 -1
- package/dist/tunnel/auth.js +3 -1
- package/dist/tunnel/auth.js.map +1 -1
- package/dist/tunnel/index.d.ts +3 -1
- package/dist/tunnel/index.d.ts.map +1 -1
- package/dist/tunnel/index.js +2 -1
- package/dist/tunnel/index.js.map +1 -1
- package/dist/tunnel/manager.d.ts +29 -0
- package/dist/tunnel/manager.d.ts.map +1 -1
- package/dist/tunnel/manager.js +153 -65
- package/dist/tunnel/manager.js.map +1 -1
- package/dist/tunnel/verify.d.ts +28 -0
- package/dist/tunnel/verify.d.ts.map +1 -0
- package/dist/tunnel/verify.js +46 -0
- package/dist/tunnel/verify.js.map +1 -0
- package/dist/ui/browser_tls_rustls_bg.wasm +0 -0
- package/dist/ui/index.html +1920 -0
- package/dist/ui/ps-lite-debug.d.ts +62 -0
- package/dist/ui/ps-lite-debug.d.ts.map +1 -0
- package/dist/ui/ps-lite-debug.js +72074 -0
- package/dist/ui/ps-lite-debug.js.map +1 -0
- package/package.json +10 -6
- package/dist/middleware/grant-check.d.ts +0 -12
- package/dist/middleware/grant-check.d.ts.map +0 -1
- package/dist/middleware/grant-check.js +0 -90
- package/dist/middleware/grant-check.js.map +0 -1
package/dist/app.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { Hono } from "hono";
|
|
2
2
|
import type { IndexManager } from "@opendatalabs/personal-server-ts-core/storage/index";
|
|
3
3
|
import type { HierarchyManagerOptions } from "@opendatalabs/personal-server-ts-core/storage/hierarchy";
|
|
4
|
-
import type { GatewayClient } from "@opendatalabs/
|
|
4
|
+
import type { DataPortabilityGatewayConfig, GatewayClient } from "@opendatalabs/vana-sdk/node";
|
|
5
|
+
import type { ServerConfig } from "@opendatalabs/personal-server-ts-core/schemas";
|
|
5
6
|
import type { AccessLogWriter } from "@opendatalabs/personal-server-ts-core/logging/access-log";
|
|
6
7
|
import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
|
|
7
8
|
import { type HealthDeps } from "./routes/health.js";
|
|
8
9
|
import type { SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
|
|
10
|
+
import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
|
|
11
|
+
import type { DataStoragePort, FeeVerifierPort, RuntimeAvailabilityPort } from "@opendatalabs/personal-server-ts-core/ports";
|
|
12
|
+
import type { TokenStore } from "./token-store.js";
|
|
9
13
|
import type { Logger } from "pino";
|
|
10
14
|
export interface IdentityInfo {
|
|
11
15
|
address: `0x${string}`;
|
|
@@ -18,15 +22,29 @@ export interface AppDeps {
|
|
|
18
22
|
startedAt: Date;
|
|
19
23
|
indexManager: IndexManager;
|
|
20
24
|
hierarchyOptions: HierarchyManagerOptions;
|
|
21
|
-
serverOrigin: string;
|
|
25
|
+
serverOrigin: string | (() => string);
|
|
26
|
+
localApprovalOrigin?: string | (() => string | undefined);
|
|
22
27
|
serverOwner?: `0x${string}`;
|
|
23
28
|
identity?: IdentityInfo;
|
|
24
29
|
gateway: GatewayClient;
|
|
30
|
+
gatewayConfig?: DataPortabilityGatewayConfig & {
|
|
31
|
+
url?: string;
|
|
32
|
+
};
|
|
33
|
+
config?: ServerConfig;
|
|
25
34
|
accessLogWriter: AccessLogWriter;
|
|
26
35
|
accessLogReader: AccessLogReader;
|
|
36
|
+
cloudMode?: boolean;
|
|
27
37
|
devToken?: string;
|
|
38
|
+
ownerSignature?: `0x${string}`;
|
|
39
|
+
ownerPrivateKey?: `0x${string}`;
|
|
40
|
+
accessToken?: string;
|
|
28
41
|
configPath?: string;
|
|
29
42
|
syncManager?: SyncManager | null;
|
|
43
|
+
serverSigner?: ServerSigner;
|
|
44
|
+
tokenStore?: TokenStore;
|
|
45
|
+
feeVerifier?: FeeVerifierPort;
|
|
46
|
+
runtimeAvailability?: RuntimeAvailabilityPort;
|
|
47
|
+
dataStorage?: DataStoragePort;
|
|
30
48
|
getTunnelStatus?: HealthDeps["getTunnelStatus"];
|
|
31
49
|
}
|
|
32
50
|
export declare function createApp(deps: AppDeps): Hono;
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,KAAK,EACV,4BAA4B,EAC5B,aAAa,EACd,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AACnG,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAalE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,uBAAuB,EACxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1D,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,4BAA4B,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,eAAe,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;CACjD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CA6L7C"}
|
package/dist/app.js
CHANGED
|
@@ -7,7 +7,10 @@ import { grantsRoutes } from "./routes/grants.js";
|
|
|
7
7
|
import { accessLogsRoutes } from "./routes/access-logs.js";
|
|
8
8
|
import { syncRoutes } from "./routes/sync.js";
|
|
9
9
|
import { uiConfigRoutes } from "./routes/ui-config.js";
|
|
10
|
+
import { uiRegistrationRoutes } from "./routes/ui-registration.js";
|
|
10
11
|
import { uiRoute } from "./routes/ui.js";
|
|
12
|
+
import { authDeviceRoutes, createDeviceSessionLookup, } from "./routes/auth-device.js";
|
|
13
|
+
import { oauthTokenRoutes } from "./routes/oauth-token.js";
|
|
11
14
|
export function createApp(deps) {
|
|
12
15
|
const app = new Hono();
|
|
13
16
|
// CORS — allow all origins for browser-based clients
|
|
@@ -21,11 +24,14 @@ export function createApp(deps) {
|
|
|
21
24
|
app.route("/", healthRoute({
|
|
22
25
|
version: deps.version,
|
|
23
26
|
startedAt: deps.startedAt,
|
|
27
|
+
serverOrigin: deps.serverOrigin,
|
|
24
28
|
serverOwner: deps.serverOwner,
|
|
25
29
|
identity: deps.identity,
|
|
26
30
|
gateway: deps.gateway,
|
|
31
|
+
gatewayConfig: deps.gatewayConfig,
|
|
27
32
|
logger: deps.logger,
|
|
28
33
|
getTunnelStatus: deps.getTunnelStatus,
|
|
34
|
+
runtimeAvailability: deps.runtimeAvailability,
|
|
29
35
|
}));
|
|
30
36
|
// Mount data routes (ingest + read + delete)
|
|
31
37
|
app.route("/v1/data", dataRoutes({
|
|
@@ -37,15 +43,21 @@ export function createApp(deps) {
|
|
|
37
43
|
gateway: deps.gateway,
|
|
38
44
|
accessLogWriter: deps.accessLogWriter,
|
|
39
45
|
devToken: deps.devToken,
|
|
46
|
+
tokenStore: deps.tokenStore,
|
|
40
47
|
syncManager: deps.syncManager ?? null,
|
|
48
|
+
feeVerifier: deps.feeVerifier,
|
|
49
|
+
runtimeAvailability: deps.runtimeAvailability,
|
|
50
|
+
dataStorage: deps.dataStorage,
|
|
41
51
|
}));
|
|
42
|
-
// Mount grants routes (POST /verify is public, GET /
|
|
52
|
+
// Mount grants routes (POST /verify is public, GET / and POST / need owner auth)
|
|
43
53
|
app.route("/v1/grants", grantsRoutes({
|
|
44
54
|
logger: deps.logger,
|
|
45
55
|
gateway: deps.gateway,
|
|
46
56
|
serverOwner: deps.serverOwner,
|
|
47
57
|
serverOrigin: deps.serverOrigin,
|
|
48
58
|
devToken: deps.devToken,
|
|
59
|
+
tokenStore: deps.tokenStore,
|
|
60
|
+
serverSigner: deps.serverSigner,
|
|
49
61
|
}));
|
|
50
62
|
// Mount access-logs routes (all owner auth)
|
|
51
63
|
app.route("/v1/access-logs", accessLogsRoutes({
|
|
@@ -54,6 +66,7 @@ export function createApp(deps) {
|
|
|
54
66
|
serverOrigin: deps.serverOrigin,
|
|
55
67
|
serverOwner: deps.serverOwner,
|
|
56
68
|
devToken: deps.devToken,
|
|
69
|
+
tokenStore: deps.tokenStore,
|
|
57
70
|
}));
|
|
58
71
|
// Mount sync routes (all owner auth)
|
|
59
72
|
app.route("/v1/sync", syncRoutes({
|
|
@@ -61,17 +74,52 @@ export function createApp(deps) {
|
|
|
61
74
|
serverOrigin: deps.serverOrigin,
|
|
62
75
|
serverOwner: deps.serverOwner,
|
|
63
76
|
devToken: deps.devToken,
|
|
77
|
+
tokenStore: deps.tokenStore,
|
|
64
78
|
syncManager: deps.syncManager ?? null,
|
|
65
79
|
}));
|
|
80
|
+
// Mount login flow v2 routes (self-hosted CLI auth, no auth required)
|
|
81
|
+
if (deps.tokenStore) {
|
|
82
|
+
app.route("/auth/device", authDeviceRoutes({
|
|
83
|
+
logger: deps.logger,
|
|
84
|
+
serverOrigin: deps.serverOrigin,
|
|
85
|
+
localApprovalOrigin: deps.localApprovalOrigin,
|
|
86
|
+
serverOwner: deps.serverOwner,
|
|
87
|
+
tokenStore: deps.tokenStore,
|
|
88
|
+
devToken: deps.devToken,
|
|
89
|
+
accessToken: deps.accessToken,
|
|
90
|
+
allowInteractiveLogin: !deps.cloudMode,
|
|
91
|
+
}));
|
|
92
|
+
// RFC 6749 token endpoint. Replaces ad-hoc `/auth/device/token` semantics
|
|
93
|
+
// with a standard OAuth2 surface that supports both the cloud
|
|
94
|
+
// control-plane `client_credentials` grant and the CLI device-code grant.
|
|
95
|
+
app.route("/oauth/token", oauthTokenRoutes({
|
|
96
|
+
logger: deps.logger,
|
|
97
|
+
tokenStore: deps.tokenStore,
|
|
98
|
+
controlPlaneSecret: deps.accessToken,
|
|
99
|
+
deviceSessions: createDeviceSessionLookup(),
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
66
102
|
// Mount dev UI routes when dev token is available
|
|
67
103
|
if (deps.devToken) {
|
|
68
|
-
app.route("/ui", uiRoute({
|
|
104
|
+
app.route("/ui", uiRoute({
|
|
105
|
+
devToken: deps.devToken,
|
|
106
|
+
psLiteBootstrap: deps.ownerSignature
|
|
107
|
+
? {
|
|
108
|
+
ownerSignature: deps.ownerSignature,
|
|
109
|
+
config: deps.config,
|
|
110
|
+
}
|
|
111
|
+
: null,
|
|
112
|
+
}));
|
|
69
113
|
if (deps.configPath) {
|
|
70
114
|
app.route("/ui/api", uiConfigRoutes({
|
|
71
115
|
devToken: deps.devToken,
|
|
72
116
|
configPath: deps.configPath,
|
|
73
117
|
}));
|
|
74
118
|
}
|
|
119
|
+
app.route("/ui/api", uiRegistrationRoutes({
|
|
120
|
+
devToken: deps.devToken,
|
|
121
|
+
ownerPrivateKey: deps.ownerPrivateKey,
|
|
122
|
+
}));
|
|
75
123
|
}
|
|
76
124
|
// Global error handler
|
|
77
125
|
app.onError((err, c) => {
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/bootstrap.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ServerConfig } from "@opendatalabs/personal-server-ts-core/schemas";
|
|
2
2
|
import { type Logger } from "@opendatalabs/personal-server-ts-core/logger";
|
|
3
3
|
import { type IndexManager } from "@opendatalabs/personal-server-ts-core/storage/index";
|
|
4
|
-
import type { GatewayClient } from "@opendatalabs/
|
|
4
|
+
import type { GatewayClient } from "@opendatalabs/vana-sdk/node";
|
|
5
5
|
import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
|
|
6
6
|
import type { ServerAccount } from "@opendatalabs/personal-server-ts-core/keys";
|
|
7
7
|
import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
|
|
@@ -21,7 +21,11 @@ export interface ServerContext {
|
|
|
21
21
|
syncManager: SyncManager | null;
|
|
22
22
|
tunnelManager?: TunnelManager;
|
|
23
23
|
tunnelUrl?: string;
|
|
24
|
+
localApprovalPort?: number;
|
|
25
|
+
getLocalApprovalOrigin: () => string | undefined;
|
|
26
|
+
setLocalApprovalOrigin: (origin?: string) => void;
|
|
24
27
|
devToken?: string;
|
|
28
|
+
startBackgroundServices: () => Promise<void>;
|
|
25
29
|
cleanup: () => Promise<void>;
|
|
26
30
|
}
|
|
27
31
|
export interface CreateServerOptions {
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAKlF,OAAO,EAEL,KAAK,MAAM,EACZ,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,qDAAqD,CAAC;AAG7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAMnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAGpE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,IAAI,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACjD,sBAAsB,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA0BD,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,CAAC,CA2UxB"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -1,19 +1,44 @@
|
|
|
1
1
|
import { mkdir } from "node:fs/promises";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
2
3
|
import { randomUUID } from "node:crypto";
|
|
3
4
|
import { join } from "node:path";
|
|
5
|
+
const require = createRequire(import.meta.url);
|
|
6
|
+
const pkg = require("../package.json");
|
|
4
7
|
import { DEFAULT_ROOT_PATH, resolveRootPath, } from "@opendatalabs/personal-server-ts-core/config";
|
|
5
8
|
import { createLogger, } from "@opendatalabs/personal-server-ts-core/logger";
|
|
6
9
|
import { initializeDatabase, createIndexManager, } from "@opendatalabs/personal-server-ts-core/storage/index";
|
|
7
|
-
import { createGatewayClient } from "@opendatalabs/
|
|
10
|
+
import { createGatewayClient } from "@opendatalabs/vana-sdk/node";
|
|
8
11
|
import { createAccessLogWriter } from "@opendatalabs/personal-server-ts-core/logging/access-log";
|
|
9
12
|
import { createAccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
|
|
10
|
-
import { deriveMasterKey, recoverServerOwner,
|
|
11
|
-
import {
|
|
13
|
+
import { deriveMasterKey, recoverServerOwner, } from "@opendatalabs/vana-sdk/node";
|
|
14
|
+
import { loadOrCreateServerAccount } from "@opendatalabs/personal-server-ts-core/keys";
|
|
15
|
+
import { createServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
|
|
12
16
|
import { createSyncCursor, createSyncManager, } from "@opendatalabs/personal-server-ts-core/sync";
|
|
13
|
-
import {
|
|
17
|
+
import { createVanaSyncStorageAdapter } from "@opendatalabs/personal-server-ts-core/storage/adapters";
|
|
14
18
|
import { createApp } from "./app.js";
|
|
15
19
|
import { generateDevToken } from "./dev-token.js";
|
|
20
|
+
import { migrateLocalState } from "./migrations/local-state.js";
|
|
21
|
+
import { createTokenStore } from "./token-store.js";
|
|
16
22
|
import { TunnelManager, ensureFrpcBinary } from "./tunnel/index.js";
|
|
23
|
+
import { createNodeDataStorage } from "./storage/node-data-storage.js";
|
|
24
|
+
const DEFAULT_LOCAL_APPROVAL_PORT = 34127;
|
|
25
|
+
function resolveLocalApprovalPort(serverPort) {
|
|
26
|
+
const raw = process.env.LOCAL_AUTH_PORT;
|
|
27
|
+
if (raw !== undefined) {
|
|
28
|
+
const parsed = Number(raw);
|
|
29
|
+
if (Number.isInteger(parsed) &&
|
|
30
|
+
parsed >= 1 &&
|
|
31
|
+
parsed <= 65535 &&
|
|
32
|
+
parsed !== serverPort) {
|
|
33
|
+
return parsed;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const adjacentPort = serverPort + 1;
|
|
37
|
+
if (adjacentPort <= 65535) {
|
|
38
|
+
return adjacentPort;
|
|
39
|
+
}
|
|
40
|
+
return DEFAULT_LOCAL_APPROVAL_PORT;
|
|
41
|
+
}
|
|
17
42
|
export async function createServer(config, options) {
|
|
18
43
|
const logger = createLogger(config.logging);
|
|
19
44
|
const startedAt = new Date();
|
|
@@ -21,15 +46,25 @@ export async function createServer(config, options) {
|
|
|
21
46
|
const dataDir = options?.dataDir ?? join(storageRoot, "data");
|
|
22
47
|
const indexPath = join(storageRoot, "index.db");
|
|
23
48
|
const configPath = join(storageRoot, "config.json");
|
|
49
|
+
const syncCursorPath = join(storageRoot, "sync-cursor.json");
|
|
50
|
+
const tokensPath = join(storageRoot, "tokens.json");
|
|
24
51
|
await mkdir(storageRoot, { recursive: true });
|
|
25
52
|
await mkdir(dataDir, { recursive: true });
|
|
26
53
|
const db = initializeDatabase(indexPath);
|
|
54
|
+
await migrateLocalState({
|
|
55
|
+
storageRoot,
|
|
56
|
+
dataDir,
|
|
57
|
+
configPath,
|
|
58
|
+
syncCursorPath,
|
|
59
|
+
tokensPath,
|
|
60
|
+
});
|
|
27
61
|
const indexManager = createIndexManager(db);
|
|
28
62
|
const hierarchyOptions = { dataDir };
|
|
63
|
+
const dataStorage = createNodeDataStorage({ indexManager, hierarchyOptions });
|
|
29
64
|
const gatewayClient = createGatewayClient(config.gateway.url);
|
|
30
|
-
const _serverOrigin = config.server.origin;
|
|
31
65
|
// Derive server owner from VANA_MASTER_KEY_SIGNATURE env var
|
|
32
66
|
const masterKeySignature = process.env.VANA_MASTER_KEY_SIGNATURE;
|
|
67
|
+
const ownerPrivateKey = process.env.VANA_OWNER_PRIVATE_KEY;
|
|
33
68
|
let serverOwner;
|
|
34
69
|
let serverAccount;
|
|
35
70
|
let serverSigner;
|
|
@@ -46,41 +81,43 @@ export async function createServer(config, options) {
|
|
|
46
81
|
chainId: config.gateway.chainId,
|
|
47
82
|
contracts: config.gateway.contracts,
|
|
48
83
|
});
|
|
49
|
-
//
|
|
50
|
-
let serverId = null;
|
|
51
|
-
try {
|
|
52
|
-
const serverInfo = await gatewayClient.getServer(serverAccount.address);
|
|
53
|
-
serverId = serverInfo?.id ?? null;
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// Gateway unreachable — assume not registered
|
|
57
|
-
}
|
|
58
|
-
if (serverId) {
|
|
59
|
-
logger.info("Server registered with gateway — signing delegation active");
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
logger.warn({
|
|
63
|
-
serverAddress: serverAccount.address,
|
|
64
|
-
publicKey: serverAccount.publicKey,
|
|
65
|
-
}, "Server not registered. Register personal server with the gateway to enable delegation.");
|
|
66
|
-
}
|
|
84
|
+
// Identity starts with serverId=null; background services will populate it
|
|
67
85
|
identity = {
|
|
68
86
|
address: serverAccount.address,
|
|
69
87
|
publicKey: serverAccount.publicKey,
|
|
70
|
-
serverId,
|
|
88
|
+
serverId: null,
|
|
71
89
|
};
|
|
72
90
|
}
|
|
73
91
|
else {
|
|
74
92
|
logger.warn("VANA_MASTER_KEY_SIGNATURE not set — owner-restricted endpoints will return 500");
|
|
75
93
|
}
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
let
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
94
|
+
// Resolve PS_ACCESS_TOKEN for cloud control-plane / bootstrap auth.
|
|
95
|
+
// This is not the per-login CLI session token returned to users.
|
|
96
|
+
let accessToken = process.env.PS_ACCESS_TOKEN;
|
|
97
|
+
if (!accessToken && process.env.CLOUD_MODE === "true") {
|
|
98
|
+
try {
|
|
99
|
+
const metadataRes = await fetch("http://metadata.google.internal/computeMetadata/v1/instance/attributes/ps-access-token", {
|
|
100
|
+
headers: { "Metadata-Flavor": "Google" },
|
|
101
|
+
signal: AbortSignal.timeout(2000),
|
|
102
|
+
});
|
|
103
|
+
if (metadataRes.ok) {
|
|
104
|
+
const token = (await metadataRes.text()).trim();
|
|
105
|
+
if (token.length > 0) {
|
|
106
|
+
accessToken = token;
|
|
107
|
+
logger.info("PS control-plane token loaded from instance metadata");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
logger.debug("Could not read PS control-plane token from instance metadata");
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (accessToken) {
|
|
116
|
+
logger.info("PS_ACCESS_TOKEN configured — control-plane bearer auth enabled");
|
|
117
|
+
}
|
|
118
|
+
// Download frpc binary eagerly (auth-independent) so it's ready when the user signs in
|
|
119
|
+
let frpcBinaryPath = "";
|
|
120
|
+
if (config.tunnel.enabled) {
|
|
84
121
|
try {
|
|
85
122
|
frpcBinaryPath = await ensureFrpcBinary(storageRoot, {
|
|
86
123
|
log: (msg) => logger.info(msg),
|
|
@@ -88,34 +125,7 @@ export async function createServer(config, options) {
|
|
|
88
125
|
}
|
|
89
126
|
catch (err) {
|
|
90
127
|
logger.warn({ err }, "Failed to download frpc binary - tunnel disabled");
|
|
91
|
-
frpcBinaryPath = "";
|
|
92
128
|
}
|
|
93
|
-
if (frpcBinaryPath) {
|
|
94
|
-
tunnelManager = new TunnelManager(storageRoot);
|
|
95
|
-
// Generate unique run ID for this process/session (used for claim binding)
|
|
96
|
-
const runId = randomUUID();
|
|
97
|
-
try {
|
|
98
|
-
tunnelUrl = await tunnelManager.start({
|
|
99
|
-
walletAddress: serverAccount.address, // Use server's own keypair address
|
|
100
|
-
ownerAddress: serverOwner,
|
|
101
|
-
serverKeypair: serverAccount,
|
|
102
|
-
runId,
|
|
103
|
-
serverAddr: config.tunnel.serverAddr,
|
|
104
|
-
serverPort: config.tunnel.serverPort,
|
|
105
|
-
localPort: config.server.port,
|
|
106
|
-
}, frpcBinaryPath);
|
|
107
|
-
logger.info({ tunnelUrl }, "Tunnel established");
|
|
108
|
-
// Use tunnel URL as effective origin for requests and Gateway registration
|
|
109
|
-
effectiveOrigin = tunnelUrl;
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
logger.warn({ err }, "Tunnel failed to connect - server running in local-only mode");
|
|
113
|
-
tunnelManager = undefined;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
else if (config.tunnel.enabled) {
|
|
118
|
-
logger.warn("Tunnel enabled in config but VANA_MASTER_KEY_SIGNATURE not set — tunnel disabled");
|
|
119
129
|
}
|
|
120
130
|
// --- Sync engine setup ---
|
|
121
131
|
let syncManager = null;
|
|
@@ -125,19 +135,16 @@ export async function createServer(config, options) {
|
|
|
125
135
|
serverAccount &&
|
|
126
136
|
serverSigner) {
|
|
127
137
|
const masterKey = deriveMasterKey(masterKeySignature);
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
signer: requestSigner,
|
|
138
|
+
const storageAdapter = createVanaSyncStorageAdapter({
|
|
139
|
+
config,
|
|
140
|
+
serverOwner,
|
|
141
|
+
serverAccount,
|
|
142
|
+
});
|
|
143
|
+
const cursor = createSyncCursor(syncCursorPath, {
|
|
144
|
+
legacyConfigPath: configPath,
|
|
136
145
|
});
|
|
137
|
-
const cursor = createSyncCursor(configPath);
|
|
138
146
|
const uploadDeps = {
|
|
139
|
-
|
|
140
|
-
hierarchyOptions,
|
|
147
|
+
storage: dataStorage,
|
|
141
148
|
storageAdapter,
|
|
142
149
|
gateway: gatewayClient,
|
|
143
150
|
signer: serverSigner,
|
|
@@ -146,8 +153,7 @@ export async function createServer(config, options) {
|
|
|
146
153
|
logger,
|
|
147
154
|
};
|
|
148
155
|
const downloadDeps = {
|
|
149
|
-
|
|
150
|
-
hierarchyOptions,
|
|
156
|
+
storage: dataStorage,
|
|
151
157
|
storageAdapter,
|
|
152
158
|
gateway: gatewayClient,
|
|
153
159
|
cursor,
|
|
@@ -168,24 +174,43 @@ export async function createServer(config, options) {
|
|
|
168
174
|
const accessLogReader = createAccessLogReader(logsDir);
|
|
169
175
|
// Generate ephemeral dev token when devUi is enabled
|
|
170
176
|
const devToken = config.devUi.enabled ? generateDevToken() : undefined;
|
|
177
|
+
// Token store for /auth/device flow (self-hosted CLI auth)
|
|
178
|
+
const tokenStore = createTokenStore(tokensPath, logger);
|
|
179
|
+
const cloudMode = process.env.CLOUD_MODE === "true";
|
|
180
|
+
const localApprovalPort = cloudMode
|
|
181
|
+
? undefined
|
|
182
|
+
: resolveLocalApprovalPort(config.server.port);
|
|
183
|
+
// Mutable origin — starts with config value, updated when tunnel connects
|
|
184
|
+
let effectiveOrigin = config.server.origin;
|
|
185
|
+
let effectiveLocalApprovalOrigin;
|
|
186
|
+
// Mutable tunnelManager — set when tunnel starts in background
|
|
187
|
+
let tunnelManager;
|
|
171
188
|
const app = createApp({
|
|
172
189
|
logger,
|
|
173
|
-
version:
|
|
190
|
+
version: pkg.version,
|
|
174
191
|
startedAt,
|
|
175
192
|
indexManager,
|
|
176
193
|
hierarchyOptions,
|
|
177
|
-
serverOrigin: effectiveOrigin,
|
|
194
|
+
serverOrigin: () => effectiveOrigin,
|
|
195
|
+
localApprovalOrigin: () => effectiveLocalApprovalOrigin,
|
|
178
196
|
serverOwner,
|
|
179
197
|
identity,
|
|
180
198
|
gateway: gatewayClient,
|
|
199
|
+
gatewayConfig: config.gateway,
|
|
200
|
+
config,
|
|
181
201
|
accessLogWriter,
|
|
182
202
|
accessLogReader,
|
|
203
|
+
dataStorage,
|
|
204
|
+
cloudMode,
|
|
183
205
|
devToken,
|
|
206
|
+
ownerSignature: masterKeySignature,
|
|
207
|
+
ownerPrivateKey,
|
|
208
|
+
accessToken,
|
|
209
|
+
tokenStore,
|
|
184
210
|
configPath,
|
|
185
211
|
syncManager,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
: undefined,
|
|
212
|
+
serverSigner,
|
|
213
|
+
getTunnelStatus: () => tunnelManager?.getStatus() ?? null,
|
|
189
214
|
});
|
|
190
215
|
const cleanup = async () => {
|
|
191
216
|
if (tunnelManager) {
|
|
@@ -196,7 +221,7 @@ export async function createServer(config, options) {
|
|
|
196
221
|
}
|
|
197
222
|
indexManager.close();
|
|
198
223
|
};
|
|
199
|
-
|
|
224
|
+
const context = {
|
|
200
225
|
app,
|
|
201
226
|
logger,
|
|
202
227
|
config,
|
|
@@ -208,9 +233,74 @@ export async function createServer(config, options) {
|
|
|
208
233
|
serverSigner,
|
|
209
234
|
syncManager,
|
|
210
235
|
tunnelManager,
|
|
211
|
-
tunnelUrl,
|
|
236
|
+
tunnelUrl: undefined,
|
|
237
|
+
localApprovalPort,
|
|
238
|
+
getLocalApprovalOrigin: () => effectiveLocalApprovalOrigin,
|
|
239
|
+
setLocalApprovalOrigin: (origin) => {
|
|
240
|
+
effectiveLocalApprovalOrigin = origin;
|
|
241
|
+
},
|
|
212
242
|
devToken,
|
|
243
|
+
startBackgroundServices: async () => {
|
|
244
|
+
// --- Gateway registration check (slow: HTTP call) ---
|
|
245
|
+
if (serverAccount && identity) {
|
|
246
|
+
try {
|
|
247
|
+
const serverInfo = await gatewayClient.getServer(serverAccount.address);
|
|
248
|
+
identity.serverId = serverInfo?.id ?? null;
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// Gateway unreachable — assume not registered
|
|
252
|
+
}
|
|
253
|
+
if (identity.serverId) {
|
|
254
|
+
logger.info("Server registered with gateway — signing delegation active");
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
logger.warn({
|
|
258
|
+
serverAddress: serverAccount.address,
|
|
259
|
+
publicKey: serverAccount.publicKey,
|
|
260
|
+
}, "Server not registered. Register personal server with the gateway to enable delegation.");
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// --- Tunnel setup (slow: subprocess wait) ---
|
|
264
|
+
if (config.tunnel.enabled &&
|
|
265
|
+
serverOwner &&
|
|
266
|
+
serverAccount &&
|
|
267
|
+
frpcBinaryPath) {
|
|
268
|
+
tunnelManager = new TunnelManager(storageRoot);
|
|
269
|
+
context.tunnelManager = tunnelManager;
|
|
270
|
+
const runId = randomUUID();
|
|
271
|
+
try {
|
|
272
|
+
const url = await tunnelManager.start({
|
|
273
|
+
walletAddress: serverAccount.address,
|
|
274
|
+
ownerAddress: serverOwner,
|
|
275
|
+
serverKeypair: serverAccount,
|
|
276
|
+
runId,
|
|
277
|
+
serverAddr: config.tunnel.serverAddr,
|
|
278
|
+
serverPort: config.tunnel.serverPort,
|
|
279
|
+
localPort: config.server.port,
|
|
280
|
+
}, frpcBinaryPath);
|
|
281
|
+
logger.info({ tunnelUrl: url }, "Tunnel established");
|
|
282
|
+
context.tunnelUrl = url;
|
|
283
|
+
effectiveOrigin = url;
|
|
284
|
+
if (!identity?.serverId) {
|
|
285
|
+
logger.warn("Tunnel started but server is not registered with gateway — tunnel will not route traffic. Run: npm run register-server");
|
|
286
|
+
tunnelManager.setVerified(false, "Server not registered with gateway");
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
catch (err) {
|
|
290
|
+
logger.warn({ err }, "Tunnel failed to connect - server running in local-only mode");
|
|
291
|
+
tunnelManager = undefined;
|
|
292
|
+
context.tunnelManager = undefined;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
else if (config.tunnel.enabled && !frpcBinaryPath) {
|
|
296
|
+
logger.warn("frpc binary not available — tunnel disabled");
|
|
297
|
+
}
|
|
298
|
+
else if (config.tunnel.enabled) {
|
|
299
|
+
logger.warn("Tunnel enabled in config but VANA_MASTER_KEY_SIGNATURE not set — tunnel disabled");
|
|
300
|
+
}
|
|
301
|
+
},
|
|
213
302
|
cleanup,
|
|
214
303
|
};
|
|
304
|
+
return context;
|
|
215
305
|
}
|
|
216
306
|
//# sourceMappingURL=bootstrap.js.map
|
package/dist/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,YAAY,GAEb,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,qDAAqD,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import "hono";
|
|
2
|
+
import type { GatewayGrantResponse } from "@opendatalabs/vana-sdk/node";
|
|
3
|
+
import type { AuthMechanism, RequestAuth } from "./middleware/web3-auth.js";
|
|
4
|
+
declare module "hono" {
|
|
5
|
+
interface ContextVariableMap {
|
|
6
|
+
auth: RequestAuth | undefined;
|
|
7
|
+
grant: GatewayGrantResponse | undefined;
|
|
8
|
+
authMechanism: AuthMechanism | undefined;
|
|
9
|
+
isPolicyBypass: boolean | undefined;
|
|
10
|
+
devBypass: boolean | undefined;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=hono-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-context.d.ts","sourceRoot":"","sources":["../src/hono-context.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAU,kBAAkB;QAC1B,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;QAC9B,KAAK,EAAE,oBAAoB,GAAG,SAAS,CAAC;QACxC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;QACzC,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;QACpC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;KAChC;CACF;AAED,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-context.js","sourceRoot":"","sources":["../src/hono-context.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,CAAC"}
|