mcp-compose 0.2.1 → 0.3.2

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.
@@ -1,7 +1,16 @@
1
1
  import { createServer as createHttpServer } from 'node:http';
2
- import { spawn } from 'node:child_process';
3
2
  import { randomUUID } from 'node:crypto';
3
+ import crossSpawn from 'cross-spawn';
4
4
  import { OAuthClient } from './oauth.js';
5
+ import { killProcessTree } from './process-tree.js';
6
+ class UnauthorizedError extends Error {
7
+ wwwAuthenticate;
8
+ constructor(wwwAuthenticate) {
9
+ super('Upstream returned 401 Unauthorized');
10
+ this.wwwAuthenticate = wwwAuthenticate;
11
+ this.name = 'UnauthorizedError';
12
+ }
13
+ }
5
14
  // --- Helpers ---
6
15
  const REQUEST_TIMEOUT_MS = 120_000;
7
16
  const MAX_NOTIFICATION_BUFFER = 1000;
@@ -30,9 +39,26 @@ function sendSSE(res, msg) {
30
39
  function makeErrorResponse(id, code, message) {
31
40
  return JSON.stringify({ jsonrpc: '2.0', error: { code, message }, id });
32
41
  }
42
+ /** RFC 9728 protected-resource metadata URLs to try, in priority order:
43
+ * path-aware first (using upstream's pathname), then root fallback. */
44
+ function buildProtectedResourceUrls(remoteUrl) {
45
+ const upstream = new URL(remoteUrl);
46
+ const pathname = upstream.pathname === '/' ? '' : upstream.pathname;
47
+ const urls = [];
48
+ if (pathname) {
49
+ urls.push(new URL(`/.well-known/oauth-protected-resource${pathname}`, upstream.origin).toString());
50
+ }
51
+ urls.push(new URL('/.well-known/oauth-protected-resource', upstream.origin).toString());
52
+ return urls;
53
+ }
33
54
  // --- Stdio Backend ---
34
- function createStdioBackend(command, logger) {
35
- const child = spawn(command, { stdio: ['pipe', 'pipe', 'pipe'], shell: true, detached: true });
55
+ function createStdioBackend(command, args, logger) {
56
+ const child = crossSpawn(command, args, {
57
+ stdio: ['pipe', 'pipe', 'pipe'],
58
+ shell: false,
59
+ detached: process.platform !== 'win32',
60
+ windowsHide: true,
61
+ });
36
62
  // stdio: ['pipe','pipe','pipe'] guarantees non-null streams
37
63
  if (!child.stdout || !child.stderr || !child.stdin) {
38
64
  throw new Error('Failed to create stdio pipes');
@@ -45,7 +71,7 @@ function createStdioBackend(command, logger) {
45
71
  const backend = {
46
72
  onServerMessage: null,
47
73
  onClose: null,
48
- sendRequest(msg) {
74
+ sendRequest(msg, _ctx) {
49
75
  return new Promise((resolve) => {
50
76
  const timer = setTimeout(() => {
51
77
  pendingRequests.delete(msg.id);
@@ -55,7 +81,7 @@ function createStdioBackend(command, logger) {
55
81
  childStdin.write(JSON.stringify(msg) + '\n');
56
82
  });
57
83
  },
58
- sendNotification(msg) {
84
+ sendNotification(msg, _ctx) {
59
85
  try {
60
86
  childStdin.write(JSON.stringify(msg) + '\n');
61
87
  }
@@ -69,17 +95,8 @@ function createStdioBackend(command, logger) {
69
95
  clearTimeout(pending.timer);
70
96
  }
71
97
  pendingRequests.clear();
72
- // Kill the entire process group (shell + actual MCP server process)
73
- try {
74
- if (child.pid)
75
- process.kill(-child.pid, 'SIGTERM');
76
- }
77
- catch {
78
- try {
79
- child.kill('SIGTERM');
80
- }
81
- catch { /* already dead */ }
82
- }
98
+ if (child.pid)
99
+ killProcessTree(child.pid);
83
100
  },
84
101
  };
85
102
  childStdout.on('data', (chunk) => {
@@ -206,22 +223,29 @@ async function parseSseResponse(res, originalMsg, backend, logger) {
206
223
  }
207
224
  return response;
208
225
  }
209
- function createProxyBackend(remoteUrl, headers, oauthClient, logger) {
226
+ function createProxyBackend(remoteUrl, headers, authMode, oauthClient, logger) {
210
227
  let remoteSessionId;
211
228
  let accessToken;
212
- // Preload cached token so the first request avoids an unnecessary 401 roundtrip.
213
- const initialTokenLoad = oauthClient.getAccessToken().then((token) => {
214
- if (token && !accessToken)
215
- accessToken = token;
216
- }).catch(() => { });
217
- async function forwardToRemote(msg, retryCount = 0) {
229
+ // Preload cached token (managed mode only) so the first request avoids
230
+ // an unnecessary 401 roundtrip. Passthrough mode never holds tokens.
231
+ const initialTokenLoad = oauthClient
232
+ ? oauthClient.getAccessToken().then((token) => {
233
+ if (token && !accessToken)
234
+ accessToken = token;
235
+ }).catch(() => { })
236
+ : Promise.resolve();
237
+ async function forwardToRemote(msg, ctx, retryCount = 0) {
218
238
  await initialTokenLoad;
219
239
  const reqHeaders = {
220
240
  'Content-Type': 'application/json',
221
241
  'Accept': 'application/json, text/event-stream',
222
242
  ...headers,
223
243
  };
224
- if (accessToken) {
244
+ if (authMode === 'passthrough') {
245
+ if (ctx?.authorization)
246
+ reqHeaders['Authorization'] = ctx.authorization;
247
+ }
248
+ else if (accessToken) {
225
249
  reqHeaders['Authorization'] = `Bearer ${accessToken}`;
226
250
  }
227
251
  if (remoteSessionId && msg.method !== 'initialize') {
@@ -244,12 +268,19 @@ function createProxyBackend(remoteUrl, headers, oauthClient, logger) {
244
268
  error: { code: -32000, message: `Remote server unreachable: ${errMsg}` },
245
269
  };
246
270
  }
247
- if (res.status === 401 && retryCount < 2) {
271
+ if (res.status === 401) {
248
272
  const wwwAuth = res.headers.get('www-authenticate') ?? undefined;
249
- logger('info', 'Received 401, starting OAuth flow...');
250
- accessToken = await oauthClient.handleUnauthorized(wwwAuth);
251
- logger('info', 'OAuth completed, retrying request...');
252
- return await forwardToRemote(msg, retryCount + 1);
273
+ if (authMode === 'passthrough') {
274
+ // Drain body so the connection can be reused.
275
+ await res.text().catch(() => { });
276
+ throw new UnauthorizedError(wwwAuth);
277
+ }
278
+ if (oauthClient && retryCount < 2) {
279
+ logger('info', 'Received 401, starting OAuth flow...');
280
+ accessToken = await oauthClient.handleUnauthorized(wwwAuth);
281
+ logger('info', 'OAuth completed, retrying request...');
282
+ return await forwardToRemote(msg, ctx, retryCount + 1);
283
+ }
253
284
  }
254
285
  const sessionHeader = res.headers.get('mcp-session-id');
255
286
  if (sessionHeader) {
@@ -276,12 +307,12 @@ function createProxyBackend(remoteUrl, headers, oauthClient, logger) {
276
307
  const backend = {
277
308
  onServerMessage: null,
278
309
  onClose: null,
279
- async sendRequest(msg) {
280
- const response = await forwardToRemote(msg);
310
+ async sendRequest(msg, ctx) {
311
+ const response = await forwardToRemote(msg, ctx);
281
312
  return response ?? { jsonrpc: '2.0', id: msg.id, error: { code: -32000, message: 'No response from remote' } };
282
313
  },
283
- sendNotification(msg) {
284
- forwardToRemote(msg).catch((err) => {
314
+ sendNotification(msg, ctx) {
315
+ forwardToRemote(msg, ctx).catch((err) => {
285
316
  const errMsg = err instanceof Error ? err.message : String(err);
286
317
  logger('debug', `Notification forward failed: ${errMsg}`);
287
318
  });
@@ -303,6 +334,9 @@ export function createGateway(options) {
303
334
  const logLevel = options.logLevel ?? 'info';
304
335
  const { port } = options;
305
336
  const sessions = new Map();
337
+ const proxyAuthMode = options.mode === 'proxy'
338
+ ? options.authMode ?? 'managed'
339
+ : 'managed';
306
340
  function logger(level, msg) {
307
341
  if (logLevel === 'none')
308
342
  return;
@@ -310,7 +344,8 @@ export function createGateway(options) {
310
344
  return;
311
345
  process.stderr.write(`[${new Date().toISOString()}] [${level}] ${msg}\n`);
312
346
  }
313
- const sharedOAuthClient = options.mode === 'proxy'
347
+ // OAuth client is gateway-managed only; passthrough delegates to the client.
348
+ const sharedOAuthClient = options.mode === 'proxy' && proxyAuthMode === 'managed'
314
349
  ? new OAuthClient({ serverUrl: options.url, headers: options.headers ?? {} })
315
350
  : undefined;
316
351
  // Single shared backend per gateway — started eagerly, recreated if it dies.
@@ -320,13 +355,10 @@ export function createGateway(options) {
320
355
  function startBackend() {
321
356
  let b;
322
357
  if (options.mode === 'stdio') {
323
- b = createStdioBackend(options.command, logger);
358
+ b = createStdioBackend(options.command, options.args ?? [], logger);
324
359
  }
325
360
  else {
326
- if (!sharedOAuthClient) {
327
- throw new Error('OAuthClient not initialized for proxy mode');
328
- }
329
- b = createProxyBackend(options.url, options.headers ?? {}, sharedOAuthClient, logger);
361
+ b = createProxyBackend(options.url, options.headers ?? {}, proxyAuthMode, sharedOAuthClient, logger);
330
362
  }
331
363
  b.onServerMessage = (msg) => {
332
364
  for (const session of sessions.values()) {
@@ -351,17 +383,57 @@ export function createGateway(options) {
351
383
  return b;
352
384
  }
353
385
  let backend = startBackend();
354
- async function sendRequest(msg) {
386
+ async function sendRequest(msg, ctx) {
355
387
  const originalId = msg.id;
356
388
  const internalId = nextRequestId++;
357
- const response = await backend.sendRequest({ ...msg, id: internalId });
389
+ const response = await backend.sendRequest({ ...msg, id: internalId }, ctx);
358
390
  restartBackoff = 1000;
359
391
  return { ...response, id: originalId };
360
392
  }
361
- function sendNotification(msg) {
362
- backend.sendNotification(msg);
393
+ function sendNotification(msg, ctx) {
394
+ backend.sendNotification(msg, ctx);
363
395
  }
364
- async function handleRequestOverSSE(res, message, session) {
396
+ function writeUnauthorized(res, err, requestId) {
397
+ if (res.headersSent)
398
+ return;
399
+ const respHeaders = { 'Content-Type': 'application/json' };
400
+ if (err.wwwAuthenticate)
401
+ respHeaders['WWW-Authenticate'] = err.wwwAuthenticate;
402
+ res.writeHead(401, respHeaders);
403
+ res.end(JSON.stringify({
404
+ jsonrpc: '2.0',
405
+ id: requestId,
406
+ error: { code: -32001, message: 'Unauthorized' },
407
+ }));
408
+ }
409
+ async function handleRequestOverSSE(res, message, session, ctx) {
410
+ // Passthrough mode delays SSE headers so a 401 from upstream can still
411
+ // surface as an HTTP 401 to the client (re-auth requires this).
412
+ if (proxyAuthMode === 'passthrough') {
413
+ let response;
414
+ try {
415
+ response = await sendRequest(message, ctx);
416
+ }
417
+ catch (err) {
418
+ if (err instanceof UnauthorizedError) {
419
+ writeUnauthorized(res, err, message.id);
420
+ return;
421
+ }
422
+ throw err;
423
+ }
424
+ res.writeHead(200, {
425
+ 'Content-Type': 'text/event-stream',
426
+ 'Cache-Control': 'no-cache',
427
+ 'Mcp-Session-Id': session.id,
428
+ });
429
+ const pending = session.notificationBuffer;
430
+ session.notificationBuffer = [];
431
+ for (const notif of pending)
432
+ sendSSE(res, notif);
433
+ sendSSE(res, response);
434
+ res.end();
435
+ return;
436
+ }
365
437
  res.writeHead(200, {
366
438
  'Content-Type': 'text/event-stream',
367
439
  'Cache-Control': 'no-cache',
@@ -378,7 +450,7 @@ export function createGateway(options) {
378
450
  };
379
451
  res.on('close', detachIfOwned);
380
452
  try {
381
- const response = await sendRequest(message);
453
+ const response = await sendRequest(message, ctx);
382
454
  sendSSE(res, response);
383
455
  }
384
456
  catch (err) {
@@ -416,6 +488,10 @@ export function createGateway(options) {
416
488
  res.end(makeErrorResponse(null, -32600, 'Invalid Request'));
417
489
  return;
418
490
  }
491
+ const authHeader = req.headers.authorization;
492
+ const ctx = {};
493
+ if (typeof authHeader === 'string')
494
+ ctx.authorization = authHeader;
419
495
  if (message.method === 'initialize') {
420
496
  const session = {
421
497
  id: randomUUID(),
@@ -426,17 +502,21 @@ export function createGateway(options) {
426
502
  logger('info', `Session ${session.id.slice(0, 8)} created (${String(sessions.size)} active)`);
427
503
  try {
428
504
  if (hasRequestId(message)) {
429
- const response = await sendRequest(message);
505
+ const response = await sendRequest(message, ctx);
430
506
  respondWithJson(res, response, session.id);
431
507
  }
432
508
  else {
433
- sendNotification(message);
509
+ sendNotification(message, ctx);
434
510
  res.writeHead(202, { 'Mcp-Session-Id': session.id });
435
511
  res.end();
436
512
  }
437
513
  }
438
514
  catch (err) {
439
515
  sessions.delete(session.id);
516
+ if (err instanceof UnauthorizedError) {
517
+ writeUnauthorized(res, err, message.id ?? null);
518
+ return;
519
+ }
440
520
  throw err;
441
521
  }
442
522
  return;
@@ -455,16 +535,25 @@ export function createGateway(options) {
455
535
  }
456
536
  if (hasRequestId(message) && message.method !== undefined) {
457
537
  const clientAcceptsSSE = (req.headers.accept ?? '').includes('text/event-stream');
458
- if (clientAcceptsSSE) {
459
- await handleRequestOverSSE(res, message, session);
538
+ try {
539
+ if (clientAcceptsSSE) {
540
+ await handleRequestOverSSE(res, message, session, ctx);
541
+ }
542
+ else {
543
+ const response = await sendRequest(message, ctx);
544
+ respondWithJson(res, response, session.id);
545
+ }
460
546
  }
461
- else {
462
- const response = await sendRequest(message);
463
- respondWithJson(res, response, session.id);
547
+ catch (err) {
548
+ if (err instanceof UnauthorizedError) {
549
+ writeUnauthorized(res, err, message.id);
550
+ return;
551
+ }
552
+ throw err;
464
553
  }
465
554
  return;
466
555
  }
467
- sendNotification(message);
556
+ sendNotification(message, ctx);
468
557
  res.writeHead(202);
469
558
  res.end();
470
559
  }
@@ -485,11 +574,50 @@ export function createGateway(options) {
485
574
  res.end();
486
575
  }
487
576
  // --- HTTP server ---
577
+ const upstreamProtectedResourceUrls = options.mode === 'proxy' && proxyAuthMode === 'passthrough'
578
+ ? buildProtectedResourceUrls(options.url)
579
+ : [];
580
+ async function handleProtectedResourceProxy(req, res) {
581
+ if (req.method !== 'GET') {
582
+ res.writeHead(405, { 'Content-Type': 'text/plain' });
583
+ res.end('Method Not Allowed');
584
+ return;
585
+ }
586
+ let lastStatus = 404;
587
+ let lastBody = '';
588
+ let lastContentType = 'application/json';
589
+ for (const target of upstreamProtectedResourceUrls) {
590
+ let upstream;
591
+ try {
592
+ upstream = await fetch(target, {
593
+ method: 'GET',
594
+ headers: { 'Accept': 'application/json' },
595
+ });
596
+ }
597
+ catch (err) {
598
+ const errMsg = err instanceof Error ? err.message : String(err);
599
+ logger('info', `Protected-resource fetch failed (${target}): ${errMsg}`);
600
+ continue;
601
+ }
602
+ const text = await upstream.text();
603
+ if (upstream.ok) {
604
+ const ct = upstream.headers.get('content-type') ?? 'application/json';
605
+ res.writeHead(upstream.status, { 'Content-Type': ct });
606
+ res.end(text);
607
+ return;
608
+ }
609
+ lastStatus = upstream.status;
610
+ lastBody = text;
611
+ lastContentType = upstream.headers.get('content-type') ?? 'application/json';
612
+ }
613
+ res.writeHead(lastStatus, { 'Content-Type': lastContentType });
614
+ res.end(lastBody);
615
+ }
488
616
  const httpServer = createHttpServer((req, res) => {
489
617
  res.setHeader('Access-Control-Allow-Origin', '*');
490
- res.setHeader('Access-Control-Allow-Methods', 'POST, DELETE, OPTIONS');
491
- res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Accept, Mcp-Session-Id, MCP-Protocol-Version');
492
- res.setHeader('Access-Control-Expose-Headers', 'Mcp-Session-Id');
618
+ res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS');
619
+ res.setHeader('Access-Control-Allow-Headers', 'Authorization, Content-Type, Accept, Mcp-Session-Id, MCP-Protocol-Version');
620
+ res.setHeader('Access-Control-Expose-Headers', 'Mcp-Session-Id, WWW-Authenticate');
493
621
  if (req.method === 'OPTIONS') {
494
622
  res.writeHead(204);
495
623
  res.end();
@@ -501,6 +629,21 @@ export function createGateway(options) {
501
629
  res.end('ok');
502
630
  return;
503
631
  }
632
+ // Pass-through OAuth discovery so MCP clients can run their own auth flow
633
+ // (RFC 9728). Only enabled in proxy + passthrough mode.
634
+ if (upstreamProtectedResourceUrls.length > 0 &&
635
+ (urlPath === '/.well-known/oauth-protected-resource' ||
636
+ urlPath.startsWith('/.well-known/oauth-protected-resource/'))) {
637
+ handleProtectedResourceProxy(req, res).catch((err) => {
638
+ const errMsg = err instanceof Error ? err.message : String(err);
639
+ logger('info', `Protected-resource proxy error: ${errMsg}`);
640
+ if (!res.headersSent) {
641
+ res.writeHead(502, { 'Content-Type': 'text/plain' });
642
+ res.end('Bad Gateway');
643
+ }
644
+ });
645
+ return;
646
+ }
504
647
  if (urlPath !== '/mcp') {
505
648
  res.writeHead(404, { 'Content-Type': 'text/plain' });
506
649
  res.end('Not Found');
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function extractGatewayPort(args: string[]): number | null;
2
+ //# sourceMappingURL=pm2-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pm2-args.d.ts","sourceRoot":"","sources":["../../src/pm2-args.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAiBhE"}
@@ -0,0 +1,19 @@
1
+ export function extractGatewayPort(args) {
2
+ let portStr;
3
+ for (let i = 0; i < args.length; i++) {
4
+ const arg = args[i];
5
+ if (arg === '--command-arg') {
6
+ i++;
7
+ continue;
8
+ }
9
+ if (arg === '--port') {
10
+ portStr = args[i + 1];
11
+ i++;
12
+ }
13
+ }
14
+ if (portStr === undefined)
15
+ return null;
16
+ const port = parseInt(portStr, 10);
17
+ return isNaN(port) ? null : port;
18
+ }
19
+ //# sourceMappingURL=pm2-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pm2-args.js","sourceRoot":"","sources":["../../src/pm2-args.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,IAAc;IAC/C,IAAI,OAA2B,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YAC5B,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtB,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC"}
package/dist/src/pm2.d.ts CHANGED
@@ -9,7 +9,9 @@ export interface ProgressEvent {
9
9
  current?: number;
10
10
  total?: number;
11
11
  }
12
- export declare function startServers(servers: NamedManagedServer[], prefix: string, portBase: number, onProgress?: ProgressCallback): Promise<StartResult[]>;
12
+ export declare function startServers(servers: NamedManagedServer[], prefix: string, portBase: number, onProgress?: ProgressCallback, options?: {
13
+ configPath?: string | undefined;
14
+ }): Promise<StartResult[]>;
13
15
  export declare function stopServers(serverNames: string[], prefix: string, onProgress?: ProgressCallback): Promise<void>;
14
16
  export declare function stopAllManagedServers(): Promise<number>;
15
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pm2.d.ts","sourceRoot":"","sources":["../../src/pm2.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAY,MAAM,eAAe,CAAC;AAGhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhF,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,gBAAgB,CAAC;IACtI,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsOD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,WAAW,EAAE,CAAC,CAoKxB;AAED,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAgBvD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,iBAAiB,EAAE,MAAM,EAAE,EAC3B,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BnB;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnF;AAED,wBAAgB,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAcnD;AAED,wBAAgB,UAAU,CACxB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,GACpE,UAAU,CAAC,OAAO,KAAK,CAAC,CAY1B"}
1
+ {"version":3,"file":"pm2.d.ts","sourceRoot":"","sources":["../../src/pm2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAMtC,OAAO,KAAK,EAAkB,kBAAkB,EAAe,WAAW,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1H,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,gBAAgB,CAAC;IACtI,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4PD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,gBAAgB,EAC7B,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAO,GAChD,OAAO,CAAC,WAAW,EAAE,CAAC,CAwKxB;AAED,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAgBvD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,iBAAiB,EAAE,MAAM,EAAE,EAC3B,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BnB;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnF;AAED,wBAAgB,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAcnD;AAED,wBAAgB,UAAU,CACxB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,GACpE,UAAU,CAAC,OAAO,KAAK,CAAC,CAY1B"}