Skip to content

Commit a5a2e10

Browse files
committed
Test / type fixes
1 parent 26e4b80 commit a5a2e10

File tree

10 files changed

+399
-437
lines changed

10 files changed

+399
-437
lines changed

dist/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ declare const _default: {
1111
* Rule to validate that CSS classes used in code exist in stylesheets
1212
* @see ./rules/no-unknown-class.ts
1313
*/
14-
'no-unknown-classes': import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownClass", [import("./rules/no-unknown-class").PluginOptions], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
14+
'no-unknown-classes': import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownClass", [import("./rules/no-unknown-class").PluginOptions], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
1515
};
1616
/**
1717
* Recommended configuration

dist/rules/no-unknown-class.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ const rule = {
1616
type: 'problem',
1717
docs: {
1818
description: 'Ensure that CSS classes used in JS/TS files exist',
19-
recommended: 'recommended',
2019
},
2120
messages: {
2221
unknownClass: "Unknown CSS class '{{className}}'",

dist/utils/file-watcher.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export declare class CssWatcher {
66
constructor(patterns?: string[], ignore?: string[]);
77
private setupWatcher;
88
private updateClassesForFile;
9+
private initialScan;
910
hasClass(className: string): boolean;
1011
close(): Promise<void>;
1112
}

dist/utils/file-watcher.js

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ class CssWatcher {
1818
this.patterns = patterns;
1919
// Ignore hidden files by default
2020
this.ignorePatterns = ['**/.*', ...ignore];
21-
this.setupWatcher();
22-
}
23-
setupWatcher() {
24-
// Set up chokidar with appropriate options
2521
const cwd = process.cwd();
22+
this.setupWatcher(cwd);
23+
this.initialScan(cwd);
24+
}
25+
setupWatcher(cwd) {
2626
this.watcher = chokidar_1.default.watch(cwd, {
2727
persistent: true,
28-
ignoreInitial: false, // This ensures we get the initial scan
28+
ignoreInitial: true, // We need to do our initial scan synchronously
2929
ignored: (path, stats) => {
3030
return (micromatch_1.default.isMatch(path, this.ignorePatterns) ||
3131
!!((stats === null || stats === void 0 ? void 0 : stats.isFile()) && !micromatch_1.default.isMatch(path, this.patterns)));
@@ -39,7 +39,6 @@ class CssWatcher {
3939
// Setup event handlers
4040
this.watcher
4141
.on('add', (filePath) => {
42-
console.log('!!', filePath);
4342
this.updateClassesForFile(filePath);
4443
})
4544
.on('change', (filePath) => {
@@ -53,9 +52,9 @@ class CssWatcher {
5352
console.error(`Watcher error: ${error}`);
5453
});
5554
}
56-
async updateClassesForFile(filePath) {
55+
updateClassesForFile(filePath) {
5756
try {
58-
const content = await fs_1.default.promises.readFile(filePath, 'utf8');
57+
const content = fs_1.default.readFileSync(filePath, 'utf8');
5958
const fileClasses = (0, css_extractor_1.extractClassesFromCss)(content);
6059
this.state.fileClasses.set(filePath, new Set(fileClasses));
6160
this.state.lastUpdate = Date.now();
@@ -65,6 +64,25 @@ class CssWatcher {
6564
this.state.fileClasses.delete(filePath);
6665
}
6766
}
67+
initialScan(cwd) {
68+
const dirs = [cwd];
69+
for (const dir of dirs) {
70+
const entries = fs_1.default.readdirSync(dir);
71+
for (const entry of entries) {
72+
const fullPath = `${dir}/${entry}`;
73+
if (micromatch_1.default.isMatch(fullPath, this.ignorePatterns)) {
74+
continue;
75+
}
76+
const stats = fs_1.default.statSync(fullPath);
77+
if (stats.isDirectory()) {
78+
dirs.push(fullPath);
79+
}
80+
else if (stats.isFile() && micromatch_1.default.isMatch(fullPath, this.patterns)) {
81+
this.updateClassesForFile(fullPath);
82+
}
83+
}
84+
}
85+
}
6886
hasClass(className) {
6987
for (const classes of this.state.fileClasses.values()) {
7088
if (classes.has(className)) {

0 commit comments

Comments
 (0)