@grigoreo-dev/otask-mcp 1.2.0 → 1.2.1
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/package.json +2 -2
- package/dist/http-server.d.ts +0 -3
- package/dist/http-server.d.ts.map +0 -1
- package/dist/http-server.js +0 -92
- package/dist/http-server.js.map +0 -1
- package/dist/proxy/headers.d.ts +0 -3
- package/dist/proxy/headers.d.ts.map +0 -1
- package/dist/proxy/headers.js +0 -37
- package/dist/proxy/headers.js.map +0 -1
- package/dist/proxy/read-body.d.ts +0 -3
- package/dist/proxy/read-body.d.ts.map +0 -1
- package/dist/proxy/read-body.js +0 -18
- package/dist/proxy/read-body.js.map +0 -1
- package/dist/services/http-auth-context.d.ts +0 -7
- package/dist/services/http-auth-context.d.ts.map +0 -1
- package/dist/services/http-auth-context.js +0 -9
- package/dist/services/http-auth-context.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grigoreo-dev/otask-mcp",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "MCP server for O!task API — stdio locally, Streamable HTTP for n8n",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"repository": {
|
|
19
19
|
"type": "git",
|
|
20
|
-
"url": "
|
|
20
|
+
"url": "https://github.com/grigoreo-dev/otask-mcp.git"
|
|
21
21
|
},
|
|
22
22
|
"license": "MIT",
|
|
23
23
|
"scripts": {
|
package/dist/http-server.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":""}
|
package/dist/http-server.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import http from "node:http";
|
|
3
|
-
import { API_BASE_URL } from "./constants.js";
|
|
4
|
-
import { pickForwardRequestHeaders, pickForwardResponseHeaders } from "./proxy/headers.js";
|
|
5
|
-
import { readBody } from "./proxy/read-body.js";
|
|
6
|
-
function getAuthToken() {
|
|
7
|
-
const token = process.env.AUTH_TOKEN?.trim();
|
|
8
|
-
if (!token) {
|
|
9
|
-
throw new Error("AUTH_TOKEN environment variable is required for HTTP proxy mode");
|
|
10
|
-
}
|
|
11
|
-
return token;
|
|
12
|
-
}
|
|
13
|
-
function getPort() {
|
|
14
|
-
const raw = process.env.PORT?.trim() || "3847";
|
|
15
|
-
const port = Number.parseInt(raw, 10);
|
|
16
|
-
if (!Number.isFinite(port) || port < 1 || port > 65535) {
|
|
17
|
-
throw new Error(`Invalid PORT: ${raw}`);
|
|
18
|
-
}
|
|
19
|
-
return port;
|
|
20
|
-
}
|
|
21
|
-
function extractBearerToken(req) {
|
|
22
|
-
const auth = req.headers.authorization;
|
|
23
|
-
if (!auth?.startsWith("Bearer ")) {
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
|
-
return auth.slice("Bearer ".length).trim();
|
|
27
|
-
}
|
|
28
|
-
function sendJson(res, status, body) {
|
|
29
|
-
res.writeHead(status, { "Content-Type": "application/json" });
|
|
30
|
-
res.end(JSON.stringify(body));
|
|
31
|
-
}
|
|
32
|
-
async function handleRequest(req, res, authToken) {
|
|
33
|
-
const method = req.method ?? "GET";
|
|
34
|
-
const requestUrl = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
|
|
35
|
-
if (requestUrl.pathname === "/health") {
|
|
36
|
-
sendJson(res, 200, { ok: true });
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
if (!requestUrl.pathname.startsWith("/api/")) {
|
|
40
|
-
sendJson(res, 404, {
|
|
41
|
-
error: "Not found",
|
|
42
|
-
hint: "Proxy only forwards /api/* to O!task API",
|
|
43
|
-
});
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
const clientToken = extractBearerToken(req);
|
|
47
|
-
if (!clientToken || clientToken !== authToken) {
|
|
48
|
-
sendJson(res, 401, {
|
|
49
|
-
error: "Unauthorized",
|
|
50
|
-
hint: "Send Authorization: Bearer <AUTH_TOKEN>",
|
|
51
|
-
});
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const upstreamUrl = `${API_BASE_URL}${requestUrl.pathname}${requestUrl.search}`;
|
|
55
|
-
const forwardHeaders = pickForwardRequestHeaders(req.headers);
|
|
56
|
-
forwardHeaders.Authorization = `Bearer ${authToken}`;
|
|
57
|
-
const body = await readBody(req);
|
|
58
|
-
const upstream = await fetch(upstreamUrl, {
|
|
59
|
-
method,
|
|
60
|
-
headers: forwardHeaders,
|
|
61
|
-
body,
|
|
62
|
-
});
|
|
63
|
-
const responseHeaders = pickForwardResponseHeaders(upstream.headers);
|
|
64
|
-
res.writeHead(upstream.status, responseHeaders);
|
|
65
|
-
if (method === "HEAD") {
|
|
66
|
-
res.end();
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
const responseBody = Buffer.from(await upstream.arrayBuffer());
|
|
70
|
-
res.end(responseBody);
|
|
71
|
-
}
|
|
72
|
-
function main() {
|
|
73
|
-
const authToken = getAuthToken();
|
|
74
|
-
const port = getPort();
|
|
75
|
-
const server = http.createServer((req, res) => {
|
|
76
|
-
handleRequest(req, res, authToken).catch((error) => {
|
|
77
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
78
|
-
if (!res.headersSent) {
|
|
79
|
-
sendJson(res, 502, { error: "Upstream proxy error", message });
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
res.end();
|
|
83
|
-
console.error("Proxy error after headers sent:", message);
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
server.listen(port, () => {
|
|
87
|
-
console.error(`O!task HTTP proxy listening on http://localhost:${port}`);
|
|
88
|
-
console.error(`Forwarding /api/* -> ${API_BASE_URL}/api/*`);
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
main();
|
|
92
|
-
//# sourceMappingURL=http-server.js.map
|
package/dist/http-server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,OAAO;IACd,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAoB;IAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,QAAQ,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAa;IAClE,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAAoB,EACpB,GAAmB,EACnB,SAAiB;IAEjB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;IAExF,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACtC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;YACjB,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,0CAA0C;SACjD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9C,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;YACjB,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,yCAAyC;SAChD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,YAAY,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAChF,MAAM,cAAc,GAAG,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9D,cAAc,CAAC,aAAa,GAAG,UAAU,SAAS,EAAE,CAAC;IAErD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACxC,MAAM;QACN,OAAO,EAAE,cAAc;QACvB,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAEhD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,IAAI;IACX,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACjD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACvB,OAAO,CAAC,KAAK,CAAC,mDAAmD,IAAI,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,wBAAwB,YAAY,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/dist/proxy/headers.d.ts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export declare function pickForwardRequestHeaders(headers: Record<string, string | string[] | undefined>): Record<string, string>;
|
|
2
|
-
export declare function pickForwardResponseHeaders(headers: Headers): Record<string, string | string[]>;
|
|
3
|
-
//# sourceMappingURL=headers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/proxy/headers.ts"],"names":[],"mappings":"AAWA,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxB;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAWnC"}
|
package/dist/proxy/headers.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const HOP_BY_HOP = new Set([
|
|
2
|
-
"connection",
|
|
3
|
-
"keep-alive",
|
|
4
|
-
"proxy-authenticate",
|
|
5
|
-
"proxy-authorization",
|
|
6
|
-
"te",
|
|
7
|
-
"trailers",
|
|
8
|
-
"transfer-encoding",
|
|
9
|
-
"upgrade",
|
|
10
|
-
]);
|
|
11
|
-
export function pickForwardRequestHeaders(headers) {
|
|
12
|
-
const forward = {};
|
|
13
|
-
for (const [key, value] of Object.entries(headers)) {
|
|
14
|
-
const lower = key.toLowerCase();
|
|
15
|
-
if (HOP_BY_HOP.has(lower) || lower === "host" || lower === "authorization") {
|
|
16
|
-
continue;
|
|
17
|
-
}
|
|
18
|
-
if (typeof value === "string") {
|
|
19
|
-
forward[key] = value;
|
|
20
|
-
}
|
|
21
|
-
else if (Array.isArray(value) && value[0]) {
|
|
22
|
-
forward[key] = value[0];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return forward;
|
|
26
|
-
}
|
|
27
|
-
export function pickForwardResponseHeaders(headers) {
|
|
28
|
-
const forward = {};
|
|
29
|
-
headers.forEach((value, key) => {
|
|
30
|
-
if (HOP_BY_HOP.has(key.toLowerCase())) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
forward[key] = value;
|
|
34
|
-
});
|
|
35
|
-
return forward;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=headers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/proxy/headers.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,YAAY;IACZ,YAAY;IACZ,oBAAoB;IACpB,qBAAqB;IACrB,IAAI;IACJ,UAAU;IACV,mBAAmB;IACnB,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,UAAU,yBAAyB,CACvC,OAAsD;IAEtD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;YAC3E,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAAgB;IAEhB,MAAM,OAAO,GAAsC,EAAE,CAAC;IAEtD,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7B,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read-body.d.ts","sourceRoot":"","sources":["../../src/proxy/read-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiB1E"}
|
package/dist/proxy/read-body.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export function readBody(req) {
|
|
2
|
-
if (req.method === "GET" || req.method === "HEAD") {
|
|
3
|
-
return Promise.resolve(undefined);
|
|
4
|
-
}
|
|
5
|
-
return new Promise((resolve, reject) => {
|
|
6
|
-
const chunks = [];
|
|
7
|
-
req.on("data", (chunk) => chunks.push(chunk));
|
|
8
|
-
req.on("end", () => {
|
|
9
|
-
if (chunks.length === 0) {
|
|
10
|
-
resolve(undefined);
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
resolve(Buffer.concat(chunks));
|
|
14
|
-
});
|
|
15
|
-
req.on("error", reject);
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=read-body.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read-body.js","sourceRoot":"","sources":["../../src/proxy/read-body.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CAAC,GAAoB;IAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export interface HttpAuthContext {
|
|
2
|
-
/** O!task Bearer from client — passthrough mode only */
|
|
3
|
-
passthroughToken: string;
|
|
4
|
-
}
|
|
5
|
-
export declare function runWithHttpAuthContext<T>(context: HttpAuthContext, fn: () => T | Promise<T>): Promise<T>;
|
|
6
|
-
export declare function getPassthroughToken(): string | undefined;
|
|
7
|
-
//# sourceMappingURL=http-auth-context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-auth-context.d.ts","sourceRoot":"","sources":["../../src/services/http-auth-context.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAID,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,OAAO,EAAE,eAAe,EACxB,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
-
const storage = new AsyncLocalStorage();
|
|
3
|
-
export function runWithHttpAuthContext(context, fn) {
|
|
4
|
-
return Promise.resolve(storage.run(context, fn));
|
|
5
|
-
}
|
|
6
|
-
export function getPassthroughToken() {
|
|
7
|
-
return storage.getStore()?.passthroughToken;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=http-auth-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-auth-context.js","sourceRoot":"","sources":["../../src/services/http-auth-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOrD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAmB,CAAC;AAEzD,MAAM,UAAU,sBAAsB,CACpC,OAAwB,EACxB,EAAwB;IAExB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC;AAC9C,CAAC"}
|