@polka-codes/cli 0.1.0 → 0.1.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.
Files changed (50) hide show
  1. package/README.md +63 -0
  2. package/dist/config.d.ts +1 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +22 -18
  5. package/dist/config.js.map +1 -1
  6. package/dist/config.test.d.ts +1 -0
  7. package/dist/config.test.d.ts.map +1 -0
  8. package/dist/config.test.js +41 -39
  9. package/dist/config.test.js.map +1 -1
  10. package/dist/handlers.d.ts +1 -0
  11. package/dist/handlers.d.ts.map +1 -0
  12. package/dist/handlers.js +59 -40
  13. package/dist/handlers.js.map +1 -1
  14. package/dist/index.d.ts +2 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +11 -10
  17. package/dist/index.js.map +1 -1
  18. package/dist/runTask.d.ts +1 -0
  19. package/dist/runTask.d.ts.map +1 -0
  20. package/dist/runTask.js +18 -13
  21. package/dist/runTask.js.map +1 -1
  22. package/dist/utils/listFiles.d.ts +1 -0
  23. package/dist/utils/listFiles.d.ts.map +1 -0
  24. package/dist/utils/listFiles.js +16 -12
  25. package/dist/utils/listFiles.js.map +1 -1
  26. package/dist/utils/listFiles.test.d.ts +1 -0
  27. package/dist/utils/listFiles.test.d.ts.map +1 -0
  28. package/dist/utils/listFiles.test.js +39 -37
  29. package/dist/utils/listFiles.test.js.map +1 -1
  30. package/dist/utils/replaceInFile.d.ts +1 -0
  31. package/dist/utils/replaceInFile.d.ts.map +1 -0
  32. package/dist/utils/replaceInFile.js +5 -1
  33. package/dist/utils/replaceInFile.js.map +1 -1
  34. package/dist/utils/replaceInFile.test.d.ts +1 -0
  35. package/dist/utils/replaceInFile.test.d.ts.map +1 -0
  36. package/dist/utils/replaceInFile.test.js +23 -21
  37. package/dist/utils/replaceInFile.test.js.map +1 -1
  38. package/package.json +2 -2
  39. package/dist/listFiles.d.ts +0 -11
  40. package/dist/listFiles.js +0 -100
  41. package/dist/listFiles.js.map +0 -1
  42. package/dist/listFiles.test.d.ts +0 -1
  43. package/dist/listFiles.test.js +0 -49
  44. package/dist/listFiles.test.js.map +0 -1
  45. package/dist/replaceInFile.d.ts +0 -1
  46. package/dist/replaceInFile.js +0 -85
  47. package/dist/replaceInFile.js.map +0 -1
  48. package/dist/replaceInFile.test.d.ts +0 -1
  49. package/dist/replaceInFile.test.js +0 -90
  50. package/dist/replaceInFile.test.js.map +0 -1
