@kongyo2/mcp-request-context 1.0.2 → 1.0.3

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.
@@ -5,27 +5,54 @@ export declare class StorageError extends Error {
5
5
  readonly code: StorageErrorCode;
6
6
  constructor(message: string, code: StorageErrorCode);
7
7
  }
8
- export type StorageErrorCode = 'NOT_FOUND' | 'VALIDATION_ERROR' | 'IO_ERROR' | 'ALREADY_ANSWERED' | 'INVALID_STATUS';
8
+ export type StorageErrorCode = 'NOT_FOUND' | 'VALIDATION_ERROR' | 'ALREADY_ANSWERED' | 'INVALID_STATUS';
9
9
  export type StorageResult<T> = Result<T, StorageError>;
10
+ /**
11
+ * インメモリストレージ
12
+ * リクエストデータをメモリ上に保持し、プロセス終了時に破棄される
13
+ */
10
14
  export declare class ContextStorage extends EventEmitter {
11
- private storagePath;
12
- private watcher?;
13
- private pendingEmit;
14
- private readonly DEBOUNCE_MS;
15
- constructor(basePath: string);
16
- initialize(): Promise<StorageResult<void>>;
17
- start(): Promise<StorageResult<void>>;
18
- stop(): Promise<void>;
19
- private scheduleChangeEmit;
20
- createRequest(input: CreateContextRequestInput): Promise<StorageResult<ContextRequest>>;
21
- getRequest(id: string): Promise<StorageResult<ContextRequest>>;
22
- answerRequest(input: ContextResponseInput): Promise<StorageResult<ContextRequest>>;
23
- cancelRequest(id: string): Promise<StorageResult<ContextRequest>>;
24
- getAllRequests(): Promise<StorageResult<ContextRequest[]>>;
25
- getPendingRequests(): Promise<StorageResult<ContextRequest[]>>;
26
- deleteRequest(id: string): Promise<StorageResult<void>>;
27
- cleanupExpired(): Promise<StorageResult<number>>;
28
- private updateStatus;
29
- getStoragePath(): string;
15
+ private requests;
16
+ constructor();
17
+ /**
18
+ * リクエストを作成
19
+ */
20
+ createRequest(input: CreateContextRequestInput): StorageResult<ContextRequest>;
21
+ /**
22
+ * IDでリクエストを取得
23
+ */
24
+ getRequest(id: string): StorageResult<ContextRequest>;
25
+ /**
26
+ * リクエストに回答
27
+ */
28
+ answerRequest(input: ContextResponseInput): StorageResult<ContextRequest>;
29
+ /**
30
+ * リクエストをキャンセル
31
+ */
32
+ cancelRequest(id: string): StorageResult<ContextRequest>;
33
+ /**
34
+ * 全リクエストを取得(新しい順)
35
+ */
36
+ getAllRequests(): ContextRequest[];
37
+ /**
38
+ * 保留中のリクエストを取得
39
+ */
40
+ getPendingRequests(): ContextRequest[];
41
+ /**
42
+ * リクエストを削除
43
+ */
44
+ deleteRequest(id: string): StorageResult<void>;
45
+ /**
46
+ * 期限切れリクエストをクリーンアップ
47
+ */
48
+ cleanupExpired(): number;
49
+ /**
50
+ * ストレージをクリア
51
+ */
52
+ clear(): void;
53
+ /**
54
+ * リソース解放
55
+ */
56
+ stop(): void;
30
57
  }
