@sammons/code-outline-cli 2.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.
Files changed (38) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cli-argument-parser.d.ts +23 -0
  3. package/dist/cli-argument-parser.d.ts.map +1 -0
  4. package/dist/cli-argument-parser.js +176 -0
  5. package/dist/cli-argument-parser.js.map +1 -0
  6. package/dist/cli-orchestrator.d.ts +7 -0
  7. package/dist/cli-orchestrator.d.ts.map +1 -0
  8. package/dist/cli-orchestrator.js +43 -0
  9. package/dist/cli-orchestrator.js.map +1 -0
  10. package/dist/cli-orchestrator.unit.test.d.ts +2 -0
  11. package/dist/cli-orchestrator.unit.test.d.ts.map +1 -0
  12. package/dist/cli-orchestrator.unit.test.js +139 -0
  13. package/dist/cli-orchestrator.unit.test.js.map +1 -0
  14. package/dist/cli-output-handler.d.ts +8 -0
  15. package/dist/cli-output-handler.d.ts.map +1 -0
  16. package/dist/cli-output-handler.js +16 -0
  17. package/dist/cli-output-handler.js.map +1 -0
  18. package/dist/cli.d.ts +3 -0
  19. package/dist/cli.d.ts.map +1 -0
  20. package/dist/cli.integration.test.d.ts +2 -0
  21. package/dist/cli.integration.test.d.ts.map +1 -0
  22. package/dist/cli.integration.test.js +308 -0
  23. package/dist/cli.integration.test.js.map +1 -0
  24. package/dist/cli.js +14 -0
  25. package/dist/cli.js.map +1 -0
  26. package/dist/cli.unit.test.d.ts +2 -0
  27. package/dist/cli.unit.test.d.ts.map +1 -0
  28. package/dist/cli.unit.test.js +349 -0
  29. package/dist/cli.unit.test.js.map +1 -0
  30. package/dist/file-processor.d.ts +16 -0
  31. package/dist/file-processor.d.ts.map +1 -0
  32. package/dist/file-processor.js +56 -0
  33. package/dist/file-processor.js.map +1 -0
  34. package/dist/test.d.ts +25 -0
  35. package/dist/test.d.ts.map +1 -0
  36. package/dist/test.js +41 -0
  37. package/dist/test.js.map +1 -0
  38. package/package.json +43 -0
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vitest_1 = require("vitest");
7
+ const node_util_1 = require("node:util");
8
+ const fast_glob_1 = __importDefault(require("fast-glob"));
9
+ const node_path_1 = require("node:path");
10
+ const parser_1 = require("@code-outline/parser");
11
+ const formatter_1 = require("@code-outline/formatter");
12
+ // Mock external dependencies
13
+ vitest_1.vi.mock('node:util');
14
+ vitest_1.vi.mock('fast-glob');
15
+ vitest_1.vi.mock('node:path');
16
+ vitest_1.vi.mock('@code-outline/parser');
17
+ vitest_1.vi.mock('@code-outline/formatter');
18
+ const mockParseArgs = vitest_1.vi.mocked(node_util_1.parseArgs);
19
+ const mockFg = vitest_1.vi.mocked(fast_glob_1.default);
20
+ const mockResolve = vitest_1.vi.mocked(node_path_1.resolve);
21
+ const mockParser = vitest_1.vi.mocked(parser_1.Parser);
22
+ const mockFormatter = vitest_1.vi.mocked(formatter_1.Formatter);
23
+ const mockValidateFormat = vitest_1.vi.mocked(parser_1.validateFormat);
24
+ const mockValidateDepthValue = vitest_1.vi.mocked(parser_1.validateDepthValue);
25
+ // Mock console methods - but don't implement them at the top level
26
+ let mockConsoleLog;
27
+ let mockConsoleError;
28
+ // Import the actual classes for testing
29
+ const cli_argument_parser_js_1 = require("./cli-argument-parser.js");
30
+ const file_processor_js_1 = require("./file-processor.js");
31
+ const cli_output_handler_js_1 = require("./cli-output-handler.js");
32
+ (0, vitest_1.describe)('CLIArgumentParser', () => {
33
+ let parser;
34
+ (0, vitest_1.beforeEach)(() => {
35
+ parser = new cli_argument_parser_js_1.CLIArgumentParser();
36
+ vitest_1.vi.clearAllMocks();
37
+ // Mock console methods freshly each time
38
+ mockConsoleLog = vitest_1.vi.spyOn(console, 'log').mockImplementation(() => { });
39
+ mockConsoleError = vitest_1.vi.spyOn(console, 'error').mockImplementation(() => { });
40
+ // Mock process.exit to prevent actual exits during tests
41
+ vitest_1.vi.spyOn(process, 'exit').mockImplementation(() => undefined);
42
+ });
43
+ (0, vitest_1.afterEach)(() => {
44
+ vitest_1.vi.restoreAllMocks();
45
+ });
46
+ (0, vitest_1.describe)('parse', () => {
47
+ (0, vitest_1.it)('should parse valid arguments correctly', () => {
48
+ mockParseArgs.mockReturnValue({
49
+ values: {
50
+ format: 'json',
51
+ depth: '5',
52
+ 'named-only': true,
53
+ all: false,
54
+ help: false,
55
+ version: false,
56
+ },
57
+ positionals: ['src/**/*.ts'],
58
+ });
59
+ // Mock validation functions to return successful results
60
+ mockValidateFormat.mockReturnValue({
61
+ success: true,
62
+ value: 'json',
63
+ });
64
+ mockValidateDepthValue.mockReturnValue({ success: true, value: 5 });
65
+ const result = parser.parse();
66
+ (0, vitest_1.expect)(result.options.format).toBe('json');
67
+ (0, vitest_1.expect)(result.options.depth).toBe(5);
68
+ (0, vitest_1.expect)(result.options.namedOnly).toBe(true);
69
+ (0, vitest_1.expect)(result.pattern).toBe('src/**/*.ts');
70
+ });
71
+ (0, vitest_1.it)('should throw CLIArgumentError when no pattern is provided', () => {
72
+ mockParseArgs.mockReturnValue({
73
+ values: {
74
+ format: 'ascii',
75
+ depth: 'Infinity',
76
+ 'named-only': true,
77
+ all: false,
78
+ help: false,
79
+ version: false,
80
+ },
81
+ positionals: [],
82
+ });
83
+ (0, vitest_1.expect)(() => parser.parse()).toThrow(cli_argument_parser_js_1.CLIArgumentError);
84
+ (0, vitest_1.expect)(() => parser.parse()).toThrow('No file pattern provided');
85
+ });
86
+ (0, vitest_1.it)('should handle help flag and exit', () => {
87
+ mockParseArgs.mockReturnValue({
88
+ values: {
89
+ format: 'ascii',
90
+ depth: 'Infinity',
91
+ 'named-only': true,
92
+ all: false,
93
+ help: true,
94
+ version: false,
95
+ },
96
+ positionals: ['test.js'],
97
+ });
98
+ // Mock validation functions even though they won't be called due to early exit
99
+ mockValidateFormat.mockReturnValue({
100
+ success: true,
101
+ value: 'ascii',
102
+ });
103
+ mockValidateDepthValue.mockReturnValue({
104
+ success: true,
105
+ value: Infinity,
106
+ });
107
+ parser.parse();
108
+ (0, vitest_1.expect)(mockConsoleLog).toHaveBeenCalledWith(vitest_1.expect.stringContaining('glance-with-tree-sitter'));
109
+ (0, vitest_1.expect)(process.exit).toHaveBeenCalledWith(0);
110
+ });
111
+ (0, vitest_1.it)('should handle version flag and exit', () => {
112
+ mockParseArgs.mockReturnValue({
113
+ values: {
114
+ format: 'ascii',
115
+ depth: 'Infinity',
116
+ 'named-only': true,
117
+ all: false,
118
+ help: false,
119
+ version: true,
120
+ },
121
+ positionals: ['test.js'],
122
+ });
123
+ // Mock validation functions even though they won't be called due to early exit
124
+ mockValidateFormat.mockReturnValue({
125
+ success: true,
126
+ value: 'ascii',
127
+ });
128
+ mockValidateDepthValue.mockReturnValue({
129
+ success: true,
130
+ value: Infinity,
131
+ });
132
+ parser.parse();
133
+ (0, vitest_1.expect)(mockConsoleLog).toHaveBeenCalled();
134
+ (0, vitest_1.expect)(process.exit).toHaveBeenCalledWith(0);
135
+ });
136
+ (0, vitest_1.it)('should handle invalid format', () => {
137
+ mockParseArgs.mockReturnValue({
138
+ values: {
139
+ format: 'invalid',
140
+ depth: 'Infinity',
141
+ 'named-only': true,
142
+ all: false,
143
+ help: false,
144
+ version: false,
145
+ },
146
+ positionals: ['test.js'],
147
+ });
148
+ // Mock validation to return error
149
+ mockValidateFormat.mockReturnValue({
150
+ success: false,
151
+ error: 'Invalid format type',
152
+ });
153
+ mockValidateDepthValue.mockReturnValue({
154
+ success: true,
155
+ value: Infinity,
156
+ });
157
+ (0, vitest_1.expect)(() => parser.parse()).toThrow(cli_argument_parser_js_1.CLIArgumentError);
158
+ (0, vitest_1.expect)(() => parser.parse()).toThrow('Invalid format');
159
+ });
160
+ (0, vitest_1.it)('should handle invalid depth', () => {
161
+ mockParseArgs.mockReturnValue({
162
+ values: {
163
+ format: 'json',
164
+ depth: '0',
165
+ 'named-only': true,
166
+ all: false,
167
+ help: false,
168
+ version: false,
169
+ },
170
+ positionals: ['test.js'],
171
+ });
172
+ // Mock validation to return error
173
+ mockValidateFormat.mockReturnValue({
174
+ success: true,
175
+ value: 'json',
176
+ });
177
+ mockValidateDepthValue.mockReturnValue({
178
+ success: false,
179
+ error: 'Depth must be >= 1',
180
+ });
181
+ (0, vitest_1.expect)(() => parser.parse()).toThrow(cli_argument_parser_js_1.CLIArgumentError);
182
+ (0, vitest_1.expect)(() => parser.parse()).toThrow('Invalid depth');
183
+ });
184
+ (0, vitest_1.it)('should handle --all flag correctly', () => {
185
+ mockParseArgs.mockReturnValue({
186
+ values: {
187
+ format: 'json',
188
+ depth: 'Infinity',
189
+ 'named-only': true,
190
+ all: true,
191
+ help: false,
192
+ version: false,
193
+ },
194
+ positionals: ['test.js'],
195
+ });
196
+ mockValidateFormat.mockReturnValue({
197
+ success: true,
198
+ value: 'json',
199
+ });
200
+ mockValidateDepthValue.mockReturnValue({
201
+ success: true,
202
+ value: Infinity,
203
+ });
204
+ const result = parser.parse();
205
+ (0, vitest_1.expect)(result.options.namedOnly).toBe(false);
206
+ });
207
+ });
208
+ (0, vitest_1.describe)('printHelp', () => {
209
+ (0, vitest_1.it)('should print help message', () => {
210
+ parser.printHelp();
211
+ (0, vitest_1.expect)(mockConsoleLog).toHaveBeenCalledWith(vitest_1.expect.stringContaining('glance-with-tree-sitter'));
212
+ });
213
+ });
214
+ (0, vitest_1.describe)('printVersion', () => {
215
+ (0, vitest_1.it)('should print version', () => {
216
+ parser.printVersion();
217
+ (0, vitest_1.expect)(mockConsoleLog).toHaveBeenCalled();
218
+ });
219
+ });
220
+ });
221
+ (0, vitest_1.describe)('FileProcessor', () => {
222
+ let processor;
223
+ let mockParserInstance;
224
+ (0, vitest_1.beforeEach)(() => {
225
+ mockParserInstance = {
226
+ parseFile: vitest_1.vi.fn(),
227
+ };
228
+ mockParser.mockImplementation(() => mockParserInstance);
229
+ processor = new file_processor_js_1.FileProcessor();
230
+ vitest_1.vi.clearAllMocks();
231
+ // Mock console methods freshly each time
232
+ mockConsoleLog = vitest_1.vi.spyOn(console, 'log').mockImplementation(() => { });
233
+ mockConsoleError = vitest_1.vi.spyOn(console, 'error').mockImplementation(() => { });
234
+ });
235
+ (0, vitest_1.describe)('findFiles', () => {
236
+ (0, vitest_1.it)('should find files matching pattern', async () => {
237
+ const files = ['/path/to/file1.js', '/path/to/file2.ts'];
238
+ mockFg.mockResolvedValue(files);
239
+ const result = await processor.findFiles('src/**/*.{js,ts}');
240
+ (0, vitest_1.expect)(mockFg).toHaveBeenCalledWith('src/**/*.{js,ts}', {
241
+ absolute: true,
242
+ ignore: ['**/node_modules/**', '**/dist/**', '**/build/**'],
243
+ });
244
+ (0, vitest_1.expect)(result).toEqual(files);
245
+ });
246
+ (0, vitest_1.it)('should throw FileProcessorError when no files found', async () => {
247
+ mockFg.mockResolvedValue([]);
248
+ await (0, vitest_1.expect)(processor.findFiles('nonexistent/**/*.js')).rejects.toThrow(file_processor_js_1.FileProcessorError);
249
+ await (0, vitest_1.expect)(processor.findFiles('nonexistent/**/*.js')).rejects.toThrow('No files found matching pattern');
250
+ });
251
+ });
252
+ (0, vitest_1.describe)('processFiles', () => {
253
+ (0, vitest_1.it)('should process multiple files successfully', async () => {
254
+ const files = ['/path/file1.js', '/path/file2.js'];
255
+ const mockOutline = { type: 'program', children: [] };
256
+ mockParserInstance.parseFile.mockResolvedValue(mockOutline);
257
+ mockResolve.mockImplementation((path) => `/resolved${path}`);
258
+ const result = await processor.processFiles(files, 5, true);
259
+ (0, vitest_1.expect)(result).toHaveLength(2);
260
+ (0, vitest_1.expect)(result[0]).toEqual({
261
+ file: '/resolved/path/file1.js',
262
+ outline: mockOutline,
263
+ });
264
+ (0, vitest_1.expect)(result[1]).toEqual({
265
+ file: '/resolved/path/file2.js',
266
+ outline: mockOutline,
267
+ });
268
+ (0, vitest_1.expect)(mockParserInstance.parseFile).toHaveBeenCalledTimes(2);
269
+ });
270
+ (0, vitest_1.it)('should handle parsing errors gracefully', async () => {
271
+ const files = ['/path/file1.js', '/path/file2.js'];
272
+ mockParserInstance.parseFile
273
+ .mockResolvedValueOnce({ type: 'program', children: [] })
274
+ .mockRejectedValueOnce(new Error('Parse error'));
275
+ mockResolve.mockImplementation((path) => `/resolved${path}`);
276
+ const result = await processor.processFiles(files, 5, true);
277
+ (0, vitest_1.expect)(result).toHaveLength(2);
278
+ (0, vitest_1.expect)(result[0].outline).toBeTruthy();
279
+ (0, vitest_1.expect)(result[1].outline).toBeNull();
280
+ (0, vitest_1.expect)(mockConsoleError).toHaveBeenCalledWith(vitest_1.expect.stringContaining('Error parsing'), vitest_1.expect.stringMatching(/Parse error|Unknown error occurred/));
281
+ });
282
+ (0, vitest_1.it)('should process files with correct parameters', async () => {
283
+ const files = ['/path/file1.js'];
284
+ const depth = 3;
285
+ const namedOnly = false;
286
+ mockParserInstance.parseFile.mockResolvedValue({ type: 'program' });
287
+ mockResolve.mockReturnValue('/resolved/path/file1.js');
288
+ await processor.processFiles(files, depth, namedOnly);
289
+ (0, vitest_1.expect)(mockParserInstance.parseFile).toHaveBeenCalledWith('/path/file1.js', depth, namedOnly);
290
+ });
291
+ });
292
+ });
293
+ (0, vitest_1.describe)('CLIOutputHandler', () => {
294
+ let handler;
295
+ let mockFormatterInstance;
296
+ (0, vitest_1.beforeEach)(() => {
297
+ mockFormatterInstance = {
298
+ format: vitest_1.vi.fn(),
299
+ };
300
+ mockFormatter.mockImplementation(() => mockFormatterInstance);
301
+ handler = new cli_output_handler_js_1.CLIOutputHandler('json');
302
+ vitest_1.vi.clearAllMocks();
303
+ // Mock console methods freshly each time
304
+ mockConsoleLog = vitest_1.vi.spyOn(console, 'log').mockImplementation(() => { });
305
+ mockConsoleError = vitest_1.vi.spyOn(console, 'error').mockImplementation(() => { });
306
+ });
307
+ (0, vitest_1.describe)('constructor', () => {
308
+ (0, vitest_1.it)('should create formatter with correct format', () => {
309
+ new cli_output_handler_js_1.CLIOutputHandler('yaml');
310
+ (0, vitest_1.expect)(mockFormatter).toHaveBeenCalledWith('yaml');
311
+ });
312
+ });
313
+ (0, vitest_1.describe)('formatAndOutput', () => {
314
+ (0, vitest_1.it)('should format results and output to console', () => {
315
+ const results = [
316
+ {
317
+ file: '/path/file1.js',
318
+ outline: {
319
+ type: 'program',
320
+ start: { row: 0, column: 0 },
321
+ end: { row: 10, column: 0 },
322
+ },
323
+ },
324
+ {
325
+ file: '/path/file2.js',
326
+ outline: {
327
+ type: 'program',
328
+ start: { row: 0, column: 0 },
329
+ end: { row: 20, column: 0 },
330
+ },
331
+ },
332
+ ];
333
+ const formattedOutput = '{"formatted": "output"}';
334
+ mockFormatterInstance.format.mockReturnValue(formattedOutput);
335
+ handler.formatAndOutput(results);
336
+ (0, vitest_1.expect)(mockFormatterInstance.format).toHaveBeenCalledWith(results);
337
+ (0, vitest_1.expect)(mockConsoleLog).toHaveBeenCalledWith(formattedOutput);
338
+ });
339
+ (0, vitest_1.it)('should handle empty results', () => {
340
+ const results = [];
341
+ const formattedOutput = '[]';
342
+ mockFormatterInstance.format.mockReturnValue(formattedOutput);
343
+ handler.formatAndOutput(results);
344
+ (0, vitest_1.expect)(mockFormatterInstance.format).toHaveBeenCalledWith(results);
345
+ (0, vitest_1.expect)(mockConsoleLog).toHaveBeenCalledWith(formattedOutput);
346
+ });
347
+ });
348
+ });
349
+ //# sourceMappingURL=cli.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.unit.test.js","sourceRoot":"","sources":["../src/cli.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { NodeInfo } from '@code-outline/parser';
2
+ export interface ProcessedFile {
3
+ file: string;
4
+ outline: NodeInfo | null;
5
+ }
6
+ export declare class FileProcessorError extends Error {
7
+ constructor(message: string);
8
+ }
9
+ export declare class FileProcessor {
10
+ private parser;
11
+ constructor();
12
+ findFiles(pattern: string): Promise<string[]>;
13
+ private parseFile;
14
+ processFiles(files: string[], depth: number, namedOnly: boolean): Promise<ProcessedFile[]>;
15
+ }
16
+ //# sourceMappingURL=file-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-processor.d.ts","sourceRoot":"","sources":["../src/file-processor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;;IAMV,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAe5C,SAAS;IAsBV,YAAY,CACvB,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,aAAa,EAAE,CAAC;CAQ5B"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FileProcessor = exports.FileProcessorError = void 0;
7
+ const node_path_1 = require("node:path");
8
+ const fast_glob_1 = __importDefault(require("fast-glob"));
9
+ const parser_1 = require("@code-outline/parser");
10
+ class FileProcessorError extends Error {
11
+ constructor(message) {
12
+ super(message);
13
+ this.name = 'FileProcessorError';
14
+ }
15
+ }
16
+ exports.FileProcessorError = FileProcessorError;
17
+ class FileProcessor {
18
+ parser;
19
+ constructor() {
20
+ this.parser = new parser_1.Parser();
21
+ }
22
+ async findFiles(pattern) {
23
+ const files = await (0, fast_glob_1.default)(pattern, {
24
+ absolute: true,
25
+ ignore: ['**/node_modules/**', '**/dist/**', '**/build/**'],
26
+ });
27
+ if (files.length === 0) {
28
+ throw new FileProcessorError(`No files found matching pattern: ${pattern}`);
29
+ }
30
+ return files;
31
+ }
32
+ async parseFile(file, depth, namedOnly) {
33
+ try {
34
+ const outline = await this.parser.parseFile(file, depth, namedOnly);
35
+ return {
36
+ file: (0, node_path_1.resolve)(file),
37
+ outline,
38
+ };
39
+ }
40
+ catch (error) {
41
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
42
+ console.error(`Error parsing ${file}:`, errorMessage);
43
+ return {
44
+ file: (0, node_path_1.resolve)(file),
45
+ outline: null,
46
+ };
47
+ }
48
+ }
49
+ async processFiles(files, depth, namedOnly) {
50
+ // Process files in parallel using Promise.all
51
+ const parsePromises = files.map((file) => this.parseFile(file, depth, namedOnly));
52
+ return await Promise.all(parsePromises);
53
+ }
54
+ }
55
+ exports.FileProcessor = FileProcessor;
56
+ //# sourceMappingURL=file-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-processor.js","sourceRoot":"","sources":["../src/file-processor.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,0DAA2B;AAE3B,iDAA8C;AAO9C,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED,MAAa,aAAa;IAChB,MAAM,CAAS;IAEvB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,OAAe;QACpC,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAE,EAAC,OAAO,EAAE;YAC9B,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,EAAE,aAAa,CAAC;SAC5D,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,kBAAkB,CAC1B,oCAAoC,OAAO,EAAE,CAC9C,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,SAAS,CACrB,IAAY,EACZ,KAAa,EACb,SAAkB;QAElB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YACpE,OAAO;gBACL,IAAI,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC;gBACnB,OAAO;aACR,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YACpE,OAAO,CAAC,KAAK,CAAC,iBAAiB,IAAI,GAAG,EAAE,YAAY,CAAC,CAAC;YACtD,OAAO;gBACL,IAAI,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,KAAe,EACf,KAAa,EACb,SAAkB;QAElB,8CAA8C;QAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACvC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CACvC,CAAC;QAEF,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;CACF;AAxDD,sCAwDC"}
package/dist/test.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ interface User {
2
+ id: number;
3
+ name: string;
4
+ email: string;
5
+ }
6
+ type UserRole = 'admin' | 'user' | 'guest';
7
+ declare enum Status {
8
+ Active = "ACTIVE",
9
+ Inactive = "INACTIVE",
10
+ Pending = "PENDING"
11
+ }
12
+ declare class UserService {
13
+ private readonly apiUrl;
14
+ private users;
15
+ constructor(apiUrl: string);
16
+ getUser(id: number): User | undefined;
17
+ addUser(user: User): void;
18
+ get userCount(): number;
19
+ }
20
+ declare function validateEmail(email: string): boolean;
21
+ declare const createUser: (name: string, email: string) => User;
22
+ export { UserService, validateEmail, createUser };
23
+ export type { User, UserRole };
24
+ export { Status };
25
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAEA,UAAU,IAAI;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3C,aAAK,MAAM;IACT,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED,cAAM,WAAW;IAGH,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,KAAK,CAAc;gBAEE,MAAM,EAAE,MAAM;IAE3C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIrC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,IAAI,SAAS,IAAI,MAAM,CAEtB;CACF;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAG7C;AAED,QAAA,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,IAMjD,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAClD,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,CAAC"}
package/dist/test.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ // Test file for glance-with-tree-sitter
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Status = exports.createUser = exports.UserService = void 0;
5
+ exports.validateEmail = validateEmail;
6
+ var Status;
7
+ (function (Status) {
8
+ Status["Active"] = "ACTIVE";
9
+ Status["Inactive"] = "INACTIVE";
10
+ Status["Pending"] = "PENDING";
11
+ })(Status || (exports.Status = Status = {}));
12
+ class UserService {
13
+ apiUrl;
14
+ users = [];
15
+ constructor(apiUrl) {
16
+ this.apiUrl = apiUrl;
17
+ }
18
+ getUser(id) {
19
+ return this.users.find((user) => user.id === id);
20
+ }
21
+ addUser(user) {
22
+ this.users.push(user);
23
+ }
24
+ get userCount() {
25
+ return this.users.length;
26
+ }
27
+ }
28
+ exports.UserService = UserService;
29
+ function validateEmail(email) {
30
+ const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
31
+ return regex.test(email);
32
+ }
33
+ const createUser = (name, email) => {
34
+ return {
35
+ id: Date.now(),
36
+ name,
37
+ email,
38
+ };
39
+ };
40
+ exports.createUser = createUser;
41
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";AAAA,wCAAwC;;;AA+ClB,sCAAa;AArCnC,IAAK,MAIJ;AAJD,WAAK,MAAM;IACT,2BAAiB,CAAA;IACjB,+BAAqB,CAAA;IACrB,6BAAmB,CAAA;AACrB,CAAC,EAJI,MAAM,sBAAN,MAAM,QAIV;AAED,MAAM,WAAW;IAGc;IAFrB,KAAK,GAAW,EAAE,CAAC;IAE3B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,OAAO,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,IAAU;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;CACF;AAeQ,kCAAW;AAbpB,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,KAAK,GAAG,4BAA4B,CAAC;IAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,KAAa,EAAQ,EAAE;IACvD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;QACd,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAEmC,gCAAU"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@sammons/code-outline-cli",
3
+ "version": "2.0.0",
4
+ "description": "CLI tool to parse and provide concise output for JavaScript/TypeScript files",
5
+ "publishConfig": {
6
+ "access": "public",
7
+ "registry": "https://registry.npmjs.org/"
8
+ },
9
+ "main": "dist/index.js",
10
+ "bin": {
11
+ "code-outline": "./dist/cli.js"
12
+ },
13
+ "keywords": [
14
+ "cli",
15
+ "tree-sitter",
16
+ "parser",
17
+ "typescript",
18
+ "javascript"
19
+ ],
20
+ "author": "",
21
+ "license": "MIT",
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "dependencies": {
26
+ "fast-glob": "3.3.3",
27
+ "glob": "11.0.3",
28
+ "@code-outline/parser": "2.0.0",
29
+ "@code-outline/formatter": "2.0.0"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "24.3.1",
33
+ "tsx": "4.20.5",
34
+ "typescript": "5.9.2"
35
+ },
36
+ "scripts": {
37
+ "build": "tsc",
38
+ "dev": "tsx src/cli.ts",
39
+ "test": "vitest run --config ../../vitest.config.ts src",
40
+ "test:watch": "vitest --config ../../vitest.config.ts src",
41
+ "clean": "rm -rf dist"
42
+ }
43
+ }