@opendatalabs/personal-server-ts-server 0.2.0 → 1.1.0
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-auth.d.ts +16 -0
- package/dist/api-auth.d.ts.map +1 -0
- package/dist/api-auth.js +97 -0
- package/dist/api-auth.js.map +1 -0
- package/dist/api.d.ts +4 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +3 -0
- package/dist/api.js.map +1 -1
- package/dist/app.d.ts +46 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +102 -30
- package/dist/app.js.map +1 -1
- package/dist/bootstrap.d.ts +11 -3
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +266 -33
- package/dist/bootstrap.js.map +1 -1
- package/dist/client.d.ts +17 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +368 -0
- package/dist/client.js.map +1 -0
- package/dist/config/defaults.d.ts +12 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +14 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +8 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +74 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/paths.d.ts +9 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +22 -0
- package/dist/config/paths.js.map +1 -0
- 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 +64 -12
- package/dist/index.js.map +1 -1
- package/dist/keys/server-account.d.ts +28 -0
- package/dist/keys/server-account.d.ts.map +1 -0
- package/dist/keys/server-account.js +48 -0
- package/dist/keys/server-account.js.map +1 -0
- package/dist/logger/index.d.ts +5 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +9 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logging/access-log.d.ts +15 -0
- package/dist/logging/access-log.d.ts.map +1 -0
- package/dist/logging/access-log.js +25 -0
- package/dist/logging/access-log.js.map +1 -0
- package/dist/logging/access-reader.d.ts +19 -0
- package/dist/logging/access-reader.d.ts.map +1 -0
- package/dist/logging/access-reader.js +50 -0
- package/dist/logging/access-reader.js.map +1 -0
- 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/owner-check.js +1 -1
- package/dist/middleware/owner-check.js.map +1 -1
- package/dist/middleware/web3-auth.d.ts +12 -0
- package/dist/middleware/web3-auth.d.ts.map +1 -1
- package/dist/middleware/web3-auth.js +27 -31
- 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 +7 -0
- package/dist/routes/access-logs.d.ts.map +1 -1
- package/dist/routes/access-logs.js +11 -17
- package/dist/routes/access-logs.js.map +1 -1
- package/dist/routes/auth-device.d.ts +49 -0
- package/dist/routes/auth-device.d.ts.map +1 -0
- package/dist/routes/auth-device.js +581 -0
- package/dist/routes/auth-device.js.map +1 -0
- package/dist/routes/data.d.ts +42 -1
- package/dist/routes/data.d.ts.map +1 -1
- package/dist/routes/data.js +36 -201
- package/dist/routes/data.js.map +1 -1
- package/dist/routes/grants.d.ts +9 -2
- package/dist/routes/grants.d.ts.map +1 -1
- package/dist/routes/grants.js +18 -196
- 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 +39 -2
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/mcp.d.ts +93 -6
- package/dist/routes/mcp.d.ts.map +1 -1
- package/dist/routes/mcp.js +526 -53
- package/dist/routes/mcp.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 +49 -0
- package/dist/routes/oauth-token.js.map +1 -0
- package/dist/routes/sync.d.ts +7 -0
- package/dist/routes/sync.d.ts.map +1 -1
- package/dist/routes/sync.js +12 -39
- package/dist/routes/sync.js.map +1 -1
- package/dist/routes/ui-config.d.ts.map +1 -1
- package/dist/routes/ui-config.js +17 -82
- package/dist/routes/ui-config.js.map +1 -1
- package/dist/routes/ui-registration.d.ts +9 -0
- package/dist/routes/ui-registration.d.ts.map +1 -0
- package/dist/routes/ui-registration.js +217 -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/hierarchy.d.ts +29 -0
- package/dist/storage/hierarchy.d.ts.map +1 -0
- package/dist/storage/hierarchy.js +241 -0
- package/dist/storage/hierarchy.js.map +1 -0
- package/dist/storage/index-manager.d.ts +53 -0
- package/dist/storage/index-manager.d.ts.map +1 -0
- package/dist/storage/index-manager.js +167 -0
- package/dist/storage/index-manager.js.map +1 -0
- package/dist/storage/index-schema.d.ts +5 -0
- package/dist/storage/index-schema.d.ts.map +1 -0
- package/dist/storage/index-schema.js +62 -0
- package/dist/storage/index-schema.js.map +1 -0
- 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 +84 -0
- package/dist/storage/node-data-storage.js.map +1 -0
- package/dist/sync-cursor.d.ts +15 -0
- package/dist/sync-cursor.d.ts.map +1 -0
- package/dist/sync-cursor.js +110 -0
- package/dist/sync-cursor.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 +4 -0
- package/dist/tunnel/auth.d.ts.map +1 -1
- package/dist/tunnel/auth.js +2 -1
- package/dist/tunnel/auth.js.map +1 -1
- package/dist/tunnel/config.d.ts +1 -0
- package/dist/tunnel/config.d.ts.map +1 -1
- package/dist/tunnel/config.js +1 -1
- package/dist/tunnel/config.js.map +1 -1
- package/dist/tunnel/manager.d.ts +21 -1
- package/dist/tunnel/manager.d.ts.map +1 -1
- package/dist/tunnel/manager.js +78 -23
- package/dist/tunnel/manager.js.map +1 -1
- package/dist/tunnel/verify.d.ts +1 -1
- package/dist/tunnel/verify.d.ts.map +1 -1
- package/dist/tunnel/verify.js +8 -2
- package/dist/tunnel/verify.js.map +1 -1
- package/dist/ui/browser_tls_rustls_bg.wasm +0 -0
- package/dist/ui/index.html +2192 -0
- package/dist/ui/ps-lite-debug.d.ts +93 -0
- package/dist/ui/ps-lite-debug.d.ts.map +1 -0
- package/dist/ui/ps-lite-debug.js +129416 -0
- package/dist/ui/ps-lite-debug.js.map +1 -0
- package/package.json +20 -8
- 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/oauth/provider.d.ts +0 -55
- package/dist/oauth/provider.d.ts.map +0 -1
- package/dist/oauth/provider.js +0 -160
- package/dist/oauth/provider.js.map +0 -1
- package/dist/oauth/routes.d.ts +0 -10
- package/dist/oauth/routes.d.ts.map +0 -1
- package/dist/oauth/routes.js +0 -206
- package/dist/oauth/routes.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-state.d.ts","sourceRoot":"","sources":["../../src/migrations/local-state.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAwHD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,yBAAyB,CAAC,CAgCpC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
export const LOCAL_STATE_VERSION = 1;
|
|
4
|
+
export const INDEX_STATE_VERSION = 1;
|
|
5
|
+
export const TOKEN_STORE_VERSION = 1;
|
|
6
|
+
export const SYNC_CURSOR_VERSION = 1;
|
|
7
|
+
export const DATA_HIERARCHY_VERSION = 1;
|
|
8
|
+
export const CONFIG_STATE_VERSION = 1;
|
|
9
|
+
async function fileExists(path) {
|
|
10
|
+
try {
|
|
11
|
+
await readFile(path);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
if (err.code === "ENOENT") {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
throw err;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async function writeJsonFile(path, value, mode) {
|
|
22
|
+
await mkdir(dirname(path), { recursive: true });
|
|
23
|
+
const tmpPath = `${path}.tmp`;
|
|
24
|
+
await writeFile(tmpPath, `${JSON.stringify(value, null, 2)}\n`, {
|
|
25
|
+
encoding: "utf-8",
|
|
26
|
+
mode,
|
|
27
|
+
});
|
|
28
|
+
await rename(tmpPath, path);
|
|
29
|
+
}
|
|
30
|
+
async function migrateSyncCursor(configPath, syncCursorPath) {
|
|
31
|
+
if (await fileExists(syncCursorPath)) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
let legacyTimestamp = null;
|
|
35
|
+
try {
|
|
36
|
+
const raw = await readFile(configPath, "utf-8");
|
|
37
|
+
const parsed = JSON.parse(raw);
|
|
38
|
+
if (typeof parsed.sync?.lastProcessedTimestamp === "string") {
|
|
39
|
+
legacyTimestamp = parsed.sync.lastProcessedTimestamp;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
if (err.code !== "ENOENT") {
|
|
44
|
+
throw err;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (legacyTimestamp === null) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
const state = {
|
|
51
|
+
version: SYNC_CURSOR_VERSION,
|
|
52
|
+
lastProcessedTimestamp: legacyTimestamp,
|
|
53
|
+
};
|
|
54
|
+
await writeJsonFile(syncCursorPath, state);
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
async function migrateTokensFile(tokensPath) {
|
|
58
|
+
let parsed;
|
|
59
|
+
try {
|
|
60
|
+
const raw = await readFile(tokensPath, "utf-8");
|
|
61
|
+
parsed = JSON.parse(raw);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
if (err.code === "ENOENT") {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
throw err;
|
|
68
|
+
}
|
|
69
|
+
if (parsed.version === TOKEN_STORE_VERSION) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
if (!Array.isArray(parsed.tokens)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
await writeJsonFile(tokensPath, {
|
|
76
|
+
version: TOKEN_STORE_VERSION,
|
|
77
|
+
tokens: parsed.tokens,
|
|
78
|
+
}, 0o600);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
export async function migrateLocalState(options) {
|
|
82
|
+
const statePath = options.statePath ?? join(options.storageRoot, "state.json");
|
|
83
|
+
await mkdir(options.storageRoot, { recursive: true });
|
|
84
|
+
await mkdir(options.dataDir, { recursive: true });
|
|
85
|
+
const syncCursorCreated = await migrateSyncCursor(options.configPath, options.syncCursorPath);
|
|
86
|
+
const tokensFileVersioned = await migrateTokensFile(options.tokensPath);
|
|
87
|
+
const state = {
|
|
88
|
+
version: LOCAL_STATE_VERSION,
|
|
89
|
+
migratedAt: new Date().toISOString(),
|
|
90
|
+
components: {
|
|
91
|
+
config: CONFIG_STATE_VERSION,
|
|
92
|
+
index: INDEX_STATE_VERSION,
|
|
93
|
+
dataHierarchy: DATA_HIERARCHY_VERSION,
|
|
94
|
+
tokenStore: TOKEN_STORE_VERSION,
|
|
95
|
+
tokensFile: TOKEN_STORE_VERSION,
|
|
96
|
+
syncCursor: SYNC_CURSOR_VERSION,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
await writeJsonFile(statePath, state);
|
|
100
|
+
return {
|
|
101
|
+
statePath,
|
|
102
|
+
syncCursorCreated,
|
|
103
|
+
tokensFileVersioned,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=local-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-state.js","sourceRoot":"","sources":["../../src/migrations/local-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,19 @@
|
|
|
5
5
|
import { Hono } from "hono";
|
|
6
6
|
import type { Logger } from "pino";
|
|
7
7
|
import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
|
|
8
|
+
import { type PersonalServerApiDispatchOptions } from "@opendatalabs/personal-server-ts-core/api";
|
|
9
|
+
import type { TokenStore } from "../token-store.js";
|
|
10
|
+
import type { GatewayClient } from "@opendatalabs/vana-sdk/node";
|
|
8
11
|
export interface AccessLogsRouteDeps {
|
|
9
12
|
logger: Logger;
|
|
10
13
|
accessLogReader: AccessLogReader;
|
|
11
14
|
serverOrigin: string | (() => string);
|
|
12
15
|
serverOwner?: `0x${string}`;
|
|
16
|
+
gateway: GatewayClient;
|
|
13
17
|
devToken?: string;
|
|
18
|
+
accessToken?: string;
|
|
19
|
+
tokenStore?: TokenStore;
|
|
20
|
+
mountPath?: PersonalServerApiDispatchOptions["basePath"];
|
|
14
21
|
}
|
|
15
22
|
export declare function accessLogsRoutes(deps: AccessLogsRouteDeps): Hono;
|
|
16
23
|
//# 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;
|
|
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;AACnG,OAAO,EAEL,KAAK,gCAAgC,EACtC,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,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,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,gCAAgC,CAAC,UAAU,CAAC,CAAC;CAC1D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAwBhE"}
|
|
@@ -3,28 +3,22 @@
|
|
|
3
3
|
* Owner auth is wired in Task 4.1.
|
|
4
4
|
*/
|
|
5
5
|
import { Hono } from "hono";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { handlePersonalServerAccessLogsRequest, } from "@opendatalabs/personal-server-ts-core/api";
|
|
7
|
+
import { createServerApiAuth } from "../api-auth.js";
|
|
8
8
|
export function accessLogsRoutes(deps) {
|
|
9
9
|
const app = new Hono();
|
|
10
|
-
const
|
|
10
|
+
const auth = createServerApiAuth({
|
|
11
11
|
serverOrigin: deps.serverOrigin,
|
|
12
|
-
devToken: deps.devToken,
|
|
13
12
|
serverOwner: deps.serverOwner,
|
|
13
|
+
gateway: deps.gateway,
|
|
14
|
+
devToken: deps.devToken,
|
|
15
|
+
accessToken: deps.accessToken,
|
|
16
|
+
tokenStore: deps.tokenStore,
|
|
14
17
|
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const offsetParam = c.req.query("offset");
|
|
20
|
-
const limit = limitParam !== undefined ? parseInt(limitParam, 10) : 50;
|
|
21
|
-
const offset = offsetParam !== undefined ? parseInt(offsetParam, 10) : 0;
|
|
22
|
-
const result = await deps.accessLogReader.read({
|
|
23
|
-
limit: Number.isNaN(limit) ? 50 : limit,
|
|
24
|
-
offset: Number.isNaN(offset) ? 0 : offset,
|
|
25
|
-
});
|
|
26
|
-
return c.json(result);
|
|
27
|
-
});
|
|
18
|
+
app.all("*", (c) => handlePersonalServerAccessLogsRequest(c.req.raw, {
|
|
19
|
+
auth,
|
|
20
|
+
accessLogReader: deps.accessLogReader,
|
|
21
|
+
}, { basePath: deps.mountPath }));
|
|
28
22
|
return app;
|
|
29
23
|
}
|
|
30
24
|
//# sourceMappingURL=access-logs.js.map
|
|
@@ -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,
|
|
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,EACL,qCAAqC,GAEtC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAerD,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,MAAM,IAAI,GAAG,mBAAmB,CAAC;QAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CACjB,qCAAqC,CACnC,CAAC,CAAC,GAAG,CAAC,GAAG,EACT;QACE,IAAI;QACJ,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC7B,CACF,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Login Flow v2 — Nextcloud-style device login for self-hosted CLI authentication.
|
|
3
|
+
*
|
|
4
|
+
* POST /auth/device — Initiate a login session
|
|
5
|
+
* GET /auth/device/poll — Poll for completion (token= query param)
|
|
6
|
+
* GET /auth/device/approve — HTML approval page (session= query param)
|
|
7
|
+
* POST /auth/device/approve — Approve the session (session= query param)
|
|
8
|
+
*/
|
|
9
|
+
import "../hono-context.js";
|
|
10
|
+
import { Hono, type Context } from "hono";
|
|
11
|
+
import type { Logger } from "pino";
|
|
12
|
+
import { DEVICE_POLL_INTERVAL_MS, DEVICE_SESSION_TTL_MS, type DeviceSessionStore } from "@opendatalabs/personal-server-ts-core/contracts";
|
|
13
|
+
import type { TokenStore } from "../token-store.js";
|
|
14
|
+
export interface LoginV2Deps {
|
|
15
|
+
logger: Logger;
|
|
16
|
+
serverOrigin: string | (() => string);
|
|
17
|
+
localApprovalOrigin?: string | (() => string | undefined);
|
|
18
|
+
serverOwner?: `0x${string}`;
|
|
19
|
+
tokenStore: TokenStore;
|
|
20
|
+
devToken?: string;
|
|
21
|
+
accessToken?: string;
|
|
22
|
+
allowInteractiveLogin?: boolean;
|
|
23
|
+
getRemoteAddress?: (c: Context) => string | undefined;
|
|
24
|
+
}
|
|
25
|
+
type InspectableDeviceSessionStore = DeviceSessionStore & {
|
|
26
|
+
clear(): void;
|
|
27
|
+
readonly size: number;
|
|
28
|
+
has(sessionId: string): boolean;
|
|
29
|
+
};
|
|
30
|
+
/** In-memory session store (short-lived device authorization state). */
|
|
31
|
+
declare const sessions: InspectableDeviceSessionStore;
|
|
32
|
+
export declare function authDeviceRoutes(deps: LoginV2Deps): Hono;
|
|
33
|
+
export { sessions, DEVICE_SESSION_TTL_MS as SESSION_TTL_MS, DEVICE_POLL_INTERVAL_MS as POLL_INTERVAL_MS, };
|
|
34
|
+
/**
|
|
35
|
+
* Read-only adapter exposing the device-flow session map to the standard
|
|
36
|
+
* RFC 8628 token endpoint (`POST /oauth/token` with
|
|
37
|
+
* `grant_type=urn:ietf:params:oauth:grant-type:device_code`). The
|
|
38
|
+
* `pollToken` issued at `POST /auth/device` is the OAuth2 `device_code`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function createDeviceSessionLookup(): {
|
|
41
|
+
findByDeviceCode(deviceCode: string): {
|
|
42
|
+
status: "pending" | "approved";
|
|
43
|
+
accessToken: string | undefined;
|
|
44
|
+
accessTokenExpiresAt: string | undefined;
|
|
45
|
+
sessionId: string;
|
|
46
|
+
} | null;
|
|
47
|
+
consume(sessionId: string): void;
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=auth-device.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-device.d.ts","sourceRoot":"","sources":["../../src/routes/auth-device.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,OAAO,EAGL,uBAAuB,EACvB,qBAAqB,EAKrB,KAAK,kBAAkB,EACxB,MAAM,iDAAiD,CAAC;AAKzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOpD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,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,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;CACvD;AAED,KAAK,6BAA6B,GAAG,kBAAkB,GAAG;IACxD,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC,CAAC;AA0CF,wEAAwE;AACxE,QAAA,MAAM,QAAQ,+BAAwC,CAAC;AAsIvD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CA2MxD;AAkQD,OAAO,EACL,QAAQ,EACR,qBAAqB,IAAI,cAAc,EACvC,uBAAuB,IAAI,gBAAgB,GAC5C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,yBAAyB;iCAER,MAAM;;;;;;uBAWhB,MAAM;EAI5B"}
|