@transloadit/mcp-server 0.3.8 → 0.3.10
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/README.md +20 -0
- package/dist/express.d.ts +1 -1
- package/dist/express.d.ts.map +1 -1
- package/dist/express.js +58 -20
- package/dist/express.js.map +1 -1
- package/dist/http.d.ts +1 -1
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +133 -21
- package/dist/http.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -28,6 +28,26 @@ npx -y @transloadit/mcp-server http --host 127.0.0.1 --port 5723
|
|
|
28
28
|
|
|
29
29
|
When binding HTTP mode to non-localhost hosts, `TRANSLOADIT_MCP_TOKEN` is required.
|
|
30
30
|
|
|
31
|
+
### Docker
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
docker run -i --rm \
|
|
35
|
+
-e TRANSLOADIT_KEY=MY_AUTH_KEY \
|
|
36
|
+
-e TRANSLOADIT_SECRET=MY_SECRET_KEY \
|
|
37
|
+
ghcr.io/transloadit/mcp-server:latest
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
For HTTP mode via Docker, expose the port:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
docker run --rm \
|
|
44
|
+
-e TRANSLOADIT_KEY=MY_AUTH_KEY \
|
|
45
|
+
-e TRANSLOADIT_SECRET=MY_SECRET_KEY \
|
|
46
|
+
-p 5723:5723 \
|
|
47
|
+
ghcr.io/transloadit/mcp-server:latest \
|
|
48
|
+
transloadit-mcp http --host 0.0.0.0 --port 5723
|
|
49
|
+
```
|
|
50
|
+
|
|
31
51
|
### `TRANSLOADIT_MCP_TOKEN` explained
|
|
32
52
|
|
|
33
53
|
`TRANSLOADIT_MCP_TOKEN` is a self-hosted MCP transport token. It protects your own HTTP MCP endpoint
|
package/dist/express.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import type { TransloaditMcpHttpOptions } from './http.ts';
|
|
|
2
2
|
export type TransloaditMcpExpressOptions = TransloaditMcpHttpOptions & {
|
|
3
3
|
path?: string;
|
|
4
4
|
};
|
|
5
|
-
export declare
|
|
5
|
+
export declare function createTransloaditMcpExpressRouter(options?: TransloaditMcpExpressOptions): import("express-serve-static-core").Router;
|
|
6
6
|
//# sourceMappingURL=express.d.ts.map
|
package/dist/express.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAM1D,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,GAAG;IACrE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,iCAAiC,CAAC,OAAO,GAAE,4BAAiC,8CAgI3F"}
|
package/dist/express.js
CHANGED
|
@@ -1,31 +1,19 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
3
|
+
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
3
4
|
import express from 'express';
|
|
4
5
|
import { isBasicAuthorized } from "./http-helpers.js";
|
|
5
|
-
import { createMcpRequestHandler } from "./http-request-handler.js";
|
|
6
6
|
import { getMetrics, getMetricsContentType } from "./metrics.js";
|
|
7
7
|
import { createTransloaditMcpServer } from "./server.js";
|
|
8
8
|
import { buildServerCard, serverCardPath } from "./server-card.js";
|
|
9
|
-
export
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
allowedOrigins: options.allowedOrigins,
|
|
14
|
-
allowedHosts: options.allowedHosts,
|
|
15
|
-
enableDnsRebindingProtection: options.enableDnsRebindingProtection,
|
|
16
|
-
});
|
|
17
|
-
await server.connect(transport);
|
|
9
|
+
export function createTransloaditMcpExpressRouter(options = {}) {
|
|
10
|
+
const sessionIdGenerator = options.sessionIdGenerator ?? (() => randomUUID());
|
|
11
|
+
// Per-session transport map: each MCP client gets its own transport + server pair.
|
|
12
|
+
const transports = new Map();
|
|
18
13
|
const router = express.Router();
|
|
19
14
|
const routePath = options.path ?? '/mcp';
|
|
20
15
|
const metricsPath = options.metricsPath === false ? undefined : (options.metricsPath ?? '/metrics');
|
|
21
16
|
const metricsAuth = options.metricsAuth;
|
|
22
|
-
const handler = createMcpRequestHandler(transport, {
|
|
23
|
-
allowedOrigins: options.allowedOrigins,
|
|
24
|
-
mcpToken: options.mcpToken,
|
|
25
|
-
path: { expectedPath: routePath, allowRoot: true },
|
|
26
|
-
logger: options.logger,
|
|
27
|
-
redactSecrets: [options.mcpToken, options.authKey, options.authSecret],
|
|
28
|
-
});
|
|
29
17
|
const serverCardJson = JSON.stringify(buildServerCard(routePath, { authKey: options.authKey, authSecret: options.authSecret }));
|
|
30
18
|
const sendServerCard = (res, includeBody) => {
|
|
31
19
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
@@ -52,8 +40,58 @@ export const createTransloaditMcpExpressRouter = async (options = {}) => {
|
|
|
52
40
|
router.head(serverCardPath, (_req, res) => {
|
|
53
41
|
sendServerCard(res, false);
|
|
54
42
|
});
|
|
55
|
-
router.all(routePath, (req, res) => {
|
|
56
|
-
|
|
43
|
+
router.all(routePath, async (req, res) => {
|
|
44
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
45
|
+
let transport;
|
|
46
|
+
if (sessionId) {
|
|
47
|
+
transport = transports.get(sessionId);
|
|
48
|
+
if (!transport) {
|
|
49
|
+
res.status(404).json({
|
|
50
|
+
jsonrpc: '2.0',
|
|
51
|
+
error: { code: -32000, message: 'Session not found' },
|
|
52
|
+
id: null,
|
|
53
|
+
});
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (req.method === 'POST' && isInitializeRequest(req.body)) {
|
|
58
|
+
// New initialization request — create a new transport + server pair.
|
|
59
|
+
const newTransport = new StreamableHTTPServerTransport({
|
|
60
|
+
sessionIdGenerator,
|
|
61
|
+
allowedOrigins: options.allowedOrigins,
|
|
62
|
+
allowedHosts: options.allowedHosts,
|
|
63
|
+
enableDnsRebindingProtection: options.enableDnsRebindingProtection,
|
|
64
|
+
onsessioninitialized: (sid) => {
|
|
65
|
+
transports.set(sid, newTransport);
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
newTransport.onclose = () => {
|
|
69
|
+
const sid = newTransport.sessionId;
|
|
70
|
+
if (sid) {
|
|
71
|
+
transports.delete(sid);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const server = createTransloaditMcpServer(options);
|
|
75
|
+
await server.connect(newTransport);
|
|
76
|
+
transport = newTransport;
|
|
77
|
+
}
|
|
78
|
+
else if (req.method === 'POST') {
|
|
79
|
+
res.status(400).json({
|
|
80
|
+
jsonrpc: '2.0',
|
|
81
|
+
error: { code: -32600, message: 'Bad Request: No valid session ID provided' },
|
|
82
|
+
id: null,
|
|
83
|
+
});
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (!transport) {
|
|
87
|
+
res.status(400).json({
|
|
88
|
+
jsonrpc: '2.0',
|
|
89
|
+
error: { code: -32600, message: 'Bad Request: No valid session ID provided' },
|
|
90
|
+
id: null,
|
|
91
|
+
});
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
await transport.handleRequest(req, res, req.body);
|
|
57
95
|
});
|
|
58
96
|
if (metricsPath) {
|
|
59
97
|
router.get(metricsPath, async (req, res) => {
|
|
@@ -74,5 +112,5 @@ export const createTransloaditMcpExpressRouter = async (options = {}) => {
|
|
|
74
112
|
});
|
|
75
113
|
}
|
|
76
114
|
return router;
|
|
77
|
-
}
|
|
115
|
+
}
|
|
78
116
|
//# sourceMappingURL=express.js.map
|
package/dist/express.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAClG,OAAO,
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
CHANGED
|
@@ -18,5 +18,5 @@ export type TransloaditMcpHttpOptions = TransloaditMcpServerOptions & {
|
|
|
18
18
|
export type TransloaditMcpHttpHandler = ((req: IncomingMessage, res: ServerResponse) => Promise<void>) & {
|
|
19
19
|
close: () => Promise<void>;
|
|
20
20
|
};
|
|
21
|
-
export declare
|
|
21
|
+
export declare function createTransloaditMcpHttpHandler(options?: TransloaditMcpHttpOptions): TransloaditMcpHttpHandler;
|
|
22
22
|
//# sourceMappingURL=http.d.ts.map
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAGhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AASxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAI9D,MAAM,MAAM,yBAAyB,GAAG,2BAA2B,GAAG;IACpE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC5B,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IACpD,kBAAkB,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAA;IAC/C,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,CAAC,CACvC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;IACpB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B,CAAA;AAyBD,wBAAgB,+BAA+B,CAC7C,OAAO,GAAE,yBAA8B,GACtC,yBAAyB,CAgM3B"}
|
package/dist/http.js
CHANGED
|
@@ -1,35 +1,43 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
import { applyCorsHeaders, isAuthorized, isBasicAuthorized, normalizePath, parsePathname, } from "./http-helpers.js";
|
|
5
5
|
import { getMetrics, getMetricsContentType } from "./metrics.js";
|
|
6
6
|
import { createTransloaditMcpServer } from "./server.js";
|
|
7
7
|
import { buildServerCard, serverCardPath } from "./server-card.js";
|
|
8
8
|
const defaultPath = '/mcp';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
/** Read the full request body and JSON-parse it so `isInitializeRequest` can inspect the payload. */
|
|
10
|
+
function readJsonBody(req) {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
const chunks = [];
|
|
13
|
+
req.on('data', (chunk) => chunks.push(chunk));
|
|
14
|
+
req.on('end', () => {
|
|
15
|
+
const raw = Buffer.concat(chunks).toString('utf8');
|
|
16
|
+
if (!raw) {
|
|
17
|
+
resolve(undefined);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
resolve(JSON.parse(raw));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
resolve(undefined);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
req.on('error', reject);
|
|
16
28
|
});
|
|
17
|
-
|
|
29
|
+
}
|
|
30
|
+
export function createTransloaditMcpHttpHandler(options = {}) {
|
|
18
31
|
const expectedPath = options.path ?? defaultPath;
|
|
19
32
|
const metricsPath = options.metricsPath === false ? undefined : normalizePath(options.metricsPath ?? '/metrics');
|
|
20
33
|
const metricsAuth = options.metricsAuth;
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
path: { expectedPath },
|
|
25
|
-
logger: options.logger,
|
|
26
|
-
redactSecrets: [options.mcpToken, options.authKey, options.authSecret],
|
|
27
|
-
});
|
|
34
|
+
const sessionIdGenerator = options.sessionIdGenerator ?? (() => randomUUID());
|
|
35
|
+
// Per-session transport map: each MCP client gets its own transport + server pair.
|
|
36
|
+
const transports = new Map();
|
|
28
37
|
const serverCardJson = JSON.stringify(buildServerCard(expectedPath, { authKey: options.authKey, authSecret: options.authSecret }));
|
|
29
38
|
const handler = (async (req, res) => {
|
|
30
39
|
const pathname = normalizePath(parsePathname(req.url, expectedPath));
|
|
31
40
|
if (pathname === serverCardPath) {
|
|
32
|
-
// Public discovery endpoint for registries; always allow CORS (optionally restricted by allowedOrigins).
|
|
33
41
|
if (!applyCorsHeaders(req, res, options.allowedOrigins)) {
|
|
34
42
|
return;
|
|
35
43
|
}
|
|
@@ -72,11 +80,115 @@ export const createTransloaditMcpHttpHandler = async (options = {}) => {
|
|
|
72
80
|
res.end(await getMetrics());
|
|
73
81
|
return;
|
|
74
82
|
}
|
|
75
|
-
|
|
83
|
+
if (pathname !== normalizePath(expectedPath)) {
|
|
84
|
+
res.statusCode = 404;
|
|
85
|
+
res.end('Not Found');
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (!applyCorsHeaders(req, res, options.allowedOrigins)) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (req.method === 'OPTIONS') {
|
|
92
|
+
res.statusCode = 204;
|
|
93
|
+
res.end();
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (options.mcpToken && !isAuthorized(req, options.mcpToken)) {
|
|
97
|
+
res.statusCode = 401;
|
|
98
|
+
res.setHeader('WWW-Authenticate', 'Bearer');
|
|
99
|
+
res.end('Unauthorized');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
// Bare GETs without the SSE Accept header are not valid MCP requests (the
|
|
103
|
+
// Streamable HTTP spec requires Accept: text/event-stream for GET). Return
|
|
104
|
+
// a friendly JSON status so directory health-probes see a 200 instead of 406.
|
|
105
|
+
const accept = req.headers.accept ?? '';
|
|
106
|
+
if (req.method === 'GET' && !accept.includes('text/event-stream')) {
|
|
107
|
+
res.statusCode = 200;
|
|
108
|
+
res.setHeader('Content-Type', 'application/json');
|
|
109
|
+
res.end(JSON.stringify({
|
|
110
|
+
name: 'Transloadit MCP Server',
|
|
111
|
+
status: 'ok',
|
|
112
|
+
docs: 'https://transloadit.com/docs/sdks/mcp-server/',
|
|
113
|
+
}));
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// Route request to the correct per-session transport.
|
|
117
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
118
|
+
let transport;
|
|
119
|
+
if (sessionId) {
|
|
120
|
+
transport = transports.get(sessionId);
|
|
121
|
+
if (!transport) {
|
|
122
|
+
res.statusCode = 404;
|
|
123
|
+
res.setHeader('Content-Type', 'application/json');
|
|
124
|
+
res.end(JSON.stringify({
|
|
125
|
+
jsonrpc: '2.0',
|
|
126
|
+
error: { code: -32000, message: 'Session not found' },
|
|
127
|
+
id: null,
|
|
128
|
+
}));
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// For POST requests without a session, read the body to check for initialization.
|
|
133
|
+
let parsedBody;
|
|
134
|
+
if (req.method === 'POST' && !transport) {
|
|
135
|
+
parsedBody = await readJsonBody(req);
|
|
136
|
+
if (isInitializeRequest(parsedBody)) {
|
|
137
|
+
const newTransport = new StreamableHTTPServerTransport({
|
|
138
|
+
sessionIdGenerator,
|
|
139
|
+
allowedOrigins: options.allowedOrigins,
|
|
140
|
+
allowedHosts: options.allowedHosts,
|
|
141
|
+
enableDnsRebindingProtection: options.enableDnsRebindingProtection,
|
|
142
|
+
onsessioninitialized: (sid) => {
|
|
143
|
+
transports.set(sid, newTransport);
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
newTransport.onclose = () => {
|
|
147
|
+
const sid = newTransport.sessionId;
|
|
148
|
+
if (sid) {
|
|
149
|
+
transports.delete(sid);
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
const server = createTransloaditMcpServer(options);
|
|
153
|
+
await server.connect(newTransport);
|
|
154
|
+
transport = newTransport;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
res.statusCode = 400;
|
|
158
|
+
res.setHeader('Content-Type', 'application/json');
|
|
159
|
+
res.end(JSON.stringify({
|
|
160
|
+
jsonrpc: '2.0',
|
|
161
|
+
error: { code: -32600, message: 'Bad Request: No valid session ID provided' },
|
|
162
|
+
id: null,
|
|
163
|
+
}));
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (!transport) {
|
|
168
|
+
res.statusCode = 400;
|
|
169
|
+
res.setHeader('Content-Type', 'application/json');
|
|
170
|
+
res.end(JSON.stringify({
|
|
171
|
+
jsonrpc: '2.0',
|
|
172
|
+
error: { code: -32600, message: 'Bad Request: No valid session ID provided' },
|
|
173
|
+
id: null,
|
|
174
|
+
}));
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
try {
|
|
178
|
+
await transport.handleRequest(req, res, parsedBody);
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
if (!res.headersSent) {
|
|
182
|
+
res.statusCode = 500;
|
|
183
|
+
res.end('Internal Server Error');
|
|
184
|
+
}
|
|
185
|
+
}
|
|
76
186
|
});
|
|
77
187
|
handler.close = async () => {
|
|
78
|
-
|
|
188
|
+
const closePromises = [...transports.values()].map((t) => t.close());
|
|
189
|
+
await Promise.all(closePromises);
|
|
190
|
+
transports.clear();
|
|
79
191
|
};
|
|
80
192
|
return handler;
|
|
81
|
-
}
|
|
193
|
+
}
|
|
82
194
|
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@transloadit/mcp-server",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.10",
|
|
4
4
|
"description": "Transloadit MCP server",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
65
|
-
"@transloadit/node": "^4.7.
|
|
65
|
+
"@transloadit/node": "^4.7.5",
|
|
66
66
|
"@transloadit/sev-logger": "^0.1.9",
|
|
67
67
|
"express": "^4.21.2",
|
|
68
68
|
"prom-client": "^15.1.3",
|