git-history-ui 1.0.5 → 2.0.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.
Files changed (38) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +7 -0
  3. package/build/frontend/index.html +13 -10
  4. package/build/frontend/main-7AXSFTJM.js +11 -0
  5. package/build/frontend/styles-YQ73RJ2V.css +1 -0
  6. package/dist/backend/dev-server.d.ts +0 -1
  7. package/dist/backend/dev-server.js +8 -4
  8. package/dist/backend/dev-server.js.map +1 -1
  9. package/dist/backend/gitService.d.ts +36 -11
  10. package/dist/backend/gitService.js +341 -197
  11. package/dist/backend/gitService.js.map +1 -1
  12. package/dist/backend/server.d.ts +8 -2
  13. package/dist/backend/server.js +145 -111
  14. package/dist/backend/server.js.map +1 -1
  15. package/dist/cli.d.ts +0 -1
  16. package/dist/cli.js +44 -22
  17. package/dist/cli.js.map +1 -1
  18. package/package.json +43 -27
  19. package/build/frontend/main-44CFNHDH.js +0 -8
  20. package/build/frontend/main-YHO6NCZZ.js +0 -8
  21. package/build/frontend/styles-26JPPBSI.css +0 -1
  22. package/build/frontend/styles-J5I4DBTU.css +0 -1
  23. package/dist/__tests__/gitService.test.d.ts +0 -2
  24. package/dist/__tests__/gitService.test.d.ts.map +0 -1
  25. package/dist/__tests__/gitService.test.js +0 -427
  26. package/dist/__tests__/gitService.test.js.map +0 -1
  27. package/dist/__tests__/setup.d.ts +0 -2
  28. package/dist/__tests__/setup.d.ts.map +0 -1
  29. package/dist/__tests__/setup.js +0 -24
  30. package/dist/__tests__/setup.js.map +0 -1
  31. package/dist/backend/dev-server.d.ts.map +0 -1
  32. package/dist/backend/gitService.d.ts.map +0 -1
  33. package/dist/backend/server.d.ts.map +0 -1
  34. package/dist/cli.d.ts.map +0 -1
  35. package/dist/config/paths.d.ts +0 -14
  36. package/dist/config/paths.d.ts.map +0 -1
  37. package/dist/config/paths.js +0 -35
  38. package/dist/config/paths.js.map +0 -1
