difit 4.0.0 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +15 -14
- package/README.ko.md +15 -14
- package/README.md +15 -14
- package/README.zh.md +15 -14
- package/dist/cli/index.js +18 -0
- package/dist/cli/index.test.js +148 -38
- package/dist/cli/tuiDeprecation.d.ts +3 -0
- package/dist/cli/tuiDeprecation.js +16 -0
- package/dist/cli/tuiDeprecation.test.d.ts +1 -0
- package/dist/cli/tuiDeprecation.test.js +16 -0
- package/dist/cli/utils.d.ts +1 -0
- package/dist/cli/utils.js +17 -0
- package/dist/client/assets/_basePickBy-hOr-yGsE.js +1 -0
- package/dist/client/assets/_baseUniq-b7bzdUSn.js +1 -0
- package/dist/client/assets/arc-D65wG9gm.js +1 -0
- package/dist/client/assets/architecture-PBZL5I3N-DFdrPtRG.js +1 -0
- package/dist/client/assets/architectureDiagram-2XIMDMQ5-CXJTJFYJ.js +36 -0
- package/dist/client/assets/array-DOVTz2Mq.js +1 -0
- package/dist/client/assets/blockDiagram-WCTKOSBZ-B60owdAn.js +132 -0
- package/dist/client/assets/c4Diagram-IC4MRINW-4tg2D_Vt.js +10 -0
- package/dist/client/assets/channel-DogeU0Wo.js +1 -0
- package/dist/client/assets/chunk-4BX2VUAB-CW45MZFx.js +1 -0
- package/dist/client/assets/chunk-55IACEB6-Busc3sfI.js +1 -0
- package/dist/client/assets/chunk-7E7YKBS2-BVR-8Pma.js +1 -0
- package/dist/client/assets/chunk-7R4GIKGN-DneC7PwP.js +80 -0
- package/dist/client/assets/chunk-C72U2L5F-CJr98gus.js +1 -0
- package/dist/client/assets/chunk-EGIJ26TM-iD_CSqpR.js +1 -0
- package/dist/client/assets/{chunk-FMBD7UC4-CrKv7ndg.js → chunk-FMBD7UC4-BSsJVlRg.js} +2 -2
- package/dist/client/assets/chunk-GEFDOKGD-eDUrsRgt.js +2 -0
- package/dist/client/assets/chunk-GLR3WWYH-NUOKNaxd.js +2 -0
- package/dist/client/assets/chunk-HHEYEP7N-DhuxpkmW.js +1 -0
- package/dist/client/assets/chunk-JSJVCQXG-UCJub_Eo.js +1 -0
- package/dist/client/assets/chunk-KX2RTZJC-DrhxxMOx.js +1 -0
- package/dist/client/assets/chunk-KYZI473N-Brv52ZeO.js +53 -0
- package/dist/client/assets/chunk-L3YUKLVL-BkBigLhQ.js +1 -0
- package/dist/client/assets/chunk-MX3YWQON-DHRoNbgW.js +1 -0
- package/dist/client/assets/chunk-NQ4KR5QH-BZ86r2qK.js +220 -0
- package/dist/client/assets/chunk-O4XLMI2P-Sr33dk8c.js +7 -0
- package/dist/client/assets/chunk-OZEHJAEY-3F2ff7sj.js +1 -0
- package/dist/client/assets/chunk-PQ6SQG4A-C9acTu_E.js +1 -0
- package/dist/client/assets/chunk-PU5JKC2W-PQmA4K_y.js +70 -0
- package/dist/client/assets/chunk-QZHKN3VN-DMRW-mur.js +1 -0
- package/dist/client/assets/chunk-R5LLSJPH-ChexuO_S.js +1 -0
- package/dist/client/assets/chunk-WL4C6EOR-oxNV_hhM.js +189 -0
- package/dist/client/assets/chunk-XIRO2GV7-C9gOnffv.js +1 -0
- package/dist/client/assets/chunk-XPW4576I-CcqR6BsE.js +32 -0
- package/dist/client/assets/chunk-XZSTWKYB-C5JJ0TZR.js +94 -0
- package/dist/client/assets/chunk-YBOYWFTD-B6kAkNgH.js +1 -0
- package/dist/client/assets/classDiagram-VBA2DB6C-DlDUg6JI.js +1 -0
- package/dist/client/assets/classDiagram-v2-RAHNMMFH-BxzJfV1S.js +1 -0
- package/dist/client/assets/clone-DuY6BQEm.js +1 -0
- package/dist/client/assets/cose-bilkent-S5V4N54A-hlDud6Ym.js +1 -0
- package/dist/client/assets/cytoscape.esm-B3gzQ1NF.js +321 -0
- package/dist/client/assets/dagre-BwDYerGQ.js +1 -0
- package/dist/client/assets/dagre-KLK3FWXG-KnkMUlUE.js +4 -0
- package/dist/client/assets/defaultLocale-Ck2Xxk-C.js +1 -0
- package/dist/client/assets/diagram-E7M64L7V-DcTCIFUG.js +24 -0
- package/dist/client/assets/diagram-IFDJBPK2-COcDQunj.js +43 -0
- package/dist/client/assets/diagram-P4PSJMXO-DmgET9pD.js +24 -0
- package/dist/client/assets/dist-v55TM3-O.js +1 -0
- package/dist/client/assets/erDiagram-INFDFZHY-ByL02DP-.js +70 -0
- package/dist/client/assets/flowDiagram-PKNHOUZH-CW-lseYE.js +162 -0
- package/dist/client/assets/ganttDiagram-A5KZAMGK-BxLjKRld.js +292 -0
- package/dist/client/assets/gitGraph-HDMCJU4V-CjAGJiCH.js +1 -0
- package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-DLEDjokx.js +65 -0
- package/dist/client/assets/graphlib-WkJoBgka.js +1 -0
- package/dist/client/assets/index-CizZxdOT.js +79 -0
- package/dist/client/assets/index-Cn4K2uvR.css +2 -0
- package/dist/client/assets/info-3K5VOQVL-CB6KpH1K.js +1 -0
- package/dist/client/assets/infoDiagram-LFFYTUFH-CnmYkyCb.js +2 -0
- package/dist/client/assets/init-Bft5Ffpj.js +1 -0
- package/dist/client/assets/isArrayLikeObject-icl0H0jo.js +1 -0
- package/dist/client/assets/isEmpty-Du8sNmkE.js +1 -0
- package/dist/client/assets/ishikawaDiagram-PHBUUO56-zycn1mVK.js +70 -0
- package/dist/client/assets/journeyDiagram-4ABVD52K-aRoH36nV.js +139 -0
- package/dist/client/assets/kanban-definition-K7BYSVSG-BGtGv5yb.js +89 -0
- package/dist/client/assets/katex-BJrMXEjr.js +261 -0
- package/dist/client/assets/line-Cm3ZuldI.js +1 -0
- package/dist/client/assets/linear-HJOLPv7E.js +1 -0
- package/dist/client/assets/math-CNhlSIO3.js +1 -0
- package/dist/client/assets/mermaid-parser.core-BvMqHn4b.js +4 -0
- package/dist/client/assets/mermaid.core-C4SvQTx9.js +11 -0
- package/dist/client/assets/mindmap-definition-YRQLILUH-B8jMe7ir.js +68 -0
- package/dist/client/assets/ordinal-DIg8h6NI.js +1 -0
- package/dist/client/assets/packet-RMMSAZCW-CzbC-tXD.js +1 -0
- package/dist/client/assets/path-DfRbCp9y.js +1 -0
- package/dist/client/assets/pie-UPGHQEXC-CmhYIo8p.js +1 -0
- package/dist/client/assets/pieDiagram-SKSYHLDU-CGWbtgxq.js +30 -0
- package/dist/client/assets/{prism-bash-DTkDXsAh.js → prism-bash-6uMTC0Q2.js} +1 -1
- package/dist/client/assets/prism-csharp-Dkc2OSmh.js +1 -0
- package/dist/client/assets/prism-dart-iZy_wlz-.js +1 -0
- package/dist/client/assets/prism-elixir-BIzI9WJK.js +1 -0
- package/dist/client/assets/prism-hcl-Bx2FGBKG.js +1 -0
- package/dist/client/assets/prism-java-DBXf7fH0.js +1 -0
- package/dist/client/assets/prism-markup-templating-DS0ksKLt.js +1 -0
- package/dist/client/assets/prism-perl-BlhPiMfT.js +1 -0
- package/dist/client/assets/prism-php-DVtOAJsW.js +1 -0
- package/dist/client/assets/{prism-protobuf-DiQ_z8B5.js → prism-protobuf-BUsrNVvv.js} +1 -1
- package/dist/client/assets/prism-ruby-Saes64I6.js +1 -0
- package/dist/client/assets/{prism-scala-BjNo2HkN.js → prism-scala-ANOINMog.js} +1 -1
- package/dist/client/assets/prism-solidity-C5Mx5y66.js +1 -0
- package/dist/client/assets/{prism-sql-AgAyy5H_.js → prism-sql-D5pwK0Dp.js} +1 -1
- package/dist/client/assets/{prism-vim-uciLQ2PQ.js → prism-vim-BSZSu-gX.js} +1 -1
- package/dist/client/assets/quadrantDiagram-337W2JSQ-CQ1QKsru.js +7 -0
- package/dist/client/assets/radar-KQ55EAFF-BCa9lsCc.js +1 -0
- package/dist/client/assets/requirementDiagram-Z7DCOOCP-Co1LyL5T.js +73 -0
- package/dist/client/assets/rough.esm-KjoEK0it.js +1 -0
- package/dist/client/assets/sankeyDiagram-WA2Y5GQK-BQVbT6bS.js +10 -0
- package/dist/client/assets/sequenceDiagram-2WXFIKYE-DGIEkdPm.js +145 -0
- package/dist/client/assets/src-DsmFf7gO.js +1 -0
- package/dist/client/assets/stateDiagram-RAJIS63D-DgjKbXnG.js +1 -0
- package/dist/client/assets/stateDiagram-v2-FVOUBMTO-gPrpjL74.js +1 -0
- package/dist/client/assets/timeline-definition-YZTLITO2-Dz2dVWjY.js +61 -0
- package/dist/client/assets/treemap-KZPCXAKY-DXiPfAB6.js +1 -0
- package/dist/client/assets/vennDiagram-LZ73GAT5-IIH5S1B6.js +34 -0
- package/dist/client/assets/xychartDiagram-JWTSCODW-DeYZhM2j.js +7 -0
- package/dist/client/index.html +2 -2
- package/dist/server/git-diff-tui.d.ts +1 -1
- package/dist/server/git-diff-tui.js +7 -5
- package/dist/server/git-diff-tui.test.d.ts +1 -0
- package/dist/server/git-diff-tui.test.js +60 -0
- package/dist/server/git-diff.d.ts +3 -1
- package/dist/server/git-diff.js +40 -3
- package/dist/server/git-diff.test.js +20 -0
- package/dist/server/server.d.ts +1 -0
- package/dist/server/server.js +4 -3
- package/dist/server/server.test.js +32 -0
- package/dist/tui/App.d.ts +1 -0
- package/dist/tui/App.js +2 -2
- package/dist/types/diff.d.ts +1 -0
- package/dist/utils/commentImports.js +3 -2
- package/dist/utils/createId.d.ts +1 -0
- package/dist/utils/createId.js +5 -0
- package/dist/utils/createId.test.d.ts +1 -0
- package/dist/utils/createId.test.js +48 -0
- package/package.json +5 -5
- package/dist/client/assets/_basePickBy-B9N-f0iT.js +0 -1
- package/dist/client/assets/_baseUniq-tbL7nVvN.js +0 -1
- package/dist/client/assets/arc-BOY-7mep.js +0 -1
- package/dist/client/assets/architectureDiagram-2XIMDMQ5-59AvHaSB.js +0 -36
- package/dist/client/assets/blockDiagram-WCTKOSBZ-DXIlumQk.js +0 -132
- package/dist/client/assets/c4Diagram-IC4MRINW-BbfZ0uRn.js +0 -10
- package/dist/client/assets/channel-cZXsTJxA.js +0 -1
- package/dist/client/assets/chunk-4BX2VUAB-l7rcB2IW.js +0 -1
- package/dist/client/assets/chunk-55IACEB6-CrZL3qv9.js +0 -1
- package/dist/client/assets/chunk-JSJVCQXG-DyBDhAEM.js +0 -1
- package/dist/client/assets/chunk-KX2RTZJC-By5mkZmU.js +0 -1
- package/dist/client/assets/chunk-NQ4KR5QH-C30p9xRx.js +0 -220
- package/dist/client/assets/chunk-QZHKN3VN-DVlhR2wU.js +0 -1
- package/dist/client/assets/chunk-WL4C6EOR-Cn7a6CO3.js +0 -189
- package/dist/client/assets/classDiagram-VBA2DB6C-B_coIPEy.js +0 -1
- package/dist/client/assets/classDiagram-v2-RAHNMMFH-B_coIPEy.js +0 -1
- package/dist/client/assets/clone-BjaT2HOk.js +0 -1
- package/dist/client/assets/cose-bilkent-S5V4N54A-LyauIk_9.js +0 -1
- package/dist/client/assets/cytoscape.esm-5J0xJHOV.js +0 -321
- package/dist/client/assets/dagre-KLK3FWXG-DRWb2KE3.js +0 -4
- package/dist/client/assets/defaultLocale-DX6XiGOO.js +0 -1
- package/dist/client/assets/diagram-E7M64L7V-ChT6mNWK.js +0 -24
- package/dist/client/assets/diagram-IFDJBPK2-CqbTduoP.js +0 -43
- package/dist/client/assets/diagram-P4PSJMXO-Bzv5Z3ri.js +0 -24
- package/dist/client/assets/erDiagram-INFDFZHY-CvXfUZ4L.js +0 -70
- package/dist/client/assets/flowDiagram-PKNHOUZH-CxmpNUKq.js +0 -162
- package/dist/client/assets/ganttDiagram-A5KZAMGK-9LpZCsg6.js +0 -292
- package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-C6yZOrQJ.js +0 -65
- package/dist/client/assets/graph-bUZ7uHLW.js +0 -1
- package/dist/client/assets/index-BLNN1bfE.js +0 -98
- package/dist/client/assets/index-VxkpzDXr.css +0 -1
- package/dist/client/assets/infoDiagram-LFFYTUFH-Djdy3W21.js +0 -2
- package/dist/client/assets/init-Gi6I4Gst.js +0 -1
- package/dist/client/assets/ishikawaDiagram-PHBUUO56-oOdwCpeS.js +0 -70
- package/dist/client/assets/journeyDiagram-4ABVD52K-DTb_nGAw.js +0 -139
- package/dist/client/assets/kanban-definition-K7BYSVSG-CMtP7pHA.js +0 -89
- package/dist/client/assets/katex-C-M49wc6.js +0 -261
- package/dist/client/assets/layout-CXr5MatK.js +0 -1
- package/dist/client/assets/linear-pOMS9pjV.js +0 -1
- package/dist/client/assets/mermaid.core-DV5JJ1Ie.js +0 -249
- package/dist/client/assets/mindmap-definition-YRQLILUH-DN-sbonc.js +0 -68
- package/dist/client/assets/ordinal-Cboi1Yqb.js +0 -1
- package/dist/client/assets/pieDiagram-SKSYHLDU-tAHCkgh1.js +0 -30
- package/dist/client/assets/prism-csharp-5CQ0RcEE.js +0 -1
- package/dist/client/assets/prism-dart-MjriiaMt.js +0 -1
- package/dist/client/assets/prism-elixir-BSOTyVg2.js +0 -1
- package/dist/client/assets/prism-hcl-BYvi1mtM.js +0 -1
- package/dist/client/assets/prism-java-DMU2FM4X.js +0 -1
- package/dist/client/assets/prism-markup-templating-Ct1xsyfA.js +0 -1
- package/dist/client/assets/prism-perl-CpfvaEQk.js +0 -1
- package/dist/client/assets/prism-php-SC920LoD.js +0 -1
- package/dist/client/assets/prism-ruby-DZph-YiO.js +0 -1
- package/dist/client/assets/prism-solidity-qTLbmiAT.js +0 -1
- package/dist/client/assets/quadrantDiagram-337W2JSQ-B0wODmgR.js +0 -7
- package/dist/client/assets/requirementDiagram-Z7DCOOCP-A3aeHC06.js +0 -73
- package/dist/client/assets/sankeyDiagram-WA2Y5GQK-BWa6kZhG.js +0 -10
- package/dist/client/assets/sequenceDiagram-2WXFIKYE-Cx_COX9G.js +0 -145
- package/dist/client/assets/stateDiagram-RAJIS63D-BXGnN6rZ.js +0 -1
- package/dist/client/assets/stateDiagram-v2-FVOUBMTO-CMw3xNha.js +0 -1
- package/dist/client/assets/timeline-definition-YZTLITO2-DbqaUm9k.js +0 -61
- package/dist/client/assets/treemap-KZPCXAKY-CfEujPCR.js +0 -162
- package/dist/client/assets/vennDiagram-LZ73GAT5-CqJE8CAD.js +0 -34
- package/dist/client/assets/xychartDiagram-JWTSCODW-CfdDvzHC.js +0 -7
package/dist/server/server.js
CHANGED
|
@@ -51,7 +51,7 @@ export async function startServer(options) {
|
|
|
51
51
|
diffDataCache = parser.parseStdinDiff(options.stdinDiff);
|
|
52
52
|
}
|
|
53
53
|
else {
|
|
54
|
-
diffDataCache = await parser.parseDiff(options.targetCommitish ?? '', options.baseCommitish ?? '', currentIgnoreWhitespace);
|
|
54
|
+
diffDataCache = await parser.parseDiff(options.targetCommitish ?? '', options.baseCommitish ?? '', currentIgnoreWhitespace, options.contextLines);
|
|
55
55
|
}
|
|
56
56
|
// Function to invalidate cache when file changes are detected
|
|
57
57
|
const invalidateCache = () => {
|
|
@@ -92,7 +92,7 @@ export async function startServer(options) {
|
|
|
92
92
|
currentIgnoreWhitespace = ignoreWhitespace;
|
|
93
93
|
currentBaseCommitish = requestedBase;
|
|
94
94
|
currentTargetCommitish = requestedTarget;
|
|
95
|
-
diffDataCache = await parser.parseDiff(requestedTarget, requestedBase, ignoreWhitespace);
|
|
95
|
+
diffDataCache = await parser.parseDiff(requestedTarget, requestedBase, ignoreWhitespace, options.contextLines);
|
|
96
96
|
generatedStatusCache.clear();
|
|
97
97
|
}
|
|
98
98
|
// Resolve symbolic refs like HEAD/HEAD^ to actual hashes for the UI
|
|
@@ -179,7 +179,7 @@ export async function startServer(options) {
|
|
|
179
179
|
return;
|
|
180
180
|
}
|
|
181
181
|
try {
|
|
182
|
-
const { branches, commits, resolvedBase, resolvedTarget } = await parser.getRevisionOptions(currentBaseCommitish, currentTargetCommitish);
|
|
182
|
+
const { branches, commits, originDefaultBranch, resolvedBase, resolvedTarget } = await parser.getRevisionOptions(currentBaseCommitish, currentTargetCommitish);
|
|
183
183
|
const response = {
|
|
184
184
|
specialOptions: [
|
|
185
185
|
{ value: '.', label: 'All Uncommitted Changes' },
|
|
@@ -188,6 +188,7 @@ export async function startServer(options) {
|
|
|
188
188
|
],
|
|
189
189
|
branches,
|
|
190
190
|
commits,
|
|
191
|
+
originDefaultBranch,
|
|
191
192
|
resolvedBase,
|
|
192
193
|
resolvedTarget,
|
|
193
194
|
};
|
|
@@ -5,6 +5,7 @@ import { startServer } from './server.js';
|
|
|
5
5
|
// Add fetch polyfill for Node.js test environment
|
|
6
6
|
const { fetch } = await import('undici');
|
|
7
7
|
globalThis.fetch = fetch;
|
|
8
|
+
const parserInstances = vi.hoisted(() => []);
|
|
8
9
|
// Helper function to get available port
|
|
9
10
|
async function getAvailablePort(preferredPort) {
|
|
10
11
|
let port = preferredPort;
|
|
@@ -25,6 +26,9 @@ async function getAvailablePort(preferredPort) {
|
|
|
25
26
|
// Mock GitDiffParser
|
|
26
27
|
vi.mock('./git-diff.js', () => {
|
|
27
28
|
class GitDiffParserMock {
|
|
29
|
+
constructor() {
|
|
30
|
+
parserInstances.push(this);
|
|
31
|
+
}
|
|
28
32
|
validateCommit = vi.fn().mockResolvedValue(true);
|
|
29
33
|
parseDiff = vi.fn().mockResolvedValue({
|
|
30
34
|
targetCommit: 'abc123',
|
|
@@ -68,6 +72,7 @@ vi.mock('./git-diff.js', () => {
|
|
|
68
72
|
getRevisionOptions = vi.fn().mockResolvedValue({
|
|
69
73
|
branches: [{ name: 'main', current: true }],
|
|
70
74
|
commits: [{ hash: 'abc1234', shortHash: 'abc1234', message: 'Test commit' }],
|
|
75
|
+
originDefaultBranch: 'origin/main',
|
|
71
76
|
resolvedBase: 'abc1234',
|
|
72
77
|
resolvedTarget: 'def5678',
|
|
73
78
|
});
|
|
@@ -167,6 +172,7 @@ describe('Server Integration Tests', () => {
|
|
|
167
172
|
// Mock process.exit to prevent tests from actually exiting
|
|
168
173
|
originalProcessExit = process.exit;
|
|
169
174
|
process.exit = vi.fn();
|
|
175
|
+
parserInstances.length = 0;
|
|
170
176
|
});
|
|
171
177
|
afterEach(async () => {
|
|
172
178
|
// Restore process.exit
|
|
@@ -226,6 +232,17 @@ describe('Server Integration Tests', () => {
|
|
|
226
232
|
servers.push(result.server);
|
|
227
233
|
expect(result.url).toContain('http://localhost:'); // Display host conversion
|
|
228
234
|
});
|
|
235
|
+
it('passes context lines to the initial diff load', async () => {
|
|
236
|
+
const result = await startServer({
|
|
237
|
+
targetCommitish: 'HEAD',
|
|
238
|
+
baseCommitish: 'HEAD^',
|
|
239
|
+
preferredPort: 9025,
|
|
240
|
+
contextLines: 4,
|
|
241
|
+
});
|
|
242
|
+
servers.push(result.server);
|
|
243
|
+
const parser = parserInstances.at(-1);
|
|
244
|
+
expect(parser?.parseDiff).toHaveBeenCalledWith('HEAD', 'HEAD^', false, 4);
|
|
245
|
+
});
|
|
229
246
|
});
|
|
230
247
|
describe('API endpoints', () => {
|
|
231
248
|
let port;
|
|
@@ -256,6 +273,20 @@ describe('Server Integration Tests', () => {
|
|
|
256
273
|
expect(response.ok).toBe(true);
|
|
257
274
|
expect(data).toHaveProperty('ignoreWhitespace', true);
|
|
258
275
|
});
|
|
276
|
+
it('GET /api/diff preserves context lines when recalculating revisions', async () => {
|
|
277
|
+
const result = await startServer({
|
|
278
|
+
targetCommitish: 'HEAD',
|
|
279
|
+
baseCommitish: 'HEAD^',
|
|
280
|
+
preferredPort: 9031,
|
|
281
|
+
contextLines: 2,
|
|
282
|
+
});
|
|
283
|
+
servers.push(result.server);
|
|
284
|
+
const parser = parserInstances.at(-1);
|
|
285
|
+
parser?.parseDiff.mockClear();
|
|
286
|
+
const response = await fetch(`http://localhost:${result.port}/api/diff?base=main&target=feature&ignoreWhitespace=true`);
|
|
287
|
+
expect(response.ok).toBe(true);
|
|
288
|
+
expect(parser?.parseDiff).toHaveBeenCalledWith('feature', 'main', true, 2);
|
|
289
|
+
});
|
|
259
290
|
it('GET /api/diff returns comment import payload when configured', async () => {
|
|
260
291
|
const importedComments = [
|
|
261
292
|
{
|
|
@@ -565,6 +596,7 @@ describe('Server Integration Tests', () => {
|
|
|
565
596
|
expect(data.commits).toEqual([
|
|
566
597
|
{ hash: 'abc1234', shortHash: 'abc1234', message: 'Test commit' },
|
|
567
598
|
]);
|
|
599
|
+
expect(data.originDefaultBranch).toBe('origin/main');
|
|
568
600
|
expect(data.resolvedBase).toBe('abc1234');
|
|
569
601
|
expect(data.resolvedTarget).toBe('def5678');
|
|
570
602
|
});
|
package/dist/tui/App.d.ts
CHANGED
package/dist/tui/App.js
CHANGED
|
@@ -6,7 +6,7 @@ import DiffViewer from './components/DiffViewer.js';
|
|
|
6
6
|
import FileList from './components/FileList.js';
|
|
7
7
|
import SideBySideDiffViewer from './components/SideBySideDiffViewer.js';
|
|
8
8
|
import StatusBar from './components/StatusBar.js';
|
|
9
|
-
const App = ({ targetCommitish, baseCommitish, mode, repoPath }) => {
|
|
9
|
+
const App = ({ targetCommitish, baseCommitish, mode, repoPath, contextLines, }) => {
|
|
10
10
|
const [files, setFiles] = useState([]);
|
|
11
11
|
const [selectedFileIndex, setSelectedFileIndex] = useState(0);
|
|
12
12
|
const [loading, setLoading] = useState(true);
|
|
@@ -17,7 +17,7 @@ const App = ({ targetCommitish, baseCommitish, mode, repoPath }) => {
|
|
|
17
17
|
setLoading(true);
|
|
18
18
|
setError(null);
|
|
19
19
|
try {
|
|
20
|
-
const fileDiffs = await loadGitDiff(targetCommitish, baseCommitish, repoPath);
|
|
20
|
+
const fileDiffs = await loadGitDiff(targetCommitish, baseCommitish, repoPath, contextLines);
|
|
21
21
|
setFiles(fileDiffs);
|
|
22
22
|
setLoading(false);
|
|
23
23
|
}
|
package/dist/types/diff.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createId } from './createId.js';
|
|
1
2
|
function isRecord(value) {
|
|
2
3
|
return typeof value === 'object' && value !== null;
|
|
3
4
|
}
|
|
@@ -174,7 +175,7 @@ function sortByNewestThread(left, right) {
|
|
|
174
175
|
}
|
|
175
176
|
function createImportedThread(commentImport, now) {
|
|
176
177
|
const { createdAt, updatedAt } = toThreadTimestamp(commentImport, now);
|
|
177
|
-
const threadId = commentImport.id ??
|
|
178
|
+
const threadId = commentImport.id ?? createId();
|
|
178
179
|
return {
|
|
179
180
|
id: threadId,
|
|
180
181
|
filePath: commentImport.filePath,
|
|
@@ -196,7 +197,7 @@ function createImportedThread(commentImport, now) {
|
|
|
196
197
|
function createImportedReply(commentImport, now) {
|
|
197
198
|
const { createdAt, updatedAt } = toThreadTimestamp(commentImport, now);
|
|
198
199
|
return {
|
|
199
|
-
id: commentImport.id ??
|
|
200
|
+
id: commentImport.id ?? createId(),
|
|
200
201
|
body: commentImport.body,
|
|
201
202
|
author: commentImport.author,
|
|
202
203
|
createdAt,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createId(): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { createId } from './createId';
|
|
3
|
+
describe('createId', () => {
|
|
4
|
+
it('creates a 16-character lowercase alphanumeric id', () => {
|
|
5
|
+
const randomSpy = vi.spyOn(Math, 'random').mockReturnValue(0);
|
|
6
|
+
expect(createId()).toBe('aaaaaaaaaaaaaaaa');
|
|
7
|
+
randomSpy.mockRestore();
|
|
8
|
+
});
|
|
9
|
+
it('creates different ids across successive calls', () => {
|
|
10
|
+
const randomSpy = vi
|
|
11
|
+
.spyOn(Math, 'random')
|
|
12
|
+
.mockReturnValueOnce(0)
|
|
13
|
+
.mockReturnValueOnce(1 / 36)
|
|
14
|
+
.mockReturnValueOnce(2 / 36)
|
|
15
|
+
.mockReturnValueOnce(3 / 36)
|
|
16
|
+
.mockReturnValueOnce(4 / 36)
|
|
17
|
+
.mockReturnValueOnce(5 / 36)
|
|
18
|
+
.mockReturnValueOnce(6 / 36)
|
|
19
|
+
.mockReturnValueOnce(7 / 36)
|
|
20
|
+
.mockReturnValueOnce(8 / 36)
|
|
21
|
+
.mockReturnValueOnce(9 / 36)
|
|
22
|
+
.mockReturnValueOnce(10 / 36)
|
|
23
|
+
.mockReturnValueOnce(11 / 36)
|
|
24
|
+
.mockReturnValueOnce(12 / 36)
|
|
25
|
+
.mockReturnValueOnce(13 / 36)
|
|
26
|
+
.mockReturnValueOnce(14 / 36)
|
|
27
|
+
.mockReturnValueOnce(15 / 36)
|
|
28
|
+
.mockReturnValueOnce(16 / 36)
|
|
29
|
+
.mockReturnValueOnce(17 / 36)
|
|
30
|
+
.mockReturnValueOnce(18 / 36)
|
|
31
|
+
.mockReturnValueOnce(19 / 36)
|
|
32
|
+
.mockReturnValueOnce(20 / 36)
|
|
33
|
+
.mockReturnValueOnce(21 / 36)
|
|
34
|
+
.mockReturnValueOnce(22 / 36)
|
|
35
|
+
.mockReturnValueOnce(23 / 36)
|
|
36
|
+
.mockReturnValueOnce(24 / 36)
|
|
37
|
+
.mockReturnValueOnce(25 / 36)
|
|
38
|
+
.mockReturnValueOnce(26 / 36)
|
|
39
|
+
.mockReturnValueOnce(27 / 36)
|
|
40
|
+
.mockReturnValueOnce(28 / 36)
|
|
41
|
+
.mockReturnValueOnce(29 / 36)
|
|
42
|
+
.mockReturnValueOnce(30 / 36)
|
|
43
|
+
.mockReturnValueOnce(31 / 36);
|
|
44
|
+
expect(createId()).toBe('abcdefghijklmnop');
|
|
45
|
+
expect(createId()).toBe('qrstuvwxyz012345');
|
|
46
|
+
randomSpy.mockRestore();
|
|
47
|
+
});
|
|
48
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "difit",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "A lightweight command-line tool that spins up a local web server to display Git commit diffs in a GitHub-like Files changed view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -87,21 +87,21 @@
|
|
|
87
87
|
"@types/node": "^24.0.8",
|
|
88
88
|
"@types/react": "^19.1.8",
|
|
89
89
|
"@types/react-dom": "^19.1.6",
|
|
90
|
-
"@vitejs/plugin-react": "^
|
|
90
|
+
"@vitejs/plugin-react": "^6.0.0",
|
|
91
91
|
"autoprefixer": "^10.4.21",
|
|
92
92
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
93
93
|
"happy-dom": "^20.0.0",
|
|
94
94
|
"knip": "^5.83.0",
|
|
95
95
|
"lefthook": "^2.0.0",
|
|
96
|
-
"oxfmt": "^0.
|
|
96
|
+
"oxfmt": "^0.41.0",
|
|
97
97
|
"oxlint": "^1.49.0",
|
|
98
|
-
"oxlint-tsgolint": "^0.
|
|
98
|
+
"oxlint-tsgolint": "^0.17.0",
|
|
99
99
|
"playwright": "^1.54.1",
|
|
100
100
|
"postcss": "^8.5.6",
|
|
101
101
|
"tailwindcss": "^4.1.11",
|
|
102
102
|
"typescript": "^5.8.3",
|
|
103
103
|
"undici": "^7.11.0",
|
|
104
|
-
"vite": "^
|
|
104
|
+
"vite": "^8.0.0",
|
|
105
105
|
"vitest": "^4.0.6"
|
|
106
106
|
},
|
|
107
107
|
"engines": {
|
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
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};
|