css-to-tailwind-react 0.3.4 → 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,197 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeUnifiedDiff = computeUnifiedDiff;
4
+ exports.formatDiffHeader = formatDiffHeader;
5
+ exports.formatDiffHunk = formatDiffHunk;
6
+ exports.formatDiff = formatDiff;
7
+ exports.computeAndFormatDiff = computeAndFormatDiff;
8
+ exports.getChangeStats = getChangeStats;
9
+ function diffLines(oldLines, newLines) {
10
+ const m = oldLines.length;
11
+ const n = newLines.length;
12
+ const dp = [];
13
+ for (let i = 0; i <= m; i++) {
14
+ dp[i] = [];
15
+ for (let j = 0; j <= n; j++) {
16
+ if (i === 0) {
17
+ dp[i][j] = j;
18
+ }
19
+ else if (j === 0) {
20
+ dp[i][j] = i;
21
+ }
22
+ else if (oldLines[i - 1] === newLines[j - 1]) {
23
+ dp[i][j] = dp[i - 1][j - 1];
24
+ }
25
+ else {
26
+ dp[i][j] = 1 + Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]);
27
+ }
28
+ }
29
+ }
30
+ return dp;
31
+ }
32
+ function backtrackEditScript(dp, oldLines, newLines, i, j) {
33
+ const script = [];
34
+ while (i > 0 || j > 0) {
35
+ if (i > 0 && j > 0 && oldLines[i - 1] === newLines[j - 1]) {
36
+ script.unshift({ type: 'context', oldIndex: i - 1, newIndex: j - 1 });
37
+ i--;
38
+ j--;
39
+ }
40
+ else if (j > 0 && (i === 0 || dp[i][j - 1] <= dp[i - 1][j])) {
41
+ script.unshift({ type: 'added', oldIndex: -1, newIndex: j - 1 });
42
+ j--;
43
+ }
44
+ else if (i > 0) {
45
+ script.unshift({ type: 'removed', oldIndex: i - 1, newIndex: -1 });
46
+ i--;
47
+ }
48
+ }
49
+ return script;
50
+ }
51
+ const DEFAULT_CONTEXT_LINES = 3;
52
+ function computeUnifiedDiff(oldContent, newContent, contextLines = DEFAULT_CONTEXT_LINES) {
53
+ const oldLines = oldContent.split('\n');
54
+ const newLines = newContent.split('\n');
55
+ if (oldLines.length === 0 && newLines.length === 0) {
56
+ return { hunks: [], hasChanges: false };
57
+ }
58
+ if (oldContent === newContent) {
59
+ return { hunks: [], hasChanges: false };
60
+ }
61
+ const dp = diffLines(oldLines, newLines);
62
+ const editScript = backtrackEditScript(dp, oldLines, newLines, oldLines.length, newLines.length);
63
+ const changeIndices = [];
64
+ editScript.forEach((item, index) => {
65
+ if (item.type !== 'context') {
66
+ changeIndices.push(index);
67
+ }
68
+ });
69
+ if (changeIndices.length === 0) {
70
+ return { hunks: [], hasChanges: false };
71
+ }
72
+ const hunks = [];
73
+ const visited = new Set();
74
+ for (const changeIndex of changeIndices) {
75
+ if (visited.has(changeIndex))
76
+ continue;
77
+ let start = Math.max(0, changeIndex - contextLines);
78
+ let end = Math.min(editScript.length - 1, changeIndex + contextLines);
79
+ for (let i = changeIndex + contextLines + 1; i < editScript.length; i++) {
80
+ if (editScript[i].type !== 'context') {
81
+ const gapStart = end + 1;
82
+ const gapEnd = i - contextLines;
83
+ if (gapEnd <= gapStart) {
84
+ end = i + contextLines;
85
+ }
86
+ else {
87
+ break;
88
+ }
89
+ }
90
+ }
91
+ for (let i = start; i <= end; i++) {
92
+ visited.add(i);
93
+ }
94
+ const hunkLines = [];
95
+ let oldLineNum = 0;
96
+ let newLineNum = 0;
97
+ for (let i = 0; i < start; i++) {
98
+ const item = editScript[i];
99
+ if (item.type === 'context' || item.type === 'removed') {
100
+ oldLineNum++;
101
+ }
102
+ if (item.type === 'context' || item.type === 'added') {
103
+ newLineNum++;
104
+ }
105
+ }
106
+ const hunkOldStart = oldLineNum + 1;
107
+ const hunkNewStart = newLineNum + 1;
108
+ let hunkOldLines = 0;
109
+ let hunkNewLines = 0;
110
+ for (let i = start; i <= end && i < editScript.length; i++) {
111
+ const item = editScript[i];
112
+ switch (item.type) {
113
+ case 'context':
114
+ oldLineNum++;
115
+ newLineNum++;
116
+ hunkLines.push({
117
+ type: 'context',
118
+ content: oldLines[item.oldIndex],
119
+ oldLineNumber: oldLineNum,
120
+ newLineNumber: newLineNum
121
+ });
122
+ hunkOldLines++;
123
+ hunkNewLines++;
124
+ break;
125
+ case 'removed':
126
+ oldLineNum++;
127
+ hunkLines.push({
128
+ type: 'removed',
129
+ content: oldLines[item.oldIndex],
130
+ oldLineNumber: oldLineNum
131
+ });
132
+ hunkOldLines++;
133
+ break;
134
+ case 'added':
135
+ newLineNum++;
136
+ hunkLines.push({
137
+ type: 'added',
138
+ content: newLines[item.newIndex],
139
+ newLineNumber: newLineNum
140
+ });
141
+ hunkNewLines++;
142
+ break;
143
+ }
144
+ }
145
+ hunks.push({
146
+ oldStart: hunkOldStart,
147
+ oldLines: hunkOldLines,
148
+ newStart: hunkNewStart,
149
+ newLines: hunkNewLines,
150
+ lines: hunkLines
151
+ });
152
+ }
153
+ return { hunks, hasChanges: true };
154
+ }
155
+ function formatDiffHeader(filePath) {
156
+ return `--- a/${filePath}\n+++ b/${filePath}`;
157
+ }
158
+ function formatDiffHunk(hunk) {
159
+ const header = `@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`;
160
+ const lines = hunk.lines.map(line => {
161
+ switch (line.type) {
162
+ case 'context':
163
+ return ` ${line.content}`;
164
+ case 'added':
165
+ return `+${line.content}`;
166
+ case 'removed':
167
+ return `-${line.content}`;
168
+ }
169
+ });
170
+ return [header, ...lines].join('\n');
171
+ }
172
+ function formatDiff(filePath, diff) {
173
+ if (!diff.hasChanges) {
174
+ return '';
175
+ }
176
+ const header = formatDiffHeader(filePath);
177
+ const hunks = diff.hunks.map(formatDiffHunk);
178
+ return [header, ...hunks].join('\n');
179
+ }
180
+ function computeAndFormatDiff(oldContent, newContent, filePath) {
181
+ const diff = computeUnifiedDiff(oldContent, newContent);
182
+ return formatDiff(filePath, diff);
183
+ }
184
+ function getChangeStats(diff) {
185
+ let added = 0;
186
+ let removed = 0;
187
+ for (const hunk of diff.hunks) {
188
+ for (const line of hunk.lines) {
189
+ if (line.type === 'added')
190
+ added++;
191
+ if (line.type === 'removed')
192
+ removed++;
193
+ }
194
+ }
195
+ return { added, removed };
196
+ }
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBdUVBLGdEQXlIQztBQUVELDRDQUVDO0FBRUQsd0NBY0M7QUFFRCxnQ0FTQztBQUVELG9EQU9DO0FBRUQsd0NBWUM7QUFsT0QsU0FBUyxTQUFTLENBQUMsUUFBa0IsRUFBRSxRQUFrQjtJQUN2RCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDMUIsTUFBTSxFQUFFLEdBQWUsRUFBRSxDQUFDO0lBRTFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM1QixFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1gsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNaLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZixDQUFDO2lCQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNuQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdB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TGluZSB7XG4gIHR5cGU6ICdjb250ZXh0JyB8ICdhZGRlZCcgfCAncmVtb3ZlZCc7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgb2xkTGluZU51bWJlcj86IG51bWJlcjtcbiAgbmV3TGluZU51bWJlcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaWZmSHVuayB7XG4gIG9sZFN0YXJ0OiBudW1iZXI7XG4gIG9sZExpbmVzOiBudW1iZXI7XG4gIG5ld1N0YXJ0OiBudW1iZXI7XG4gIG5ld0xpbmVzOiBudW1iZXI7XG4gIGxpbmVzOiBEaWZmTGluZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZSZXN1bHQge1xuICBodW5rczogRGlmZkh1bmtbXTtcbiAgaGFzQ2hhbmdlczogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gZGlmZkxpbmVzKG9sZExpbmVzOiBzdHJpbmdbXSwgbmV3TGluZXM6IHN0cmluZ1tdKTogbnVtYmVyW11bXSB7XG4gIGNvbnN0IG0gPSBvbGRMaW5lcy5sZW5ndGg7XG4gIGNvbnN0IG4gPSBuZXdMaW5lcy5sZW5ndGg7XG4gIGNvbnN0IGRwOiBudW1iZXJbXVtdID0gW107XG4gIFxuICBmb3IgKGxldCBpID0gMDsgaSA8PSBtOyBpKyspIHtcbiAgICBkcFtpXSA9IFtdO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDw9IG47IGorKykge1xuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgZHBbaV1bal0gPSBqO1xuICAgICAgfSBlbHNlIGlmIChqID09PSAwKSB7XG4gICAgICAgIGRwW2ldW2pdID0gaTtcbiAgICAgIH0gZWxzZSBpZiAob2xkTGluZXNbaSAtIDFdID09PSBuZXdMaW5lc1tqIC0gMV0pIHtcbiAgICAgICAgZHBbaV1bal0gPSBkcFtpIC0gMV1baiAtIDFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHBbaV1bal0gPSAxICsgTWF0aC5taW4oZHBbaSAtIDFdW2pdLCBkcFtpXVtqIC0gMV0sIGRwW2kgLSAxXVtqIC0gMV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIGRwO1xufVxuXG5mdW5jdGlvbiBiYWNrdHJhY2tFZGl0U2NyaXB0KFxuICBkcDogbnVtYmVyW11bXSxcbiAgb2xkTGluZXM6IHN0cmluZ1tdLFxuICBuZXdMaW5lczogc3RyaW5nW10sXG4gIGk6IG51bWJlcixcbiAgajogbnVtYmVyXG4pOiBBcnJheTx7IHR5cGU6ICdjb250ZXh0JyB8ICdhZGRlZCcgfCAncmVtb3ZlZCc7IG9sZEluZGV4OiBudW1iZXI7IG5ld0luZGV4OiBudW1iZXIgfT4ge1xuICBjb25zdCBzY3JpcHQ6IEFycmF5PHsgdHlwZTogJ2NvbnRleHQnIHwgJ2FkZGVkJyB8ICdyZW1vdmVkJzsgb2xkSW5kZXg6IG51bWJlcjsgbmV3SW5kZXg6IG51bWJlciB9PiA9IFtdO1xuICBcbiAgd2hpbGUgKGkgPiAwIHx8IGogPiAwKSB7XG4gICAgaWYgKGkgPiAwICYmIGogPiAwICYmIG9sZExpbmVzW2kgLSAxXSA9PT0gbmV3TGluZXNbaiAtIDFdKSB7XG4gICAgICBzY3JpcHQudW5zaGlmdCh7IHR5cGU6ICdjb250ZXh0Jywgb2xkSW5kZXg6IGkgLSAxLCBuZXdJbmRleDogaiAtIDEgfSk7XG4gICAgICBpLS07XG4gICAgICBqLS07XG4gICAgfSBlbHNlIGlmIChqID4gMCAmJiAoaSA9PT0gMCB8fCBkcFtpXVtqIC0gMV0gPD0gZHBbaSAtIDFdW2pdKSkge1xuICAgICAgc2NyaXB0LnVuc2hpZnQoeyB0eXBlOiAnYWRkZWQnLCBvbGRJbmRleDogLTEsIG5ld0luZGV4OiBqIC0gMSB9KTtcbiAgICAgIGotLTtcbiAgICB9IGVsc2UgaWYgKGkgPiAwKSB7XG4gICAgICBzY3JpcHQudW5zaGlmdCh7IHR5cGU6ICdyZW1vdmVkJywgb2xkSW5kZXg6IGkgLSAxLCBuZXdJbmRleDogLTEgfSk7XG4gICAgICBpLS07XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4gc2NyaXB0O1xufVxuXG5jb25zdCBERUZBVUxUX0NPTlRFWFRfTElORVMgPSAzO1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVVuaWZpZWREaWZmKFxuICBvbGRDb250ZW50OiBzdHJpbmcsXG4gIG5ld0NvbnRlbnQ6IHN0cmluZyxcbiAgY29udGV4dExpbmVzOiBudW1iZXIgPSBERUZBVUxUX0NPTlRFWFRfTElORVNcbik6IERpZmZSZXN1bHQge1xuICBjb25zdCBvbGRMaW5lcyA9IG9sZENvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBuZXdMaW5lcyA9IG5ld0NvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICBcbiAgaWYgKG9sZExpbmVzLmxlbmd0aCA9PT0gMCAmJiBuZXdMaW5lcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyBodW5rczogW10sIGhhc0NoYW5nZXM6IGZhbHNlIH07XG4gIH1cbiAgXG4gIGlmIChvbGRDb250ZW50ID09PSBuZXdDb250ZW50KSB7XG4gICAgcmV0dXJuIHsgaHVua3M6IFtdLCBoYXNDaGFuZ2VzOiBmYWxzZSB9O1xuICB9XG4gIFxuICBjb25zdCBkcCA9IGRpZmZMaW5lcyhvbGRMaW5lcywgbmV3TGluZXMpO1xuICBjb25zdCBlZGl0U2NyaXB0ID0gYmFja3RyYWNrRWRpdFNjcmlwdChkcCwgb2xkTGluZXMsIG5ld0xpbmVzLCBvbGRMaW5lcy5sZW5ndGgsIG5ld0xpbmVzLmxlbmd0aCk7XG4gIFxuICBjb25zdCBjaGFuZ2VJbmRpY2VzOiBudW1iZXJbXSA9IFtdO1xuICBlZGl0U2NyaXB0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGl0ZW0udHlwZSAhPT0gJ2NvbnRleHQnKSB7XG4gICAgICBjaGFuZ2VJbmRpY2VzLnB1c2goaW5kZXgpO1xuICAgIH1cbiAgfSk7XG4gIFxuICBpZiAoY2hhbmdlSW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyBodW5rczogW10sIGhhc0NoYW5nZXM6IGZhbHNlIH07XG4gIH1cbiAgXG4gIGNvbnN0IGh1bmtzOiBEaWZmSHVua1tdID0gW107XG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgXG4gIGZvciAoY29uc3QgY2hhbmdlSW5kZXggb2YgY2hhbmdlSW5kaWNlcykge1xuICAgIGlmICh2aXNpdGVkLmhhcyhjaGFuZ2VJbmRleCkpIGNvbnRpbnVlO1xuICAgIFxuICAgIGxldCBzdGFydCA9IE1hdGgubWF4KDAsIGNoYW5nZUluZGV4IC0gY29udGV4dExpbmVzKTtcbiAgICBsZXQgZW5kID0gTWF0aC5taW4oZWRpdFNjcmlwdC5sZW5ndGggLSAxLCBjaGFuZ2VJbmRleCArIGNvbnRleHRMaW5lcyk7XG4gICAgXG4gICAgZm9yIChsZXQgaSA9IGNoYW5nZUluZGV4ICsgY29udGV4dExpbmVzICsgMTsgaSA8IGVkaXRTY3JpcHQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChlZGl0U2NyaXB0W2ldLnR5cGUgIT09ICdjb250ZXh0Jykge1xuICAgICAgICBjb25zdCBnYXBTdGFydCA9IGVuZCArIDE7XG4gICAgICAgIGNvbnN0IGdhcEVuZCA9IGkgLSBjb250ZXh0TGluZXM7XG4gICAgICAgIGlmIChnYXBFbmQgPD0gZ2FwU3RhcnQpIHtcbiAgICAgICAgICBlbmQgPSBpICsgY29udGV4dExpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xuICAgICAgdmlzaXRlZC5hZGQoaSk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGh1bmtMaW5lczogRGlmZkxpbmVbXSA9IFtdO1xuICAgIGxldCBvbGRMaW5lTnVtID0gMDtcbiAgICBsZXQgbmV3TGluZU51bSA9IDA7XG4gICAgXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFydDsgaSsrKSB7XG4gICAgICBjb25zdCBpdGVtID0gZWRpdFNjcmlwdFtpXTtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdjb250ZXh0JyB8fCBpdGVtLnR5cGUgPT09ICdyZW1vdmVkJykge1xuICAgICAgICBvbGRMaW5lTnVtKys7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnY29udGV4dCcgfHwgaXRlbS50eXBlID09PSAnYWRkZWQnKSB7XG4gICAgICAgIG5ld0xpbmVOdW0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgY29uc3QgaHVua09sZFN0YXJ0ID0gb2xkTGluZU51bSArIDE7XG4gICAgY29uc3QgaHVua05ld1N0YXJ0ID0gbmV3TGluZU51bSArIDE7XG4gICAgbGV0IGh1bmtPbGRMaW5lcyA9IDA7XG4gICAgbGV0IGh1bmtOZXdMaW5lcyA9IDA7XG4gICAgXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZCAmJiBpIDwgZWRpdFNjcmlwdC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGVkaXRTY3JpcHRbaV07XG4gICAgICBcbiAgICAgIHN3aXRjaCAoaXRlbS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2NvbnRleHQnOlxuICAgICAgICAgIG9sZExpbmVOdW0rKztcbiAgICAgICAgICBuZXdMaW5lTnVtKys7XG4gICAgICAgICAgaHVua0xpbmVzLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogJ2NvbnRleHQnLFxuICAgICAgICAgICAgY29udGVudDogb2xkTGluZXNbaXRlbS5vbGRJbmRleCFdLFxuICAgICAgICAgICAgb2xkTGluZU51bWJlcjogb2xkTGluZU51bSxcbiAgICAgICAgICAgIG5ld0xpbmVOdW1iZXI6IG5ld0xpbmVOdW1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBodW5rT2xkTGluZXMrKztcbiAgICAgICAgICBodW5rTmV3TGluZXMrKztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmVtb3ZlZCc6XG4gICAgICAgICAgb2xkTGluZU51bSsrO1xuICAgICAgICAgIGh1bmtMaW5lcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdyZW1vdmVkJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IG9sZExpbmVzW2l0ZW0ub2xkSW5kZXghXSxcbiAgICAgICAgICAgIG9sZExpbmVOdW1iZXI6IG9sZExpbmVOdW1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBodW5rT2xkTGluZXMrKztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYWRkZWQnOlxuICAgICAgICAgIG5ld0xpbmVOdW0rKztcbiAgICAgICAgICBodW5rTGluZXMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiAnYWRkZWQnLFxuICAgICAgICAgICAgY29udGVudDogbmV3TGluZXNbaXRlbS5uZXdJbmRleCFdLFxuICAgICAgICAgICAgbmV3TGluZU51bWJlcjogbmV3TGluZU51bVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGh1bmtOZXdMaW5lcysrO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBodW5rcy5wdXNoKHtcbiAgICAgIG9sZFN0YXJ0OiBodW5rT2xkU3RhcnQsXG4gICAgICBvbGRMaW5lczogaHVua09sZExpbmVzLFxuICAgICAgbmV3U3RhcnQ6IGh1bmtOZXdTdGFydCxcbiAgICAgIG5ld0xpbmVzOiBodW5rTmV3TGluZXMsXG4gICAgICBsaW5lczogaHVua0xpbmVzXG4gICAgfSk7XG4gIH1cbiAgXG4gIHJldHVybiB7IGh1bmtzLCBoYXNDaGFuZ2VzOiB0cnVlIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREaWZmSGVhZGVyKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYC0tLSBhLyR7ZmlsZVBhdGh9XFxuKysrIGIvJHtmaWxlUGF0aH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGlmZkh1bmsoaHVuazogRGlmZkh1bmspOiBzdHJpbmcge1xuICBjb25zdCBoZWFkZXIgPSBgQEAgLSR7aHVuay5vbGRTdGFydH0sJHtodW5rLm9sZExpbmVzfSArJHtodW5rLm5ld1N0YXJ0fSwke2h1bmsubmV3TGluZXN9IEBAYDtcbiAgY29uc3QgbGluZXMgPSBodW5rLmxpbmVzLm1hcChsaW5lID0+IHtcbiAgICBzd2l0Y2ggKGxpbmUudHlwZSkge1xuICAgICAgY2FzZSAnY29udGV4dCc6XG4gICAgICAgIHJldHVybiBgICR7bGluZS5jb250ZW50fWA7XG4gICAgICBjYXNlICdhZGRlZCc6XG4gICAgICAgIHJldHVybiBgKyR7bGluZS5jb250ZW50fWA7XG4gICAgICBjYXNlICdyZW1vdmVkJzpcbiAgICAgICAgcmV0dXJuIGAtJHtsaW5lLmNvbnRlbnR9YDtcbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIFtoZWFkZXIsIC4uLmxpbmVzXS5qb2luKCdcXG4nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpZmYoZmlsZVBhdGg6IHN0cmluZywgZGlmZjogRGlmZlJlc3VsdCk6IHN0cmluZyB7XG4gIGlmICghZGlmZi5oYXNDaGFuZ2VzKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIFxuICBjb25zdCBoZWFkZXIgPSBmb3JtYXREaWZmSGVhZGVyKGZpbGVQYXRoKTtcbiAgY29uc3QgaHVua3MgPSBkaWZmLmh1bmtzLm1hcChmb3JtYXREaWZmSHVuayk7XG4gIFxuICByZXR1cm4gW2hlYWRlciwgLi4uaHVua3NdLmpvaW4oJ1xcbicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUFuZEZvcm1hdERpZmYoXG4gIG9sZENvbnRlbnQ6IHN0cmluZyxcbiAgbmV3Q29udGVudDogc3RyaW5nLFxuICBmaWxlUGF0aDogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCBkaWZmID0gY29tcHV0ZVVuaWZpZWREaWZmKG9sZENvbnRlbnQsIG5ld0NvbnRlbnQpO1xuICByZXR1cm4gZm9ybWF0RGlmZihmaWxlUGF0aCwgZGlmZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFuZ2VTdGF0cyhkaWZmOiBEaWZmUmVzdWx0KTogeyBhZGRlZDogbnVtYmVyOyByZW1vdmVkOiBudW1iZXIgfSB7XG4gIGxldCBhZGRlZCA9IDA7XG4gIGxldCByZW1vdmVkID0gMDtcbiAgXG4gIGZvciAoY29uc3QgaHVuayBvZiBkaWZmLmh1bmtzKSB7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGh1bmsubGluZXMpIHtcbiAgICAgIGlmIChsaW5lLnR5cGUgPT09ICdhZGRlZCcpIGFkZGVkKys7XG4gICAgICBpZiAobGluZS50eXBlID09PSAncmVtb3ZlZCcpIHJlbW92ZWQrKztcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiB7IGFkZGVkLCByZW1vdmVkIH07XG59XG4iXX0=
@@ -1,6 +1,8 @@
1
1
  declare class Logger {
2
2
  private isVerbose;
3
+ private isSilent;
3
4
  setVerbose(verbose: boolean): void;
5
+ setSilent(silent: boolean): void;
4
6
  info(message: string, ...args: any[]): void;
5
7
  success(message: string, ...args: any[]): void;
6
8
  warn(message: string, ...args: any[]): void;
@@ -8,20 +8,32 @@ const chalk_1 = __importDefault(require("chalk"));
8
8
  class Logger {
9
9
  constructor() {
10
10
  this.isVerbose = false;
11
+ this.isSilent = false;
11
12
  }
12
13
  setVerbose(verbose) {
13
14
  this.isVerbose = verbose;
14
15
  }
16
+ setSilent(silent) {
17
+ this.isSilent = silent;
18
+ }
15
19
  info(message, ...args) {
20
+ if (this.isSilent)
21
+ return;
16
22
  console.log(chalk_1.default.blue(message), ...args);
17
23
  }
18
24
  success(message, ...args) {
25
+ if (this.isSilent)
26
+ return;
19
27
  console.log(chalk_1.default.green(message), ...args);
20
28
  }
21
29
  warn(message, ...args) {
30
+ if (this.isSilent)
31
+ return;
22
32
  console.log(chalk_1.default.yellow(`āš ļø ${message}`), ...args);
23
33
  }
24
34
  error(message, error) {
35
+ if (this.isSilent)
36
+ return;
25
37
  console.error(chalk_1.default.red(`āŒ ${message}`));
26
38
  if (error && this.isVerbose) {
27
39
  if (error instanceof Error) {
@@ -33,16 +45,18 @@ class Logger {
33
45
  }
34
46
  }
35
47
  verbose(message, ...args) {
36
- if (this.isVerbose) {
37
- console.log(chalk_1.default.gray(`[verbose] ${message}`), ...args);
38
- }
48
+ if (this.isSilent || !this.isVerbose)
49
+ return;
50
+ console.log(chalk_1.default.gray(`[verbose] ${message}`), ...args);
39
51
  }
40
52
  debug(message, ...args) {
41
- if (this.isVerbose) {
42
- console.log(chalk_1.default.cyan(`[debug] ${message}`), ...args);
43
- }
53
+ if (this.isSilent || !this.isVerbose)
54
+ return;
55
+ console.log(chalk_1.default.cyan(`[debug] ${message}`), ...args);
44
56
  }
45
57
  file(message, filePath) {
58
+ if (this.isSilent)
59
+ return;
46
60
  console.log(chalk_1.default.magenta(`${message}:`), chalk_1.default.white(filePath));
47
61
  }
48
62
  diff(original, converted) {
@@ -53,4 +67,4 @@ class Logger {
53
67
  }
54
68
  }
55
69
  exports.logger = new Logger();
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFFMUIsTUFBTSxNQUFNO0lBQVo7UUFDVSxjQUFTLEdBQVksS0FBSyxDQUFDO0lBbURyQyxDQUFDO0lBakRDLFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBVztRQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBVztRQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO2dCQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDckMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxRQUFnQjtRQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLGVBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWdCLEVBQUUsU0FBaUI7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRVksUUFBQSxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgaXNWZXJib3NlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2V0VmVyYm9zZSh2ZXJib3NlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc1ZlcmJvc2UgPSB2ZXJib3NlO1xuICB9XG5cbiAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coY2hhbGsuYmx1ZShtZXNzYWdlKSwgLi4uYXJncyk7XG4gIH1cblxuICBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihtZXNzYWdlKSwgLi4uYXJncyk7XG4gIH1cblxuICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYOKaoO+4jyAgJHttZXNzYWdlfWApLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChg4p2MICR7bWVzc2FnZX1gKSk7XG4gICAgaWYgKGVycm9yICYmIHRoaXMuaXNWZXJib3NlKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5zdGFjayB8fCBlcnJvci5tZXNzYWdlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvcikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZlcmJvc2UobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzVmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheShgW3ZlcmJvc2VdICR7bWVzc2FnZX1gKSwgLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbiAgZGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzVmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihgW2RlYnVnXSAke21lc3NhZ2V9YCksIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIGZpbGUobWVzc2FnZTogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coY2hhbGsubWFnZW50YShgJHttZXNzYWdlfTpgKSwgY2hhbGsud2hpdGUoZmlsZVBhdGgpKTtcbiAgfVxuXG4gIGRpZmYob3JpZ2luYWw6IHN0cmluZywgY29udmVydGVkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1ZlcmJvc2UpIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnJlZCgnICAtJyksIG9yaWdpbmFsKTtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCcgICsnKSwgY29udmVydGVkKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoKTtcbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFFMUIsTUFBTSxNQUFNO0lBQVo7UUFDVSxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGFBQVEsR0FBWSxLQUFLLENBQUM7SUEwRHBDLENBQUM7SUF4REMsVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBZTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBVztRQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBVztRQUNoQyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO2dCQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLElBQUksQ0FBQyxhQUFhLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbkMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLElBQUksQ0FBQyxXQUFXLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxRQUFnQjtRQUNwQyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLGVBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWdCLEVBQUUsU0FBaUI7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRVksUUFBQSxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgaXNWZXJib3NlOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaXNTaWxlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBzZXRWZXJib3NlKHZlcmJvc2U6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzVmVyYm9zZSA9IHZlcmJvc2U7XG4gIH1cblxuICBzZXRTaWxlbnQoc2lsZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc1NpbGVudCA9IHNpbGVudDtcbiAgfVxuXG4gIGluZm8obWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2lsZW50KSByZXR1cm47XG4gICAgY29uc29sZS5sb2coY2hhbGsuYmx1ZShtZXNzYWdlKSwgLi4uYXJncyk7XG4gIH1cblxuICBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1NpbGVudCkgcmV0dXJuO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKG1lc3NhZ2UpLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHdhcm4obWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2lsZW50KSByZXR1cm47XG4gICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KGDimqDvuI8gICR7bWVzc2FnZX1gKSwgLi4uYXJncyk7XG4gIH1cblxuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTaWxlbnQpIHJldHVybjtcbiAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChg4p2MICR7bWVzc2FnZX1gKSk7XG4gICAgaWYgKGVycm9yICYmIHRoaXMuaXNWZXJib3NlKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5zdGFjayB8fCBlcnJvci5tZXNzYWdlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvcikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZlcmJvc2UobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2lsZW50IHx8ICF0aGlzLmlzVmVyYm9zZSkgcmV0dXJuO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoYFt2ZXJib3NlXSAke21lc3NhZ2V9YCksIC4uLmFyZ3MpO1xuICB9XG5cbiAgZGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2lsZW50IHx8ICF0aGlzLmlzVmVyYm9zZSkgcmV0dXJuO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oYFtkZWJ1Z10gJHttZXNzYWdlfWApLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGZpbGUobWVzc2FnZTogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTaWxlbnQpIHJldHVybjtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5tYWdlbnRhKGAke21lc3NhZ2V9OmApLCBjaGFsay53aGl0ZShmaWxlUGF0aCkpO1xuICB9XG5cbiAgZGlmZihvcmlnaW5hbDogc3RyaW5nLCBjb252ZXJ0ZWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzVmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsucmVkKCcgIC0nKSwgb3JpZ2luYWwpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJyAgKycpLCBjb252ZXJ0ZWQpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuIl19
@@ -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.4",
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",