css-to-tailwind-react 0.3.2 → 0.4.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.
@@ -0,0 +1,50 @@
1
+ export interface FileResult {
2
+ filePath: string;
3
+ originalContent: string;
4
+ newContent: string;
5
+ hasChanges: boolean;
6
+ status: 'modified' | 'unchanged' | 'error';
7
+ error?: string;
8
+ transformations?: {
9
+ utilitiesGenerated: number;
10
+ classesReplaced: number;
11
+ conflictsResolved: number;
12
+ };
13
+ }
14
+ export interface SummaryStats {
15
+ filesScanned: number;
16
+ filesModified: number;
17
+ filesUnchanged: number;
18
+ filesWithError: number;
19
+ utilitiesGenerated: number;
20
+ classesReplaced: number;
21
+ conflictsResolved: number;
22
+ unsupportedSelectors: number;
23
+ errors: number;
24
+ warnings: number;
25
+ }
26
+ export interface ReporterOptions {
27
+ showDiff: boolean;
28
+ silent: boolean;
29
+ verbose: boolean;
30
+ dryRun: boolean;
31
+ projectRoot: string;
32
+ }
33
+ export declare class Reporter {
34
+ private options;
35
+ private fileResults;
36
+ private stats;
37
+ constructor(options: ReporterOptions);
38
+ addFileResult(result: FileResult): void;
39
+ addWarning(count?: number): void;
40
+ addUnsupportedSelector(count?: number): void;
41
+ recordError(): void;
42
+ getStats(): SummaryStats;
43
+ getFileResults(): FileResult[];
44
+ printDiff(result: FileResult): void;
45
+ printFileStatus(result: FileResult): void;
46
+ printSummary(): void;
47
+ toJSON(): object;
48
+ printJSON(): void;
49
+ print(): void;
50
+ }
@@ -0,0 +1,215 @@
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.Reporter = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const logger_1 = require("./logger");
9
+ const diff_1 = require("./diff");
10
+ const path_1 = __importDefault(require("path"));
11
+ class Reporter {
12
+ constructor(options) {
13
+ this.fileResults = [];
14
+ this.stats = {
15
+ filesScanned: 0,
16
+ filesModified: 0,
17
+ filesUnchanged: 0,
18
+ filesWithError: 0,
19
+ utilitiesGenerated: 0,
20
+ classesReplaced: 0,
21
+ conflictsResolved: 0,
22
+ unsupportedSelectors: 0,
23
+ errors: 0,
24
+ warnings: 0
25
+ };
26
+ this.options = options;
27
+ logger_1.logger.setVerbose(options.verbose);
28
+ logger_1.logger.setSilent(options.silent);
29
+ }
30
+ addFileResult(result) {
31
+ this.fileResults.push(result);
32
+ this.stats.filesScanned++;
33
+ switch (result.status) {
34
+ case 'modified':
35
+ this.stats.filesModified++;
36
+ break;
37
+ case 'unchanged':
38
+ this.stats.filesUnchanged++;
39
+ break;
40
+ case 'error':
41
+ this.stats.filesWithError++;
42
+ this.stats.errors++;
43
+ break;
44
+ }
45
+ if (result.transformations) {
46
+ this.stats.utilitiesGenerated += result.transformations.utilitiesGenerated;
47
+ this.stats.classesReplaced += result.transformations.classesReplaced;
48
+ this.stats.conflictsResolved += result.transformations.conflictsResolved;
49
+ }
50
+ }
51
+ addWarning(count = 1) {
52
+ this.stats.warnings += count;
53
+ }
54
+ addUnsupportedSelector(count = 1) {
55
+ this.stats.unsupportedSelectors += count;
56
+ }
57
+ recordError() {
58
+ this.stats.errors++;
59
+ }
60
+ getStats() {
61
+ return { ...this.stats };
62
+ }
63
+ getFileResults() {
64
+ return [...this.fileResults];
65
+ }
66
+ printDiff(result) {
67
+ if (!result.hasChanges || !this.options.showDiff) {
68
+ return;
69
+ }
70
+ const relativePath = path_1.default.relative(this.options.projectRoot, result.filePath);
71
+ const diff = (0, diff_1.computeUnifiedDiff)(result.originalContent, result.newContent);
72
+ const formattedDiff = (0, diff_1.formatDiff)(relativePath, diff);
73
+ if (formattedDiff) {
74
+ console.log('\n' + chalk_1.default.cyan(`diff --git a/${relativePath} b/${relativePath}`));
75
+ const lines = formattedDiff.split('\n');
76
+ for (const line of lines) {
77
+ if (line.startsWith('---') || line.startsWith('+++')) {
78
+ console.log(chalk_1.default.bold(line));
79
+ }
80
+ else if (line.startsWith('@@')) {
81
+ console.log(chalk_1.default.cyan(line));
82
+ }
83
+ else if (line.startsWith('+') && !line.startsWith('+++')) {
84
+ console.log(chalk_1.default.green(line));
85
+ }
86
+ else if (line.startsWith('-') && !line.startsWith('---')) {
87
+ console.log(chalk_1.default.red(line));
88
+ }
89
+ else {
90
+ console.log(chalk_1.default.gray(line));
91
+ }
92
+ }
93
+ }
94
+ }
95
+ printFileStatus(result) {
96
+ if (this.options.silent) {
97
+ return;
98
+ }
99
+ const relativePath = path_1.default.relative(this.options.projectRoot, result.filePath);
100
+ if (result.status === 'error') {
101
+ logger_1.logger.error(`Failed: ${relativePath}`, result.error);
102
+ return;
103
+ }
104
+ if (!result.hasChanges) {
105
+ if (this.options.verbose) {
106
+ logger_1.logger.verbose(`No changes: ${relativePath}`);
107
+ }
108
+ return;
109
+ }
110
+ if (this.options.dryRun) {
111
+ if (this.options.showDiff) {
112
+ console.log(chalk_1.default.blue(`\nšŸ“„ ${relativePath}`) + chalk_1.default.yellow(' (dry-run)'));
113
+ }
114
+ else {
115
+ logger_1.logger.info(`Would modify: ${relativePath}`);
116
+ }
117
+ }
118
+ else {
119
+ logger_1.logger.success(`Modified: ${relativePath}`);
120
+ }
121
+ if (this.options.showDiff) {
122
+ this.printDiff(result);
123
+ }
124
+ }
125
+ printSummary() {
126
+ if (this.options.silent) {
127
+ return;
128
+ }
129
+ const stats = this.stats;
130
+ console.log('\n' + '='.repeat(50));
131
+ if (this.options.dryRun) {
132
+ console.log(chalk_1.default.yellow('šŸ” DRY RUN - No files were modified'));
133
+ }
134
+ else {
135
+ logger_1.logger.success('Transformation Complete!');
136
+ }
137
+ console.log('='.repeat(50));
138
+ console.log('\nšŸ“Š Summary:');
139
+ console.log(` Files scanned: ${stats.filesScanned}`);
140
+ console.log(` Files modified: ${chalk_1.default.green(stats.filesModified)}`);
141
+ console.log(` Files unchanged: ${chalk_1.default.gray(stats.filesUnchanged)}`);
142
+ if (stats.filesWithError > 0) {
143
+ console.log(` Files with errors: ${chalk_1.default.red(stats.filesWithError)}`);
144
+ }
145
+ console.log(` Utilities generated: ${stats.utilitiesGenerated}`);
146
+ console.log(` Classes replaced: ${stats.classesReplaced}`);
147
+ console.log(` Conflicts resolved: ${stats.conflictsResolved}`);
148
+ if (stats.unsupportedSelectors > 0) {
149
+ console.log(` Unsupported selectors: ${chalk_1.default.yellow(stats.unsupportedSelectors)}`);
150
+ }
151
+ if (stats.warnings > 0) {
152
+ console.log(` Warnings: ${chalk_1.default.yellow(stats.warnings)}`);
153
+ }
154
+ if (stats.errors > 0) {
155
+ console.log(` Errors: ${chalk_1.default.red(stats.errors)}`);
156
+ }
157
+ console.log('='.repeat(50));
158
+ }
159
+ toJSON() {
160
+ return {
161
+ success: this.stats.errors === 0,
162
+ dryRun: this.options.dryRun,
163
+ summary: {
164
+ filesScanned: this.stats.filesScanned,
165
+ filesModified: this.stats.filesModified,
166
+ filesUnchanged: this.stats.filesUnchanged,
167
+ filesWithError: this.stats.filesWithError,
168
+ utilitiesGenerated: this.stats.utilitiesGenerated,
169
+ classesReplaced: this.stats.classesReplaced,
170
+ conflictsResolved: this.stats.conflictsResolved,
171
+ unsupportedSelectors: this.stats.unsupportedSelectors,
172
+ warnings: this.stats.warnings,
173
+ errors: this.stats.errors
174
+ },
175
+ files: this.fileResults.map(result => {
176
+ const relativePath = path_1.default.relative(this.options.projectRoot, result.filePath);
177
+ const output = {
178
+ path: relativePath,
179
+ status: result.status,
180
+ hasChanges: result.hasChanges
181
+ };
182
+ if (result.hasChanges && this.options.showDiff) {
183
+ const diff = (0, diff_1.computeUnifiedDiff)(result.originalContent, result.newContent);
184
+ const stats = (0, diff_1.getChangeStats)(diff);
185
+ output.diff = {
186
+ added: stats.added,
187
+ removed: stats.removed
188
+ };
189
+ }
190
+ if (result.error) {
191
+ output.error = result.error;
192
+ }
193
+ if (result.transformations) {
194
+ output.transformations = result.transformations;
195
+ }
196
+ return output;
197
+ })
198
+ };
199
+ }
200
+ printJSON() {
201
+ console.log(JSON.stringify(this.toJSON(), null, 2));
202
+ }
203
+ print() {
204
+ if (this.options.silent) {
205
+ this.printSummary();
206
+ return;
207
+ }
208
+ for (const result of this.fileResults) {
209
+ this.printFileStatus(result);
210
+ }
211
+ this.printSummary();
212
+ }
213
+ }
214
+ exports.Reporter = Reporter;
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLHFDQUFrQztBQUNsQyxpQ0FBb0Y7QUFDcEYsZ0RBQXdCO0FBcUN4QixNQUFhLFFBQVE7SUFnQm5CLFlBQVksT0FBd0I7UUFkNUIsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQy9CLFVBQUssR0FBaUI7WUFDNUIsWUFBWSxFQUFFLENBQUM7WUFDZixhQUFhLEVBQUUsQ0FBQztZQUNoQixjQUFjLEVBQUUsQ0FBQztZQUNqQixjQUFjLEVBQUUsQ0FBQztZQUNqQixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsb0JBQW9CLEVBQUUsQ0FBQztZQUN2QixNQUFNLEVBQUUsQ0FBQztZQUNULFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQztRQUdBLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLGVBQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLGVBQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBa0I7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUUxQixRQUFRLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixLQUFLLFVBQVU7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDM0IsTUFBTTtZQUNSLEtBQUssV0FBVztnQkFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dC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QUFXLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBcE9ELDRCQW9PQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBjb21wdXRlVW5pZmllZERpZmYsIGZvcm1hdERpZmYsIERpZmZSZXN1bHQsIGdldENoYW5nZVN0YXRzIH0gZnJvbSAnLi9kaWZmJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVSZXN1bHQge1xuICBmaWxlUGF0aDogc3RyaW5nO1xuICBvcmlnaW5hbENvbnRlbnQ6IHN0cmluZztcbiAgbmV3Q29udGVudDogc3RyaW5nO1xuICBoYXNDaGFuZ2VzOiBib29sZWFuO1xuICBzdGF0dXM6ICdtb2RpZmllZCcgfCAndW5jaGFuZ2VkJyB8ICdlcnJvcic7XG4gIGVycm9yPzogc3RyaW5nO1xuICB0cmFuc2Zvcm1hdGlvbnM/OiB7XG4gICAgdXRpbGl0aWVzR2VuZXJhdGVkOiBudW1iZXI7XG4gICAgY2xhc3Nlc1JlcGxhY2VkOiBudW1iZXI7XG4gICAgY29uZmxpY3RzUmVzb2x2ZWQ6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdW1tYXJ5U3RhdHMge1xuICBmaWxlc1NjYW5uZWQ6IG51bWJlcjtcbiAgZmlsZXNNb2RpZmllZDogbnVtYmVyO1xuICBmaWxlc1VuY2hhbmdlZDogbnVtYmVyO1xuICBmaWxlc1dpdGhFcnJvcjogbnVtYmVyO1xuICB1dGlsaXRpZXNHZW5lcmF0ZWQ6IG51bWJlcjtcbiAgY2xhc3Nlc1JlcGxhY2VkOiBudW1iZXI7XG4gIGNvbmZsaWN0c1Jlc29sdmVkOiBudW1iZXI7XG4gIHVuc3VwcG9ydGVkU2VsZWN0b3JzOiBudW1iZXI7XG4gIGVycm9yczogbnVtYmVyO1xuICB3YXJuaW5nczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydGVyT3B0aW9ucyB7XG4gIHNob3dEaWZmOiBib29sZWFuO1xuICBzaWxlbnQ6IGJvb2xlYW47XG4gIHZlcmJvc2U6IGJvb2xlYW47XG4gIGRyeVJ1bjogYm9vbGVhbjtcbiAgcHJvamVjdFJvb3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFJlcG9ydGVyIHtcbiAgcHJpdmF0ZSBvcHRpb25zOiBSZXBvcnRlck9wdGlvbnM7XG4gIHByaXZhdGUgZmlsZVJlc3VsdHM6IEZpbGVSZXN1bHRbXSA9IFtdO1xuICBwcml2YXRlIHN0YXRzOiBTdW1tYXJ5U3RhdHMgPSB7XG4gICAgZmlsZXNTY2FubmVkOiAwLFxuICAgIGZpbGVzTW9kaWZpZWQ6IDAsXG4gICAgZmlsZXNVbmNoYW5nZWQ6IDAsXG4gICAgZmlsZXNXaXRoRXJyb3I6IDAsXG4gICAgdXRpbGl0aWVzR2VuZXJhdGVkOiAwLFxuICAgIGNsYXNzZXNSZXBsYWNlZDogMCxcbiAgICBjb25mbGljdHNSZXNvbHZlZDogMCxcbiAgICB1bnN1cHBvcnRlZFNlbGVjdG9yczogMCxcbiAgICBlcnJvcnM6IDAsXG4gICAgd2FybmluZ3M6IDBcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBSZXBvcnRlck9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIGxvZ2dlci5zZXRWZXJib3NlKG9wdGlvbnMudmVyYm9zZSk7XG4gICAgbG9nZ2VyLnNldFNpbGVudChvcHRpb25zLnNpbGVudCk7XG4gIH1cblxuICBhZGRGaWxlUmVzdWx0KHJlc3VsdDogRmlsZVJlc3VsdCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZVJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgIHRoaXMuc3RhdHMuZmlsZXNTY2FubmVkKys7XG4gICAgXG4gICAgc3dpdGNoIChyZXN1bHQuc3RhdHVzKSB7XG4gICAgICBjYXNlICdtb2RpZmllZCc6XG4gICAgICAgIHRoaXMuc3RhdHMuZmlsZXNNb2RpZmllZCsrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuY2hhbmdlZCc6XG4gICAgICAgIHRoaXMuc3RhdHMuZmlsZXNVbmNoYW5nZWQrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHRoaXMuc3RhdHMuZmlsZXNXaXRoRXJyb3IrKztcbiAgICAgICAgdGhpcy5zdGF0cy5lcnJvcnMrKztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIFxuICAgIGlmIChyZXN1bHQudHJhbnNmb3JtYXRpb25zKSB7XG4gICAgICB0aGlzLnN0YXRzLnV0aWxpdGllc0dlbmVyYXRlZCArPSByZXN1bHQudHJhbnNmb3JtYXRpb25zLnV0aWxpdGllc0dlbmVyYXRlZDtcbiAgICAgIHRoaXMuc3RhdHMuY2xhc3Nlc1JlcGxhY2VkICs9IHJlc3VsdC50cmFuc2Zvcm1hdGlvbnMuY2xhc3Nlc1JlcGxhY2VkO1xuICAgICAgdGhpcy5zdGF0cy5jb25mbGljdHNSZXNvbHZlZCArPSByZXN1bHQudHJhbnNmb3JtYXRpb25zLmNvbmZsaWN0c1Jlc29sdmVkO1xuICAgIH1cbiAgfVxuXG4gIGFkZFdhcm5pbmcoY291bnQ6IG51bWJlciA9IDEpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRzLndhcm5pbmdzICs9IGNvdW50O1xuICB9XG5cbiAgYWRkVW5zdXBwb3J0ZWRTZWxlY3Rvcihjb3VudDogbnVtYmVyID0gMSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdHMudW5zdXBwb3J0ZWRTZWxlY3RvcnMgKz0gY291bnQ7XG4gIH1cblxuICByZWNvcmRFcnJvcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRzLmVycm9ycysrO1xuICB9XG5cbiAgZ2V0U3RhdHMoKTogU3VtbWFyeVN0YXRzIHtcbiAgICByZXR1cm4geyAuLi50aGlzLnN0YXRzIH07XG4gIH1cblxuICBnZXRGaWxlUmVzdWx0cygpOiBGaWxlUmVzdWx0W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5maWxlUmVzdWx0c107XG4gIH1cblxuICBwcmludERpZmYocmVzdWx0OiBGaWxlUmVzdWx0KTogdm9pZCB7XG4gICAgaWYgKCFyZXN1bHQuaGFzQ2hhbmdlcyB8fCAhdGhpcy5vcHRpb25zLnNob3dEaWZmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUodGhpcy5vcHRpb25zLnByb2plY3RSb290LCByZXN1bHQuZmlsZVBhdGgpO1xuICAgIGNvbnN0IGRpZmYgPSBjb21wdXRlVW5pZmllZERpZmYocmVzdWx0Lm9yaWdpbmFsQ29udGVudCwgcmVzdWx0Lm5ld0NvbnRlbnQpO1xuICAgIGNvbnN0IGZvcm1hdHRlZERpZmYgPSBmb3JtYXREaWZmKHJlbGF0aXZlUGF0aCwgZGlmZik7XG4gICAgXG4gICAgaWYgKGZvcm1hdHRlZERpZmYpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdcXG4nICsgY2hhbGsuY3lhbihgZGlmZiAtLWdpdCBhLyR7cmVsYXRpdmVQYXRofSBiLyR7cmVsYXRpdmVQYXRofWApKTtcbiAgICAgIGNvbnN0IGxpbmVzID0gZm9ybWF0dGVkRGlmZi5zcGxpdCgnXFxuJyk7XG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgnLS0tJykgfHwgbGluZS5zdGFydHNXaXRoKCcrKysnKSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmJvbGQobGluZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aCgnQEAnKSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4obGluZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aCgnKycpICYmICFsaW5lLnN0YXJ0c1dpdGgoJysrKycpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4obGluZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aCgnLScpICYmICFsaW5lLnN0YXJ0c1dpdGgoJy0tLScpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsucmVkKGxpbmUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KGxpbmUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaW50RmlsZVN0YXR1cyhyZXN1bHQ6IEZpbGVSZXN1bHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnNpbGVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKHRoaXMub3B0aW9ucy5wcm9qZWN0Um9vdCwgcmVzdWx0LmZpbGVQYXRoKTtcbiAgICBcbiAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQ6ICR7cmVsYXRpdmVQYXRofWAsIHJlc3VsdC5lcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGlmICghcmVzdWx0Lmhhc0NoYW5nZXMpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICBsb2dnZXIudmVyYm9zZShgTm8gY2hhbmdlczogJHtyZWxhdGl2ZVBhdGh9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dEaWZmKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmJsdWUoYFxcbvCfk4QgJHtyZWxhdGl2ZVBhdGh9YCkgKyBjaGFsay55ZWxsb3coJyAoZHJ5LXJ1biknKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIuaW5mbyhgV291bGQgbW9kaWZ5OiAke3JlbGF0aXZlUGF0aH1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYE1vZGlmaWVkOiAke3JlbGF0aXZlUGF0aH1gKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zaG93RGlmZikge1xuICAgICAgdGhpcy5wcmludERpZmYocmVzdWx0KTtcbiAgICB9XG4gIH1cblxuICBwcmludFN1bW1hcnkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLnN0YXRzO1xuICAgIFxuICAgIGNvbnNvbGUubG9nKCdcXG4nICsgJz0nLnJlcGVhdCg1MCkpO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coJ/CflI0gRFJZIFJVTiAtIE5vIGZpbGVzIHdlcmUgbW9kaWZpZWQnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKCdUcmFuc2Zvcm1hdGlvbiBDb21wbGV0ZSEnKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJz0nLnJlcGVhdCg1MCkpO1xuICAgIFxuICAgIGNvbnNvbGUubG9nKCdcXG7wn5OKIFN1bW1hcnk6Jyk7XG4gICAgY29uc29sZS5sb2coYCAgIEZpbGVzIHNjYW5uZWQ6ICAgICAgICR7c3RhdHMuZmlsZXNTY2FubmVkfWApO1xuICAgIGNvbnNvbGUubG9nKGAgICBGaWxlcyBtb2RpZmllZDogICAgICAke2NoYWxrLmdyZWVuKHN0YXRzLmZpbGVzTW9kaWZpZWQpfWApO1xuICAgIGNvbnNvbGUubG9nKGAgICBGaWxlcyB1bmNoYW5nZWQ6ICAgICAke2NoYWxrLmdyYXkoc3RhdHMuZmlsZXNVbmNoYW5nZWQpfWApO1xuICAgIGlmIChzdGF0cy5maWxlc1dpdGhFcnJvciA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKGAgICBGaWxlcyB3aXRoIGVycm9yczogICAke2NoYWxrLnJlZChzdGF0cy5maWxlc1dpdGhFcnJvcil9YCk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGAgICBVdGlsaXRpZXMgZ2VuZXJhdGVkOiAke3N0YXRzLnV0aWxpdGllc0dlbmVyYXRlZH1gKTtcbiAgICBjb25zb2xlLmxvZyhgICAgQ2xhc3NlcyByZXBsYWNlZDogICAgJHtzdGF0cy5jbGFzc2VzUmVwbGFjZWR9YCk7XG4gICAgY29uc29sZS5sb2coYCAgIENvbmZsaWN0cyByZXNvbHZlZDogICR7c3RhdHMuY29uZmxpY3RzUmVzb2x2ZWR9YCk7XG4gICAgaWYgKHN0YXRzLnVuc3VwcG9ydGVkU2VsZWN0b3JzID4gMCkge1xuICAgICAgY29uc29sZS5sb2coYCAgIFVuc3VwcG9ydGVkIHNlbGVjdG9yczogJHtjaGFsay55ZWxsb3coc3RhdHMudW5zdXBwb3J0ZWRTZWxlY3RvcnMpfWApO1xuICAgIH1cbiAgICBpZiAoc3RhdHMud2FybmluZ3MgPiAwKSB7XG4gICAgICBjb25zb2xlLmxvZyhgICAgV2FybmluZ3M6ICAgICAgICAgICAgJHtjaGFsay55ZWxsb3coc3RhdHMud2FybmluZ3MpfWApO1xuICAgIH1cbiAgICBpZiAoc3RhdHMuZXJyb3JzID4gMCkge1xuICAgICAgY29uc29sZS5sb2coYCAgIEVycm9yczogICAgICAgICAgICAgICR7Y2hhbGsucmVkKHN0YXRzLmVycm9ycyl9YCk7XG4gICAgfVxuICAgIFxuICAgIGNvbnNvbGUubG9nKCc9Jy5yZXBlYXQoNTApKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBvYmplY3Qge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0aGlzLnN0YXRzLmVycm9ycyA9PT0gMCxcbiAgICAgIGRyeVJ1bjogdGhpcy5vcHRpb25zLmRyeVJ1bixcbiAgICAgIHN1bW1hcnk6IHtcbiAgICAgICAgZmlsZXNTY2FubmVkOiB0aGlzLnN0YXRzLmZpbGVzU2Nhbm5lZCxcbiAgICAgICAgZmlsZXNNb2RpZmllZDogdGhpcy5zdGF0cy5maWxlc01vZGlmaWVkLFxuICAgICAgICBmaWxlc1VuY2hhbmdlZDogdGhpcy5zdGF0cy5maWxlc1VuY2hhbmdlZCxcbiAgICAgICAgZmlsZXNXaXRoRXJyb3I6IHRoaXMuc3RhdHMuZmlsZXNXaXRoRXJyb3IsXG4gICAgICAgIHV0aWxpdGllc0dlbmVyYXRlZDogdGhpcy5zdGF0cy51dGlsaXRpZXNHZW5lcmF0ZWQsXG4gICAgICAgIGNsYXNzZXNSZXBsYWNlZDogdGhpcy5zdGF0cy5jbGFzc2VzUmVwbGFjZWQsXG4gICAgICAgIGNvbmZsaWN0c1Jlc29sdmVkOiB0aGlzLnN0YXRzLmNvbmZsaWN0c1Jlc29sdmVkLFxuICAgICAgICB1bnN1cHBvcnRlZFNlbGVjdG9yczogdGhpcy5zdGF0cy51bnN1cHBvcnRlZFNlbGVjdG9ycyxcbiAgICAgICAgd2FybmluZ3M6IHRoaXMuc3RhdHMud2FybmluZ3MsXG4gICAgICAgIGVycm9yczogdGhpcy5zdGF0cy5lcnJvcnNcbiAgICAgIH0sXG4gICAgICBmaWxlczogdGhpcy5maWxlUmVzdWx0cy5tYXAocmVzdWx0ID0+IHtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZSh0aGlzLm9wdGlvbnMucHJvamVjdFJvb3QsIHJlc3VsdC5maWxlUGF0aCk7XG4gICAgICAgIGNvbnN0IG91dHB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICAgICAgcGF0aDogcmVsYXRpdmVQYXRoLFxuICAgICAgICAgIHN0YXR1czogcmVzdWx0LnN0YXR1cyxcbiAgICAgICAgICBoYXNDaGFuZ2VzOiByZXN1bHQuaGFzQ2hhbmdlc1xuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHJlc3VsdC5oYXNDaGFuZ2VzICYmIHRoaXMub3B0aW9ucy5zaG93RGlmZikge1xuICAgICAgICAgIGNvbnN0IGRpZmYgPSBjb21wdXRlVW5pZmllZERpZmYocmVzdWx0Lm9yaWdpbmFsQ29udGVudCwgcmVzdWx0Lm5ld0NvbnRlbnQpO1xuICAgICAgICAgIGNvbnN0IHN0YXRzID0gZ2V0Q2hhbmdlU3RhdHMoZGlmZik7XG4gICAgICAgICAgb3V0cHV0LmRpZmYgPSB7XG4gICAgICAgICAgICBhZGRlZDogc3RhdHMuYWRkZWQsXG4gICAgICAgICAgICByZW1vdmVkOiBzdGF0cy5yZW1vdmVkXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKHJlc3VsdC5lcnJvcikge1xuICAgICAgICAgIG91dHB1dC5lcnJvciA9IHJlc3VsdC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKHJlc3VsdC50cmFuc2Zvcm1hdGlvbnMpIHtcbiAgICAgICAgICBvdXRwdXQudHJhbnNmb3JtYXRpb25zID0gcmVzdWx0LnRyYW5zZm9ybWF0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgIH0pXG4gICAgfTtcbiAgfVxuXG4gIHByaW50SlNPTigpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh0aGlzLnRvSlNPTigpLCBudWxsLCAyKSk7XG4gIH1cblxuICBwcmludCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnNpbGVudCkge1xuICAgICAgdGhpcy5wcmludFN1bW1hcnkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgdGhpcy5maWxlUmVzdWx0cykge1xuICAgICAgdGhpcy5wcmludEZpbGVTdGF0dXMocmVzdWx0KTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5wcmludFN1bW1hcnkoKTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "css-to-tailwind-react",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "description": "Convert traditional CSS (inline, internal, and external) into Tailwind CSS utility classes for React-based frameworks",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",