@opendatalabs/personal-server-ts-server 0.0.1-canary.321fa2f → 0.0.1-canary.3559f90
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 +4 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +6 -1
- package/dist/app.js.map +1 -1
- package/dist/bootstrap.d.ts +1 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +102 -62
- package/dist/bootstrap.js.map +1 -1
- package/dist/index.js +27 -2
- package/dist/index.js.map +1 -1
- package/dist/middleware/web3-auth.d.ts +7 -1
- package/dist/middleware/web3-auth.d.ts.map +1 -1
- package/dist/middleware/web3-auth.js +44 -5
- package/dist/middleware/web3-auth.js.map +1 -1
- package/dist/routes/access-logs.d.ts +2 -1
- package/dist/routes/access-logs.d.ts.map +1 -1
- package/dist/routes/access-logs.js +1 -0
- package/dist/routes/access-logs.js.map +1 -1
- package/dist/routes/data.d.ts +2 -1
- package/dist/routes/data.d.ts.map +1 -1
- package/dist/routes/data.js +1 -0
- package/dist/routes/data.js.map +1 -1
- package/dist/routes/grants.d.ts +5 -3
- package/dist/routes/grants.d.ts.map +1 -1
- package/dist/routes/grants.js +89 -2
- package/dist/routes/grants.js.map +1 -1
- package/dist/routes/sync.d.ts +2 -1
- package/dist/routes/sync.d.ts.map +1 -1
- package/dist/routes/sync.js +1 -0
- package/dist/routes/sync.js.map +1 -1
- 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/package.json +2 -2
package/dist/app.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type { AccessLogWriter } from "@opendatalabs/personal-server-ts-core/logg
|
|
|
6
6
|
import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
|
|
7
7
|
import { type HealthDeps } from "./routes/health.js";
|
|
8
8
|
import type { SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
|
|
9
|
+
import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
|
|
9
10
|
import type { Logger } from "pino";
|
|
10
11
|
export interface IdentityInfo {
|
|
11
12
|
address: `0x${string}`;
|
|
@@ -18,15 +19,17 @@ export interface AppDeps {
|
|
|
18
19
|
startedAt: Date;
|
|
19
20
|
indexManager: IndexManager;
|
|
20
21
|
hierarchyOptions: HierarchyManagerOptions;
|
|
21
|
-
serverOrigin: string;
|
|
22
|
+
serverOrigin: string | (() => string);
|
|
22
23
|
serverOwner?: `0x${string}`;
|
|
23
24
|
identity?: IdentityInfo;
|
|
24
25
|
gateway: GatewayClient;
|
|
25
26
|
accessLogWriter: AccessLogWriter;
|
|
26
27
|
accessLogReader: AccessLogReader;
|
|
27
28
|
devToken?: string;
|
|
29
|
+
accessToken?: string;
|
|
28
30
|
configPath?: string;
|
|
29
31
|
syncManager?: SyncManager | null;
|
|
32
|
+
serverSigner?: ServerSigner;
|
|
30
33
|
getTunnelStatus?: HealthDeps["getTunnelStatus"];
|
|
31
34
|
}
|
|
32
35
|
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,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACnF,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;AAOlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,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,CAAC;
|
|
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,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACnF,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;AAOlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,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,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,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,eAAe,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;CACjD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAuI7C"}
|
package/dist/app.js
CHANGED
|
@@ -37,15 +37,18 @@ export function createApp(deps) {
|
|
|
37
37
|
gateway: deps.gateway,
|
|
38
38
|
accessLogWriter: deps.accessLogWriter,
|
|
39
39
|
devToken: deps.devToken,
|
|
40
|
+
accessToken: deps.accessToken,
|
|
40
41
|
syncManager: deps.syncManager ?? null,
|
|
41
42
|
}));
|
|
42
|
-
// Mount grants routes (POST /verify is public, GET /
|
|
43
|
+
// Mount grants routes (POST /verify is public, GET / and POST / need owner auth)
|
|
43
44
|
app.route("/v1/grants", grantsRoutes({
|
|
44
45
|
logger: deps.logger,
|
|
45
46
|
gateway: deps.gateway,
|
|
46
47
|
serverOwner: deps.serverOwner,
|
|
47
48
|
serverOrigin: deps.serverOrigin,
|
|
48
49
|
devToken: deps.devToken,
|
|
50
|
+
accessToken: deps.accessToken,
|
|
51
|
+
serverSigner: deps.serverSigner,
|
|
49
52
|
}));
|
|
50
53
|
// Mount access-logs routes (all owner auth)
|
|
51
54
|
app.route("/v1/access-logs", accessLogsRoutes({
|
|
@@ -54,6 +57,7 @@ export function createApp(deps) {
|
|
|
54
57
|
serverOrigin: deps.serverOrigin,
|
|
55
58
|
serverOwner: deps.serverOwner,
|
|
56
59
|
devToken: deps.devToken,
|
|
60
|
+
accessToken: deps.accessToken,
|
|
57
61
|
}));
|
|
58
62
|
// Mount sync routes (all owner auth)
|
|
59
63
|
app.route("/v1/sync", syncRoutes({
|
|
@@ -61,6 +65,7 @@ export function createApp(deps) {
|
|
|
61
65
|
serverOrigin: deps.serverOrigin,
|
|
62
66
|
serverOwner: deps.serverOwner,
|
|
63
67
|
devToken: deps.devToken,
|
|
68
|
+
accessToken: deps.accessToken,
|
|
64
69
|
syncManager: deps.syncManager ?? null,
|
|
65
70
|
}));
|
|
66
71
|
// Mount dev UI routes when dev token is available
|
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;AAM7E,OAAO,EAAE,WAAW,EAAmB,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/bootstrap.d.ts
CHANGED
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,+CAA+C,CAAC;AAGnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAMnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAKhF,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;AAGjC,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE,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,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;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAwSxB"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
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";
|
|
@@ -27,7 +30,6 @@ export async function createServer(config, options) {
|
|
|
27
30
|
const indexManager = createIndexManager(db);
|
|
28
31
|
const hierarchyOptions = { dataDir };
|
|
29
32
|
const gatewayClient = createGatewayClient(config.gateway.url);
|
|
30
|
-
const _serverOrigin = config.server.origin;
|
|
31
33
|
// Derive server owner from VANA_MASTER_KEY_SIGNATURE env var
|
|
32
34
|
const masterKeySignature = process.env.VANA_MASTER_KEY_SIGNATURE;
|
|
33
35
|
let serverOwner;
|
|
@@ -46,41 +48,42 @@ export async function createServer(config, options) {
|
|
|
46
48
|
chainId: config.gateway.chainId,
|
|
47
49
|
contracts: config.gateway.contracts,
|
|
48
50
|
});
|
|
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
|
-
}
|
|
51
|
+
// Identity starts with serverId=null; background services will populate it
|
|
67
52
|
identity = {
|
|
68
53
|
address: serverAccount.address,
|
|
69
54
|
publicKey: serverAccount.publicKey,
|
|
70
|
-
serverId,
|
|
55
|
+
serverId: null,
|
|
71
56
|
};
|
|
72
57
|
}
|
|
73
58
|
else {
|
|
74
59
|
logger.warn("VANA_MASTER_KEY_SIGNATURE not set — owner-restricted endpoints will return 500");
|
|
75
60
|
}
|
|
76
|
-
//
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
61
|
+
// Resolve PS_ACCESS_TOKEN for Bearer token auth (CLI / automation)
|
|
62
|
+
let accessToken = process.env.PS_ACCESS_TOKEN;
|
|
63
|
+
if (!accessToken && process.env.CLOUD_MODE === "true") {
|
|
64
|
+
try {
|
|
65
|
+
const metadataRes = await fetch("http://metadata.google.internal/computeMetadata/v1/instance/attributes/ps-access-token", {
|
|
66
|
+
headers: { "Metadata-Flavor": "Google" },
|
|
67
|
+
signal: AbortSignal.timeout(2000),
|
|
68
|
+
});
|
|
69
|
+
if (metadataRes.ok) {
|
|
70
|
+
const token = (await metadataRes.text()).trim();
|
|
71
|
+
if (token.length > 0) {
|
|
72
|
+
accessToken = token;
|
|
73
|
+
logger.info("PS access token loaded from instance metadata");
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
logger.debug("Could not read PS access token from instance metadata");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (accessToken) {
|
|
82
|
+
logger.info("PS_ACCESS_TOKEN configured — Bearer token auth enabled");
|
|
83
|
+
}
|
|
84
|
+
// Download frpc binary eagerly (auth-independent) so it's ready when the user signs in
|
|
85
|
+
let frpcBinaryPath = "";
|
|
86
|
+
if (config.tunnel.enabled) {
|
|
84
87
|
try {
|
|
85
88
|
frpcBinaryPath = await ensureFrpcBinary(storageRoot, {
|
|
86
89
|
log: (msg) => logger.info(msg),
|
|
@@ -88,35 +91,8 @@ export async function createServer(config, options) {
|
|
|
88
91
|
}
|
|
89
92
|
catch (err) {
|
|
90
93
|
logger.warn({ err }, "Failed to download frpc binary - tunnel disabled");
|
|
91
|
-
frpcBinaryPath = "";
|
|
92
|
-
}
|
|
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
94
|
}
|
|
116
95
|
}
|
|
117
|
-
else if (config.tunnel.enabled) {
|
|
118
|
-
logger.warn("Tunnel enabled in config but VANA_MASTER_KEY_SIGNATURE not set — tunnel disabled");
|
|
119
|
-
}
|
|
120
96
|
// --- Sync engine setup ---
|
|
121
97
|
let syncManager = null;
|
|
122
98
|
if (config.sync.enabled &&
|
|
@@ -168,24 +144,28 @@ export async function createServer(config, options) {
|
|
|
168
144
|
const accessLogReader = createAccessLogReader(logsDir);
|
|
169
145
|
// Generate ephemeral dev token when devUi is enabled
|
|
170
146
|
const devToken = config.devUi.enabled ? generateDevToken() : undefined;
|
|
147
|
+
// Mutable origin — starts with config value, updated when tunnel connects
|
|
148
|
+
let effectiveOrigin = config.server.origin;
|
|
149
|
+
// Mutable tunnelManager — set when tunnel starts in background
|
|
150
|
+
let tunnelManager;
|
|
171
151
|
const app = createApp({
|
|
172
152
|
logger,
|
|
173
|
-
version:
|
|
153
|
+
version: pkg.version,
|
|
174
154
|
startedAt,
|
|
175
155
|
indexManager,
|
|
176
156
|
hierarchyOptions,
|
|
177
|
-
serverOrigin: effectiveOrigin,
|
|
157
|
+
serverOrigin: () => effectiveOrigin,
|
|
178
158
|
serverOwner,
|
|
179
159
|
identity,
|
|
180
160
|
gateway: gatewayClient,
|
|
181
161
|
accessLogWriter,
|
|
182
162
|
accessLogReader,
|
|
183
163
|
devToken,
|
|
164
|
+
accessToken,
|
|
184
165
|
configPath,
|
|
185
166
|
syncManager,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
: undefined,
|
|
167
|
+
serverSigner,
|
|
168
|
+
getTunnelStatus: () => tunnelManager?.getStatus() ?? null,
|
|
189
169
|
});
|
|
190
170
|
const cleanup = async () => {
|
|
191
171
|
if (tunnelManager) {
|
|
@@ -196,7 +176,7 @@ export async function createServer(config, options) {
|
|
|
196
176
|
}
|
|
197
177
|
indexManager.close();
|
|
198
178
|
};
|
|
199
|
-
|
|
179
|
+
const context = {
|
|
200
180
|
app,
|
|
201
181
|
logger,
|
|
202
182
|
config,
|
|
@@ -208,9 +188,69 @@ export async function createServer(config, options) {
|
|
|
208
188
|
serverSigner,
|
|
209
189
|
syncManager,
|
|
210
190
|
tunnelManager,
|
|
211
|
-
tunnelUrl,
|
|
191
|
+
tunnelUrl: undefined,
|
|
212
192
|
devToken,
|
|
193
|
+
startBackgroundServices: async () => {
|
|
194
|
+
// --- Gateway registration check (slow: HTTP call) ---
|
|
195
|
+
if (serverAccount && identity) {
|
|
196
|
+
try {
|
|
197
|
+
const serverInfo = await gatewayClient.getServer(serverAccount.address);
|
|
198
|
+
identity.serverId = serverInfo?.id ?? null;
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
// Gateway unreachable — assume not registered
|
|
202
|
+
}
|
|
203
|
+
if (identity.serverId) {
|
|
204
|
+
logger.info("Server registered with gateway — signing delegation active");
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
logger.warn({
|
|
208
|
+
serverAddress: serverAccount.address,
|
|
209
|
+
publicKey: serverAccount.publicKey,
|
|
210
|
+
}, "Server not registered. Register personal server with the gateway to enable delegation.");
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// --- Tunnel setup (slow: subprocess wait) ---
|
|
214
|
+
if (config.tunnel.enabled &&
|
|
215
|
+
serverOwner &&
|
|
216
|
+
serverAccount &&
|
|
217
|
+
frpcBinaryPath) {
|
|
218
|
+
tunnelManager = new TunnelManager(storageRoot);
|
|
219
|
+
context.tunnelManager = tunnelManager;
|
|
220
|
+
const runId = randomUUID();
|
|
221
|
+
try {
|
|
222
|
+
const url = await tunnelManager.start({
|
|
223
|
+
walletAddress: serverAccount.address,
|
|
224
|
+
ownerAddress: serverOwner,
|
|
225
|
+
serverKeypair: serverAccount,
|
|
226
|
+
runId,
|
|
227
|
+
serverAddr: config.tunnel.serverAddr,
|
|
228
|
+
serverPort: config.tunnel.serverPort,
|
|
229
|
+
localPort: config.server.port,
|
|
230
|
+
}, frpcBinaryPath);
|
|
231
|
+
logger.info({ tunnelUrl: url }, "Tunnel established");
|
|
232
|
+
context.tunnelUrl = url;
|
|
233
|
+
effectiveOrigin = url;
|
|
234
|
+
if (!identity?.serverId) {
|
|
235
|
+
logger.warn("Tunnel started but server is not registered with gateway — tunnel will not route traffic. Run: npm run register-server");
|
|
236
|
+
tunnelManager.setVerified(false, "Server not registered with gateway");
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch (err) {
|
|
240
|
+
logger.warn({ err }, "Tunnel failed to connect - server running in local-only mode");
|
|
241
|
+
tunnelManager = undefined;
|
|
242
|
+
context.tunnelManager = undefined;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else if (config.tunnel.enabled && !frpcBinaryPath) {
|
|
246
|
+
logger.warn("frpc binary not available — tunnel disabled");
|
|
247
|
+
}
|
|
248
|
+
else if (config.tunnel.enabled) {
|
|
249
|
+
logger.warn("Tunnel enabled in config but VANA_MASTER_KEY_SIGNATURE not set — tunnel disabled");
|
|
250
|
+
}
|
|
251
|
+
},
|
|
213
252
|
cleanup,
|
|
214
253
|
};
|
|
254
|
+
return context;
|
|
215
255
|
}
|
|
216
256
|
//# 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,+CAA+C,CAAC;AAEpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AAEpG,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAElB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wDAAwD,CAAC;AAElG,OAAO,EAAE,SAAS,EAAqB,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,43 @@
|
|
|
1
1
|
import { serve } from "@hono/node-server";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
2
3
|
import { loadConfig } from "@opendatalabs/personal-server-ts-core/config";
|
|
3
4
|
import { createServer } from "./bootstrap.js";
|
|
5
|
+
import { verifyTunnelUrl } from "./tunnel/index.js";
|
|
6
|
+
const require = createRequire(import.meta.url);
|
|
7
|
+
const pkg = require("../package.json");
|
|
4
8
|
const DRAIN_TIMEOUT_MS = 5_000;
|
|
5
9
|
async function main() {
|
|
6
10
|
const rootPath = process.env.PERSONAL_SERVER_ROOT_PATH;
|
|
7
11
|
const config = await loadConfig({ rootPath });
|
|
8
|
-
const
|
|
12
|
+
const context = await createServer(config, { rootPath });
|
|
13
|
+
const { app, logger, devToken } = context;
|
|
9
14
|
const server = serve({ fetch: app.fetch, port: config.server.port }, (info) => {
|
|
10
|
-
logger.info({ port: info.port, version:
|
|
15
|
+
logger.info({ port: info.port, version: pkg.version }, "Server started");
|
|
11
16
|
if (devToken) {
|
|
12
17
|
logger.info({ url: `http://localhost:${info.port}/ui` }, "Dev UI available");
|
|
13
18
|
logger.info({ devToken }, "Dev token (ephemeral)");
|
|
14
19
|
}
|
|
15
20
|
});
|
|
21
|
+
// Fire-and-forget: gateway check + tunnel connect (slow operations)
|
|
22
|
+
// HTTP server is already listening so POST /v1/data/:scope works immediately
|
|
23
|
+
context.startBackgroundServices().then(() => {
|
|
24
|
+
// Verify tunnel URL is reachable now that both HTTP server and tunnel are up
|
|
25
|
+
const { tunnelManager, tunnelUrl } = context;
|
|
26
|
+
if (tunnelUrl &&
|
|
27
|
+
tunnelManager &&
|
|
28
|
+
tunnelManager.getStatus().status !== "error") {
|
|
29
|
+
logger.info({ tunnelUrl }, "Verifying tunnel URL is reachable...");
|
|
30
|
+
verifyTunnelUrl(tunnelUrl).then((result) => {
|
|
31
|
+
tunnelManager.setVerified(result.reachable, result.error);
|
|
32
|
+
if (result.reachable) {
|
|
33
|
+
logger.info({ tunnelUrl, attempts: result.attempts }, "Tunnel URL verified");
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
logger.warn({ tunnelUrl, attempts: result.attempts, error: result.error }, "Tunnel URL not reachable — server running in local-only mode");
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
});
|
|
16
41
|
function shutdown(signal) {
|
|
17
42
|
logger.info({ signal }, "Shutdown signal received, draining connections");
|
|
18
43
|
server.close(() => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from "hono";
|
|
2
2
|
export interface Web3AuthMiddlewareDeps {
|
|
3
|
-
serverOrigin: string;
|
|
3
|
+
serverOrigin: string | (() => string);
|
|
4
4
|
devToken?: string;
|
|
5
|
+
accessToken?: string;
|
|
5
6
|
serverOwner?: `0x${string}`;
|
|
6
7
|
}
|
|
7
8
|
/**
|
|
@@ -11,6 +12,11 @@ export interface Web3AuthMiddlewareDeps {
|
|
|
11
12
|
* When a devToken is configured and the request carries a matching
|
|
12
13
|
* Bearer token, auth context is populated with the server owner
|
|
13
14
|
* and c.set('devBypass', true) is set to skip downstream checks.
|
|
15
|
+
*
|
|
16
|
+
* When an accessToken (PS_ACCESS_TOKEN) is configured and the request
|
|
17
|
+
* carries a matching Bearer token, auth context is populated with the
|
|
18
|
+
* server owner — treating the request as owner-authenticated.
|
|
19
|
+
* This is used by the CLI for cloud PS access.
|
|
14
20
|
*/
|
|
15
21
|
export declare function createWeb3AuthMiddleware(depsOrOrigin: Web3AuthMiddlewareDeps | string): MiddlewareHandler;
|
|
16
22
|
//# sourceMappingURL=web3-auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web3-auth.d.ts","sourceRoot":"","sources":["../../src/middleware/web3-auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web3-auth.d.ts","sourceRoot":"","sources":["../../src/middleware/web3-auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAI9C,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CAC7B;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,sBAAsB,GAAG,MAAM,GAC5C,iBAAiB,CAgFnB"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
|
+
import { timingSafeEqual } from "node:crypto";
|
|
1
2
|
import { verifyWeb3Signed } from "@opendatalabs/personal-server-ts-core/auth";
|
|
2
3
|
import { ProtocolError } from "@opendatalabs/personal-server-ts-core/errors";
|
|
4
|
+
/**
|
|
5
|
+
* Constant-time comparison of two strings.
|
|
6
|
+
* Returns false if either string is empty or they differ in length.
|
|
7
|
+
*/
|
|
8
|
+
function safeCompare(a, b) {
|
|
9
|
+
if (a.length === 0 || b.length === 0)
|
|
10
|
+
return false;
|
|
11
|
+
if (a.length !== b.length)
|
|
12
|
+
return false;
|
|
13
|
+
return timingSafeEqual(Buffer.from(a), Buffer.from(b));
|
|
14
|
+
}
|
|
3
15
|
/**
|
|
4
16
|
* Parses + verifies Web3Signed Authorization header.
|
|
5
17
|
* Sets c.set('auth', VerifiedAuth) for downstream handlers.
|
|
@@ -7,16 +19,41 @@ import { ProtocolError } from "@opendatalabs/personal-server-ts-core/errors";
|
|
|
7
19
|
* When a devToken is configured and the request carries a matching
|
|
8
20
|
* Bearer token, auth context is populated with the server owner
|
|
9
21
|
* and c.set('devBypass', true) is set to skip downstream checks.
|
|
22
|
+
*
|
|
23
|
+
* When an accessToken (PS_ACCESS_TOKEN) is configured and the request
|
|
24
|
+
* carries a matching Bearer token, auth context is populated with the
|
|
25
|
+
* server owner — treating the request as owner-authenticated.
|
|
26
|
+
* This is used by the CLI for cloud PS access.
|
|
10
27
|
*/
|
|
11
28
|
export function createWeb3AuthMiddleware(depsOrOrigin) {
|
|
12
29
|
const deps = typeof depsOrOrigin === "string"
|
|
13
30
|
? { serverOrigin: depsOrOrigin }
|
|
14
31
|
: depsOrOrigin;
|
|
15
32
|
return async (c, next) => {
|
|
33
|
+
const authHeader = c.req.header("authorization");
|
|
16
34
|
// Dev token bypass: if configured and header matches, skip Web3Signed verification
|
|
17
|
-
if (deps.devToken) {
|
|
18
|
-
|
|
19
|
-
|
|
35
|
+
if (deps.devToken && authHeader === `Bearer ${deps.devToken}`) {
|
|
36
|
+
if (!deps.serverOwner) {
|
|
37
|
+
return c.json({
|
|
38
|
+
error: {
|
|
39
|
+
code: 500,
|
|
40
|
+
errorCode: "SERVER_NOT_CONFIGURED",
|
|
41
|
+
message: "Server owner address not configured. Set VANA_MASTER_KEY_SIGNATURE environment variable.",
|
|
42
|
+
},
|
|
43
|
+
}, 500);
|
|
44
|
+
}
|
|
45
|
+
c.set("auth", {
|
|
46
|
+
signer: deps.serverOwner,
|
|
47
|
+
payload: {},
|
|
48
|
+
});
|
|
49
|
+
c.set("devBypass", true);
|
|
50
|
+
await next();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// PS access token: Bearer token from CLI/automation, validated with constant-time comparison
|
|
54
|
+
if (deps.accessToken && authHeader?.startsWith("Bearer ")) {
|
|
55
|
+
const token = authHeader.slice(7);
|
|
56
|
+
if (safeCompare(token, deps.accessToken)) {
|
|
20
57
|
if (!deps.serverOwner) {
|
|
21
58
|
return c.json({
|
|
22
59
|
error: {
|
|
@@ -37,8 +74,10 @@ export function createWeb3AuthMiddleware(depsOrOrigin) {
|
|
|
37
74
|
}
|
|
38
75
|
try {
|
|
39
76
|
const auth = await verifyWeb3Signed({
|
|
40
|
-
headerValue:
|
|
41
|
-
expectedOrigin: deps.serverOrigin
|
|
77
|
+
headerValue: authHeader,
|
|
78
|
+
expectedOrigin: typeof deps.serverOrigin === "function"
|
|
79
|
+
? deps.serverOrigin()
|
|
80
|
+
: deps.serverOrigin,
|
|
42
81
|
expectedMethod: c.req.method,
|
|
43
82
|
expectedPath: new URL(c.req.url).pathname,
|
|
44
83
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web3-auth.js","sourceRoot":"","sources":["../../src/middleware/web3-auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web3-auth.js","sourceRoot":"","sources":["../../src/middleware/web3-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,10 @@ import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logg
|
|
|
8
8
|
export interface AccessLogsRouteDeps {
|
|
9
9
|
logger: Logger;
|
|
10
10
|
accessLogReader: AccessLogReader;
|
|
11
|
-
serverOrigin: string;
|
|
11
|
+
serverOrigin: string | (() => string);
|
|
12
12
|
serverOwner?: `0x${string}`;
|
|
13
13
|
devToken?: string;
|
|
14
|
+
accessToken?: string;
|
|
14
15
|
}
|
|
15
16
|
export declare function accessLogsRoutes(deps: AccessLogsRouteDeps): Hono;
|
|
16
17
|
//# sourceMappingURL=access-logs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-logs.d.ts","sourceRoot":"","sources":["../../src/routes/access-logs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAInG,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"access-logs.d.ts","sourceRoot":"","sources":["../../src/routes/access-logs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAInG,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CA4BhE"}
|
|
@@ -10,6 +10,7 @@ export function accessLogsRoutes(deps) {
|
|
|
10
10
|
const web3Auth = createWeb3AuthMiddleware({
|
|
11
11
|
serverOrigin: deps.serverOrigin,
|
|
12
12
|
devToken: deps.devToken,
|
|
13
|
+
accessToken: deps.accessToken,
|
|
13
14
|
serverOwner: deps.serverOwner,
|
|
14
15
|
});
|
|
15
16
|
const ownerCheck = createOwnerCheckMiddleware(deps.serverOwner);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-logs.js","sourceRoot":"","sources":["../../src/routes/access-logs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"access-logs.js","sourceRoot":"","sources":["../../src/routes/access-logs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAW1E,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEhE,iEAAiE;IACjE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7C,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAC7C,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;YACvC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;SAC1C,CAAC,CAAC;QAEH,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/routes/data.d.ts
CHANGED
|
@@ -9,12 +9,13 @@ export interface DataRouteDeps {
|
|
|
9
9
|
indexManager: IndexManager;
|
|
10
10
|
hierarchyOptions: HierarchyManagerOptions;
|
|
11
11
|
logger: Logger;
|
|
12
|
-
serverOrigin: string;
|
|
12
|
+
serverOrigin: string | (() => string);
|
|
13
13
|
serverOwner?: `0x${string}`;
|
|
14
14
|
gateway: GatewayClient;
|
|
15
15
|
accessLogWriter: AccessLogWriter;
|
|
16
16
|
syncManager?: SyncManager | null;
|
|
17
17
|
devToken?: string;
|
|
18
|
+
accessToken?: string;
|
|
18
19
|
}
|
|
19
20
|
export declare function dataRoutes(deps: DataRouteDeps): Hono;
|
|
20
21
|
//# sourceMappingURL=data.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAWnC,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAWnC,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAqRpD"}
|