@@ -1,49 +0,0 @@
1
- import { afterAll, beforeAll, describe, expect, it } from 'bun:test';
2
- import { promises as fs } from 'node:fs';
3
- import { join } from 'node:path';
4
- import { listFiles } from './listFiles';
5
- describe('listFiles', () => {
6
- const testDir = join(__dirname, 'test-fixtures');
7
- beforeAll(async () => {
8
- // Create test directory structure
9
- await fs.mkdir(testDir, { recursive: true });
10
- await fs.writeFile(join(testDir, '.gitignore'), 'ignored.txt\nsubdir/ignored-too.txt');
11
- await fs.writeFile(join(testDir, 'file1.txt'), '');
12
- await fs.writeFile(join(testDir, 'file2.txt'), '');
13
- await fs.writeFile(join(testDir, 'ignored.txt'), '');
14
- // Create subdirectory
15
- const subDir = join(testDir, 'subdir');
16
- await fs.mkdir(subDir);
17
- await fs.writeFile(join(subDir, 'file3.txt'), '');
18
- await fs.writeFile(join(subDir, 'ignored-too.txt'), '');
19
- });
20
- afterAll(async () => {
21
- // Clean up test directory
22
- await fs.rm(testDir, { recursive: true, force: true });
23
- });
24
- it('should list files in directory', async () => {
25
- const [files] = await listFiles(testDir, false, 10, testDir);
26
- expect(files).toEqual(['.gitignore', 'file1.txt', 'file2.txt']);
27
- });
28
- it('should list files recursively', async () => {
29
- const [files] = await listFiles(testDir, true, 10, testDir);
30
- expect(files).toEqual(['.gitignore', 'file1.txt', 'file2.txt', 'subdir/file3.txt']);
31
- });
32
- it('should respect maxCount', async () => {
33
- const [files, limitReached] = await listFiles(testDir, true, 3, testDir);
34
- expect(files.length).toBe(3);
35
- expect(limitReached).toBe(true);
36
- expect(files).toEqual(['.gitignore', 'file1.txt', 'file2.txt']);
37
- });
38
- it('should handle empty directory', async () => {
39
- const emptyDir = join(testDir, 'empty');
40
- await fs.mkdir(emptyDir);
41
- const [files] = await listFiles(emptyDir, true, 10, emptyDir);
42
- expect(files).toEqual([]);
43
- await fs.rm(emptyDir, { recursive: true });
44
- });
45
- it('should handle non-existent directory', async () => {
46
- expect(listFiles(join(testDir, 'nonexistent'), false, 10, testDir)).rejects.toThrow();
47
- });
48
- });
49
- //# sourceMappingURL=listFiles.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"listFiles.test.js","sourceRoot":"","sources":["../src/listFiles.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare const replaceInFile: (fileContent: string, diff: string) => Promise<string>;
@@ -1,85 +0,0 @@
1
- /* Example diff block format:
2
- <<<<<<< SEARCH
3
- // original text
4
- =======
5
- // replacement text
6
- >>>>>>> REPLACE
7
- */
8
- export const replaceInFile = async (fileContent, diff) => {
9
- // Regex to match blocks of the form:
10
- // <<<<<<< SEARCH
11
- // (some lines)
12
- // =======
13
- // (some lines)
14
- // >>>>>>> REPLACE
15
- const blockPattern = /<<<<<+ SEARCH\s*\r?\n([\s\S]*?)\r?\n=======[ \t]*\r?\n([\s\S]*?)\r?\n?>>>>>+ REPLACE/g;
16
- // Parse diff blocks
17
- const blocks = [];
18
- for (let match = blockPattern.exec(diff); match !== null; match = blockPattern.exec(diff)) {
19
- blocks.push({ search: match[1], replace: match[2] });
20
- }
21
- if (blocks.length === 0) {
22
- throw new Error('No valid diff blocks found.');
23
- }
24
- // Helper: try to find the search text in fileContent with progressive relaxation
25
- const findAndReplace = (content, search, replace) => {
26
- // 1) Direct exact match
27
- let index = content.indexOf(search);
28
- if (index !== -1) {
29
- return content.slice(0, index) + replace + content.slice(index + search.length);
30
- }
31
- // 2) Trim leading/ending whitespace in search and content
32
- const trimmedSearch = search.trim();
33
- const trimmedContent = content.trim();
34
- const offset = content.indexOf(trimmedContent); // to restore original indexing if found
35
- index = trimmedContent.indexOf(trimmedSearch);
36
- if (index !== -1) {
37
- // compute correct absolute index in the original content
38
- const absoluteIndex = offset + index;
39
- return content.slice(0, absoluteIndex) + replace + content.slice(absoluteIndex + trimmedSearch.length);
40
- }
41
- // 3) Whitespace-agnostic match:
42
- // Replace all consecutive whitespace in search and content with a single marker
43
- // to see if there's a match ignoring whitespace diffs
44
- const normalizedSearch = trimmedSearch.replace(/\s+/g, ' ');
45
- const normalizedContent = trimmedContent.replace(/\s+/g, ' ');
46
- index = normalizedContent.indexOf(normalizedSearch);
47
- if (index !== -1) {
48
- // Find actual location in the original content. We do a rough approach here:
49
- // We know the substring's "normalized" start is at 'index' in normalizedContent.
50
- // A simple way is to walk through the original trimmedContent to find where that occurs.
51
- // For brevity, we'll do a naive re-scan and hope it's correct in typical cases.
52
- let runningIndex = 0;
53
- let actualPos = offset;
54
- for (const segment of trimmedSearch.replace(/\s+/g, ' ').split(' ')) {
55
- const segIndex = content.indexOf(segment, actualPos);
56
- if (segIndex === -1) {
57
- break; // mismatch, won't happen if we truly found it
58
- }
59
- if (runningIndex === 0) {
60
- // First segment helps define the start
61
- actualPos = segIndex;
62
- }
63
- else {
64
- // Move just after the segment to keep scanning
65
- actualPos = segIndex + segment.length;
66
- }
67
- runningIndex++;
68
- }
69
- // By the time we’re done, actualPos should be the end of the matched substring.
70
- // We do a length calc for the final replacement index:
71
- // but we need the total length of trimmedSearch minus whitespace. We'll reconstruct:
72
- const strippedSearch = trimmedSearch.replace(/\s+/g, '');
73
- const endPos = actualPos; // The end of the final segment
74
- const startPos = endPos - strippedSearch.length;
75
- return content.slice(0, startPos) + replace + content.slice(endPos);
76
- }
77
- throw new Error(`Could not find the following text in file:\n${search}`);
78
- };
79
- let updatedFile = fileContent;
80
- for (const { search, replace } of blocks) {
81
- updatedFile = findAndReplace(updatedFile, search, replace);
82
- }
83
- return updatedFile;
84
- };
85
- //# sourceMappingURL=replaceInFile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replaceInFile.js","sourceRoot":"","sources":["../src/replaceInFile.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,90 +0,0 @@
1
- import { describe, expect, it } from 'bun:test';
2
- import { replaceInFile } from './replaceInFile';
3
- describe('replaceInFile', () => {
4
- it('should perform basic single replacement', async () => {
5
- const content = `line1
6
- line2
7
- line3`;
8
- const diff = `<<<<<<< SEARCH
9
- line2
10
- =======
11
- new line2
12
- >>>>>>> REPLACE`;
13
- const result = await replaceInFile(content, diff);
14
- expect(result).toBe(`line1
15
- new line2
16
- line3`);
17
- });
18
- it('should handle multiple replacements', async () => {
19
- const content = `line1
20
- line2
21
- line3
22
- line2`;
23
- const diff = `<<<<<<< SEARCH
24
- line2
25
- =======
26
- new line2
27
- >>>>>>> REPLACE
28
- <<<<<<< SEARCH
29
- line3
30
- =======
31
- new line3
32
- >>>>>>> REPLACE`;
33
- const result = await replaceInFile(content, diff);
34
- expect(result).toBe(`line1
35
- new line2
36
- new line3
37
- line2`);
38
- });
39
- it('should handle whitespace variations', async () => {
40
- const content = `line1
41
- line2
42
- line3`;
43
- const diff = `<<<<<<< SEARCH
44
- line2
45
- =======
46
- new line2
47
- >>>>>>> REPLACE`;
48
- const result = await replaceInFile(content, diff);
49
- expect(result).toBe(`line1
50
- new line2
51
- line3`);
52
- });
53
- it('should throw error when no blocks found', async () => {
54
- const content = `line1
55
- line2`;
56
- const diff = 'invalid format';
57
- expect(replaceInFile(content, diff)).rejects.toThrow('No valid diff blocks found');
58
- });
59
- it('should throw error when search text not found', async () => {
60
- const content = `line1
61
- line2`;
62
- const diff = `<<<<<<< SEARCH
63
- line3
64
- =======
65
- new line3
66
- >>>>>>> REPLACE`;
67
- expect(replaceInFile(content, diff)).rejects.toThrow('Could not find the following text in file');
68
- });
69
- it('should handle empty file', async () => {
70
- const content = '';
71
- const diff = `<<<<<<< SEARCH
72
- line1
73
- =======
74
- new line1
75
- >>>>>>> REPLACE`;
76
- expect(replaceInFile(content, diff)).rejects.toThrow('Could not find the following text in file');
77
- });
78
- it('should handle empty replacement', async () => {
79
- const content = `line1
80
- line2`;
81
- const diff = `<<<<<<< SEARCH
82
- line2
83
- =======
84
- >>>>>>> REPLACE`;
85
- const result = await replaceInFile(content, diff);
86
- expect(result).toBe(`line1
87
- `);
88
- });
89
- });
90
- //# sourceMappingURL=replaceInFile.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replaceInFile.test.js","sourceRoot":"","sources":["../src/replaceInFile.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAG;;MAEd,CAAA;QACF,MAAM,IAAI,GAAG;;;;gBAID,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;;MAElB,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,OAAO,GAAG;;;MAGd,CAAA;QACF,MAAM,IAAI,GAAG;;;;;;;;;gBASD,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;;;MAGlB,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,OAAO,GAAG;;MAEd,CAAA;QACF,MAAM,IAAI,GAAG;;;;gBAID,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;;MAElB,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAG;MACd,CAAA;QACF,MAAM,IAAI,GAAG,gBAAgB,CAAA;QAE7B,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAA;IACpF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,OAAO,GAAG;MACd,CAAA;QACF,MAAM,IAAI,GAAG;;;;gBAID,CAAA;QAEZ,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAA;IACnG,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,MAAM,IAAI,GAAG;;;;gBAID,CAAA;QAEZ,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAA;IACnG,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,OAAO,GAAG;MACd,CAAA;QACF,MAAM,IAAI,GAAG;;;gBAGD,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;CACvB,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}