difit 3.1.18 → 4.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.
- package/README.ja.md +30 -3
- package/README.ko.md +30 -3
- package/README.md +30 -3
- package/README.zh.md +30 -3
- package/dist/cli/github.d.ts +65 -0
- package/dist/cli/github.js +296 -0
- package/dist/cli/github.test.d.ts +1 -0
- package/dist/cli/github.test.js +341 -0
- package/dist/cli/index.js +26 -1
- package/dist/cli/index.test.js +206 -4
- package/dist/cli/utils.d.ts +2 -8
- package/dist/cli/utils.js +4 -43
- package/dist/cli/utils.test.js +50 -67
- package/dist/client/assets/{_basePickBy-DyiQWUmK.js → _basePickBy-B9N-f0iT.js} +1 -1
- package/dist/client/assets/{_baseUniq-DivSZEOF.js → _baseUniq-tbL7nVvN.js} +1 -1
- package/dist/client/assets/{arc-c0kacVOL.js → arc-BOY-7mep.js} +1 -1
- package/dist/client/assets/{architectureDiagram-2XIMDMQ5-ubymLNEe.js → architectureDiagram-2XIMDMQ5-59AvHaSB.js} +1 -1
- package/dist/client/assets/{blockDiagram-WCTKOSBZ-F9D8w4_S.js → blockDiagram-WCTKOSBZ-DXIlumQk.js} +1 -1
- package/dist/client/assets/{c4Diagram-IC4MRINW-JE9Kx4yQ.js → c4Diagram-IC4MRINW-BbfZ0uRn.js} +1 -1
- package/dist/client/assets/channel-cZXsTJxA.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-CYOCoDMc.js → chunk-4BX2VUAB-l7rcB2IW.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-PRBuiJg9.js → chunk-55IACEB6-CrZL3qv9.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-C0eJ7JsI.js → chunk-FMBD7UC4-CrKv7ndg.js} +1 -1
- package/dist/client/assets/{chunk-JSJVCQXG-QZotPSqo.js → chunk-JSJVCQXG-DyBDhAEM.js} +1 -1
- package/dist/client/assets/{chunk-KX2RTZJC-B8du3tt8.js → chunk-KX2RTZJC-By5mkZmU.js} +1 -1
- package/dist/client/assets/{chunk-NQ4KR5QH-B10ldi5m.js → chunk-NQ4KR5QH-C30p9xRx.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-CpwW9rUQ.js → chunk-QZHKN3VN-DVlhR2wU.js} +1 -1
- package/dist/client/assets/{chunk-WL4C6EOR-DwKPHpbL.js → chunk-WL4C6EOR-Cn7a6CO3.js} +1 -1
- package/dist/client/assets/classDiagram-VBA2DB6C-B_coIPEy.js +1 -0
- package/dist/client/assets/classDiagram-v2-RAHNMMFH-B_coIPEy.js +1 -0
- package/dist/client/assets/clone-BjaT2HOk.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-p76yal75.js → cose-bilkent-S5V4N54A-LyauIk_9.js} +1 -1
- package/dist/client/assets/{dagre-KLK3FWXG-CdDyed3V.js → dagre-KLK3FWXG-DRWb2KE3.js} +1 -1
- package/dist/client/assets/{diagram-E7M64L7V-BaC8dXuW.js → diagram-E7M64L7V-ChT6mNWK.js} +1 -1
- package/dist/client/assets/{diagram-IFDJBPK2-BGf8xwJI.js → diagram-IFDJBPK2-CqbTduoP.js} +1 -1
- package/dist/client/assets/{diagram-P4PSJMXO-D3j16gBZ.js → diagram-P4PSJMXO-Bzv5Z3ri.js} +1 -1
- package/dist/client/assets/{erDiagram-INFDFZHY-DFpDdocf.js → erDiagram-INFDFZHY-CvXfUZ4L.js} +1 -1
- package/dist/client/assets/{flowDiagram-PKNHOUZH-Cz4mb4IF.js → flowDiagram-PKNHOUZH-CxmpNUKq.js} +1 -1
- package/dist/client/assets/{ganttDiagram-A5KZAMGK-CNzY9ua5.js → ganttDiagram-A5KZAMGK-9LpZCsg6.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-K3NZZRJ6-DCSxL8EQ.js → gitGraphDiagram-K3NZZRJ6-C6yZOrQJ.js} +1 -1
- package/dist/client/assets/{graph-BC2BV1-T.js → graph-bUZ7uHLW.js} +1 -1
- package/dist/client/assets/index-BLNN1bfE.js +98 -0
- package/dist/client/assets/index-VxkpzDXr.css +1 -0
- package/dist/client/assets/{infoDiagram-LFFYTUFH-BKSspZbH.js → infoDiagram-LFFYTUFH-Djdy3W21.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-PHBUUO56-DZ2IRYwc.js → ishikawaDiagram-PHBUUO56-oOdwCpeS.js} +1 -1
- package/dist/client/assets/{journeyDiagram-4ABVD52K-BrjXAkii.js → journeyDiagram-4ABVD52K-DTb_nGAw.js} +1 -1
- package/dist/client/assets/{kanban-definition-K7BYSVSG-B1mfOekw.js → kanban-definition-K7BYSVSG-CMtP7pHA.js} +1 -1
- package/dist/client/assets/{layout-CWTG02uT.js → layout-CXr5MatK.js} +1 -1
- package/dist/client/assets/{linear-CGgOKp1d.js → linear-pOMS9pjV.js} +1 -1
- package/dist/client/assets/{mermaid.core-DTPtVBG7.js → mermaid.core-DV5JJ1Ie.js} +4 -4
- package/dist/client/assets/{mindmap-definition-YRQLILUH-DByVRPFT.js → mindmap-definition-YRQLILUH-DN-sbonc.js} +1 -1
- package/dist/client/assets/{pieDiagram-SKSYHLDU-DEgvAxAy.js → pieDiagram-SKSYHLDU-tAHCkgh1.js} +1 -1
- package/dist/client/assets/{prism-csharp-DqTrHqwJ.js → prism-csharp-5CQ0RcEE.js} +1 -1
- package/dist/client/assets/{prism-elixir-DEJaM00V.js → prism-elixir-BSOTyVg2.js} +1 -1
- package/dist/client/assets/{prism-hcl-HvJ0aPiH.js → prism-hcl-BYvi1mtM.js} +1 -1
- package/dist/client/assets/{prism-java-DDUFERTh.js → prism-java-DMU2FM4X.js} +1 -1
- package/dist/client/assets/{prism-perl-CNA3SNC9.js → prism-perl-CpfvaEQk.js} +1 -1
- package/dist/client/assets/{prism-php-hBQuhE2A.js → prism-php-SC920LoD.js} +1 -1
- package/dist/client/assets/{prism-ruby-BKap8imy.js → prism-ruby-DZph-YiO.js} +1 -1
- package/dist/client/assets/{prism-solidity-DHc7LZHq.js → prism-solidity-qTLbmiAT.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-337W2JSQ-DTtikTvc.js → quadrantDiagram-337W2JSQ-B0wODmgR.js} +1 -1
- package/dist/client/assets/{requirementDiagram-Z7DCOOCP-B34R-xD0.js → requirementDiagram-Z7DCOOCP-A3aeHC06.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-Dts1ZXRC.js → sankeyDiagram-WA2Y5GQK-BWa6kZhG.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-2WXFIKYE-DzM3WhEY.js → sequenceDiagram-2WXFIKYE-Cx_COX9G.js} +1 -1
- package/dist/client/assets/{stateDiagram-RAJIS63D-B2dF8YnK.js → stateDiagram-RAJIS63D-BXGnN6rZ.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-FVOUBMTO-CMw3xNha.js +1 -0
- package/dist/client/assets/{timeline-definition-YZTLITO2-BO4OtcEm.js → timeline-definition-YZTLITO2-DbqaUm9k.js} +1 -1
- package/dist/client/assets/{treemap-KZPCXAKY-DaXnvVRH.js → treemap-KZPCXAKY-CfEujPCR.js} +1 -1
- package/dist/client/assets/{vennDiagram-LZ73GAT5-AIMhd8Js.js → vennDiagram-LZ73GAT5-CqJE8CAD.js} +1 -1
- package/dist/client/assets/{xychartDiagram-JWTSCODW-Ch6W1f7P.js → xychartDiagram-JWTSCODW-CfdDvzHC.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/generated-file-check.js +113 -58
- package/dist/server/generated-file-check.test.js +2 -0
- package/dist/server/git-diff.d.ts +1 -0
- package/dist/server/git-diff.js +33 -6
- package/dist/server/git-diff.test.js +26 -0
- package/dist/server/server.d.ts +2 -0
- package/dist/server/server.js +107 -34
- package/dist/server/server.test.js +120 -0
- package/dist/types/diff.d.ts +73 -14
- package/dist/utils/commentFormatting.d.ts +4 -2
- package/dist/utils/commentFormatting.js +57 -19
- package/dist/utils/commentImports.d.ts +9 -0
- package/dist/utils/commentImports.js +264 -0
- package/dist/utils/commentImports.test.d.ts +1 -0
- package/dist/utils/commentImports.test.js +197 -0
- package/package.json +1 -1
- package/dist/client/assets/channel-Ca4c0q8d.js +0 -1
- package/dist/client/assets/classDiagram-VBA2DB6C-CJLw9sK7.js +0 -1
- package/dist/client/assets/classDiagram-v2-RAHNMMFH-CJLw9sK7.js +0 -1
- package/dist/client/assets/clone-D0mDLEir.js +0 -1
- package/dist/client/assets/index-DHt9OwVU.css +0 -1
- package/dist/client/assets/index-mE8CA51x.js +0 -95
- package/dist/client/assets/stateDiagram-v2-FVOUBMTO-ReD0hBzH.js +0 -1
package/dist/cli/index.test.js
CHANGED
|
@@ -14,12 +14,16 @@ vi.mock('./utils.js', async () => {
|
|
|
14
14
|
promptUser: vi.fn(),
|
|
15
15
|
findUntrackedFiles: vi.fn(),
|
|
16
16
|
markFilesIntentToAdd: vi.fn(),
|
|
17
|
-
getPrPatch: vi.fn(),
|
|
18
17
|
};
|
|
19
18
|
});
|
|
19
|
+
vi.mock('./github.js', () => ({
|
|
20
|
+
getPrPatch: vi.fn(),
|
|
21
|
+
getPrCommentImports: vi.fn(),
|
|
22
|
+
}));
|
|
20
23
|
const { simpleGit } = await import('simple-git');
|
|
21
24
|
const { startServer } = await import('../server/server.js');
|
|
22
|
-
const { promptUser, findUntrackedFiles, markFilesIntentToAdd,
|
|
25
|
+
const { promptUser, findUntrackedFiles, markFilesIntentToAdd, parseCommentOptions } = await import('./utils.js');
|
|
26
|
+
const { getPrPatch, getPrCommentImports } = await import('./github.js');
|
|
23
27
|
describe('CLI index.ts', () => {
|
|
24
28
|
let mockGit;
|
|
25
29
|
let mockStartServer;
|
|
@@ -27,9 +31,12 @@ describe('CLI index.ts', () => {
|
|
|
27
31
|
let mockFindUntrackedFiles;
|
|
28
32
|
let mockMarkFilesIntentToAdd;
|
|
29
33
|
let mockGetPrPatch;
|
|
34
|
+
let mockGetPrCommentImports;
|
|
35
|
+
let actualParseCommentOptions;
|
|
30
36
|
// Store original console methods
|
|
31
37
|
let originalConsoleLog;
|
|
32
38
|
let originalConsoleError;
|
|
39
|
+
let originalConsoleWarn;
|
|
33
40
|
let originalProcessExit;
|
|
34
41
|
beforeEach(() => {
|
|
35
42
|
// Setup mocks
|
|
@@ -48,12 +55,17 @@ describe('CLI index.ts', () => {
|
|
|
48
55
|
mockFindUntrackedFiles = vi.mocked(findUntrackedFiles);
|
|
49
56
|
mockMarkFilesIntentToAdd = vi.mocked(markFilesIntentToAdd);
|
|
50
57
|
mockGetPrPatch = vi.mocked(getPrPatch);
|
|
58
|
+
mockGetPrCommentImports = vi.mocked(getPrCommentImports);
|
|
59
|
+
mockGetPrCommentImports.mockResolvedValue([]);
|
|
60
|
+
actualParseCommentOptions = parseCommentOptions;
|
|
51
61
|
// Mock console and process.exit
|
|
52
62
|
originalConsoleLog = console.log;
|
|
53
63
|
originalConsoleError = console.error;
|
|
64
|
+
originalConsoleWarn = console.warn;
|
|
54
65
|
originalProcessExit = process.exit;
|
|
55
66
|
console.log = vi.fn();
|
|
56
67
|
console.error = vi.fn();
|
|
68
|
+
console.warn = vi.fn();
|
|
57
69
|
process.exit = vi.fn();
|
|
58
70
|
// Reset all mocks
|
|
59
71
|
vi.clearAllMocks();
|
|
@@ -62,6 +74,7 @@ describe('CLI index.ts', () => {
|
|
|
62
74
|
// Restore original methods
|
|
63
75
|
console.log = originalConsoleLog;
|
|
64
76
|
console.error = originalConsoleError;
|
|
77
|
+
console.warn = originalConsoleWarn;
|
|
65
78
|
process.exit = originalProcessExit;
|
|
66
79
|
});
|
|
67
80
|
describe('CLI argument processing', () => {
|
|
@@ -409,14 +422,38 @@ describe('CLI index.ts', () => {
|
|
|
409
422
|
});
|
|
410
423
|
});
|
|
411
424
|
describe('GitHub PR integration', () => {
|
|
412
|
-
it('loads PR patch
|
|
425
|
+
it('loads PR patch, appends manual comments after PR imports, and starts server with stdin diff', async () => {
|
|
413
426
|
const prUrl = 'https://github.com/owner/repo/pull/123';
|
|
414
427
|
const prPatch = 'diff --git a/file.ts b/file.ts\nindex 1111111..2222222 100644\n';
|
|
428
|
+
const prCommentImports = [
|
|
429
|
+
{
|
|
430
|
+
type: 'thread',
|
|
431
|
+
id: 'PR_COMMENT_1',
|
|
432
|
+
filePath: 'src/example.ts',
|
|
433
|
+
position: { side: 'new', line: 10 },
|
|
434
|
+
body: 'Imported PR thread',
|
|
435
|
+
author: 'octocat',
|
|
436
|
+
createdAt: '2026-03-25T09:00:00Z',
|
|
437
|
+
updatedAt: '2026-03-25T09:05:00Z',
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
type: 'reply',
|
|
441
|
+
id: 'PR_COMMENT_2',
|
|
442
|
+
filePath: 'src/example.ts',
|
|
443
|
+
position: { side: 'new', line: 10 },
|
|
444
|
+
body: 'Imported PR reply',
|
|
445
|
+
author: 'hubot',
|
|
446
|
+
createdAt: '2026-03-25T09:10:00Z',
|
|
447
|
+
updatedAt: '2026-03-25T09:12:00Z',
|
|
448
|
+
},
|
|
449
|
+
];
|
|
415
450
|
mockGetPrPatch.mockReturnValue(prPatch);
|
|
451
|
+
mockGetPrCommentImports.mockResolvedValue(prCommentImports);
|
|
416
452
|
const program = new Command();
|
|
417
453
|
program
|
|
418
454
|
.argument('[commit-ish]', 'commit-ish', 'HEAD')
|
|
419
455
|
.argument('[compare-with]', 'compare-with')
|
|
456
|
+
.option('--comment <json>', 'comment', (value, previous = []) => [...previous, value], [])
|
|
420
457
|
.option('--port <port>', 'port', parseInt)
|
|
421
458
|
.option('--host <host>', 'host', '')
|
|
422
459
|
.option('--no-open', 'no-open')
|
|
@@ -424,11 +461,15 @@ describe('CLI index.ts', () => {
|
|
|
424
461
|
.option('--tui', 'tui')
|
|
425
462
|
.option('--pr <url>', 'pr')
|
|
426
463
|
.action(async (commitish, _compareWith, options) => {
|
|
464
|
+
const manualCommentImports = actualParseCommentOptions(options.comment);
|
|
465
|
+
let commentImports = manualCommentImports;
|
|
427
466
|
if (options.pr) {
|
|
428
467
|
if (commitish !== 'HEAD' || _compareWith) {
|
|
429
468
|
console.error('Error: --pr option cannot be used with positional arguments');
|
|
430
469
|
process.exit(1);
|
|
431
470
|
}
|
|
471
|
+
const importedPrComments = await getPrCommentImports(options.pr);
|
|
472
|
+
commentImports = [...importedPrComments, ...manualCommentImports];
|
|
432
473
|
}
|
|
433
474
|
await startServer({
|
|
434
475
|
stdinDiff: getPrPatch(options.pr),
|
|
@@ -436,10 +477,82 @@ describe('CLI index.ts', () => {
|
|
|
436
477
|
host: options.host,
|
|
437
478
|
openBrowser: options.open,
|
|
438
479
|
mode: options.mode,
|
|
480
|
+
commentImports,
|
|
439
481
|
});
|
|
440
482
|
});
|
|
441
|
-
await program.parseAsync([
|
|
483
|
+
await program.parseAsync([
|
|
484
|
+
'--pr',
|
|
485
|
+
prUrl,
|
|
486
|
+
'--comment',
|
|
487
|
+
'{"type":"reply","filePath":"src/example.ts","position":{"side":"new","line":10},"body":"Manual reply"}',
|
|
488
|
+
], { from: 'user' });
|
|
442
489
|
expect(mockGetPrPatch).toHaveBeenCalledWith(prUrl);
|
|
490
|
+
expect(mockGetPrCommentImports).toHaveBeenCalledWith(prUrl);
|
|
491
|
+
expect(mockStartServer).toHaveBeenCalledWith({
|
|
492
|
+
stdinDiff: prPatch,
|
|
493
|
+
preferredPort: undefined,
|
|
494
|
+
host: '',
|
|
495
|
+
openBrowser: true,
|
|
496
|
+
mode: 'split',
|
|
497
|
+
commentImports: [
|
|
498
|
+
...prCommentImports,
|
|
499
|
+
{
|
|
500
|
+
type: 'reply',
|
|
501
|
+
id: undefined,
|
|
502
|
+
filePath: 'src/example.ts',
|
|
503
|
+
position: { side: 'new', line: 10 },
|
|
504
|
+
body: 'Manual reply',
|
|
505
|
+
author: undefined,
|
|
506
|
+
createdAt: undefined,
|
|
507
|
+
updatedAt: undefined,
|
|
508
|
+
codeSnapshot: undefined,
|
|
509
|
+
},
|
|
510
|
+
],
|
|
511
|
+
});
|
|
512
|
+
});
|
|
513
|
+
it('continues with patch only when PR comment import fetch fails', async () => {
|
|
514
|
+
const prUrl = 'https://github.com/owner/repo/pull/123';
|
|
515
|
+
const prPatch = 'diff --git a/file.ts b/file.ts\nindex 1111111..2222222 100644\n';
|
|
516
|
+
mockGetPrPatch.mockReturnValue(prPatch);
|
|
517
|
+
mockGetPrCommentImports.mockRejectedValue(new Error('gh api graphql failed'));
|
|
518
|
+
const program = new Command();
|
|
519
|
+
program
|
|
520
|
+
.argument('[commit-ish]', 'commit-ish', 'HEAD')
|
|
521
|
+
.argument('[compare-with]', 'compare-with')
|
|
522
|
+
.option('--comment <json>', 'comment', (value, previous = []) => [...previous, value], [])
|
|
523
|
+
.option('--port <port>', 'port', parseInt)
|
|
524
|
+
.option('--host <host>', 'host', '')
|
|
525
|
+
.option('--no-open', 'no-open')
|
|
526
|
+
.option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
|
|
527
|
+
.option('--tui', 'tui')
|
|
528
|
+
.option('--pr <url>', 'pr')
|
|
529
|
+
.action(async (commitish, _compareWith, options) => {
|
|
530
|
+
const manualCommentImports = actualParseCommentOptions(options.comment);
|
|
531
|
+
let commentImports = manualCommentImports;
|
|
532
|
+
if (options.pr) {
|
|
533
|
+
if (commitish !== 'HEAD' || _compareWith) {
|
|
534
|
+
console.error('Error: --pr option cannot be used with positional arguments');
|
|
535
|
+
process.exit(1);
|
|
536
|
+
}
|
|
537
|
+
try {
|
|
538
|
+
const importedPrComments = await getPrCommentImports(options.pr);
|
|
539
|
+
commentImports = [...importedPrComments, ...manualCommentImports];
|
|
540
|
+
}
|
|
541
|
+
catch (error) {
|
|
542
|
+
console.warn(`Warning: Failed to load PR review comments: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
await startServer({
|
|
546
|
+
stdinDiff: getPrPatch(options.pr),
|
|
547
|
+
preferredPort: options.port,
|
|
548
|
+
host: options.host,
|
|
549
|
+
openBrowser: options.open,
|
|
550
|
+
mode: options.mode,
|
|
551
|
+
...(commentImports.length > 0 ? { commentImports } : {}),
|
|
552
|
+
});
|
|
553
|
+
});
|
|
554
|
+
await program.parseAsync(['--pr', prUrl], { from: 'user' });
|
|
555
|
+
expect(console.warn).toHaveBeenCalledWith('Warning: Failed to load PR review comments: gh api graphql failed');
|
|
443
556
|
expect(mockStartServer).toHaveBeenCalledWith({
|
|
444
557
|
stdinDiff: prPatch,
|
|
445
558
|
preferredPort: undefined,
|
|
@@ -503,6 +616,95 @@ describe('CLI index.ts', () => {
|
|
|
503
616
|
expect(mockStartServer).not.toHaveBeenCalled();
|
|
504
617
|
});
|
|
505
618
|
});
|
|
619
|
+
describe('--comment option', () => {
|
|
620
|
+
it('passes parsed comment imports to startServer', async () => {
|
|
621
|
+
const program = new Command();
|
|
622
|
+
program
|
|
623
|
+
.argument('[commit-ish]', 'commit-ish', 'HEAD')
|
|
624
|
+
.option('--comment <json>', 'comment', (value, previous = []) => [...previous, value], [])
|
|
625
|
+
.option('--port <port>', 'port', parseInt)
|
|
626
|
+
.option('--host <host>', 'host', '')
|
|
627
|
+
.option('--no-open', 'no-open')
|
|
628
|
+
.option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
|
|
629
|
+
.action(async (commitish, options) => {
|
|
630
|
+
const commentImports = actualParseCommentOptions(options.comment);
|
|
631
|
+
await startServer({
|
|
632
|
+
targetCommitish: commitish,
|
|
633
|
+
baseCommitish: `${commitish}^`,
|
|
634
|
+
preferredPort: options.port,
|
|
635
|
+
host: options.host,
|
|
636
|
+
openBrowser: options.open,
|
|
637
|
+
mode: options.mode,
|
|
638
|
+
commentImports,
|
|
639
|
+
});
|
|
640
|
+
});
|
|
641
|
+
await program.parseAsync([
|
|
642
|
+
'--comment',
|
|
643
|
+
'{"type":"thread","filePath":"src/example.ts","position":{"side":"new","line":10},"body":"Imported comment"}',
|
|
644
|
+
], { from: 'user' });
|
|
645
|
+
expect(mockStartServer).toHaveBeenCalledWith({
|
|
646
|
+
targetCommitish: 'HEAD',
|
|
647
|
+
baseCommitish: 'HEAD^',
|
|
648
|
+
preferredPort: undefined,
|
|
649
|
+
host: '',
|
|
650
|
+
openBrowser: true,
|
|
651
|
+
mode: 'split',
|
|
652
|
+
commentImports: [
|
|
653
|
+
{
|
|
654
|
+
type: 'thread',
|
|
655
|
+
id: undefined,
|
|
656
|
+
filePath: 'src/example.ts',
|
|
657
|
+
position: { side: 'new', line: 10 },
|
|
658
|
+
body: 'Imported comment',
|
|
659
|
+
author: undefined,
|
|
660
|
+
createdAt: undefined,
|
|
661
|
+
updatedAt: undefined,
|
|
662
|
+
codeSnapshot: undefined,
|
|
663
|
+
},
|
|
664
|
+
],
|
|
665
|
+
});
|
|
666
|
+
});
|
|
667
|
+
it('rejects --comment with --tui', async () => {
|
|
668
|
+
const program = new Command();
|
|
669
|
+
program
|
|
670
|
+
.argument('[commit-ish]', 'commit-ish', 'HEAD')
|
|
671
|
+
.option('--comment <json>', 'comment', (value, previous = []) => [...previous, value], [])
|
|
672
|
+
.option('--tui', 'tui')
|
|
673
|
+
.action(async (_commitish, options) => {
|
|
674
|
+
const commentImports = actualParseCommentOptions(options.comment);
|
|
675
|
+
if (options.tui && commentImports.length > 0) {
|
|
676
|
+
console.error('Error: --comment option cannot be used with --tui');
|
|
677
|
+
process.exit(1);
|
|
678
|
+
}
|
|
679
|
+
});
|
|
680
|
+
await program.parseAsync([
|
|
681
|
+
'--tui',
|
|
682
|
+
'--comment',
|
|
683
|
+
'{"type":"thread","filePath":"src/example.ts","position":{"side":"new","line":10},"body":"Imported comment"}',
|
|
684
|
+
], { from: 'user' });
|
|
685
|
+
expect(console.error).toHaveBeenCalledWith('Error: --comment option cannot be used with --tui');
|
|
686
|
+
expect(process.exit).toHaveBeenCalledWith(1);
|
|
687
|
+
});
|
|
688
|
+
it('reports invalid comment json before starting the server', async () => {
|
|
689
|
+
const program = new Command();
|
|
690
|
+
program
|
|
691
|
+
.argument('[commit-ish]', 'commit-ish', 'HEAD')
|
|
692
|
+
.option('--comment <json>', 'comment', (value, previous = []) => [...previous, value], [])
|
|
693
|
+
.action(async (_commitish, options) => {
|
|
694
|
+
try {
|
|
695
|
+
actualParseCommentOptions(options.comment);
|
|
696
|
+
}
|
|
697
|
+
catch (error) {
|
|
698
|
+
console.error(`Error: ${error instanceof Error ? error.message : 'Invalid --comment value'}`);
|
|
699
|
+
process.exit(1);
|
|
700
|
+
}
|
|
701
|
+
});
|
|
702
|
+
await program.parseAsync(['--comment', '{'], { from: 'user' });
|
|
703
|
+
expect(console.error).toHaveBeenCalledWith('Error: Invalid --comment JSON');
|
|
704
|
+
expect(process.exit).toHaveBeenCalledWith(1);
|
|
705
|
+
expect(mockStartServer).not.toHaveBeenCalled();
|
|
706
|
+
});
|
|
707
|
+
});
|
|
506
708
|
describe('Clean flag functionality', () => {
|
|
507
709
|
it('displays clean message when flag is used', async () => {
|
|
508
710
|
mockFindUntrackedFiles.mockResolvedValue([]);
|
package/dist/cli/utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Stats } from 'node:fs';
|
|
2
2
|
import type { SimpleGit } from 'simple-git';
|
|
3
|
+
import type { CommentImport } from '../types/diff.js';
|
|
3
4
|
type StdinStat = Pick<Stats, 'isFIFO' | 'isFile' | 'isSocket'>;
|
|
4
5
|
type StdinSource = 'pipe' | 'file' | 'socket' | 'tty';
|
|
5
6
|
export declare function detectStdinSource(stdinStat?: StdinStat): StdinSource;
|
|
@@ -15,14 +16,7 @@ export declare function getGitRoot(): string;
|
|
|
15
16
|
export declare function validateCommitish(commitish: string): boolean;
|
|
16
17
|
export declare function shortHash(hash: string): string;
|
|
17
18
|
export declare function createCommitRangeString(baseHash: string, targetHash: string): string;
|
|
18
|
-
|
|
19
|
-
owner: string;
|
|
20
|
-
repo: string;
|
|
21
|
-
pullNumber: number;
|
|
22
|
-
hostname: string;
|
|
23
|
-
}
|
|
24
|
-
export declare function parseGitHubPrUrl(url: string): PullRequestInfo | null;
|
|
25
|
-
export declare function getPrPatch(prArg: string): string;
|
|
19
|
+
export declare function parseCommentOptions(commentValues: string[]): CommentImport[];
|
|
26
20
|
export declare function validateDiffArguments(targetCommitish: string, baseCommitish?: string): {
|
|
27
21
|
valid: boolean;
|
|
28
22
|
error?: string;
|
package/dist/cli/utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
2
|
import { fstatSync } from 'node:fs';
|
|
3
3
|
import { createInterface } from 'readline/promises';
|
|
4
|
+
import { parseCommentImportValue } from '../utils/commentImports.js';
|
|
4
5
|
export function detectStdinSource(stdinStat = fstatSync(0)) {
|
|
5
6
|
if (stdinStat.isFIFO()) {
|
|
6
7
|
return 'pipe';
|
|
@@ -129,48 +130,8 @@ export function shortHash(hash) {
|
|
|
129
130
|
export function createCommitRangeString(baseHash, targetHash) {
|
|
130
131
|
return `${baseHash}...${targetHash}`;
|
|
131
132
|
}
|
|
132
|
-
export function
|
|
133
|
-
|
|
134
|
-
const urlObj = new URL(url);
|
|
135
|
-
// Allow any hostname for GitHub Enterprise support
|
|
136
|
-
// Just validate the path structure
|
|
137
|
-
const pathParts = urlObj.pathname.split('/').filter(Boolean);
|
|
138
|
-
if (pathParts.length < 4 || pathParts[2] !== 'pull') {
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
const owner = pathParts[0];
|
|
142
|
-
const repo = pathParts[1];
|
|
143
|
-
const pullNumber = parseInt(pathParts[3], 10);
|
|
144
|
-
if (isNaN(pullNumber)) {
|
|
145
|
-
return null;
|
|
146
|
-
}
|
|
147
|
-
return { owner, repo, pullNumber, hostname: urlObj.hostname };
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
return null;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
export function getPrPatch(prArg) {
|
|
154
|
-
try {
|
|
155
|
-
const patch = execFileSync('gh', ['pr', 'diff', prArg], {
|
|
156
|
-
encoding: 'utf8',
|
|
157
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
158
|
-
});
|
|
159
|
-
if (!patch.trim()) {
|
|
160
|
-
throw new Error('No diff content returned from gh pr diff');
|
|
161
|
-
}
|
|
162
|
-
return patch;
|
|
163
|
-
}
|
|
164
|
-
catch (error) {
|
|
165
|
-
const stderr = error.stderr;
|
|
166
|
-
const stderrText = typeof stderr === 'string'
|
|
167
|
-
? stderr.trim()
|
|
168
|
-
: Buffer.isBuffer(stderr)
|
|
169
|
-
? stderr.toString('utf8').trim()
|
|
170
|
-
: '';
|
|
171
|
-
const message = stderrText || (error instanceof Error ? error.message : 'Unknown error while running gh');
|
|
172
|
-
throw new Error(`${message}\nTry: gh auth login`);
|
|
173
|
-
}
|
|
133
|
+
export function parseCommentOptions(commentValues) {
|
|
134
|
+
return commentValues.flatMap((value) => parseCommentImportValue(value));
|
|
174
135
|
}
|
|
175
136
|
export function validateDiffArguments(targetCommitish, baseCommitish) {
|
|
176
137
|
// Validate target commitish format
|
package/dist/cli/utils.test.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { detectStdinSource,
|
|
2
|
+
import { detectStdinSource, parseCommentOptions, shortHash, shouldReadStdin, validateCommitish, validateDiffArguments, } from './utils';
|
|
3
3
|
describe('CLI Utils', () => {
|
|
4
4
|
describe('stdin detection', () => {
|
|
5
5
|
it('detects pipe from stdin stat', () => {
|
|
@@ -99,6 +99,55 @@ describe('CLI Utils', () => {
|
|
|
99
99
|
})).toBe(false);
|
|
100
100
|
});
|
|
101
101
|
});
|
|
102
|
+
describe('parseCommentOptions', () => {
|
|
103
|
+
it('parses a single comment import', () => {
|
|
104
|
+
const result = parseCommentOptions([
|
|
105
|
+
JSON.stringify({
|
|
106
|
+
type: 'thread',
|
|
107
|
+
filePath: 'src/example.ts',
|
|
108
|
+
position: { side: 'new', line: 10 },
|
|
109
|
+
body: 'Imported comment',
|
|
110
|
+
}),
|
|
111
|
+
]);
|
|
112
|
+
expect(result).toEqual([
|
|
113
|
+
{
|
|
114
|
+
type: 'thread',
|
|
115
|
+
id: undefined,
|
|
116
|
+
filePath: 'src/example.ts',
|
|
117
|
+
position: { side: 'new', line: 10 },
|
|
118
|
+
body: 'Imported comment',
|
|
119
|
+
author: undefined,
|
|
120
|
+
createdAt: undefined,
|
|
121
|
+
updatedAt: undefined,
|
|
122
|
+
codeSnapshot: undefined,
|
|
123
|
+
},
|
|
124
|
+
]);
|
|
125
|
+
});
|
|
126
|
+
it('flattens array values from repeated options', () => {
|
|
127
|
+
const result = parseCommentOptions([
|
|
128
|
+
JSON.stringify([
|
|
129
|
+
{
|
|
130
|
+
type: 'thread',
|
|
131
|
+
filePath: 'src/example.ts',
|
|
132
|
+
position: { side: 'new', line: 10 },
|
|
133
|
+
body: 'Imported comment',
|
|
134
|
+
},
|
|
135
|
+
]),
|
|
136
|
+
JSON.stringify({
|
|
137
|
+
type: 'reply',
|
|
138
|
+
filePath: 'src/example.ts',
|
|
139
|
+
position: { side: 'new', line: 10 },
|
|
140
|
+
body: 'Imported reply',
|
|
141
|
+
}),
|
|
142
|
+
]);
|
|
143
|
+
expect(result).toHaveLength(2);
|
|
144
|
+
expect(result[0]?.type).toBe('thread');
|
|
145
|
+
expect(result[1]?.type).toBe('reply');
|
|
146
|
+
});
|
|
147
|
+
it('throws for invalid json', () => {
|
|
148
|
+
expect(() => parseCommentOptions(['{'])).toThrow('Invalid --comment JSON');
|
|
149
|
+
});
|
|
150
|
+
});
|
|
102
151
|
describe('validateCommitish', () => {
|
|
103
152
|
it('should validate full SHA hashes', () => {
|
|
104
153
|
expect(validateCommitish('a1b2c3d4e5f6789012345678901234567890abcd')).toBe(true);
|
|
@@ -315,70 +364,4 @@ describe('CLI Utils', () => {
|
|
|
315
364
|
expect(shortHash('')).toBe('');
|
|
316
365
|
});
|
|
317
366
|
});
|
|
318
|
-
describe('parseGitHubPrUrl', () => {
|
|
319
|
-
it('should parse valid GitHub PR URLs', () => {
|
|
320
|
-
const result = parseGitHubPrUrl('https://github.com/owner/repo/pull/123');
|
|
321
|
-
expect(result).toEqual({
|
|
322
|
-
owner: 'owner',
|
|
323
|
-
repo: 'repo',
|
|
324
|
-
pullNumber: 123,
|
|
325
|
-
hostname: 'github.com',
|
|
326
|
-
});
|
|
327
|
-
});
|
|
328
|
-
it('should parse GitHub PR URLs with additional path segments', () => {
|
|
329
|
-
const result = parseGitHubPrUrl('https://github.com/owner/repo/pull/456/files');
|
|
330
|
-
expect(result).toEqual({
|
|
331
|
-
owner: 'owner',
|
|
332
|
-
repo: 'repo',
|
|
333
|
-
pullNumber: 456,
|
|
334
|
-
hostname: 'github.com',
|
|
335
|
-
});
|
|
336
|
-
});
|
|
337
|
-
it('should parse GitHub PR URLs with query parameters', () => {
|
|
338
|
-
const result = parseGitHubPrUrl('https://github.com/owner/repo/pull/789?tab=files');
|
|
339
|
-
expect(result).toEqual({
|
|
340
|
-
owner: 'owner',
|
|
341
|
-
repo: 'repo',
|
|
342
|
-
pullNumber: 789,
|
|
343
|
-
hostname: 'github.com',
|
|
344
|
-
});
|
|
345
|
-
});
|
|
346
|
-
it('should handle URLs with hyphens and underscores in owner/repo names', () => {
|
|
347
|
-
const result = parseGitHubPrUrl('https://github.com/owner-name/repo_name/pull/123');
|
|
348
|
-
expect(result).toEqual({
|
|
349
|
-
owner: 'owner-name',
|
|
350
|
-
repo: 'repo_name',
|
|
351
|
-
pullNumber: 123,
|
|
352
|
-
hostname: 'github.com',
|
|
353
|
-
});
|
|
354
|
-
});
|
|
355
|
-
it('should parse GitHub Enterprise PR URLs', () => {
|
|
356
|
-
const result1 = parseGitHubPrUrl('https://github.enterprise.com/owner/repo/pull/123');
|
|
357
|
-
expect(result1).toEqual({
|
|
358
|
-
owner: 'owner',
|
|
359
|
-
repo: 'repo',
|
|
360
|
-
pullNumber: 123,
|
|
361
|
-
hostname: 'github.enterprise.com',
|
|
362
|
-
});
|
|
363
|
-
const result2 = parseGitHubPrUrl('https://git.company.io/team/project/pull/456');
|
|
364
|
-
expect(result2).toEqual({
|
|
365
|
-
owner: 'team',
|
|
366
|
-
repo: 'project',
|
|
367
|
-
pullNumber: 456,
|
|
368
|
-
hostname: 'git.company.io',
|
|
369
|
-
});
|
|
370
|
-
});
|
|
371
|
-
it('should return null for invalid URLs', () => {
|
|
372
|
-
expect(parseGitHubPrUrl('not-a-url')).toBe(null);
|
|
373
|
-
expect(parseGitHubPrUrl('https://github.com/owner/repo/issues/123')).toBe(null);
|
|
374
|
-
expect(parseGitHubPrUrl('https://github.com/owner/repo')).toBe(null);
|
|
375
|
-
expect(parseGitHubPrUrl('https://github.com/owner/repo/pull/abc')).toBe(null);
|
|
376
|
-
});
|
|
377
|
-
it('should handle malformed URLs gracefully', () => {
|
|
378
|
-
expect(parseGitHubPrUrl('')).toBe(null);
|
|
379
|
-
expect(parseGitHubPrUrl('https://github.com')).toBe(null);
|
|
380
|
-
expect(parseGitHubPrUrl('https://github.com/owner')).toBe(null);
|
|
381
|
-
expect(parseGitHubPrUrl('https://github.com/owner/repo/pull')).toBe(null);
|
|
382
|
-
});
|
|
383
|
-
});
|
|
384
367
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-
|
|
1
|
+
import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-tbL7nVvN.js";import{aT as g,at as $,aU as E,aV as F,aW as M,aX as l,aY as T,aZ as B,a_ as y,a$ as S}from"./mermaid.core-DV5JJ1Ie.js";var G=/\s/;function H(n){for(var r=n.length;r--&&G.test(n.charAt(r)););return r}var L=/^\s+/;function R(n){return n&&n.slice(0,H(n)+1).replace(L,"")}var o=NaN,W=/^[-+]0x[0-9a-f]+$/i,X=/^0b[01]+$/i,Y=/^0o[0-7]+$/i,q=parseInt;function z(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=R(n);var t=X.test(n);return t||Y.test(n)?q(n.slice(2),t?2:8):W.test(n)?o:+n}var v=1/0,C=17976931348623157e292;function K(n){if(!n)return n===0?n:0;if(n=z(n),n===v||n===-v){var r=n<0?-1:1;return r*C}return n===n?n:0}function U(n){var r=K(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var b=Object.prototype,Z=b.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,b[u])&&!Z.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function D(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var J=Math.max;function Q(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:U(t);return a<0&&(a=J(i+a,0)),p(n,m(r),a)}var hn=D(Q);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=T(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,B,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,U as j,un as l,gn as m,K as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bg as S,bh as Rn,aY as T,bi as w,bj as xn,bk as mn,aX as sn,bl as Cn,bm as un,bn as x,aV as B,bo as Mn,bp as on,bq as Fn,br as E,be as gn,bs as R,aT as ln,bt as Dn,bu as D,bv as Gn,bw as Bn,bx as _,a$ as Un,by as Nn,aW as Kn,bz as X,bA as jn,bB as Hn,a_ as qn,aZ as cn,bc as Yn,bC as C}from"./mermaid.core-DTPtVBG7.js";var Zn="[object Symbol]";function U(n){return typeof n=="symbol"||S(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Cn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,B(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,B,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Cr="[object ArrayBuffer]",Mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Br="[object Int16Array]",Ur="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Cr:return on(n);case Er:case Ir:return new t(+n);case Mr:return Or(n,e);case Fr:case Dr:case Gr:case Br:case Ur:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Sr(n)}}var Yr="[object Map]";function Zr(n){return S(n)&&E(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function M(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!f){if(a=u||c?{}:Bn(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(M(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,M(d,r,e,p,n,i))});var A=b?u?yr:G:u?B:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,M(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Ce="[object Date]",Me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Be="[object Set]",Ue="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Ce:case De:return Kn(+n,+r);case Me:return n.name==r.name&&n.message==r.message;case Ge:case Ue:return n==r+"";case Fe:var s=Le;case Be:var u=tℜif(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Qe=Object.prototype,an=Qe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Je)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=C&&1/H(new C([,-0]))[1]==yt?function(n){return new C(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,M as b,Ot as c,$t as d,U as e,_t as f,Ln as g,Jn as h,Et as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
|
|
1
|
+
import{bg as S,bh as Rn,aY as T,bi as w,bj as xn,bk as mn,aX as sn,bl as Cn,bm as un,bn as x,aV as B,bo as Mn,bp as on,bq as Fn,br as E,be as gn,bs as R,aT as ln,bt as Dn,bu as D,bv as Gn,bw as Bn,bx as _,a$ as Un,by as Nn,aW as Kn,bz as X,bA as jn,bB as Hn,a_ as qn,aZ as cn,bc as Yn,bC as C}from"./mermaid.core-DV5JJ1Ie.js";var Zn="[object Symbol]";function U(n){return typeof n=="symbol"||S(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Cn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,B(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,B,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Cr="[object ArrayBuffer]",Mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Br="[object Int16Array]",Ur="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Cr:return on(n);case Er:case Ir:return new t(+n);case Mr:return Or(n,e);case Fr:case Dr:case Gr:case Br:case Ur:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Sr(n)}}var Yr="[object Map]";function Zr(n){return S(n)&&E(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function M(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!f){if(a=u||c?{}:Bn(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(M(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,M(d,r,e,p,n,i))});var A=b?u?yr:G:u?B:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,M(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Ce="[object Date]",Me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Be="[object Set]",Ue="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Ce:case De:return Kn(+n,+r);case Me:return n.name==r.name&&n.message==r.message;case Ge:case Ue:return n==r+"";case Fe:var s=Le;case Be:var u=tℜif(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Qe=Object.prototype,an=Qe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Je)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=C&&1/H(new C([,-0]))[1]==yt?function(n){return new C(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,M as b,Ot as c,$t as d,U as e,_t as f,Ln as g,Jn as h,Et as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{X as ln,Y as an,$ as C,a0 as q,a1 as $,a2 as un,a3 as y,a4 as tn,a5 as H,a6 as _,a7 as rn,a8 as o,a9 as sn,aa as on,ab as fn}from"./mermaid.core-
|
|
1
|
+
import{X as ln,Y as an,$ as C,a0 as q,a1 as $,a2 as un,a3 as y,a4 as tn,a5 as H,a6 as _,a7 as rn,a8 as o,a9 as sn,aa as on,ab as fn}from"./mermaid.core-DV5JJ1Ie.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,j,a){var O=I-l,i=D-h,n=j-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function Q(l,h,I,D,v,A,j){var a=l-I,O=h-D,i=(j?A:-A)/H(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,z=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*H(on(0,T*T*R-P*P)),X=(P*g-m*S)/R,Y=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=X-z,e=Y-t,r=w-z,B=p-t;return x*x+e*e>r*r+B*B&&(X=w,Y=p),{cx:X,cy:Y,x01:-n,y01:-d,x11:X*(v/T-1),y11:Y*(v/T-1)}}function hn(){var l=cn,h=yn,I=$(0),D=null,v=gn,A=dn,j=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,z=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(z>tn-y)a.moveTo(s*C(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*C(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=z,S=z,X=j.apply(this,arguments)/2,Y=X>y&&(D?+D.apply(this,arguments):H(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(Y>y){var B=sn(Y/u*q(X)),J=sn(Y/s*q(X));(P-=B*2)>y?(B*=t?1:-1,R+=B,T-=B):(P=0,R=T=(f+c)/2),(S-=J*2)>y?(J*=t?1:-1,m+=J,g-=J):(S=0,m=g=(f+c)/2)}var F=s*C(m),G=s*q(m),K=u*C(T),L=u*q(T);if(w>y){var M=s*C(g),N=s*q(g),U=u*C(R),V=u*q(R),E;if(z<an)if(E=pn(F,G,U,V,M,N,K,L)){var W=F-E[0],Z=G-E[1],b=M-E[0],k=N-E[1],nn=1/q(fn((W*b+Z*k)/(H(W*W+Z*Z)*H(b*b+k*k)))/2),en=H(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=Q(U,V,F,G,s,x,t),r=Q(M,N,K,L,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(F,G),a.arc(0,0,s,m,g,!t)):a.moveTo(F,G),!(u>y)||!(P>y)?a.lineTo(K,L):p>y?(e=Q(K,L,M,N,u,-p,t),r=Q(F,G,U,V,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[C(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:$(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:$(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:$(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:$(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:$(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:$(+n),i):A},i.padAngle=function(n){return arguments.length?(j=typeof n=="function"?n:$(+n),i):j},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|