31
58
  //# sourceMappingURL=storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/core/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAE7C,OAAO,EACL,cAAc,EAEd,yBAAyB,EAEzB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAGpB,qBAAa,YAAa,SAAQ,KAAK;aAGnB,IAAI,EAAE,gBAAgB;gBADtC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,gBAAgB;CAKzC;AAED,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,kBAAkB,GAClB,UAAU,GACV,kBAAkB,GAClB,gBAAgB,CAAC;AAErB,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAEvD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAqB;IACrC,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAO;gBAEvB,QAAQ,EAAE,MAAM;IAKtB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAY1C,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IA8BrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,OAAO,CAAC,kBAAkB;IAUpB,aAAa,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAqDvF,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IA0B9D,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAmClF,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAiCjE,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;IAgC1D,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;IAU9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAgBvD,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAyBxC,YAAY;IA2B1B,cAAc,IAAI,MAAM;CAGzB"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/core/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAC7C,OAAO,EACL,cAAc,EAEd,yBAAyB,EAEzB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAGpB,qBAAa,YAAa,SAAQ,KAAK;aAGnB,IAAI,EAAE,gBAAgB;gBADtC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,gBAAgB;CAKzC;AAED,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,CAAC;AAErB,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAEvD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAA0C;;IAM1D;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,yBAAyB,GAAG,aAAa,CAAC,cAAc,CAAC;IA4C9E;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC;IAQrD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG,aAAa,CAAC,cAAc,CAAC;IAyBzE;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC;IAuBxD;;OAEG;IACH,cAAc,IAAI,cAAc,EAAE;IAQlC;;OAEG;IACH,kBAAkB,IAAI,cAAc,EAAE;IAItC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC;IAQ9C;;OAEG;IACH,cAAc,IAAI,MAAM;IAuBxB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI;CAGb"}
@@ -1,8 +1,5 @@
1
1
  import { EventEmitter } from 'events';
2
- import { promises as fs } from 'fs';
3
- import { join } from 'path';
4
2
  import { ok, err } from 'neverthrow';
5
- import chokidar from 'chokidar';
6
3
  import { ContextRequestSchema, CreateContextRequestSchema, generateId } from './types.js';
7
4
  // Error types
8
5
  export class StorageError extends Error {
@@ -13,69 +10,19 @@ export class StorageError extends Error {
13
10
  this.name = 'StorageError';
14
11
  }
15
12
  }
