spec-copy-selection 1.0.4 → 1.0.7
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.
|
@@ -10,14 +10,35 @@ const promises_1 = require("node:fs/promises");
|
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
11
|
const node_readline_1 = require("node:readline");
|
|
12
12
|
const FILE_SIZE_THRESHOLD = 10 * 1024 * 1024;
|
|
13
|
+
function extractFromLines(lines, startLine, endLine) {
|
|
14
|
+
const totalLines = lines.length;
|
|
15
|
+
if (startLine > totalLines) {
|
|
16
|
+
throw new Error(`Invalid range: start line (${startLine}) exceeds file length (${totalLines} lines)`);
|
|
17
|
+
}
|
|
18
|
+
const actualEndLine = Math.min(endLine, totalLines);
|
|
19
|
+
const content = lines.slice(startLine - 1, actualEndLine).join('\n');
|
|
20
|
+
return { content, startLine, endLine: actualEndLine };
|
|
21
|
+
}
|
|
13
22
|
function shouldPrependSeparator(filePath, startLine, linesBeforeStart) {
|
|
14
|
-
if (
|
|
23
|
+
if (node_path_1.default.basename(filePath) !== 'backlog.md') {
|
|
15
24
|
return false;
|
|
16
25
|
}
|
|
17
26
|
if (startLine === 1) {
|
|
18
27
|
return false;
|
|
19
28
|
}
|
|
20
|
-
|
|
29
|
+
let lastSeparatorIndex = -1;
|
|
30
|
+
for (let i = linesBeforeStart.length - 1; i >= 0; i--) {
|
|
31
|
+
if (linesBeforeStart[i].trim() === '---') {
|
|
32
|
+
lastSeparatorIndex = i;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (lastSeparatorIndex === -1) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
const linesAfterSeparator = linesBeforeStart.slice(lastSeparatorIndex + 1);
|
|
40
|
+
const hasContentAfterSeparator = linesAfterSeparator.some((line) => line.trim() !== '');
|
|
41
|
+
return hasContentAfterSeparator;
|
|
21
42
|
}
|
|
22
43
|
async function insertSeparatorToFile(filePath, startLine, endLine, lines) {
|
|
23
44
|
const updatedLines = [
|
|
@@ -149,7 +170,7 @@ async function readFileRange(filePath, startLine, endLine) {
|
|
|
149
170
|
throw new Error(`Permission denied: ${filePath}`);
|
|
150
171
|
}
|
|
151
172
|
}
|
|
152
|
-
if (
|
|
173
|
+
if (node_path_1.default.basename(resolvedPath) === 'backlog.md' && startLine > 1) {
|
|
153
174
|
let fileContent;
|
|
154
175
|
try {
|
|
155
176
|
fileContent = await (0, promises_1.readFile)(resolvedPath, 'utf-8');
|
|
@@ -171,6 +192,7 @@ async function readFileRange(filePath, startLine, endLine) {
|
|
|
171
192
|
if (shouldPrependSeparator(resolvedPath, startLine, linesBeforeStart)) {
|
|
172
193
|
return insertSeparatorToFile(resolvedPath, startLine, endLine, lines);
|
|
173
194
|
}
|
|
195
|
+
return extractFromLines(lines, startLine, endLine);
|
|
174
196
|
}
|
|
175
197
|
if (fileSize >= FILE_SIZE_THRESHOLD) {
|
|
176
198
|
return readFileRangeLarge(resolvedPath, filePath, startLine, endLine);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readFileRange.js","sourceRoot":"","sources":["../../src/cli/readFileRange.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"readFileRange.js","sourceRoot":"","sources":["../../src/cli/readFileRange.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ const bun_test_1 = require("bun:test");
|
|
|
4
4
|
const readFileRange_js_1 = require("./readFileRange.js");
|
|
5
5
|
(0, bun_test_1.describe)('shouldPrependSeparator', () => {
|
|
6
6
|
(0, bun_test_1.describe)('backlog.md file detection', () => {
|
|
7
|
-
(0, bun_test_1.test)('returns
|
|
7
|
+
(0, bun_test_1.test)('returns false for backlog.md files in first section (no separator before)', () => {
|
|
8
8
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 2, ['line1']);
|
|
9
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
9
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
10
10
|
});
|
|
11
11
|
(0, bun_test_1.test)('returns false for non-backlog.md files (requirements.md)', () => {
|
|
12
12
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/requirements.md', 2, ['line1']);
|
|
@@ -18,23 +18,23 @@ const readFileRange_js_1 = require("./readFileRange.js");
|
|
|
18
18
|
});
|
|
19
19
|
(0, bun_test_1.test)('handles relative path to backlog.md', () => {
|
|
20
20
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('backlog.md', 2, ['line1']);
|
|
21
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
21
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
22
22
|
});
|
|
23
23
|
(0, bun_test_1.test)('handles absolute path to backlog.md', () => {
|
|
24
24
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('/home/user/project/specs/feature/backlog.md', 2, [
|
|
25
25
|
'line1',
|
|
26
26
|
]);
|
|
27
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
27
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
28
28
|
});
|
|
29
29
|
(0, bun_test_1.test)('handles Windows absolute path to backlog.md', () => {
|
|
30
30
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('D:\\projects\\specs\\feature\\backlog.md', 2, [
|
|
31
31
|
'line1',
|
|
32
32
|
]);
|
|
33
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
33
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
34
34
|
});
|
|
35
35
|
(0, bun_test_1.test)('handles nested path to backlog.md', () => {
|
|
36
36
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/deep/nested/feature/backlog.md', 2, ['line1']);
|
|
37
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
37
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
40
|
(0, bun_test_1.describe)('startLine validation', () => {
|
|
@@ -42,74 +42,74 @@ const readFileRange_js_1 = require("./readFileRange.js");
|
|
|
42
42
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 1, []);
|
|
43
43
|
(0, bun_test_1.expect)(result).toBe(false);
|
|
44
44
|
});
|
|
45
|
-
(0, bun_test_1.test)('returns
|
|
45
|
+
(0, bun_test_1.test)('returns false when startLine is 2 and no separator exists (first section)', () => {
|
|
46
46
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 2, ['line1']);
|
|
47
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
47
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
48
48
|
});
|
|
49
|
-
(0, bun_test_1.test)('returns
|
|
49
|
+
(0, bun_test_1.test)('returns false when startLine is 10 and no separator exists (first section)', () => {
|
|
50
50
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 10, [
|
|
51
51
|
'line1',
|
|
52
52
|
'line2',
|
|
53
53
|
'line3',
|
|
54
54
|
]);
|
|
55
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
55
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
56
56
|
});
|
|
57
57
|
});
|
|
58
58
|
(0, bun_test_1.describe)('separator detection', () => {
|
|
59
|
-
(0, bun_test_1.test)('returns
|
|
59
|
+
(0, bun_test_1.test)('returns true when "---" exists with content after it (new section)', () => {
|
|
60
60
|
const linesBeforeStart = ['line1', '---', 'line3'];
|
|
61
61
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
62
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
62
|
+
(0, bun_test_1.expect)(result).toBe(true);
|
|
63
63
|
});
|
|
64
64
|
(0, bun_test_1.test)('returns false when separator exists with empty lines around it (bug fix)', () => {
|
|
65
65
|
const linesBeforeStart = ['a', 'b', '', '---', ''];
|
|
66
66
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 6, linesBeforeStart);
|
|
67
67
|
(0, bun_test_1.expect)(result).toBe(false);
|
|
68
68
|
});
|
|
69
|
-
(0, bun_test_1.test)('returns
|
|
69
|
+
(0, bun_test_1.test)('returns false when no "---" exists in any line (first section)', () => {
|
|
70
70
|
const linesBeforeStart = ['line1', 'line2', 'line3'];
|
|
71
71
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
72
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
72
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
73
73
|
});
|
|
74
|
-
(0, bun_test_1.test)('handles trimmed separators with leading whitespace', () => {
|
|
74
|
+
(0, bun_test_1.test)('handles trimmed separators with leading whitespace and content after', () => {
|
|
75
75
|
const linesBeforeStart = ['line1', ' ---', 'line3'];
|
|
76
76
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
77
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
77
|
+
(0, bun_test_1.expect)(result).toBe(true);
|
|
78
78
|
});
|
|
79
|
-
(0, bun_test_1.test)('handles trimmed separators with trailing whitespace', () => {
|
|
79
|
+
(0, bun_test_1.test)('handles trimmed separators with trailing whitespace and content after', () => {
|
|
80
80
|
const linesBeforeStart = ['line1', '--- ', 'line3'];
|
|
81
81
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
82
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
82
|
+
(0, bun_test_1.expect)(result).toBe(true);
|
|
83
83
|
});
|
|
84
|
-
(0, bun_test_1.test)('handles trimmed separators with both leading and trailing whitespace', () => {
|
|
84
|
+
(0, bun_test_1.test)('handles trimmed separators with both leading and trailing whitespace and content after', () => {
|
|
85
85
|
const linesBeforeStart = ['line1', ' --- ', 'line3'];
|
|
86
86
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
87
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
87
|
+
(0, bun_test_1.expect)(result).toBe(true);
|
|
88
88
|
});
|
|
89
|
-
(0, bun_test_1.test)('does NOT match partial separators: "----"', () => {
|
|
89
|
+
(0, bun_test_1.test)('does NOT match partial separators: "----" (first section)', () => {
|
|
90
90
|
const linesBeforeStart = ['line1', '----', 'line3'];
|
|
91
91
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
92
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
92
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
93
93
|
});
|
|
94
|
-
(0, bun_test_1.test)('does NOT match partial separators: "-- -"', () => {
|
|
94
|
+
(0, bun_test_1.test)('does NOT match partial separators: "-- -" (first section)', () => {
|
|
95
95
|
const linesBeforeStart = ['line1', '-- -', 'line3'];
|
|
96
96
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
97
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
97
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
98
98
|
});
|
|
99
|
-
(0, bun_test_1.test)('does NOT match partial separators: "---text"', () => {
|
|
99
|
+
(0, bun_test_1.test)('does NOT match partial separators: "---text" (first section)', () => {
|
|
100
100
|
const linesBeforeStart = ['line1', '---text', 'line3'];
|
|
101
101
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
102
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
102
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
103
103
|
});
|
|
104
|
-
(0, bun_test_1.test)('does NOT match partial separators: "text---"', () => {
|
|
104
|
+
(0, bun_test_1.test)('does NOT match partial separators: "text---" (first section)', () => {
|
|
105
105
|
const linesBeforeStart = ['line1', 'text---', 'line3'];
|
|
106
106
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
107
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
107
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
108
108
|
});
|
|
109
|
-
(0, bun_test_1.test)('returns
|
|
109
|
+
(0, bun_test_1.test)('returns true when separator is at the beginning with content after', () => {
|
|
110
110
|
const linesBeforeStart = ['---', 'line2', 'line3'];
|
|
111
111
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
112
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
112
|
+
(0, bun_test_1.expect)(result).toBe(true);
|
|
113
113
|
});
|
|
114
114
|
(0, bun_test_1.test)('returns false when separator is at the end of linesBeforeStart', () => {
|
|
115
115
|
const linesBeforeStart = ['line1', 'line2', '---'];
|
|
@@ -118,24 +118,24 @@ const readFileRange_js_1 = require("./readFileRange.js");
|
|
|
118
118
|
});
|
|
119
119
|
});
|
|
120
120
|
(0, bun_test_1.describe)('edge cases', () => {
|
|
121
|
-
(0, bun_test_1.test)('handles empty linesBeforeStart array', () => {
|
|
121
|
+
(0, bun_test_1.test)('handles empty linesBeforeStart array (first section)', () => {
|
|
122
122
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 2, []);
|
|
123
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
123
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
124
124
|
});
|
|
125
|
-
(0, bun_test_1.test)('handles array with only empty strings', () => {
|
|
125
|
+
(0, bun_test_1.test)('handles array with only empty strings (first section)', () => {
|
|
126
126
|
const linesBeforeStart = ['', '', ''];
|
|
127
127
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
128
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
128
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
129
129
|
});
|
|
130
|
-
(0, bun_test_1.test)('handles multiple separators in linesBeforeStart', () => {
|
|
130
|
+
(0, bun_test_1.test)('handles multiple separators in linesBeforeStart (uses last separator)', () => {
|
|
131
131
|
const linesBeforeStart = ['line1', '---', 'line3', '---', 'line5'];
|
|
132
132
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 6, linesBeforeStart);
|
|
133
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
133
|
+
(0, bun_test_1.expect)(result).toBe(true);
|
|
134
134
|
});
|
|
135
|
-
(0, bun_test_1.test)('handles separator with tabs', () => {
|
|
135
|
+
(0, bun_test_1.test)('handles separator with tabs and content after', () => {
|
|
136
136
|
const linesBeforeStart = ['line1', '\t---\t', 'line3'];
|
|
137
137
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
138
|
-
(0, bun_test_1.expect)(result).toBe(
|
|
138
|
+
(0, bun_test_1.expect)(result).toBe(true);
|
|
139
139
|
});
|
|
140
140
|
});
|
|
141
141
|
(0, bun_test_1.describe)('combined conditions', () => {
|
|
@@ -147,9 +147,26 @@ const readFileRange_js_1 = require("./readFileRange.js");
|
|
|
147
147
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 1, ['line1']);
|
|
148
148
|
(0, bun_test_1.expect)(result).toBe(false);
|
|
149
149
|
});
|
|
150
|
-
(0, bun_test_1.test)('returns
|
|
150
|
+
(0, bun_test_1.test)('returns true when separator exists with content after (new section)', () => {
|
|
151
151
|
const linesBeforeStart = ['line1', '---', 'line3'];
|
|
152
152
|
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
153
|
+
(0, bun_test_1.expect)(result).toBe(true);
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
(0, bun_test_1.describe)('specific scenarios from backlog', () => {
|
|
157
|
+
(0, bun_test_1.test)('should NOT add separator when startLine is the separator line itself', () => {
|
|
158
|
+
const linesBeforeStart = ['1', '2', '3'];
|
|
159
|
+
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 4, linesBeforeStart);
|
|
160
|
+
(0, bun_test_1.expect)(result).toBe(false);
|
|
161
|
+
});
|
|
162
|
+
(0, bun_test_1.test)('should add separator when content exists after the last separator', () => {
|
|
163
|
+
const linesBeforeStart = ['1', '2', '3', '---', '5 xxx'];
|
|
164
|
+
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 6, linesBeforeStart);
|
|
165
|
+
(0, bun_test_1.expect)(result).toBe(true);
|
|
166
|
+
});
|
|
167
|
+
(0, bun_test_1.test)('should NOT add separator for first section even when startLine > 1', () => {
|
|
168
|
+
const linesBeforeStart = ['1 empty'];
|
|
169
|
+
const result = (0, readFileRange_js_1.shouldPrependSeparator)('specs/feature/backlog.md', 2, linesBeforeStart);
|
|
153
170
|
(0, bun_test_1.expect)(result).toBe(false);
|
|
154
171
|
});
|
|
155
172
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readFileRange.test.js","sourceRoot":"","sources":["../../src/cli/readFileRange.test.ts"],"names":[],"mappings":";;AAAA,uCAAkD;AAClD,yDAA4D;AAE5D,IAAA,mBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAA,mBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,IAAA,eAAI,EAAC,
|
|
1
|
+
{"version":3,"file":"readFileRange.test.js","sourceRoot":"","sources":["../../src/cli/readFileRange.test.ts"],"names":[],"mappings":"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"}
|