@@ -1,239 +1,383 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.GitService = void 0;
7
- const simple_git_1 = __importDefault(require("simple-git"));
8
- class GitService {
3
+ exports.GitService = exports.NotARepositoryError = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const util_1 = require("util");
6
+ const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
7
+ const FIELD_SEP = "\x1f"; // Unit Separator (NUL is rejected by Node argv)
8
+ const RECORD_SEP = '\x1e';
9
+ const LOG_FORMAT = ['%H', '%h', '%an', '%ae', '%aI', '%P', '%s', '%b'].join(FIELD_SEP);
10
+ const REF_INDEX_TTL_MS = 5_000;
11
+ const COUNT_CACHE_TTL_MS = 10_000;
12
+ class NotARepositoryError extends Error {
9
13
  constructor() {
10
- this.git = (0, simple_git_1.default)();
14
+ super('Not a git repository');
15
+ this.name = 'NotARepositoryError';
11
16
  }
12
- async getCommits(options = {}) {
17
+ }
18
+ exports.NotARepositoryError = NotARepositoryError;
19
+ class GitService {
20
+ repoPath;
21
+ refIndexCache = null;
22
+ countCache = new Map();
23
+ repoCheckResult = null;
24
+ constructor(repoPath = process.cwd()) {
25
+ this.repoPath = repoPath;
26
+ }
27
+ async verifyRepository() {
28
+ if (this.repoCheckResult !== null)
29
+ return this.repoCheckResult;
13
30
  try {
14
- const logOptions = {
15
- maxCount: options.limit || 100
16
- };
17
- let log;
18
- if (options.file) {
19
- log = await this.git.log({
20
- ...logOptions,
21
- file: options.file
22
- });
23
- }
24
- else if (options.since) {
25
- log = await this.git.log({
26
- ...logOptions,
27
- from: options.since
28
- });
29
- }
30
- else if (options.author) {
31
- log = await this.git.log({
32
- ...logOptions,
33
- author: options.author
34
- });
31
+ await this.git(['rev-parse', '--is-inside-work-tree']);
32
+ this.repoCheckResult = true;
33
+ }
34
+ catch {
35
+ this.repoCheckResult = false;
36
+ }
37
+ return this.repoCheckResult;
38
+ }
39
+ async getRefIndex() {
40
+ const now = Date.now();
41
+ if (this.refIndexCache && now - this.refIndexCache.builtAt < REF_INDEX_TTL_MS) {
42
+ return this.refIndexCache;
43
+ }
44
+ const branchesByCommit = new Map();
45
+ const tagsByCommit = new Map();
46
+ const out = await this.git([
47
+ 'for-each-ref',
48
+ '--format=%(objectname)\t%(refname:short)\t%(refname)',
49
+ 'refs/heads',
50
+ 'refs/tags',
51
+ 'refs/remotes'
52
+ ]);
53
+ for (const line of out.split('\n')) {
54
+ if (!line)
55
+ continue;
56
+ const [hash, short, full] = line.split('\t');
57
+ if (!hash || !short)
58
+ continue;
59
+ if (full && full.startsWith('refs/tags/')) {
60
+ push(tagsByCommit, hash, short);
35
61
  }
36
62
  else {
37
- log = await this.git.log(logOptions);
63
+ push(branchesByCommit, hash, short);
38
64
  }
39
- const commits = await Promise.all(log.all.map(async (commit) => {
40
- const [branches, tags] = await Promise.all([
41
- this.getBranchesForCommit(commit.hash),
42
- this.getTagsForCommit(commit.hash)
43
- ]);
44
- return {
45
- hash: commit.hash,
46
- author: commit.author_name,
47
- date: commit.date,
48
- message: commit.message,
49
- files: await this.getFilesForCommit(commit.hash),
50
- parents: [], // We'll get this from git show if needed
51
- branches,
52
- tags
53
- };
54
- }));
55
- return commits;
56
- }
57
- catch (error) {
58
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
59
- throw new Error(`Failed to get commits: ${errorMessage}`);
65
+ }
66
+ this.refIndexCache = { branchesByCommit, tagsByCommit, builtAt: now };
67
+ return this.refIndexCache;
68
+ function push(map, key, value) {
69
+ const list = map.get(key);
70
+ if (list)
71
+ list.push(value);
72
+ else
73
+ map.set(key, [value]);
60
74
  }
61
75
  }
62
- async getCommit(hash) {
76
+ async getCommits(options = {}) {
77
+ if (!(await this.verifyRepository())) {
78
+ throw new NotARepositoryError();
79
+ }
80
+ const page = Math.max(1, options.page || 1);
81
+ const pageSize = clamp(options.pageSize || 25, 1, 500);
82
+ const skip = (page - 1) * pageSize;
83
+ const filterArgs = this.buildFilterArgs(options);
84
+ const cacheKey = filterArgs.join(' ');
85
+ const total = await this.getTotalCount(cacheKey, filterArgs);
86
+ const totalPages = Math.max(1, Math.ceil(total / pageSize));
87
+ const args = [
88
+ 'log',
89
+ `--max-count=${pageSize}`,
90
+ `--skip=${skip}`,
91
+ `--pretty=format:${LOG_FORMAT}${RECORD_SEP}`,
92
+ ...filterArgs
93
+ ];
94
+ const out = await this.git(args, { maxBuffer: 64 * 1024 * 1024 });
95
+ const refs = await this.getRefIndex();
96
+ const commits = this.parseLog(out, refs);
97
+ return {
98
+ commits,
99
+ total,
100
+ page,
101
+ pageSize,
102
+ totalPages,
103
+ hasNext: page < totalPages,
104
+ hasPrevious: page > 1
105
+ };
106
+ }
107
+ async getTotalCount(cacheKey, filterArgs) {
108
+ const now = Date.now();
109
+ const cached = this.countCache.get(cacheKey);
110
+ if (cached && cached.expiresAt > now)
111
+ return cached.total;
112
+ // Insert HEAD before the pathspec separator so that --author/--since/--grep
113
+ // apply to the count. Otherwise rev-list would only honour pathspec filters.
114
+ const sepIdx = filterArgs.indexOf('--');
115
+ const revArgs = sepIdx >= 0
116
+ ? [...filterArgs.slice(0, sepIdx), 'HEAD', ...filterArgs.slice(sepIdx)]
117
+ : [...filterArgs, 'HEAD'];
118
+ let total = 0;
63
119
  try {
64
- const log = await this.git.log({
65
- from: hash,
66
- to: hash,
67
- maxCount: 1
68
- });
69
- if (log.all.length === 0) {
70
- throw new Error('Commit not found');
71
- }
72
- const commit = log.all[0];
73
- const [branches, tags] = await Promise.all([
74
- this.getBranchesForCommit(hash),
75
- this.getTagsForCommit(hash)
76
- ]);
77
- return {
78
- hash: commit.hash,
79
- author: commit.author_name,
80
- date: commit.date,
81
- message: commit.message,
82
- files: await this.getFilesForCommit(hash),
83
- parents: [], // We'll get this from git show if needed
120
+ const out = await this.git(['rev-list', '--count', ...revArgs]);
121
+ total = parseInt(out.trim(), 10) || 0;
122
+ }
123
+ catch {
124
+ const fallback = await this.git(['log', '--oneline', ...filterArgs]).catch(() => '');
125
+ total = fallback ? fallback.split('\n').filter(Boolean).length : 0;
126
+ }
127
+ this.countCache.set(cacheKey, { total, expiresAt: now + COUNT_CACHE_TTL_MS });
128
+ return total;
129
+ }
130
+ buildFilterArgs(options) {
131
+ const args = [];
132
+ if (options.author)
133
+ args.push(`--author=${options.author}`);
134
+ if (options.since)
135
+ args.push(`--since=${options.since}`);
136
+ if (options.until)
137
+ args.push(`--until=${options.until}`);
138
+ if (options.search)
139
+ args.push(`--grep=${options.search}`, '--regexp-ignore-case');
140
+ if (options.file)
141
+ args.push('--', options.file);
142
+ return args;
143
+ }
144
+ parseLog(raw, refs) {
145
+ if (!raw)
146
+ return [];
147
+ const commits = [];
148
+ for (const record of raw.split(RECORD_SEP)) {
149
+ const trimmed = record.trim();
150
+ if (!trimmed)
151
+ continue;
152
+ const fields = trimmed.split(FIELD_SEP);
153
+ if (fields.length < 8)
154
+ continue;
155
+ const [hash, shortHash, author, authorEmail, date, parentsStr, subject, ...rest] = fields;
156
+ const body = rest.join(FIELD_SEP);
157
+ const parents = parentsStr ? parentsStr.split(' ').filter(Boolean) : [];
158
+ const branches = refs.branchesByCommit.get(hash) ?? [];
159
+ const tags = refs.tagsByCommit.get(hash) ?? [];
160
+ commits.push({
161
+ hash,
162
+ shortHash,
163
+ author,
164
+ authorEmail,
165
+ date,
166
+ subject,
167
+ body,
168
+ message: body ? `${subject}\n\n${body}` : subject,
169
+ parents,
84
170
  branches,
85
- tags
86
- };
171
+ tags,
172
+ isMerge: parents.length > 1
173
+ });
87
174
  }
88
- catch (error) {
89
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
90
- throw new Error(`Failed to get commit: ${errorMessage}`);
175
+ return commits;
176
+ }
177
+ async getCommit(hash) {
178
+ if (!isPlausibleHash(hash))
179
+ throw new Error('Invalid commit hash');
180
+ const out = await this.git([
181
+ 'log',
182
+ '--max-count=1',
183
+ `--pretty=format:${LOG_FORMAT}${RECORD_SEP}`,
184
+ hash
185
+ ]);
186
+ const refs = await this.getRefIndex();
187
+ const commits = this.parseLog(out, refs);
188
+ if (commits.length === 0)
189
+ throw new Error('Commit not found');
190
+ return commits[0];
191
+ }
192
+ async getAuthors() {
193
+ const out = await this.git(['log', '--all', '--pretty=format:%an']);
194
+ const seen = new Set();
195
+ for (const line of out.split('\n')) {
196
+ const v = line.trim();
197
+ if (v)
198
+ seen.add(v);
91
199
  }
200
+ return Array.from(seen).sort((a, b) => a.localeCompare(b));
92
201
  }
93
202
  async getDiff(hash) {
94
- try {
95
- const diff = await this.git.diff([hash + '^', hash]);
96
- return this.parseDiff(diff);
203
+ if (!isPlausibleHash(hash))
204
+ throw new Error('Invalid commit hash');
205
+ const parentsOut = await this.git(['log', '-1', '--pretty=format:%P', hash]);
206
+ const parents = parentsOut.trim().split(/\s+/).filter(Boolean);
207
+ let raw;
208
+ if (parents.length === 0) {
209
+ raw = await this.git(['diff-tree', '--root', '-p', '-M', '--no-color', hash]);
97
210
  }
98
- catch (error) {
99
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
100
- throw new Error(`Failed to get diff: ${errorMessage}`);
211
+ else {
212
+ raw = await this.git(['diff', '-M', '--no-color', `${hash}^1`, hash]);
101
213
  }
214
+ return parseUnifiedDiff(raw);
102
215
  }
103
216
  async getBlame(filePath) {
104
- try {
105
- const blame = await this.git.raw(['blame', '--porcelain', filePath]);
106
- return this.parseBlame(blame);
107
- }
108
- catch (error) {
109
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
110
- throw new Error(`Failed to get blame: ${errorMessage}`);
111
- }
217
+ if (filePath.includes('\0'))
218
+ throw new Error('Invalid path');
219
+ const raw = await this.git(['blame', '--porcelain', '--', filePath]);
220
+ return parsePorcelainBlame(raw);
112
221
  }
113
222
  async getTags() {
114
- try {
115
- const tags = await this.git.tags();
116
- return tags.all;
117
- }
118
- catch (error) {
119
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
120
- throw new Error(`Failed to get tags: ${errorMessage}`);
121
- }
223
+ const out = await this.git(['tag', '--list']);
224
+ return out.split('\n').map((s) => s.trim()).filter(Boolean);
122
225
  }
123
226
  async getBranches() {
227
+ const out = await this.git([
228
+ 'for-each-ref',
229
+ '--format=%(refname:short)',
230
+ 'refs/heads',
231
+ 'refs/remotes'
232
+ ]);
233
+ return out.split('\n').map((s) => s.trim()).filter(Boolean);
234
+ }
235
+ async git(args, opts = {}) {
124
236
  try {
125
- const branches = await this.git.branch();
126
- return branches.all;
237
+ const { stdout } = await execFileAsync('git', args, {
238
+ cwd: this.repoPath,
239
+ maxBuffer: opts.maxBuffer ?? 16 * 1024 * 1024,
240
+ env: {
241
+ ...process.env,
242
+ GIT_PAGER: 'cat',
243
+ GIT_TERMINAL_PROMPT: '0',
244
+ LC_ALL: 'C'
245
+ },
246
+ encoding: 'utf8'
247
+ });
248
+ return stdout;
127
249
  }
128
- catch (error) {
129
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
130
- throw new Error(`Failed to get branches: ${errorMessage}`);
250
+ catch (err) {
251
+ const e = err;
252
+ const msg = e.stderr?.toString().trim() || e.message;
253
+ throw new Error(`git ${args[0]} failed: ${msg}`);
131
254
  }
132
255
  }
133
- async getFilesForCommit(hash) {
134
- try {
135
- const diff = await this.git.diff([hash + '^', hash, '--name-only']);
136
- return diff.split('\n').filter(Boolean);
256
+ }
257
+ exports.GitService = GitService;
258
+ function isPlausibleHash(hash) {
259
+ return typeof hash === 'string' && /^[0-9a-fA-F]{4,40}$/.test(hash);
260
+ }
261
+ function clamp(value, min, max) {
262
+ return Math.max(min, Math.min(max, value));
263
+ }
264
+ function parseUnifiedDiff(raw) {
265
+ const files = [];
266
+ if (!raw)
267
+ return files;
268
+ let current = null;
269
+ let currentLines = [];
270
+ const flush = () => {
271
+ if (!current)
272
+ return;
273
+ current.changes = currentLines.join('\n');
274
+ files.push(current);
275
+ current = null;
276
+ currentLines = [];
277
+ };
278
+ for (const line of raw.split('\n')) {
279
+ if (line.startsWith('diff --git ')) {
280
+ flush();
281
+ const match = line.match(/^diff --git a\/(.+?) b\/(.+?)$/);
282
+ const a = match?.[1];
283
+ const b = match?.[2];
284
+ current = {
285
+ file: b ?? a ?? '',
286
+ oldFile: a !== b ? a : undefined,
287
+ status: 'modified',
288
+ additions: 0,
289
+ deletions: 0,
290
+ changes: ''
291
+ };
292
+ currentLines = [line];
137
293
  }
138
- catch (error) {
139
- return [];
294
+ else if (!current) {
295
+ continue;
140
296
  }
141
- }
142
- async getBranchesForCommit(hash) {
143
- try {
144
- const branches = await this.git.branch(['--contains', hash]);
145
- return branches.all;
297
+ else if (line.startsWith('new file mode')) {
298
+ current.status = 'added';
299
+ currentLines.push(line);
146
300
  }
147
- catch (error) {
148
- return [];
301
+ else if (line.startsWith('deleted file mode')) {
302
+ current.status = 'deleted';
303
+ currentLines.push(line);
149
304
  }
150
- }
151
- async getTagsForCommit(hash) {
152
- try {
153
- const tags = await this.git.raw(['tag', '--contains', hash]);
154
- return tags.split('\n').filter(Boolean);
305
+ else if (line.startsWith('rename from ')) {
306
+ current.status = 'renamed';
307
+ current.oldFile = line.substring('rename from '.length);
308
+ currentLines.push(line);
155
309
  }
156
- catch (error) {
157
- return [];
310
+ else if (line.startsWith('rename to ')) {
311
+ current.file = line.substring('rename to '.length);
312
+ currentLines.push(line);
158
313
  }
159
- }
160
- parseDiff(diff) {
161
- const files = [];
162
- const lines = diff.split('\n');
163
- let currentFile = null;
164
- let currentFileLines = [];
165
- for (const line of lines) {
166
- if (line.startsWith('diff --git')) {
167
- if (currentFile) {
168
- currentFile.changes = currentFileLines.join('\n');
169
- files.push(currentFile);
170
- }
171
- const fileMatch = line.match(/b\/(.+)$/);
172
- currentFile = {
173
- file: fileMatch ? fileMatch[1] : '',
174
- additions: 0,
175
- deletions: 0,
176
- changes: ''
177
- };
178
- currentFileLines = [];
179
- }
180
- else if (line.startsWith('+') && !line.startsWith('+++')) {
181
- if (currentFile)
182
- currentFile.additions++;
183
- currentFileLines.push(line);
184
- }
185
- else if (line.startsWith('-') && !line.startsWith('---')) {
186
- if (currentFile)
187
- currentFile.deletions++;
188
- currentFileLines.push(line);
189
- }
190
- else if (line.startsWith('@@') || line.startsWith('---') || line.startsWith('+++') || line.trim() === '') {
191
- // Include git diff headers and context lines
192
- currentFileLines.push(line);
193
- }
194
- else if (line.startsWith(' ')) {
195
- // Context lines (unchanged)
196
- currentFileLines.push(line);
197
- }
314
+ else if (line.startsWith('copy from ')) {
315
+ current.status = 'copied';
316
+ current.oldFile = line.substring('copy from '.length);
317
+ currentLines.push(line);
198
318
  }
199
- if (currentFile) {
200
- currentFile.changes = currentFileLines.join('\n');
201
- files.push(currentFile);
319
+ else if (line.startsWith('Binary files')) {
320
+ current.status = 'binary';
321
+ currentLines.push(line);
322
+ }
323
+ else if (line.startsWith('+') && !line.startsWith('+++')) {
324
+ current.additions++;
325
+ currentLines.push(line);
326
+ }
327
+ else if (line.startsWith('-') && !line.startsWith('---')) {
328
+ current.deletions++;
329
+ currentLines.push(line);
330
+ }
331
+ else {
332
+ currentLines.push(line);
202
333
  }
203
- return files;
204
334
  }
205
- parseBlame(blame) {
206
- const lines = [];
207
- const blameLines = blame.split('\n');
208
- let currentLine = null;
209
- for (const line of blameLines) {
210
- if (line.startsWith('author ')) {
211
- if (currentLine) {
212
- lines.push(currentLine);
213
- }
214
- const hash = blameLines[blameLines.indexOf(line) - 1].split(' ')[0];
215
- const author = line.substring(7);
216
- const dateLine = blameLines[blameLines.indexOf(line) + 1];
217
- const date = dateLine.startsWith('author-time ')
218
- ? new Date(parseInt(dateLine.substring(12)) * 1000).toISOString()
219
- : '';
220
- currentLine = {
221
- line: lines.length + 1,
222
- hash,
223
- author,
224
- date,
225
- content: ''
226
- };
227
- }
228
- else if (line.startsWith('\t') && currentLine) {
229
- currentLine.content = line.substring(1);
230
- }
335
+ flush();
336
+ return files;
337
+ }
338
+ function parsePorcelainBlame(raw) {
339
+ if (!raw)
340
+ return [];
341
+ const lines = raw.split('\n');
342
+ const out = [];
343
+ const meta = new Map();
344
+ let i = 0;
345
+ let lineNumber = 0;
346
+ while (i < lines.length) {
347
+ const header = lines[i];
348
+ if (!header) {
349
+ i++;
350
+ continue;
231
351
  }
232
- if (currentLine) {
233
- lines.push(currentLine);
352
+ const m = header.match(/^([0-9a-f]{40}) \d+ (\d+)(?: \d+)?$/);
353
+ if (!m) {
354
+ i++;
355
+ continue;
234
356
  }
235
- return lines;
357
+ const hash = m[1];
358
+ lineNumber = parseInt(m[2], 10);
359
+ i++;
360
+ let author = meta.get(hash)?.author ?? '';
361
+ let epoch = meta.get(hash)?.epoch ?? 0;
362
+ while (i < lines.length && !lines[i].startsWith('\t')) {
363
+ const h = lines[i];
364
+ if (h.startsWith('author '))
365
+ author = h.substring(7);
366
+ else if (h.startsWith('author-time '))
367
+ epoch = parseInt(h.substring(12), 10);
368
+ i++;
369
+ }
370
+ meta.set(hash, { author, epoch });
371
+ const content = i < lines.length && lines[i].startsWith('\t') ? lines[i].substring(1) : '';
372
+ out.push({
373
+ line: lineNumber,
374
+ hash,
375
+ author,
376
+ date: epoch ? new Date(epoch * 1000).toISOString() : '',
377
+ content
378
+ });
379
+ i++;
236
380
  }
381
+ return out;
237
382
  }
238
- exports.GitService = GitService;
239
383
  //# sourceMappingURL=gitService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gitService.js","sourceRoot":"","sources":["../../src/backend/gitService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitService.js","sourceRoot":"","sources":["../../src/backend/gitService.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,15 @@
1
+ import { type Server as HttpServer } from 'http';
1
2
  export interface ServerOptions {
2
3
  port?: number;
3
4
  host?: string;
4
5
  file?: string;
5
6
  since?: string;
6
7
  author?: string;
8
+ cwd?: string;
7
9
  }
8
- export declare function startServer(port?: number, host?: string, options?: Partial<ServerOptions>): Promise<void>;
9
- //# sourceMappingURL=server.d.ts.map
10
+ export interface BootResult {
11
+ server: HttpServer;
12
+ url: string;
13
+ close: () => Promise<void>;
14
+ }
15
+ export declare function startServer(port?: number, host?: string, options?: Partial<ServerOptions>): Promise<BootResult>;