13
+ /**
14
+ * インメモリストレージ
15
+ * リクエストデータをメモリ上に保持し、プロセス終了時に破棄される
16
+ */
16
17
  export class ContextStorage extends EventEmitter {
17
- storagePath;
18
- watcher;
19
- pendingEmit = null;
20
- DEBOUNCE_MS = 300;
21
- constructor(basePath) {
18
+ requests = new Map();
19
+ constructor() {
22
20
  super();
23
- this.storagePath = join(basePath, '.mcp-request-context', 'requests');
24
21
  }
25
- async initialize() {
26
- try {
27
- await fs.mkdir(this.storagePath, { recursive: true });
28
- return ok(undefined);
29
- }
30
- catch (error) {
31
- return err(new StorageError(`Failed to initialize storage: ${error instanceof Error ? error.message : String(error)}`, 'IO_ERROR'));
32
- }
33
- }
34
- async start() {
35
- const initResult = await this.initialize();
36
- if (initResult.isErr()) {
37
- return initResult;
38
- }
39
- try {
40
- this.watcher = chokidar.watch(join(this.storagePath, '*.json'), {
41
- ignoreInitial: true,
42
- persistent: true,
43
- ignorePermissionErrors: true
44
- });
45
- this.watcher.on('add', () => this.scheduleChangeEmit());
46
- this.watcher.on('change', () => this.scheduleChangeEmit());
47
- this.watcher.on('unlink', () => this.scheduleChangeEmit());
48
- this.watcher.on('error', (error) => {
49
- console.error('Storage watcher error:', error);
50
- });
51
- return ok(undefined);
52
- }
53
- catch (error) {
54
- return err(new StorageError(`Failed to start file watcher: ${error instanceof Error ? error.message : String(error)}`, 'IO_ERROR'));
55
- }
56
- }
57
- async stop() {
58
- if (this.pendingEmit) {
59
- clearTimeout(this.pendingEmit);
60
- this.pendingEmit = null;
61
- }
62
- if (this.watcher) {
63
- this.watcher.removeAllListeners();
64
- await this.watcher.close();
65
- this.watcher = undefined;
66
- }
67
- this.removeAllListeners();
68
- }
69
- scheduleChangeEmit() {
70
- if (this.pendingEmit) {
71
- clearTimeout(this.pendingEmit);
72
- }
73
- this.pendingEmit = setTimeout(() => {
74
- this.pendingEmit = null;
75
- this.emit('change');
76
- }, this.DEBOUNCE_MS);
77
- }
78
- async createRequest(input) {
22
+ /**
23
+ * リクエストを作成
24
+ */
25
+ createRequest(input) {
79
26
  // Validate input
80
27
  const parseResult = CreateContextRequestSchema.safeParse(input);
81
28
  if (!parseResult.success) {
@@ -104,41 +51,28 @@ export class ContextStorage extends EventEmitter {
104
51
  if (!validationResult.success) {
105
52
  return err(new StorageError(`Request validation error: ${validationResult.error.message}`, 'VALIDATION_ERROR'));
106
53
  }
107
- // Save to file
108
- const filePath = join(this.storagePath, `${id}.json`);
109
- try {
110
- await fs.writeFile(filePath, JSON.stringify(request, null, 2), 'utf-8');
111
- this.emit('request-created', request);
112
- return ok(request);
113
- }
114
- catch (error) {
115
- return err(new StorageError(`Failed to save request: ${error instanceof Error ? error.message : String(error)}`, 'IO_ERROR'));
116
- }
54
+ this.requests.set(id, request);
55
+ this.emit('request-created', request);
56
+ return ok(request);
117
57
  }
118
- async getRequest(id) {
119
- const filePath = join(this.storagePath, `${id}.json`);
120
- try {
121
- const content = await fs.readFile(filePath, 'utf-8');
122
- const request = JSON.parse(content);
123
- const validationResult = ContextRequestSchema.safeParse(request);
124
- if (!validationResult.success) {
125
- return err(new StorageError(`Invalid request data: ${validationResult.error.message}`, 'VALIDATION_ERROR'));
126
- }
127
- return ok(validationResult.data);
128
- }
129
- catch (error) {
130
- if (error.code === 'ENOENT') {
131
- return err(new StorageError(`Request not found: ${id}`, 'NOT_FOUND'));
132
- }
133
- return err(new StorageError(`Failed to read request: ${error instanceof Error ? error.message : String(error)}`, 'IO_ERROR'));
58
+ /**
59
+ * IDでリクエストを取得
60
+ */
61
+ getRequest(id) {
62
+ const request = this.requests.get(id);
63
+ if (!request) {
64
+ return err(new StorageError(`Request not found: ${id}`, 'NOT_FOUND'));
134
65
  }
66
+ return ok(request);
135
67
  }
136
- async answerRequest(input) {
137
- const requestResult = await this.getRequest(input.requestId);
138
- if (requestResult.isErr()) {
139
- return requestResult;
68
+ /**
69
+ * リクエストに回答
70
+ */
71
+ answerRequest(input) {
72
+ const request = this.requests.get(input.requestId);
73
+ if (!request) {
74
+ return err(new StorageError(`Request not found: ${input.requestId}`, 'NOT_FOUND'));
140
75
  }
141
- const request = requestResult.value;
142
76
  if (request.status !== 'pending') {
143
77
  return err(new StorageError(`Cannot answer request with status: ${request.status}`, 'ALREADY_ANSWERED'));
144
78
  }
@@ -148,22 +82,18 @@ export class ContextStorage extends EventEmitter {
148
82
  response: input.response,
149
83
  answeredAt: new Date().toISOString()
150
84
  };
151
- const filePath = join(this.storagePath, `${input.requestId}.json`);
152
- try {
153
- await fs.writeFile(filePath, JSON.stringify(updatedRequest, null, 2), 'utf-8');
154
- this.emit('request-answered', updatedRequest);
155
- return ok(updatedRequest);
156
- }
157
- catch (error) {
158
- return err(new StorageError(`Failed to save response: ${error instanceof Error ? error.message : String(error)}`, 'IO_ERROR'));
159
- }
160
- }
161
- async cancelRequest(id) {
162
- const requestResult = await this.getRequest(id);
163
- if (requestResult.isErr()) {
164
- return requestResult;
85
+ this.requests.set(input.requestId, updatedRequest);
86
+ this.emit('request-answered', updatedRequest);
87
+ return ok(updatedRequest);
88
+ }
89
+ /**
90
+ * リクエストをキャンセル
91
+ */
92
+ cancelRequest(id) {
93
+ const request = this.requests.get(id);
94
+ if (!request) {
95
+ return err(new StorageError(`Request not found: ${id}`, 'NOT_FOUND'));
165
96
  }
166
- const request = requestResult.value;
167
97
  if (request.status !== 'pending') {
168
98
  return err(new StorageError(`Cannot cancel request with status: ${request.status}`, 'INVALID_STATUS'));
169
99
  }
@@ -171,101 +101,66 @@ export class ContextStorage extends EventEmitter {
171
101
  ...request,
172
102
  status: 'cancelled'
173
103
  };
174
- const filePath = join(this.storagePath, `${id}.json`);
175
- try {
176
- await fs.writeFile(filePath, JSON.stringify(updatedRequest, null, 2), 'utf-8');
177
- this.emit('request-cancelled', updatedRequest);
178
- return ok(updatedRequest);
179
- }
180
- catch (error) {
181
- return err(new StorageError(`Failed to cancel request: ${error instanceof Error ? error.message : String(error)}`, 'IO_ERROR'));
182
- }
183
- }
184
- async getAllRequests() {
185
- try {
186
- const files = await fs.readdir(this.storagePath);
187
- const requests = [];
188
- for (const file of files) {
189
- if (file.endsWith('.json')) {
190
- const id = file.replace('.json', '');
191
- const result = await this.getRequest(id);
192
- if (result.isOk()) {
193
- requests.push(result.value);
194
- }
195
- }
196
- }
197
- // Sort by createdAt descending (newest first)
198
- requests.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
199
- return ok(requests);
200
- }
201
- catch (error) {
202
- if (error.code === 'ENOENT') {
203
- return ok([]);
204
- }
205
- return err(new StorageError(`Failed to list requests: ${error instanceof Error ? error.message : String(error)}`, 'IO_ERROR'));
206
- }
207
- }
208
- async getPendingRequests() {
209
- const allResult = await this.getAllRequests();
210
- if (allResult.isErr()) {
211
- return allResult;
212
- }
213
- const pending = allResult.value.filter(r => r.status === 'pending');
214
- return ok(pending);
215
- }
216
- async deleteRequest(id) {
217
- const filePath = join(this.storagePath, `${id}.json`);
218
- try {
219
- await fs.unlink(filePath);
220
- return ok(undefined);
221
- }
222
- catch (error) {
223
- if (error.code === 'ENOENT') {
224
- return err(new StorageError(`Request not found: ${id}`, 'NOT_FOUND'));
225
- }
226
- return err(new StorageError(`Failed to delete request: ${error instanceof Error ? error.message : String(error)}`, 'IO_ERROR'));
227
- }
228
- }
229
- async cleanupExpired() {
230
- const allResult = await this.getAllRequests();
231
- if (allResult.isErr()) {
232
- return err(allResult.error);
233
- }
104
+ this.requests.set(id, updatedRequest);
105
+ this.emit('request-cancelled', updatedRequest);
106
+ return ok(updatedRequest);
107
+ }
108
+ /**
109
+ * 全リクエストを取得(新しい順)
110
+ */
111
+ getAllRequests() {
112
+ const requests = Array.from(this.requests.values());
113
+ requests.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
114
+ return requests;
115
+ }
116
+ /**
117
+ * 保留中のリクエストを取得
118
+ */
119
+ getPendingRequests() {
120
+ return this.getAllRequests().filter(r => r.status === 'pending');
121
+ }
122
+ /**
123
+ * リクエストを削除
124
+ */
125
+ deleteRequest(id) {
126
+ if (!this.requests.has(id)) {
127
+ return err(new StorageError(`Request not found: ${id}`, 'NOT_FOUND'));
128
+ }
129
+ this.requests.delete(id);
130
+ return ok(undefined);
131
+ }
132
+ /**
133
+ * 期限切れリクエストをクリーンアップ
134
+ */
135
+ cleanupExpired() {
234
136
  const now = new Date();
235
137
  let cleaned = 0;
236
- for (const request of allResult.value) {
138
+ for (const request of this.requests.values()) {
237
139
  if (request.status === 'pending' &&
238
140
  request.expiresAt &&
239
141
  new Date(request.expiresAt) < now) {
240
- const updateResult = await this.updateStatus(request.id, 'expired');
241
- if (updateResult.isOk()) {
242
- cleaned++;
243
- }
142
+ const updatedRequest = {
143
+ ...request,
144
+ status: 'expired'
145
+ };
146
+ this.requests.set(request.id, updatedRequest);
147
+ this.emit('request-updated', updatedRequest);
148
+ cleaned++;
244
149
  }
245
150
  }
246
- return ok(cleaned);
151
+ return cleaned;
247
152
  }
248
- async updateStatus(id, status) {
249
- const requestResult = await this.getRequest(id);
250
- if (requestResult.isErr()) {
251
- return requestResult;
252
- }
253
- const updatedRequest = {
254
- ...requestResult.value,
255
- status
256
- };
257
- const filePath = join(this.storagePath, `${id}.json`);
258
- try {
259
- await fs.writeFile(filePath, JSON.stringify(updatedRequest, null, 2), 'utf-8');
260
- this.emit('request-updated', updatedRequest);
261
- return ok(updatedRequest);
262
- }
263
- catch (error) {
264
- return err(new StorageError(`Failed to update request: ${error instanceof Error ? error.message : String(error)}`, 'IO_ERROR'));
265
- }
153
+ /**
154
+ * ストレージをクリア
155
+ */
156
+ clear() {
157
+ this.requests.clear();
266
158
  }
267
- getStoragePath() {
268
- return this.storagePath;
159
+ /**
160
+ * リソース解放
161
+ */
162
+ stop() {
163
+ this.removeAllListeners();
269
164
  }
270
165
  }
271
166
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/core/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/core/storage.ts"],"names":[],"mappings":"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"}
@@ -2,23 +2,23 @@ import { ContextStorage } from '../core/storage.js';
2
2
  export interface DashboardOptions {
3
3
  autoOpen?: boolean;
4
4
  port?: number;
5
+ storage?: ContextStorage;
5
6
  }
6
7
  export declare class DashboardServer {
7
8
  private app;
8
9
  private storage;
9
- private projectPath;
10
10
  private options;
11
+ private ownsStorage;
11
12
  private clients;
12
13
  private heartbeatInterval?;
13
14
  private readonly HEARTBEAT_INTERVAL_MS;
14
- constructor(projectPath: string, options?: DashboardOptions);
15
+ constructor(options?: DashboardOptions);
15
16
  start(): Promise<string>;
16
17
  private setupStorageEvents;
17
18
  private sendInitialData;
18
19
  private registerApiRoutes;
19
20
  private broadcast;
20
21
  private startHeartbeat;
21
- private saveSession;
22
22
  stop(): Promise<void>;
23
23
  getStorage(): ContextStorage;
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,iBAAiB,CAAC,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;gBAEnC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAOzD,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAuE9B,OAAO,CAAC,kBAAkB;YAqCZ,eAAe;IAY7B,OAAO,CAAC,iBAAiB;IAwFzB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,cAAc;YAcR,WAAW;IAiBnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B3B,UAAU,IAAI,cAAc;CAG7B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,iBAAiB,CAAC,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;gBAEnC,OAAO,GAAE,gBAAqB;IAQpC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IA+D9B,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,iBAAiB;IAwEzB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,cAAc;IAchB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB3B,UAAU,IAAI,cAAc;CAG7B"}