sphereai-cli 1.0.18 → 1.0.19

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.
@@ -1,118 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.FileWalker = void 0;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
- const ignore_parser_1 = require("./ignore-parser");
40
- class FileWalker {
41
- constructor(options = {}) {
42
- this.ignoreParser = new ignore_parser_1.IgnoreParser();
43
- this.options = {
44
- ignoreFilePath: options.ignoreFilePath || '.sphereignore',
45
- includeDotFiles: options.includeDotFiles ?? false,
46
- maxDepth: options.maxDepth ?? Infinity
47
- };
48
- // Load ignore patterns if file exists
49
- if (this.options.ignoreFilePath && fs.existsSync(this.options.ignoreFilePath)) {
50
- this.ignoreParser.parseFile(this.options.ignoreFilePath);
51
- }
52
- }
53
- /**
54
- * Walk through a directory and return all non-ignored files
55
- */
56
- walk(dir) {
57
- const files = [];
58
- this.walkRecursive(dir, dir, files, 0);
59
- return files;
60
- }
61
- /**
62
- * Recursively walk through directories
63
- */
64
- walkRecursive(baseDir, currentDir, files, depth) {
65
- if (depth > this.options.maxDepth) {
66
- return;
67
- }
68
- let entries;
69
- try {
70
- entries = fs.readdirSync(currentDir, { withFileTypes: true });
71
- }
72
- catch (error) {
73
- // Skip directories we can't read
74
- return;
75
- }
76
- for (const entry of entries) {
77
- const fullPath = path.join(currentDir, entry.name);
78
- const relativePath = path.relative(baseDir, fullPath);
79
- // Skip dot files/directories if not included
80
- if (!this.options.includeDotFiles && entry.name.startsWith('.')) {
81
- continue;
82
- }
83
- // Check if this path should be ignored
84
- if (this.ignoreParser.shouldIgnore(relativePath)) {
85
- continue;
86
- }
87
- if (entry.isDirectory()) {
88
- this.walkRecursive(baseDir, fullPath, files, depth + 1);
89
- }
90
- else if (entry.isFile()) {
91
- files.push(fullPath);
92
- }
93
- }
94
- }
95
- /**
96
- * Filter a list of file paths based on ignore patterns
97
- */
98
- filterFiles(files, baseDir) {
99
- return files.filter(file => {
100
- const relativePath = baseDir ? path.relative(baseDir, file) : file;
101
- return !this.ignoreParser.shouldIgnore(relativePath);
102
- });
103
- }
104
- /**
105
- * Check if a specific file should be ignored
106
- */
107
- shouldIgnore(filePath) {
108
- return this.ignoreParser.shouldIgnore(filePath);
109
- }
110
- /**
111
- * Get the ignore patterns (for debugging)
112
- */
113
- getIgnorePatterns() {
114
- return this.ignoreParser.getPatterns();
115
- }
116
- }
117
- exports.FileWalker = FileWalker;
118
- //# sourceMappingURL=file-walker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-walker.js","sourceRoot":"","sources":["../../src/utils/file-walker.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- export interface IgnorePattern {
2
- pattern: string;
3
- isNegation: boolean;
4
- isDirectory: boolean;
5
- }
6
- export declare class IgnoreParser {
7
- private patterns;
8
- /**
9
- * Parse a .sphereignore file and extract patterns
10
- * Supports:
11
- * - File extensions (*.log, *.tmp)
12
- * - Specific file names (config.local.json)
13
- * - Directory patterns (node_modules/, dist/)
14
- * - Negation patterns (!important.log)
15
- * - Comments (# this is a comment)
16
- * - Wildcards (src/**/ (): any;
17
- test: any;
18
- ts: any;
19
- (): any;
20
- }
21
- //# sourceMappingURL=ignore-parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ignore-parser.d.ts","sourceRoot":"","sources":["../../src/utils/ignore-parser.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAuB;IAEvC;;;;;;;;2BAQuB,CAAC;IAAC,IAAI,MAAA;IAAC,EAAE,MAAA;IAC9B;CAAA"}
@@ -1,170 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.IgnoreParser = void 0;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
- class IgnoreParser {
40
- constructor() {
41
- this.patterns = [];
42
- }
43
- /**
44
- * Parse a .sphereignore file and extract patterns
45
- * Supports:
46
- * - File extensions (*.log, *.tmp)
47
- * - Specific file names (config.local.json)
48
- * - Directory patterns (node_modules/, dist/)
49
- * - Negation patterns (!important.log)
50
- * - Comments (# this is a comment)
51
- * - Wildcards (src/**/ *() { }
52
- *() { }
53
- }
54
- exports.IgnoreParser = IgnoreParser;
55
- /;
56
- parseFile(ignoreFilePath, string);
57
- void {
58
- if(, fs) { }, : .existsSync(ignoreFilePath)
59
- };
60
- {
61
- return;
62
- }
63
- const content = fs.readFileSync(ignoreFilePath, 'utf-8');
64
- const lines = content.split(/\r?\n/);
65
- for (const line of lines) {
66
- const trimmed = line.trim();
67
- // Skip empty lines and comments
68
- if (!trimmed || trimmed.startsWith('#')) {
69
- continue;
70
- }
71
- const pattern = this.parsePattern(trimmed);
72
- this.patterns.push(pattern);
73
- }
74
- parsePattern(line, string);
75
- IgnorePattern;
76
- {
77
- let pattern = line;
78
- let isNegation = false;
79
- // Check for negation pattern
80
- if (pattern.startsWith('!')) {
81
- isNegation = true;
82
- pattern = pattern.substring(1);
83
- }
84
- // Check if it's a directory pattern
85
- const isDirectory = pattern.endsWith('/');
86
- if (isDirectory) {
87
- pattern = pattern.slice(0, -1);
88
- }
89
- return {
90
- pattern: pattern,
91
- isNegation,
92
- isDirectory
93
- };
94
- }
95
- /**
96
- * Check if a file path should be ignored
97
- */
98
- shouldIgnore(filePath, string);
99
- boolean;
100
- {
101
- const normalizedPath = filePath.replace(/\\/g, '/');
102
- let ignored = false;
103
- for (const { pattern, isNegation, isDirectory } of this.patterns) {
104
- const matches = this.matchPattern(normalizedPath, pattern, isDirectory);
105
- if (matches) {
106
- ignored = !isNegation;
107
- }
108
- }
109
- return ignored;
110
- }
111
- matchPattern(filePath, string, pattern, string, isDirectory, boolean);
112
- boolean;
113
- {
114
- const fileName = path.basename(filePath);
115
- const normalizedPattern = pattern.replace(/\\/g, '/');
116
- // If it's a directory pattern, check if path contains the directory
117
- if (isDirectory) {
118
- return filePath.includes(normalizedPattern + '/') ||
119
- filePath.startsWith(normalizedPattern + '/');
120
- }
121
- // Handle extension patterns (*.log, *.tmp)
122
- if (normalizedPattern.startsWith('*.')) {
123
- const extension = normalizedPattern.substring(1); // includes the dot
124
- return fileName.endsWith(extension);
125
- }
126
- // Handle wildcards with path segments (src/**/*.test.ts)
127
- if (normalizedPattern.includes('**')) {
128
- const regexPattern = this.convertGlobToRegex(normalizedPattern);
129
- return regexPattern.test(filePath);
130
- }
131
- // Handle simple wildcards (*.log, test-*.js)
132
- if (normalizedPattern.includes('*')) {
133
- const regexPattern = this.convertSimpleWildcardToRegex(normalizedPattern);
134
- return regexPattern.test(fileName);
135
- }
136
- // Exact match for file name or path
137
- return fileName === normalizedPattern || filePath === normalizedPattern ||
138
- filePath.endsWith('/' + normalizedPattern);
139
- }
140
- convertGlobToRegex(pattern, string);
141
- RegExp;
142
- {
143
- let regexStr = pattern
144
- .replace(/\./g, '\\.')
145
- .replace(/\*\*/g, '___DOUBLE_STAR___')
146
- .replace(/\*/g, '[^/]*')
147
- .replace(/___DOUBLE_STAR___/g, '.*')
148
- .replace(/\?/g, '.');
149
- // Anchor the pattern
150
- regexStr = '^' + regexStr + '$';
151
- return new RegExp(regexStr);
152
- }
153
- convertSimpleWildcardToRegex(pattern, string);
154
- RegExp;
155
- {
156
- const regexStr = pattern
157
- .replace(/\./g, '\\.')
158
- .replace(/\*/g, '.*')
159
- .replace(/\?/g, '.');
160
- return new RegExp('^' + regexStr + '$');
161
- }
162
- /**
163
- * Get all patterns (for debugging)
164
- */
165
- getPatterns();
166
- IgnorePattern[];
167
- {
168
- return this.patterns;
169
- }
170
- //# sourceMappingURL=ignore-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ignore-parser.js","sourceRoot":"","sources":["../../src/utils/ignore-parser.ts"],"names":[],"mappings":"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"}