code-squad-cli 1.2.3 → 1.2.4
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/dist/flip/routes/file.js +122 -34
- package/dist/flip/routes/files.js +29 -2
- package/dist/flip-ui/dist/assets/index-DTf1sRAX.css +1 -0
- package/dist/flip-ui/dist/assets/index-DmJdj9bX.js +154 -0
- package/dist/flip-ui/dist/index.html +2 -2
- package/dist/index.js +145 -36
- package/package.json +1 -1
- package/dist/flip-ui/dist/assets/index-BqoCRrTA.css +0 -1
- package/dist/flip-ui/dist/assets/index-CgNq-jV5.js +0 -69
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Flip</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-DmJdj9bX.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DTf1sRAX.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root"></div>
|
package/dist/index.js
CHANGED
|
@@ -433,9 +433,34 @@ var DEFAULT_IGNORES = [
|
|
|
433
433
|
"yarn.lock",
|
|
434
434
|
".DS_Store"
|
|
435
435
|
];
|
|
436
|
+
var VISIBLE_DOTFILES = /* @__PURE__ */ new Set([
|
|
437
|
+
".gitignore",
|
|
438
|
+
".gitattributes",
|
|
439
|
+
".env.example",
|
|
440
|
+
".env.local.example",
|
|
441
|
+
".eslintrc",
|
|
442
|
+
".eslintrc.js",
|
|
443
|
+
".eslintrc.cjs",
|
|
444
|
+
".eslintrc.json",
|
|
445
|
+
".eslintrc.yml",
|
|
446
|
+
".prettierrc",
|
|
447
|
+
".prettierrc.js",
|
|
448
|
+
".prettierrc.cjs",
|
|
449
|
+
".prettierrc.json",
|
|
450
|
+
".prettierrc.yml",
|
|
451
|
+
".editorconfig",
|
|
452
|
+
".npmrc",
|
|
453
|
+
".nvmrc",
|
|
454
|
+
".node-version",
|
|
455
|
+
".dockerignore",
|
|
456
|
+
".browserslistrc",
|
|
457
|
+
".babelrc",
|
|
458
|
+
".babelrc.js",
|
|
459
|
+
".babelrc.json"
|
|
460
|
+
]);
|
|
436
461
|
function shouldIgnore(name) {
|
|
437
|
-
if (name.startsWith(".")
|
|
438
|
-
return
|
|
462
|
+
if (name.startsWith(".")) {
|
|
463
|
+
return !VISIBLE_DOTFILES.has(name);
|
|
439
464
|
}
|
|
440
465
|
return DEFAULT_IGNORES.includes(name);
|
|
441
466
|
}
|
|
@@ -510,42 +535,126 @@ import { Router as Router2 } from "express";
|
|
|
510
535
|
import fs3 from "fs";
|
|
511
536
|
import path3 from "path";
|
|
512
537
|
var router2 = Router2();
|
|
538
|
+
var extensionMap = {
|
|
539
|
+
// JavaScript/TypeScript
|
|
540
|
+
js: "javascript",
|
|
541
|
+
mjs: "javascript",
|
|
542
|
+
cjs: "javascript",
|
|
543
|
+
ts: "typescript",
|
|
544
|
+
mts: "typescript",
|
|
545
|
+
cts: "typescript",
|
|
546
|
+
tsx: "tsx",
|
|
547
|
+
jsx: "jsx",
|
|
548
|
+
// Systems languages
|
|
549
|
+
rs: "rust",
|
|
550
|
+
go: "go",
|
|
551
|
+
c: "c",
|
|
552
|
+
cpp: "cpp",
|
|
553
|
+
cc: "cpp",
|
|
554
|
+
cxx: "cpp",
|
|
555
|
+
h: "cpp",
|
|
556
|
+
hpp: "cpp",
|
|
557
|
+
hxx: "cpp",
|
|
558
|
+
// JVM languages
|
|
559
|
+
java: "java",
|
|
560
|
+
kt: "kotlin",
|
|
561
|
+
kts: "kotlin",
|
|
562
|
+
scala: "scala",
|
|
563
|
+
groovy: "groovy",
|
|
564
|
+
// Scripting languages
|
|
565
|
+
py: "python",
|
|
566
|
+
rb: "ruby",
|
|
567
|
+
php: "php",
|
|
568
|
+
pl: "perl",
|
|
569
|
+
lua: "lua",
|
|
570
|
+
// Mobile
|
|
571
|
+
swift: "swift",
|
|
572
|
+
m: "objective-c",
|
|
573
|
+
mm: "objective-cpp",
|
|
574
|
+
dart: "dart",
|
|
575
|
+
// Web
|
|
576
|
+
html: "html",
|
|
577
|
+
htm: "html",
|
|
578
|
+
css: "css",
|
|
579
|
+
scss: "scss",
|
|
580
|
+
sass: "sass",
|
|
581
|
+
less: "less",
|
|
582
|
+
vue: "vue",
|
|
583
|
+
svelte: "svelte",
|
|
584
|
+
astro: "astro",
|
|
585
|
+
// Data formats
|
|
586
|
+
json: "json",
|
|
587
|
+
jsonc: "jsonc",
|
|
588
|
+
yaml: "yaml",
|
|
589
|
+
yml: "yaml",
|
|
590
|
+
toml: "toml",
|
|
591
|
+
xml: "xml",
|
|
592
|
+
csv: "csv",
|
|
593
|
+
// Documentation
|
|
594
|
+
md: "markdown",
|
|
595
|
+
mdx: "mdx",
|
|
596
|
+
rst: "rst",
|
|
597
|
+
tex: "latex",
|
|
598
|
+
// Shell
|
|
599
|
+
sh: "bash",
|
|
600
|
+
bash: "bash",
|
|
601
|
+
zsh: "bash",
|
|
602
|
+
fish: "fish",
|
|
603
|
+
ps1: "powershell",
|
|
604
|
+
bat: "batch",
|
|
605
|
+
cmd: "batch",
|
|
606
|
+
// Database
|
|
607
|
+
sql: "sql",
|
|
608
|
+
prisma: "prisma",
|
|
609
|
+
graphql: "graphql",
|
|
610
|
+
gql: "graphql",
|
|
611
|
+
// Config
|
|
612
|
+
ini: "ini",
|
|
613
|
+
conf: "ini",
|
|
614
|
+
cfg: "ini",
|
|
615
|
+
env: "dotenv",
|
|
616
|
+
// Other
|
|
617
|
+
dockerfile: "dockerfile",
|
|
618
|
+
makefile: "makefile",
|
|
619
|
+
cmake: "cmake",
|
|
620
|
+
diff: "diff",
|
|
621
|
+
patch: "diff"
|
|
622
|
+
};
|
|
623
|
+
var filenameMap = {
|
|
624
|
+
"Makefile": "makefile",
|
|
625
|
+
"makefile": "makefile",
|
|
626
|
+
"GNUmakefile": "makefile",
|
|
627
|
+
"Dockerfile": "dockerfile",
|
|
628
|
+
"dockerfile": "dockerfile",
|
|
629
|
+
"Containerfile": "dockerfile",
|
|
630
|
+
"Jenkinsfile": "groovy",
|
|
631
|
+
"Vagrantfile": "ruby",
|
|
632
|
+
"Gemfile": "ruby",
|
|
633
|
+
"Rakefile": "ruby",
|
|
634
|
+
"Brewfile": "ruby",
|
|
635
|
+
"Podfile": "ruby",
|
|
636
|
+
"Fastfile": "ruby",
|
|
637
|
+
"Guardfile": "ruby",
|
|
638
|
+
".gitignore": "gitignore",
|
|
639
|
+
".gitattributes": "gitattributes",
|
|
640
|
+
".editorconfig": "editorconfig",
|
|
641
|
+
".bashrc": "bash",
|
|
642
|
+
".zshrc": "bash",
|
|
643
|
+
".bash_profile": "bash",
|
|
644
|
+
".profile": "bash",
|
|
645
|
+
"CMakeLists.txt": "cmake",
|
|
646
|
+
"CODEOWNERS": "gitignore"
|
|
647
|
+
};
|
|
513
648
|
function detectLanguage(filePath) {
|
|
649
|
+
const basename2 = path3.basename(filePath);
|
|
650
|
+
if (filenameMap[basename2]) {
|
|
651
|
+
return filenameMap[basename2];
|
|
652
|
+
}
|
|
514
653
|
const ext = path3.extname(filePath).slice(1).toLowerCase();
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
tsx: "tsx",
|
|
520
|
-
jsx: "jsx",
|
|
521
|
-
py: "python",
|
|
522
|
-
go: "go",
|
|
523
|
-
java: "java",
|
|
524
|
-
c: "c",
|
|
525
|
-
cpp: "cpp",
|
|
526
|
-
cc: "cpp",
|
|
527
|
-
cxx: "cpp",
|
|
528
|
-
h: "cpp",
|
|
529
|
-
hpp: "cpp",
|
|
530
|
-
md: "markdown",
|
|
531
|
-
json: "json",
|
|
532
|
-
yaml: "yaml",
|
|
533
|
-
yml: "yaml",
|
|
534
|
-
toml: "toml",
|
|
535
|
-
html: "html",
|
|
536
|
-
css: "css",
|
|
537
|
-
scss: "scss",
|
|
538
|
-
sh: "bash",
|
|
539
|
-
bash: "bash",
|
|
540
|
-
sql: "sql",
|
|
541
|
-
rb: "ruby",
|
|
542
|
-
swift: "swift",
|
|
543
|
-
kt: "kotlin",
|
|
544
|
-
kts: "kotlin",
|
|
545
|
-
xml: "xml",
|
|
546
|
-
vue: "vue"
|
|
547
|
-
};
|
|
548
|
-
return languageMap[ext] || "plaintext";
|
|
654
|
+
if (extensionMap[ext]) {
|
|
655
|
+
return extensionMap[ext];
|
|
656
|
+
}
|
|
657
|
+
return "text";
|
|
549
658
|
}
|
|
550
659
|
router2.get("/", (req, res) => {
|
|
551
660
|
const state = req.app.locals.state;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #21262d;--bg-hover: #30363d;--bg-selected: #1f6feb26;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--border-color: #30363d;--border-subtle: #21262d;--accent-primary: #238636;--accent-primary-hover: #2ea043;--accent-secondary: #1f6feb;--git-modified: #d29922;--git-untracked: #3fb950;--git-deleted: #f85149;--git-added: #3fb950;--line-number-color: #6e7681;--selection-bg: #264f78;--diff-add-bg: rgba(46, 160, 67, .15);--diff-add-text: #7ee787;--diff-add-border: rgba(46, 160, 67, .4);--diff-delete-bg: rgba(248, 81, 73, .15);--diff-delete-text: #ffa198;--diff-delete-border: rgba(248, 81, 73, .4);--diff-hunk-bg: rgba(56, 139, 253, .1);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;--font-mono: "SF Mono", "Menlo", "Monaco", "Consolas", monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--transition-fast: .15s ease;--transition-normal: .2s ease}body{font-family:var(--font-sans);font-size:14px;background-color:var(--bg-primary);color:var(--text-primary);height:100vh;overflow:hidden}#root{height:100%}.app{display:flex;flex-direction:column;height:100%}.main-content{display:flex;flex:1;overflow:hidden}.toolbar{display:flex;align-items:center;justify-content:space-between;height:40px;padding:0 var(--space-3);background-color:var(--bg-secondary);border-bottom:1px solid var(--border-subtle)}.toolbar-left,.toolbar-center,.toolbar-right{display:flex;align-items:center;gap:var(--space-2)}.toolbar-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-1);height:28px;padding:0 var(--space-2);border:none;background:transparent;border-radius:6px;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.toolbar-btn:hover{background-color:var(--bg-hover);color:var(--text-primary)}.toolbar-btn.active{background-color:var(--bg-tertiary);color:var(--text-primary)}.toolbar-btn svg{flex-shrink:0}.diff-toggle{min-width:100px}.diff-mode-label{font-size:12px}.sidebar{width:280px;background-color:var(--bg-secondary);border-right:1px solid var(--border-subtle);overflow:hidden;display:flex;flex-direction:column;transition:width var(--transition-normal),opacity var(--transition-fast)}.sidebar.collapsed{width:0;opacity:0;border-right:none}.content{flex:1;overflow:hidden;display:flex;flex-direction:column;min-width:0}.staging-panel{width:320px;background-color:var(--bg-secondary);border-left:1px solid var(--border-subtle);overflow:hidden;display:flex;flex-direction:column;transition:width var(--transition-normal),opacity var(--transition-fast)}.staging-panel.collapsed{width:0;opacity:0;border-left:none}.footer{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-4);background-color:var(--bg-secondary);border-top:1px solid var(--border-subtle);gap:var(--space-4)}.footer-actions{display:flex;gap:var(--space-2)}.file-tree{display:flex;flex-direction:column;height:100%}.file-tree-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle)}.file-tree-header-actions{display:flex;gap:var(--space-1)}.filter-btn{display:flex;align-items:center;gap:var(--space-1);padding:2px 8px;border:none;background:transparent;border-radius:4px;color:var(--text-muted);font-size:10px;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.filter-btn:hover{background-color:var(--bg-hover);color:var(--text-secondary)}.filter-btn.active{background-color:var(--accent-secondary);color:#fff}.filter-btn .count{background-color:var(--bg-hover);padding:0 4px;border-radius:3px;font-size:9px}.filter-btn.active .count{background-color:#fff3}.file-tree-content{flex:1;overflow-y:auto;padding:var(--space-1) 0}.tree-item{display:flex;align-items:center;padding:var(--space-1) var(--space-2);cursor:pointer;-webkit-user-select:none;user-select:none;gap:6px}.tree-item:hover{background-color:var(--bg-hover)}.tree-icon{font-size:10px;width:14px;text-align:center;color:var(--text-secondary)}.tree-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.git-badge{font-size:10px;font-weight:600;padding:1px 4px;border-radius:3px}.git-badge-modified{color:var(--git-modified);background-color:#d2992226}.git-badge-untracked{color:var(--git-untracked);background-color:#3fb95026}.git-badge-deleted{color:var(--git-deleted);background-color:#f8514926}.git-badge-added{color:var(--git-added);background-color:#3fb95026}.code-viewer{display:flex;flex-direction:column;height:100%;overflow:hidden}.code-viewer-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);gap:var(--space-2)}.code-viewer-empty .hint{font-size:12px;color:var(--text-muted)}.code-viewer-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-4);background-color:var(--bg-secondary);border-bottom:1px solid var(--border-subtle)}.file-path{font-size:13px;font-family:var(--font-mono)}.file-language{font-size:11px;color:var(--text-secondary);text-transform:uppercase}.code-viewer-content{flex:1;overflow:auto;font-family:var(--font-mono);font-size:13px;line-height:1.5}.code-line{display:flex;min-height:20px;cursor:pointer}.code-line:hover{background-color:var(--bg-hover)}.code-line-selected{background-color:var(--selection-bg)!important}.code-line-added{background-color:var(--diff-add-bg)!important}.code-line-added:hover{background-color:#2ea04340!important}.code-line-deleted{background-color:var(--diff-delete-bg)!important}.code-line-deleted:hover{background-color:#f8514940!important}.line-number{display:inline-block;min-width:50px;padding:0 var(--space-3);text-align:right;color:var(--line-number-color);-webkit-user-select:none;user-select:none;background-color:var(--bg-tertiary);border-right:1px solid var(--border-subtle)}.code-line code{flex:1;padding:0 var(--space-3);white-space:pre;background:transparent}.code-line code.hljs{background:transparent;padding:0 var(--space-3)}.code-content{flex:1;padding:0 var(--space-3);white-space:pre}.staging-list{display:flex;flex-direction:column;height:100%}.staging-list-empty{padding:var(--space-4)}.staging-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle)}.staging-hint{font-size:12px;color:var(--text-muted);line-height:1.5}.staging-items{flex:1;overflow-y:auto;padding:var(--space-2)}.staging-item{background-color:var(--bg-tertiary);border-radius:6px;padding:var(--space-2) var(--space-3);margin-bottom:var(--space-2)}.staging-item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-1)}.staging-location{font-family:var(--font-mono);font-size:12px;color:var(--text-secondary)}.staging-comment{font-size:13px;line-height:1.4}.comment-input{display:flex;align-items:center;gap:var(--space-3);flex:1}.comment-selection{font-family:var(--font-mono);font-size:12px;color:var(--accent-secondary);white-space:nowrap}.comment-field{flex:1;padding:var(--space-2) var(--space-3);background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:14px;transition:border-color var(--transition-fast)}.comment-field:focus{outline:none;border-color:var(--accent-secondary)}.comment-hint{color:var(--text-muted);font-size:13px}.fuzzy-finder-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0009;display:flex;justify-content:center;padding-top:80px;z-index:100}.fuzzy-finder{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;box-shadow:0 16px 48px #00000080;width:600px;max-height:400px;display:flex;flex-direction:column;overflow:hidden}.fuzzy-finder-input{padding:var(--space-4);background-color:var(--bg-tertiary);border:none;border-bottom:1px solid var(--border-subtle);color:var(--text-primary);font-size:16px}.fuzzy-finder-input:focus{outline:none}.fuzzy-finder-results{flex:1;overflow-y:auto}.fuzzy-finder-item{padding:var(--space-3) var(--space-4);cursor:pointer;font-family:var(--font-mono);font-size:13px}.fuzzy-finder-item:hover,.fuzzy-finder-item-selected{background-color:var(--bg-selected)}.fuzzy-finder-empty{padding:var(--space-4);color:var(--text-muted);text-align:center}.btn{padding:var(--space-2) var(--space-4);border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:background-color var(--transition-fast)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:var(--accent-primary);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--accent-primary-hover)}.btn-secondary{background-color:var(--bg-tertiary);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background-color:var(--bg-hover)}.btn-small{padding:var(--space-1) var(--space-3)}.btn-link{background:none;border:none;color:var(--accent-secondary);cursor:pointer;font-size:11px}.btn-link:hover{text-decoration:underline}.btn-icon{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;padding:2px 6px}.btn-icon:hover{color:var(--text-primary)}.diff-side-by-side{display:flex;height:100%;overflow:hidden}.diff-pane{flex:1;overflow:auto;font-family:var(--font-mono);font-size:13px;line-height:1.5}.diff-pane-left{border-right:1px solid var(--border-color)}.diff-pane-header{padding:var(--space-2) var(--space-3);background-color:var(--bg-tertiary);border-bottom:1px solid var(--border-subtle);font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.code-viewer-loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#484f58}::-webkit-scrollbar-corner{background:transparent}
|