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.
- package/dist/cli.js +107 -24
- package/dist/fileWriter.d.ts +11 -3
- package/dist/fileWriter.js +34 -39
- package/dist/index.d.ts +4 -2
- package/dist/index.js +11 -2
- package/dist/transformer.d.ts +6 -0
- package/dist/transformer.js +131 -56
- package/dist/utils/diff.d.ts +26 -0
- package/dist/utils/diff.js +197 -0
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.js +21 -7
- package/dist/utils/reporter.d.ts +50 -0
- package/dist/utils/reporter.js +215 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,4 +1,37 @@
|
|
|
1
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
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
@@ -6,8 +39,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
39
|
const commander_1 = require("commander");
|
|
7
40
|
const scanner_1 = require("./scanner");
|
|
8
41
|
const transformer_1 = require("./transformer");
|
|
42
|
+
const fileWriter_1 = require("./fileWriter");
|
|
9
43
|
const logger_1 = require("./utils/logger");
|
|
10
44
|
const config_1 = require("./utils/config");
|
|
45
|
+
const reporter_1 = require("./utils/reporter");
|
|
11
46
|
const path_1 = __importDefault(require("path"));
|
|
12
47
|
const program = new commander_1.Command();
|
|
13
48
|
program
|
|
@@ -15,7 +50,10 @@ program
|
|
|
15
50
|
.description('Convert traditional CSS into Tailwind CSS utility classes for React')
|
|
16
51
|
.version('1.0.0')
|
|
17
52
|
.argument('<directory>', 'Target directory to scan and transform')
|
|
18
|
-
.option('--dry-run', 'Show changes without modifying files')
|
|
53
|
+
.option('--dry-run, --preview', 'Show changes without modifying files')
|
|
54
|
+
.option('--diff', 'Print unified diff for each modified file')
|
|
55
|
+
.option('--silent', 'Suppress per-file logs, show only summary')
|
|
56
|
+
.option('--json-report', 'Output structured JSON summary')
|
|
19
57
|
.option('--verbose', 'Show detailed output')
|
|
20
58
|
.option('--delete-css', 'Delete CSS files when all rules are converted')
|
|
21
59
|
.option('--skip-external', 'Skip external CSS files (imports)')
|
|
@@ -23,18 +61,23 @@ program
|
|
|
23
61
|
.option('--skip-internal', 'Skip internal <style> blocks')
|
|
24
62
|
.action(async (directory, options) => {
|
|
25
63
|
const startTime = Date.now();
|
|
64
|
+
const isDryRun = options.dryRun || options.preview || false;
|
|
65
|
+
const showDiff = options.diff || false;
|
|
66
|
+
const isSilent = options.silent || options.jsonReport || false;
|
|
67
|
+
const isJsonReport = options.jsonReport || false;
|
|
26
68
|
try {
|
|
27
|
-
// Set verbose mode for logger
|
|
28
69
|
logger_1.logger.setVerbose(options.verbose || false);
|
|
70
|
+
logger_1.logger.setSilent(isSilent);
|
|
29
71
|
logger_1.logger.info('š CSS to Tailwind React Converter');
|
|
30
72
|
logger_1.logger.info(`š Target directory: ${path_1.default.resolve(directory)}`);
|
|
31
|
-
if (
|
|
73
|
+
if (isDryRun) {
|
|
32
74
|
logger_1.logger.info('š Dry run mode - no files will be modified');
|
|
33
75
|
}
|
|
34
|
-
|
|
76
|
+
if (showDiff) {
|
|
77
|
+
logger_1.logger.info('š Diff mode enabled - showing changes');
|
|
78
|
+
}
|
|
35
79
|
logger_1.logger.info('āļø Loading Tailwind configuration...');
|
|
36
80
|
const tailwindConfig = await (0, config_1.loadTailwindConfig)(directory);
|
|
37
|
-
// Scan project files
|
|
38
81
|
logger_1.logger.info('š Scanning project files...');
|
|
39
82
|
const files = await (0, scanner_1.scanProject)(directory);
|
|
40
83
|
logger_1.logger.success(`Found ${files.length} files to process`);
|
|
@@ -42,9 +85,8 @@ program
|
|
|
42
85
|
logger_1.logger.warn('No supported files found in the target directory');
|
|
43
86
|
process.exit(0);
|
|
44
87
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
dryRun: options.dryRun || false,
|
|
88
|
+
const { fileResults, stats } = await (0, transformer_1.transformFilesDetailed)(files, {
|
|
89
|
+
dryRun: isDryRun,
|
|
48
90
|
deleteCss: options.deleteCss || false,
|
|
49
91
|
skipExternal: options.skipExternal || false,
|
|
50
92
|
skipInline: options.skipInline || false,
|
|
@@ -52,22 +94,63 @@ program
|
|
|
52
94
|
tailwindConfig,
|
|
53
95
|
projectRoot: path_1.default.resolve(directory)
|
|
54
96
|
});
|
|
55
|
-
|
|
97
|
+
const reporter = new reporter_1.Reporter({
|
|
98
|
+
showDiff,
|
|
99
|
+
silent: isSilent,
|
|
100
|
+
verbose: options.verbose || false,
|
|
101
|
+
dryRun: isDryRun,
|
|
102
|
+
projectRoot: path_1.default.resolve(directory)
|
|
103
|
+
});
|
|
104
|
+
for (const result of fileResults) {
|
|
105
|
+
reporter.addFileResult(result);
|
|
106
|
+
}
|
|
107
|
+
reporter.addWarning(stats.warnings);
|
|
108
|
+
if (!isDryRun) {
|
|
109
|
+
logger_1.logger.info('\nš¾ Writing changes...');
|
|
110
|
+
const writtenCount = await (0, fileWriter_1.writeFiles)(fileResults, {
|
|
111
|
+
dryRun: false,
|
|
112
|
+
projectRoot: path_1.default.resolve(directory)
|
|
113
|
+
});
|
|
114
|
+
if (options.deleteCss) {
|
|
115
|
+
for (const result of fileResults) {
|
|
116
|
+
if (result.hasChanges && result.filePath.endsWith('.css')) {
|
|
117
|
+
const cssContent = result.newContent.trim();
|
|
118
|
+
if (cssContent === '' || cssContent === '/* All CSS converted to Tailwind */') {
|
|
119
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
120
|
+
const backupDir = path_1.default.join(path_1.default.resolve(directory), '.css-to-tailwind-backups');
|
|
121
|
+
const relativePath = path_1.default.relative(path_1.default.resolve(directory), result.filePath);
|
|
122
|
+
const backupPath = path_1.default.join(backupDir, relativePath);
|
|
123
|
+
if (!fs.existsSync(backupDir)) {
|
|
124
|
+
fs.mkdirSync(backupDir, { recursive: true });
|
|
125
|
+
}
|
|
126
|
+
const backupDirPath = path_1.default.dirname(backupPath);
|
|
127
|
+
if (!fs.existsSync(backupDirPath)) {
|
|
128
|
+
fs.mkdirSync(backupDirPath, { recursive: true });
|
|
129
|
+
}
|
|
130
|
+
fs.writeFileSync(backupPath, result.originalContent, 'utf-8');
|
|
131
|
+
fs.unlinkSync(result.filePath);
|
|
132
|
+
logger_1.logger.info(`šļø Deleted ${path_1.default.basename(result.filePath)} (all rules converted)`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
logger_1.logger.success(`Wrote ${writtenCount} files`);
|
|
138
|
+
}
|
|
56
139
|
const duration = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
process.exit(
|
|
140
|
+
if (isJsonReport) {
|
|
141
|
+
const jsonOutput = reporter.toJSON();
|
|
142
|
+
const output = {
|
|
143
|
+
...jsonOutput,
|
|
144
|
+
duration: `${duration}s`
|
|
145
|
+
};
|
|
146
|
+
console.log(JSON.stringify(output, null, 2));
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
reporter.print();
|
|
150
|
+
console.log(`\nā±ļø Duration: ${duration}s`);
|
|
151
|
+
}
|
|
152
|
+
if (stats.errors > 0) {
|
|
153
|
+
process.exit(1);
|
|
71
154
|
}
|
|
72
155
|
process.exit(0);
|
|
73
156
|
}
|
|
@@ -77,4 +160,4 @@ program
|
|
|
77
160
|
}
|
|
78
161
|
});
|
|
79
162
|
program.parse();
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlDQUFvQztBQUNwQyx1Q0FBd0M7QUFDeEMsK0NBQStDO0FBQy9DLDJDQUF3QztBQUN4QywyQ0FBb0Q7QUFDcEQsZ0RBQXdCO0FBV3hCLE1BQU0sT0FBTyxHQUFHLElBQUksbUJBQU8sRUFBRSxDQUFDO0FBRTlCLE9BQU87S0FDSixJQUFJLENBQUMsdUJBQXVCLENBQUM7S0FDN0IsV0FBVyxDQUFDLHFFQUFxRSxDQUFDO0tBQ2xGLE9BQU8sQ0FBQyxPQUFPLENBQUM7S0FDaEIsUUFBUSxDQUFDLGFBQWEsRUFBRSx3Q0FBd0MsQ0FBQztLQUNqRSxNQUFNLENBQUMsV0FBVyxFQUFFLHNDQUFzQyxDQUFDO0tBQzNELE1BQU0sQ0FBQyxXQUFXLEVBQUUsc0JBQXNCLENBQUM7S0FDM0MsTUFBTSxDQUFDLGNBQWMsRUFBRSwrQ0FBK0MsQ0FBQztLQUN2RSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsbUNBQW1DLENBQUM7S0FDOUQsTUFBTSxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQztLQUM3QyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsOEJBQThCLENBQUM7S0FDekQsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFpQixFQUFFLE9BQW1CLEVBQUUsRUFBRTtJQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFN0IsSUFBSSxDQUFDO1FBQ0gsOEJBQThCO1FBQzlCLGVBQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztRQUU1QyxlQUFNLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDbEQsZUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsY0FBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFL0QsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsZUFBTSxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCx1QkFBdUI7UUFDdkIsZUFBTSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBQSwyQkFBa0IsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUUzRCxxQkFBcUI7UUFDckIsZUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBQSxxQkFBVyxFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNDLGVBQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxLQUFLLENBQUMsTUFBTSxtQkFBbUIsQ0FBQyxDQUFDO1FBRXpELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QixlQUFNLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7WUFDaEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBRUQsa0JBQWtCO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSw0QkFBYyxFQUFDLEtBQUssRUFBRTtZQUMxQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxLQUFLO1lBQy9CLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLEtBQUs7WUFDckMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLElBQUksS0FBSztZQUMzQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxLQUFLO1lBQ3ZDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxJQUFJLEtBQUs7WUFDM0MsY0FBYztZQUNkLFdBQVcsRUFBRSxjQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUNyQyxDQUFDLENBQUM7UUFFSCxnQkFBZ0I7UUFDaEIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25DLGVBQU0sQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzFELE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFNUIsSUFBSSxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLGVBQU0sQ0FBQyxJQUFJLENBQUMscUVBQXFFLENBQUMsQ0FBQztZQUNuRixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsZUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVMLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgc2NhblByb2plY3QgfSBmcm9tICcuL3NjYW5uZXInO1xuaW1wb3J0IHsgdHJhbnNmb3JtRmlsZXMgfSBmcm9tICcuL3RyYW5zZm9ybWVyJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vdXRpbHMvbG9nZ2VyJztcbmltcG9ydCB7IGxvYWRUYWlsd2luZENvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbnRlcmZhY2UgQ0xJT3B0aW9ucyB7XG4gIGRyeVJ1bj86IGJvb2xlYW47XG4gIHZlcmJvc2U/OiBib29sZWFuO1xuICBkZWxldGVDc3M/OiBib29sZWFuO1xuICBza2lwRXh0ZXJuYWw/OiBib29sZWFuO1xuICBza2lwSW5saW5lPzogYm9vbGVhbjtcbiAgc2tpcEludGVybmFsPzogYm9vbGVhbjtcbn1cblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbnByb2dyYW1cbiAgLm5hbWUoJ2Nzcy10by10YWlsd2luZC1yZWFjdCcpXG4gIC5kZXNjcmlwdGlvbignQ29udmVydCB0cmFkaXRpb25hbCBDU1MgaW50byBUYWlsd2luZCBDU1MgdXRpbGl0eSBjbGFzc2VzIGZvciBSZWFjdCcpXG4gIC52ZXJzaW9uKCcxLjAuMCcpXG4gIC5hcmd1bWVudCgnPGRpcmVjdG9yeT4nLCAnVGFyZ2V0IGRpcmVjdG9yeSB0byBzY2FuIGFuZCB0cmFuc2Zvcm0nKVxuICAub3B0aW9uKCctLWRyeS1ydW4nLCAnU2hvdyBjaGFuZ2VzIHdpdGhvdXQgbW9kaWZ5aW5nIGZpbGVzJylcbiAgLm9wdGlvbignLS12ZXJib3NlJywgJ1Nob3cgZGV0YWlsZWQgb3V0cHV0JylcbiAgLm9wdGlvbignLS1kZWxldGUtY3NzJywgJ0RlbGV0ZSBDU1MgZmlsZXMgd2hlbiBhbGwgcnVsZXMgYXJlIGNvbnZlcnRlZCcpXG4gIC5vcHRpb24oJy0tc2tpcC1leHRlcm5hbCcsICdTa2lwIGV4dGVybmFsIENTUyBmaWxlcyAoaW1wb3J0cyknKVxuICAub3B0aW9uKCctLXNraXAtaW5saW5lJywgJ1NraXAgaW5saW5lIHN0eWxlcycpXG4gIC5vcHRpb24oJy0tc2tpcC1pbnRlcm5hbCcsICdTa2lwIGludGVybmFsIDxzdHlsZT4gYmxvY2tzJylcbiAgLmFjdGlvbihhc3luYyAoZGlyZWN0b3J5OiBzdHJpbmcsIG9wdGlvbnM6IENMSU9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICAvLyBTZXQgdmVyYm9zZSBtb2RlIGZvciBsb2dnZXJcbiAgICAgIGxvZ2dlci5zZXRWZXJib3NlKG9wdGlvbnMudmVyYm9zZSB8fCBmYWxzZSk7XG4gICAgICBcbiAgICAgIGxvZ2dlci5pbmZvKCfwn5qAIENTUyB0byBUYWlsd2luZCBSZWFjdCBDb252ZXJ0ZXInKTtcbiAgICAgIGxvZ2dlci5pbmZvKGDwn5OBIFRhcmdldCBkaXJlY3Rvcnk6ICR7cGF0aC5yZXNvbHZlKGRpcmVjdG9yeSl9YCk7XG4gICAgICBcbiAgICAgIGlmIChvcHRpb25zLmRyeVJ1bikge1xuICAgICAgICBsb2dnZXIuaW5mbygn8J+UjSBEcnkgcnVuIG1vZGUgLSBubyBmaWxlcyB3aWxsIGJlIG1vZGlmaWVkJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIExvYWQgVGFpbHdpbmQgY29uZmlnXG4gICAgICBsb2dnZXIuaW5mbygn4pqZ77iPICBMb2FkaW5nIFRhaWx3aW5kIGNvbmZpZ3VyYXRpb24uLi4nKTtcbiAgICAgIGNvbnN0IHRhaWx3aW5kQ29uZmlnID0gYXdhaXQgbG9hZFRhaWx3aW5kQ29uZmlnKGRpcmVjdG9yeSk7XG4gICAgICBcbiAgICAgIC8vIFNjYW4gcHJvamVjdCBmaWxlc1xuICAgICAgbG9nZ2VyLmluZm8oJ/CflI4gU2Nhbm5pbmcgcHJvamVjdCBmaWxlcy4uLicpO1xuICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBzY2FuUHJvamVjdChkaXJlY3RvcnkpO1xuICAgICAgXG4gICAgICBsb2dnZXIuc3VjY2VzcyhgRm91bmQgJHtmaWxlcy5sZW5ndGh9IGZpbGVzIHRvIHByb2Nlc3NgKTtcbiAgICAgIFxuICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBsb2dnZXIud2FybignTm8gc3VwcG9ydGVkIGZpbGVzIGZvdW5kIGluIHRoZSB0YXJnZXQgZGlyZWN0b3J5Jyk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgIH1cblxuICAgICAgLy8gVHJhbnNmb3JtIGZpbGVzXG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdHJhbnNmb3JtRmlsZXMoZmlsZXMsIHtcbiAgICAgICAgZHJ5UnVuOiBvcHRpb25zLmRyeVJ1biB8fCBmYWxzZSxcbiAgICAgICAgZGVsZXRlQ3NzOiBvcHRpb25zLmRlbGV0ZUNzcyB8fCBmYWxzZSxcbiAgICAgICAgc2tpcEV4dGVybmFsOiBvcHRpb25zLnNraXBFeHRlcm5hbCB8fCBmYWxzZSxcbiAgICAgICAgc2tpcElubGluZTogb3B0aW9ucy5za2lwSW5saW5lIHx8IGZhbHNlLFxuICAgICAgICBza2lwSW50ZXJuYWw6IG9wdGlvbnMuc2tpcEludGVybmFsIHx8IGZhbHNlLFxuICAgICAgICB0YWlsd2luZENvbmZpZyxcbiAgICAgICAgcHJvamVjdFJvb3Q6IHBhdGgucmVzb2x2ZShkaXJlY3RvcnkpXG4gICAgICB9KTtcblxuICAgICAgLy8gUHJpbnQgc3VtbWFyeVxuICAgICAgY29uc3QgZHVyYXRpb24gPSAoKERhdGUubm93KCkgLSBzdGFydFRpbWUpIC8gMTAwMCkudG9GaXhlZCgyKTtcbiAgICAgIFxuICAgICAgY29uc29sZS5sb2coJ1xcbicgKyAnPScucmVwZWF0KDUwKSk7XG4gICAgICBsb2dnZXIuc3VjY2Vzcygn4pyoIFRyYW5zZm9ybWF0aW9uIENvbXBsZXRlIScpO1xuICAgICAgY29uc29sZS5sb2coJz0nLnJlcGVhdCg1MCkpO1xuICAgICAgY29uc29sZS5sb2coYPCfk4ogU3VtbWFyeTpgKTtcbiAgICAgIGNvbnNvbGUubG9nKGAgICBGaWxlcyBzY2FubmVkOiAgICAgICR7cmVzdWx0cy5maWxlc1NjYW5uZWR9YCk7XG4gICAgICBjb25zb2xlLmxvZyhgICAgRmlsZXMgbW9kaWZpZWQ6ICAgICAke3Jlc3VsdHMuZmlsZXNNb2RpZmllZH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGAgICBTdHlsZXMgY29udmVydGVkOiAgICR7cmVzdWx0cy5zdHlsZXNDb252ZXJ0ZWR9YCk7XG4gICAgICBjb25zb2xlLmxvZyhgICAgQ2xhc3NlcyByZXBsYWNlZDogICAke3Jlc3VsdHMuY2xhc3Nlc1JlcGxhY2VkfWApO1xuICAgICAgY29uc29sZS5sb2coYCAgIFdhcm5pbmdzOiAgICAgICAgICAgJHtyZXN1bHRzLndhcm5pbmdzfWApO1xuICAgICAgY29uc29sZS5sb2coYCAgIER1cmF0aW9uOiAgICAgICAgICAgJHtkdXJhdGlvbn1zYCk7XG4gICAgICBjb25zb2xlLmxvZygnPScucmVwZWF0KDUwKSk7XG5cbiAgICAgIGlmIChyZXN1bHRzLndhcm5pbmdzID4gMCkge1xuICAgICAgICBsb2dnZXIud2FybignU29tZSBzdHlsZXMgY291bGQgbm90IGJlIGNvbnZlcnRlZC4gUnVuIHdpdGggLS12ZXJib3NlIGZvciBkZXRhaWxzLicpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICB9XG5cbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKCfinYwgVHJhbnNmb3JtYXRpb24gZmFpbGVkOicsIGVycm9yKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH0pO1xuXG5wcm9ncmFtLnBhcnNlKCk7XG4iXX0=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUFvQztBQUNwQyx1Q0FBd0M7QUFDeEMsK0NBQXVEO0FBQ3ZELDZDQUEwQztBQUMxQywyQ0FBd0M7QUFDeEMsMkNBQW9EO0FBQ3BELCtDQUE0QztBQUM1QyxnREFBd0I7QUFleEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBTyxFQUFFLENBQUM7QUFFOUIsT0FBTztLQUNKLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztLQUM3QixXQUFXLENBQUMscUVBQXFFLENBQUM7S0FDbEYsT0FBTyxDQUFDLE9BQU8sQ0FBQztLQUNoQixRQUFRLENBQUMsYUFBYSxFQUFFLHdDQUF3QyxDQUFDO0tBQ2pFLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxzQ0FBc0MsQ0FBQztLQUN0RSxNQUFNLENBQUMsUUFBUSxFQUFFLDJDQUEyQyxDQUFDO0tBQzdELE1BQU0sQ0FBQyxVQUFVLEVBQUUsMkNBQTJDLENBQUM7S0FDL0QsTUFBTSxDQUFDLGVBQWUsRUFBRSxnQ0FBZ0MsQ0FBQztLQUN6RCxNQUFNLENBQUMsV0FBVyxFQUFFLHNCQUFzQixDQUFDO0tBQzNDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsK0NBQStDLENBQUM7S0FDdkUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLG1DQUFtQyxDQUFDO0tBQzlELE1BQU0sQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLENBQUM7S0FDN0MsTUFBTSxDQUFDLGlCQUFpQixFQUFFLDhCQUE4QixDQUFDO0tBQ3pELE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBaUIsRUFBRSxPQUFtQixFQUFFLEVBQUU7SUFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTdCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FB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QUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsZUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVMLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgc2NhblByb2plY3QgfSBmcm9tICcuL3NjYW5uZXInO1xuaW1wb3J0IHsgdHJhbnNmb3JtRmlsZXNEZXRhaWxlZCB9IGZyb20gJy4vdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgd3JpdGVGaWxlcyB9IGZyb20gJy4vZmlsZVdyaXRlcic7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL3V0aWxzL2xvZ2dlcic7XG5pbXBvcnQgeyBsb2FkVGFpbHdpbmRDb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBSZXBvcnRlciB9IGZyb20gJy4vdXRpbHMvcmVwb3J0ZXInO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmludGVyZmFjZSBDTElPcHRpb25zIHtcbiAgZHJ5UnVuPzogYm9vbGVhbjtcbiAgcHJldmlldz86IGJvb2xlYW47XG4gIGRpZmY/OiBib29sZWFuO1xuICBzaWxlbnQ/OiBib29sZWFuO1xuICBqc29uUmVwb3J0PzogYm9vbGVhbjtcbiAgdmVyYm9zZT86IGJvb2xlYW47XG4gIGRlbGV0ZUNzcz86IGJvb2xlYW47XG4gIHNraXBFeHRlcm5hbD86IGJvb2xlYW47XG4gIHNraXBJbmxpbmU/OiBib29sZWFuO1xuICBza2lwSW50ZXJuYWw/OiBib29sZWFuO1xufVxuXG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmQoKTtcblxucHJvZ3JhbVxuICAubmFtZSgnY3NzLXRvLXRhaWx3aW5kLXJlYWN0JylcbiAgLmRlc2NyaXB0aW9uKCdDb252ZXJ0IHRyYWRpdGlvbmFsIENTUyBpbnRvIFRhaWx3aW5kIENTUyB1dGlsaXR5IGNsYXNzZXMgZm9yIFJlYWN0JylcbiAgLnZlcnNpb24oJzEuMC4wJylcbiAgLmFyZ3VtZW50KCc8ZGlyZWN0b3J5PicsICdUYXJnZXQgZGlyZWN0b3J5IHRvIHNjYW4gYW5kIHRyYW5zZm9ybScpXG4gIC5vcHRpb24oJy0tZHJ5LXJ1biwgLS1wcmV2aWV3JywgJ1Nob3cgY2hhbmdlcyB3aXRob3V0IG1vZGlmeWluZyBmaWxlcycpXG4gIC5vcHRpb24oJy0tZGlmZicsICdQcmludCB1bmlmaWVkIGRpZmYgZm9yIGVhY2ggbW9kaWZpZWQgZmlsZScpXG4gIC5vcHRpb24oJy0tc2lsZW50JywgJ1N1cHByZXNzIHBlci1maWxlIGxvZ3MsIHNob3cgb25seSBzdW1tYXJ5JylcbiAgLm9wdGlvbignLS1qc29uLXJlcG9ydCcsICdPdXRwdXQgc3RydWN0dXJlZCBKU09OIHN1bW1hcnknKVxuICAub3B0aW9uKCctLXZlcmJvc2UnLCAnU2hvdyBkZXRhaWxlZCBvdXRwdXQnKVxuICAub3B0aW9uKCctLWRlbGV0ZS1jc3MnLCAnRGVsZXRlIENTUyBmaWxlcyB3aGVuIGFsbCBydWxlcyBhcmUgY29udmVydGVkJylcbiAgLm9wdGlvbignLS1za2lwLWV4dGVybmFsJywgJ1NraXAgZXh0ZXJuYWwgQ1NTIGZpbGVzIChpbXBvcnRzKScpXG4gIC5vcHRpb24oJy0tc2tpcC1pbmxpbmUnLCAnU2tpcCBpbmxpbmUgc3R5bGVzJylcbiAgLm9wdGlvbignLS1za2lwLWludGVybmFsJywgJ1NraXAgaW50ZXJuYWwgPHN0eWxlPiBibG9ja3MnKVxuICAuYWN0aW9uKGFzeW5jIChkaXJlY3Rvcnk6IHN0cmluZywgb3B0aW9uczogQ0xJT3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgXG4gICAgY29uc3QgaXNEcnlSdW4gPSBvcHRpb25zLmRyeVJ1biB8fCBvcHRpb25zLnByZXZpZXcgfHwgZmFsc2U7XG4gICAgY29uc3Qgc2hvd0RpZmYgPSBvcHRpb25zLmRpZmYgfHwgZmFsc2U7XG4gICAgY29uc3QgaXNTaWxlbnQgPSBvcHRpb25zLnNpbGVudCB8fCBvcHRpb25zLmpzb25SZXBvcnQgfHwgZmFsc2U7XG4gICAgY29uc3QgaXNKc29uUmVwb3J0ID0gb3B0aW9ucy5qc29uUmVwb3J0IHx8IGZhbHNlO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICBsb2dnZXIuc2V0VmVyYm9zZShvcHRpb25zLnZlcmJvc2UgfHwgZmFsc2UpO1xuICAgICAgbG9nZ2VyLnNldFNpbGVudChpc1NpbGVudCk7XG4gICAgICBcbiAgICAgIGxvZ2dlci5pbmZvKCfwn5qAIENTUyB0byBUYWlsd2luZCBSZWFjdCBDb252ZXJ0ZXInKTtcbiAgICAgIGxvZ2dlci5pbmZvKGDwn5OBIFRhcmdldCBkaXJlY3Rvcnk6ICR7cGF0aC5yZXNvbHZlKGRpcmVjdG9yeSl9YCk7XG4gICAgICBcbiAgICAgIGlmIChpc0RyeVJ1bikge1xuICAgICAgICBsb2dnZXIuaW5mbygn8J+UjSBEcnkgcnVuIG1vZGUgLSBubyBmaWxlcyB3aWxsIGJlIG1vZGlmaWVkJyk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChzaG93RGlmZikge1xuICAgICAgICBsb2dnZXIuaW5mbygn8J+TiyBEaWZmIG1vZGUgZW5hYmxlZCAtIHNob3dpbmcgY2hhbmdlcycpO1xuICAgICAgfVxuXG4gICAgICBsb2dnZXIuaW5mbygn4pqZ77iPICBMb2FkaW5nIFRhaWx3aW5kIGNvbmZpZ3VyYXRpb24uLi4nKTtcbiAgICAgIGNvbnN0IHRhaWx3aW5kQ29uZmlnID0gYXdhaXQgbG9hZFRhaWx3aW5kQ29uZmlnKGRpcmVjdG9yeSk7XG4gICAgICBcbiAgICAgIGxvZ2dlci5pbmZvKCfwn5SOIFNjYW5uaW5nIHByb2plY3QgZmlsZXMuLi4nKTtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgc2NhblByb2plY3QoZGlyZWN0b3J5KTtcbiAgICAgIFxuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYEZvdW5kICR7ZmlsZXMubGVuZ3RofSBmaWxlcyB0byBwcm9jZXNzYCk7XG4gICAgICBcbiAgICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ05vIHN1cHBvcnRlZCBmaWxlcyBmb3VuZCBpbiB0aGUgdGFyZ2V0IGRpcmVjdG9yeScpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgZmlsZVJlc3VsdHMsIHN0YXRzIH0gPSBhd2FpdCB0cmFuc2Zvcm1GaWxlc0RldGFpbGVkKGZpbGVzLCB7XG4gICAgICAgIGRyeVJ1bjogaXNEcnlSdW4sXG4gICAgICAgIGRlbGV0ZUNzczogb3B0aW9ucy5kZWxldGVDc3MgfHwgZmFsc2UsXG4gICAgICAgIHNraXBFeHRlcm5hbDogb3B0aW9ucy5za2lwRXh0ZXJuYWwgfHwgZmFsc2UsXG4gICAgICAgIHNraXBJbmxpbmU6IG9wdGlvbnMuc2tpcElubGluZSB8fCBmYWxzZSxcbiAgICAgICAgc2tpcEludGVybmFsOiBvcHRpb25zLnNraXBJbnRlcm5hbCB8fCBmYWxzZSxcbiAgICAgICAgdGFpbHdpbmRDb25maWcsXG4gICAgICAgIHByb2plY3RSb290OiBwYXRoLnJlc29sdmUoZGlyZWN0b3J5KVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydGVyKHtcbiAgICAgICAgc2hvd0RpZmYsXG4gICAgICAgIHNpbGVudDogaXNTaWxlbnQsXG4gICAgICAgIHZlcmJvc2U6IG9wdGlvbnMudmVyYm9zZSB8fCBmYWxzZSxcbiAgICAgICAgZHJ5UnVuOiBpc0RyeVJ1bixcbiAgICAgICAgcHJvamVjdFJvb3Q6IHBhdGgucmVzb2x2ZShkaXJlY3RvcnkpXG4gICAgICB9KTtcblxuICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgZmlsZVJlc3VsdHMpIHtcbiAgICAgICAgcmVwb3J0ZXIuYWRkRmlsZVJlc3VsdChyZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmVwb3J0ZXIuYWRkV2FybmluZyhzdGF0cy53YXJuaW5ncyk7XG5cbiAgICAgIGlmICghaXNEcnlSdW4pIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oJ1xcbvCfkr4gV3JpdGluZyBjaGFuZ2VzLi4uJyk7XG4gICAgICAgIGNvbnN0IHdyaXR0ZW5Db3VudCA9IGF3YWl0IHdyaXRlRmlsZXMoZmlsZVJlc3VsdHMsIHtcbiAgICAgICAgICBkcnlSdW46IGZhbHNlLFxuICAgICAgICAgIHByb2plY3RSb290OiBwYXRoLnJlc29sdmUoZGlyZWN0b3J5KVxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIGlmIChvcHRpb25zLmRlbGV0ZUNzcykge1xuICAgICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIGZpbGVSZXN1bHRzKSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0NoYW5nZXMgJiYgcmVzdWx0LmZpbGVQYXRoLmVuZHNXaXRoKCcuY3NzJykpIHtcbiAgICAgICAgICAgICAgY29uc3QgY3NzQ29udGVudCA9IHJlc3VsdC5uZXdDb250ZW50LnRyaW0oKTtcbiAgICAgICAgICAgICAgaWYgKGNzc0NvbnRlbnQgPT09ICcnIHx8IGNzc0NvbnRlbnQgPT09ICcvKiBBbGwgQ1NTIGNvbnZlcnRlZCB0byBUYWlsd2luZCAqLycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmcyA9IGF3YWl0IGltcG9ydCgnZnMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBiYWNrdXBEaXIgPSBwYXRoLmpvaW4ocGF0aC5yZXNvbHZlKGRpcmVjdG9yeSksICcuY3NzLXRvLXRhaWx3aW5kLWJhY2t1cHMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKHBhdGgucmVzb2x2ZShkaXJlY3RvcnkpLCByZXN1bHQuZmlsZVBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhY2t1cFBhdGggPSBwYXRoLmpvaW4oYmFja3VwRGlyLCByZWxhdGl2ZVBhdGgpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhiYWNrdXBEaXIpKSB7XG4gICAgICAgICAgICAgICAgICBmcy5ta2RpclN5bmMoYmFja3VwRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYmFja3VwRGlyUGF0aCA9IHBhdGguZGlybmFtZShiYWNrdXBQYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoYmFja3VwRGlyUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgIGZzLm1rZGlyU3luYyhiYWNrdXBEaXJQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhiYWNrdXBQYXRoLCByZXN1bHQub3JpZ2luYWxDb250ZW50LCAndXRmLTgnKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBmcy51bmxpbmtTeW5jKHJlc3VsdC5maWxlUGF0aCk7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYPCfl5HvuI8gIERlbGV0ZWQgJHtwYXRoLmJhc2VuYW1lKHJlc3VsdC5maWxlUGF0aCl9IChhbGwgcnVsZXMgY29udmVydGVkKWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsb2dnZXIuc3VjY2VzcyhgV3JvdGUgJHt3cml0dGVuQ291bnR9IGZpbGVzYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gKChEYXRlLm5vdygpIC0gc3RhcnRUaW1lKSAvIDEwMDApLnRvRml4ZWQoMik7XG5cbiAgICAgIGlmIChpc0pzb25SZXBvcnQpIHtcbiAgICAgICAgY29uc3QganNvbk91dHB1dCA9IHJlcG9ydGVyLnRvSlNPTigpO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSB7XG4gICAgICAgICAgLi4uanNvbk91dHB1dCxcbiAgICAgICAgICBkdXJhdGlvbjogYCR7ZHVyYXRpb259c2BcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkob3V0cHV0LCBudWxsLCAyKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXBvcnRlci5wcmludCgpO1xuICAgICAgICBjb25zb2xlLmxvZyhgXFxu4o+x77iPICBEdXJhdGlvbjogJHtkdXJhdGlvbn1zYCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0cy5lcnJvcnMgPiAwKSB7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cblxuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ+KdjCBUcmFuc2Zvcm1hdGlvbiBmYWlsZWQ6JywgZXJyb3IpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfSk7XG5cbnByb2dyYW0ucGFyc2UoKTtcbiJdfQ==
|
package/dist/fileWriter.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FileResult } from './utils/reporter';
|
|
1
2
|
export interface FileWriteOptions {
|
|
2
3
|
dryRun: boolean;
|
|
3
4
|
backup?: boolean;
|
|
@@ -5,10 +6,17 @@ export interface FileWriteOptions {
|
|
|
5
6
|
export declare class FileWriter {
|
|
6
7
|
private dryRun;
|
|
7
8
|
private backupDir;
|
|
8
|
-
|
|
9
|
+
private projectRoot;
|
|
10
|
+
constructor(options: FileWriteOptions & {
|
|
11
|
+
projectRoot?: string;
|
|
12
|
+
});
|
|
9
13
|
writeFile(filePath: string, content: string, originalContent: string): Promise<boolean>;
|
|
10
14
|
deleteFile(filePath: string): Promise<boolean>;
|
|
15
|
+
writeResults(results: FileResult[]): Promise<number>;
|
|
11
16
|
private createBackup;
|
|
12
|
-
|
|
13
|
-
static restoreBackups(): void;
|
|
17
|
+
static restoreBackups(projectRoot?: string): void;
|
|
14
18
|
}
|
|
19
|
+
export declare function writeFiles(results: FileResult[], options: {
|
|
20
|
+
dryRun: boolean;
|
|
21
|
+
projectRoot: string;
|
|
22
|
+
}): Promise<number>;
|
package/dist/fileWriter.js
CHANGED
|
@@ -4,26 +4,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.FileWriter = void 0;
|
|
7
|
+
exports.writeFiles = writeFiles;
|
|
7
8
|
const fs_1 = __importDefault(require("fs"));
|
|
8
9
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
10
10
|
const logger_1 = require("./utils/logger");
|
|
11
11
|
class FileWriter {
|
|
12
12
|
constructor(options) {
|
|
13
13
|
this.dryRun = options.dryRun;
|
|
14
|
-
this.
|
|
14
|
+
this.projectRoot = options.projectRoot || process.cwd();
|
|
15
|
+
this.backupDir = path_1.default.join(this.projectRoot, '.css-to-tailwind-backups');
|
|
15
16
|
}
|
|
16
17
|
async writeFile(filePath, content, originalContent) {
|
|
17
18
|
if (this.dryRun) {
|
|
18
|
-
this.showDiff(filePath, originalContent, content);
|
|
19
19
|
return true;
|
|
20
20
|
}
|
|
21
21
|
try {
|
|
22
|
-
// Create backup
|
|
23
22
|
await this.createBackup(filePath, originalContent);
|
|
24
|
-
// Write file
|
|
25
23
|
fs_1.default.writeFileSync(filePath, content, 'utf-8');
|
|
26
|
-
logger_1.logger.success(`āļø Modified: ${path_1.default.relative(
|
|
24
|
+
logger_1.logger.success(`āļø Modified: ${path_1.default.relative(this.projectRoot, filePath)}`);
|
|
27
25
|
return true;
|
|
28
26
|
}
|
|
29
27
|
catch (error) {
|
|
@@ -33,15 +31,14 @@ class FileWriter {
|
|
|
33
31
|
}
|
|
34
32
|
async deleteFile(filePath) {
|
|
35
33
|
if (this.dryRun) {
|
|
36
|
-
logger_1.logger.info(`šļø Would delete: ${path_1.default.relative(
|
|
34
|
+
logger_1.logger.info(`šļø Would delete: ${path_1.default.relative(this.projectRoot, filePath)}`);
|
|
37
35
|
return true;
|
|
38
36
|
}
|
|
39
37
|
try {
|
|
40
|
-
// Create backup before deletion
|
|
41
38
|
const content = fs_1.default.readFileSync(filePath, 'utf-8');
|
|
42
39
|
await this.createBackup(filePath, content);
|
|
43
40
|
fs_1.default.unlinkSync(filePath);
|
|
44
|
-
logger_1.logger.success(`šļø Deleted: ${path_1.default.relative(
|
|
41
|
+
logger_1.logger.success(`šļø Deleted: ${path_1.default.relative(this.projectRoot, filePath)}`);
|
|
45
42
|
return true;
|
|
46
43
|
}
|
|
47
44
|
catch (error) {
|
|
@@ -49,20 +46,30 @@ class FileWriter {
|
|
|
49
46
|
return false;
|
|
50
47
|
}
|
|
51
48
|
}
|
|
49
|
+
async writeResults(results) {
|
|
50
|
+
let written = 0;
|
|
51
|
+
for (const result of results) {
|
|
52
|
+
if (result.status === 'error')
|
|
53
|
+
continue;
|
|
54
|
+
if (!result.hasChanges)
|
|
55
|
+
continue;
|
|
56
|
+
const success = await this.writeFile(result.filePath, result.newContent, result.originalContent);
|
|
57
|
+
if (success)
|
|
58
|
+
written++;
|
|
59
|
+
}
|
|
60
|
+
return written;
|
|
61
|
+
}
|
|
52
62
|
async createBackup(filePath, content) {
|
|
53
63
|
try {
|
|
54
|
-
// Create backup directory if it doesn't exist
|
|
55
64
|
if (!fs_1.default.existsSync(this.backupDir)) {
|
|
56
65
|
fs_1.default.mkdirSync(this.backupDir, { recursive: true });
|
|
57
66
|
}
|
|
58
|
-
const relativePath = path_1.default.relative(
|
|
67
|
+
const relativePath = path_1.default.relative(this.projectRoot, filePath);
|
|
59
68
|
const backupPath = path_1.default.join(this.backupDir, relativePath);
|
|
60
69
|
const backupDir = path_1.default.dirname(backupPath);
|
|
61
|
-
// Create subdirectory structure
|
|
62
70
|
if (!fs_1.default.existsSync(backupDir)) {
|
|
63
71
|
fs_1.default.mkdirSync(backupDir, { recursive: true });
|
|
64
72
|
}
|
|
65
|
-
// Write backup
|
|
66
73
|
fs_1.default.writeFileSync(backupPath, content, 'utf-8');
|
|
67
74
|
logger_1.logger.verbose(`Created backup: ${backupPath}`);
|
|
68
75
|
}
|
|
@@ -70,35 +77,13 @@ class FileWriter {
|
|
|
70
77
|
logger_1.logger.warn(`Failed to create backup for ${filePath}:`, error);
|
|
71
78
|
}
|
|
72
79
|
}
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
logger_1.logger.info(`\nš ${relativePath} (dry-run)`);
|
|
76
|
-
const originalLines = original.split('\n');
|
|
77
|
-
const modifiedLines = modified.split('\n');
|
|
78
|
-
// Simple diff - show first few changed lines
|
|
79
|
-
const maxLines = Math.max(originalLines.length, modifiedLines.length);
|
|
80
|
-
let changes = 0;
|
|
81
|
-
for (let i = 0; i < maxLines && changes < 10; i++) {
|
|
82
|
-
const orig = originalLines[i] || '';
|
|
83
|
-
const mod = modifiedLines[i] || '';
|
|
84
|
-
if (orig !== mod) {
|
|
85
|
-
changes++;
|
|
86
|
-
console.log(chalk_1.default.red(` - ${orig}`));
|
|
87
|
-
console.log(chalk_1.default.green(` + ${mod}`));
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
if (changes === 0) {
|
|
91
|
-
logger_1.logger.verbose(' (no visible changes)');
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
static restoreBackups() {
|
|
95
|
-
const backupDir = path_1.default.join(process.cwd(), '.css-to-tailwind-backups');
|
|
80
|
+
static restoreBackups(projectRoot = process.cwd()) {
|
|
81
|
+
const backupDir = path_1.default.join(projectRoot, '.css-to-tailwind-backups');
|
|
96
82
|
if (!fs_1.default.existsSync(backupDir)) {
|
|
97
83
|
logger_1.logger.warn('No backups found to restore');
|
|
98
84
|
return;
|
|
99
85
|
}
|
|
100
86
|
logger_1.logger.info('š Restoring files from backup...');
|
|
101
|
-
// Recursively restore files
|
|
102
87
|
const restoreRecursive = (dir) => {
|
|
103
88
|
const items = fs_1.default.readdirSync(dir);
|
|
104
89
|
for (const item of items) {
|
|
@@ -109,7 +94,7 @@ class FileWriter {
|
|
|
109
94
|
}
|
|
110
95
|
else {
|
|
111
96
|
const relativePath = path_1.default.relative(backupDir, fullPath);
|
|
112
|
-
const originalPath = path_1.default.join(
|
|
97
|
+
const originalPath = path_1.default.join(projectRoot, relativePath);
|
|
113
98
|
try {
|
|
114
99
|
fs_1.default.copyFileSync(fullPath, originalPath);
|
|
115
100
|
logger_1.logger.success(`Restored: ${relativePath}`);
|
|
@@ -125,4 +110,14 @@ class FileWriter {
|
|
|
125
110
|
}
|
|
126
111
|
}
|
|
127
112
|
exports.FileWriter = FileWriter;
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVdyaXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlV3JpdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDRDQUFvQjtBQUNwQixnREFBd0I7QUFDeEIsa0RBQTBCO0FBQzFCLDJDQUF3QztBQU94QyxNQUFhLFVBQVU7SUFJckIsWUFBWSxPQUF5QjtRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQWdCLEVBQUUsT0FBZSxFQUFFLGVBQXVCO1FBQ3hFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNsRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxnQkFBZ0I7WUFDaEIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUVuRCxhQUFhO1lBQ2IsWUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdDLGVBQU0sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLGNBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsZUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsUUFBUSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7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b0JBQW9CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUF6SUQsZ0NBeUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vdXRpbHMvbG9nZ2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlV3JpdGVPcHRpb25zIHtcbiAgZHJ5UnVuOiBib29sZWFuO1xuICBiYWNrdXA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgRmlsZVdyaXRlciB7XG4gIHByaXZhdGUgZHJ5UnVuOiBib29sZWFuO1xuICBwcml2YXRlIGJhY2t1cERpcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEZpbGVXcml0ZU9wdGlvbnMpIHtcbiAgICB0aGlzLmRyeVJ1biA9IG9wdGlvbnMuZHJ5UnVuO1xuICAgIHRoaXMuYmFja3VwRGlyID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICcuY3NzLXRvLXRhaWx3aW5kLWJhY2t1cHMnKTtcbiAgfVxuXG4gIGFzeW5jIHdyaXRlRmlsZShmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIG9yaWdpbmFsQ29udGVudDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuZHJ5UnVuKSB7XG4gICAgICB0aGlzLnNob3dEaWZmKGZpbGVQYXRoLCBvcmlnaW5hbENvbnRlbnQsIGNvbnRlbnQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIENyZWF0ZSBiYWNrdXBcbiAgICAgIGF3YWl0IHRoaXMuY3JlYXRlQmFja3VwKGZpbGVQYXRoLCBvcmlnaW5hbENvbnRlbnQpO1xuXG4gICAgICAvLyBXcml0ZSBmaWxlXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBjb250ZW50LCAndXRmLTgnKTtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKGDinI/vuI8gIE1vZGlmaWVkOiAke3BhdGgucmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgZmlsZVBhdGgpfWApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHdyaXRlICR7ZmlsZVBhdGh9OmAsIGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVGaWxlKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5kcnlSdW4pIHtcbiAgICAgIGxvZ2dlci5pbmZvKGDwn5eR77iPICBXb3VsZCBkZWxldGU6ICR7cGF0aC5yZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlUGF0aCl9YCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gQ3JlYXRlIGJhY2t1cCBiZWZvcmUgZGVsZXRpb25cbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGYtOCcpO1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVCYWNrdXAoZmlsZVBhdGgsIGNvbnRlbnQpO1xuXG4gICAgICBmcy51bmxpbmtTeW5jKGZpbGVQYXRoKTtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKGDwn5eR77iPICBEZWxldGVkOiAke3BhdGgucmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgZmlsZVBhdGgpfWApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIGRlbGV0ZSAke2ZpbGVQYXRofTpgLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVCYWNrdXAoZmlsZVBhdGg6IHN0cmluZywgY29udGVudDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENyZWF0ZSBiYWNrdXAgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmJhY2t1cERpcikpIHtcbiAgICAgICAgZnMubWtkaXJTeW5jKHRoaXMuYmFja3VwRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlUGF0aCk7XG4gICAgICBjb25zdCBiYWNrdXBQYXRoID0gcGF0aC5qb2luKHRoaXMuYmFja3VwRGlyLCByZWxhdGl2ZVBhdGgpO1xuICAgICAgY29uc3QgYmFja3VwRGlyID0gcGF0aC5kaXJuYW1lKGJhY2t1cFBhdGgpO1xuXG4gICAgICAvLyBDcmVhdGUgc3ViZGlyZWN0b3J5IHN0cnVjdHVyZVxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGJhY2t1cERpcikpIHtcbiAgICAgICAgZnMubWtkaXJTeW5jKGJhY2t1cERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdyaXRlIGJhY2t1cFxuICAgICAgZnMud3JpdGVGaWxlU3luYyhiYWNrdXBQYXRoLCBjb250ZW50LCAndXRmLTgnKTtcbiAgICAgIGxvZ2dlci52ZXJib3NlKGBDcmVhdGVkIGJhY2t1cDogJHtiYWNrdXBQYXRofWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIud2FybihgRmFpbGVkIHRvIGNyZWF0ZSBiYWNrdXAgZm9yICR7ZmlsZVBhdGh9OmAsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dEaWZmKGZpbGVQYXRoOiBzdHJpbmcsIG9yaWdpbmFsOiBzdHJpbmcsIG1vZGlmaWVkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGZpbGVQYXRoKTtcbiAgICBsb2dnZXIuaW5mbyhgXFxu8J+ThCAke3JlbGF0aXZlUGF0aH0gKGRyeS1ydW4pYCk7XG4gICAgXG4gICAgY29uc3Qgb3JpZ2luYWxMaW5lcyA9IG9yaWdpbmFsLnNwbGl0KCdcXG4nKTtcbiAgICBjb25zdCBtb2RpZmllZExpbmVzID0gbW9kaWZpZWQuc3BsaXQoJ1xcbicpO1xuXG4gICAgLy8gU2ltcGxlIGRpZmYgLSBzaG93IGZpcnN0IGZldyBjaGFuZ2VkIGxpbmVzXG4gICAgY29uc3QgbWF4TGluZXMgPSBNYXRoLm1heChvcmlnaW5hbExpbmVzLmxlbmd0aCwgbW9kaWZpZWRMaW5lcy5sZW5ndGgpO1xuICAgIGxldCBjaGFuZ2VzID0gMDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4TGluZXMgJiYgY2hhbmdlcyA8IDEwOyBpKyspIHtcbiAgICAgIGNvbnN0IG9yaWcgPSBvcmlnaW5hbExpbmVzW2ldIHx8ICcnO1xuICAgICAgY29uc3QgbW9kID0gbW9kaWZpZWRMaW5lc1tpXSB8fCAnJztcblxuICAgICAgaWYgKG9yaWcgIT09IG1vZCkge1xuICAgICAgICBjaGFuZ2VzKys7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnJlZChgICAtICR7b3JpZ31gKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGAgICsgJHttb2R9YCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzID09PSAwKSB7XG4gICAgICBsb2dnZXIudmVyYm9zZSgnICAobm8gdmlzaWJsZSBjaGFuZ2VzKScpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyByZXN0b3JlQmFja3VwcygpOiB2b2lkIHtcbiAgICBjb25zdCBiYWNrdXBEaXIgPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJy5jc3MtdG8tdGFpbHdpbmQtYmFja3VwcycpO1xuICAgIFxuICAgIGlmICghZnMuZXhpc3RzU3luYyhiYWNrdXBEaXIpKSB7XG4gICAgICBsb2dnZXIud2FybignTm8gYmFja3VwcyBmb3VuZCB0byByZXN0b3JlJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9nZ2VyLmluZm8oJ/CflIQgUmVzdG9yaW5nIGZpbGVzIGZyb20gYmFja3VwLi4uJyk7XG4gICAgXG4gICAgLy8gUmVjdXJzaXZlbHkgcmVzdG9yZSBmaWxlc1xuICAgIGNvbnN0IHJlc3RvcmVSZWN1cnNpdmUgPSAoZGlyOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gZnMucmVhZGRpclN5bmMoZGlyKTtcblxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGRpciwgaXRlbSk7XG4gICAgICAgIGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhmdWxsUGF0aCk7XG5cbiAgICAgICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgIHJlc3RvcmVSZWN1cnNpdmUoZnVsbFBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUoYmFja3VwRGlyLCBmdWxsUGF0aCk7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxQYXRoID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIHJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZzLmNvcHlGaWxlU3luYyhmdWxsUGF0aCwgb3JpZ2luYWxQYXRoKTtcbiAgICAgICAgICAgIGxvZ2dlci5zdWNjZXNzKGBSZXN0b3JlZDogJHtyZWxhdGl2ZVBhdGh9YCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHJlc3RvcmUgJHtyZWxhdGl2ZVBhdGh9OmAsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVzdG9yZVJlY3Vyc2l2ZShiYWNrdXBEaXIpO1xuICAgIGxvZ2dlci5zdWNjZXNzKCfinIUgUmVzdG9yZSBjb21wbGV0ZScpO1xuICB9XG59XG4iXX0=
|
|
113
|
+
async function writeFiles(results, options) {
|
|
114
|
+
if (options.dryRun) {
|
|
115
|
+
return results.filter(r => r.hasChanges && r.status !== 'error').length;
|
|
116
|
+
}
|
|
117
|
+
const writer = new FileWriter({
|
|
118
|
+
dryRun: false,
|
|
119
|
+
projectRoot: options.projectRoot
|
|
120
|
+
});
|
|
121
|
+
return writer.writeResults(results);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVdyaXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlV3JpdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQXFJQSxnQ0FjQztBQW5KRCw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLDJDQUF3QztBQVF4QyxNQUFhLFVBQVU7SUFLckIsWUFBWSxPQUFvRDtRQUM5RCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4RCxJQUFJLENBQUMsU0FBUyxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQWdCLEVBQUUsT0FBZSxFQUFFLGVBQXVCO1FBQ3hFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDbkQsWUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdDLGVBQU0sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLGNBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0UsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLGVBQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLFFBQVEsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BELE9BQU8sS0FBSyxDQUFDO1FB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YSxZQUFZLEVBQUUsQ0FBQyxDQUFDO29CQUM5QyxDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2YsZUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsWUFBWSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzVELENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QixlQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBekhELGdDQXlIQztBQUVNLEtBQUssVUFBVSxVQUFVLENBQzlCLE9BQXFCLEVBQ3JCLE9BQWlEO0lBRWpELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ25CLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUUsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDO1FBQzVCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO0tBQ2pDLENBQUMsQ0FBQztJQUVILE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi91dGlscy9sb2dnZXInO1xuaW1wb3J0IHsgRmlsZVJlc3VsdCB9IGZyb20gJy4vdXRpbHMvcmVwb3J0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVXcml0ZU9wdGlvbnMge1xuICBkcnlSdW46IGJvb2xlYW47XG4gIGJhY2t1cD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBGaWxlV3JpdGVyIHtcbiAgcHJpdmF0ZSBkcnlSdW46IGJvb2xlYW47XG4gIHByaXZhdGUgYmFja3VwRGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcHJvamVjdFJvb3Q6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBGaWxlV3JpdGVPcHRpb25zICYgeyBwcm9qZWN0Um9vdD86IHN0cmluZyB9KSB7XG4gICAgdGhpcy5kcnlSdW4gPSBvcHRpb25zLmRyeVJ1bjtcbiAgICB0aGlzLnByb2plY3RSb290ID0gb3B0aW9ucy5wcm9qZWN0Um9vdCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgIHRoaXMuYmFja3VwRGlyID0gcGF0aC5qb2luKHRoaXMucHJvamVjdFJvb3QsICcuY3NzLXRvLXRhaWx3aW5kLWJhY2t1cHMnKTtcbiAgfVxuXG4gIGFzeW5jIHdyaXRlRmlsZShmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIG9yaWdpbmFsQ29udGVudDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuZHJ5UnVuKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVCYWNrdXAoZmlsZVBhdGgsIG9yaWdpbmFsQ29udGVudCk7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBjb250ZW50LCAndXRmLTgnKTtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKGDinI/vuI8gIE1vZGlmaWVkOiAke3BhdGgucmVsYXRpdmUodGhpcy5wcm9qZWN0Um9vdCwgZmlsZVBhdGgpfWApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHdyaXRlICR7ZmlsZVBhdGh9OmAsIGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVGaWxlKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5kcnlSdW4pIHtcbiAgICAgIGxvZ2dlci5pbmZvKGDwn5eR77iPICBXb3VsZCBkZWxldGU6ICR7cGF0aC5yZWxhdGl2ZSh0aGlzLnByb2plY3RSb290LCBmaWxlUGF0aCl9YCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZUJhY2t1cChmaWxlUGF0aCwgY29udGVudCk7XG4gICAgICBmcy51bmxpbmtTeW5jKGZpbGVQYXRoKTtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKGDwn5eR77iPICBEZWxldGVkOiAke3BhdGgucmVsYXRpdmUodGhpcy5wcm9qZWN0Um9vdCwgZmlsZVBhdGgpfWApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIGRlbGV0ZSAke2ZpbGVQYXRofTpgLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgd3JpdGVSZXN1bHRzKHJlc3VsdHM6IEZpbGVSZXN1bHRbXSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgbGV0IHdyaXR0ZW4gPSAwO1xuICAgIFxuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAnZXJyb3InKSBjb250aW51ZTtcbiAgICAgIGlmICghcmVzdWx0Lmhhc0NoYW5nZXMpIGNvbnRpbnVlO1xuICAgICAgXG4gICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgdGhpcy53cml0ZUZpbGUoXG4gICAgICAgIHJlc3VsdC5maWxlUGF0aCxcbiAgICAgICAgcmVzdWx0Lm5ld0NvbnRlbnQsXG4gICAgICAgIHJlc3VsdC5vcmlnaW5hbENvbnRlbnRcbiAgICAgICk7XG4gICAgICBcbiAgICAgIGlmIChzdWNjZXNzKSB3cml0dGVuKys7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB3cml0dGVuO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVCYWNrdXAoZmlsZVBhdGg6IHN0cmluZywgY29udGVudDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmJhY2t1cERpcikpIHtcbiAgICAgICAgZnMubWtkaXJTeW5jKHRoaXMuYmFja3VwRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZSh0aGlzLnByb2plY3RSb290LCBmaWxlUGF0aCk7XG4gICAgICBjb25zdCBiYWNrdXBQYXRoID0gcGF0aC5qb2luKHRoaXMuYmFja3VwRGlyLCByZWxhdGl2ZVBhdGgpO1xuICAgICAgY29uc3QgYmFja3VwRGlyID0gcGF0aC5kaXJuYW1lKGJhY2t1cFBhdGgpO1xuXG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoYmFja3VwRGlyKSkge1xuICAgICAgICBmcy5ta2RpclN5bmMoYmFja3VwRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgZnMud3JpdGVGaWxlU3luYyhiYWNrdXBQYXRoLCBjb250ZW50LCAndXRmLTgnKTtcbiAgICAgIGxvZ2dlci52ZXJib3NlKGBDcmVhdGVkIGJhY2t1cDogJHtiYWNrdXBQYXRofWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIud2FybihgRmFpbGVkIHRvIGNyZWF0ZSBiYWNrdXAgZm9yICR7ZmlsZVBhdGh9OmAsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgcmVzdG9yZUJhY2t1cHMocHJvamVjdFJvb3Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCkpOiB2b2lkIHtcbiAgICBjb25zdCBiYWNrdXBEaXIgPSBwYXRoLmpvaW4ocHJvamVjdFJvb3QsICcuY3NzLXRvLXRhaWx3aW5kLWJhY2t1cHMnKTtcbiAgICBcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoYmFja3VwRGlyKSkge1xuICAgICAgbG9nZ2VyLndhcm4oJ05vIGJhY2t1cHMgZm91bmQgdG8gcmVzdG9yZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZ2dlci5pbmZvKCfwn5SEIFJlc3RvcmluZyBmaWxlcyBmcm9tIGJhY2t1cC4uLicpO1xuICAgIFxuICAgIGNvbnN0IHJlc3RvcmVSZWN1cnNpdmUgPSAoZGlyOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gZnMucmVhZGRpclN5bmMoZGlyKTtcblxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGRpciwgaXRlbSk7XG4gICAgICAgIGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhmdWxsUGF0aCk7XG5cbiAgICAgICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgIHJlc3RvcmVSZWN1cnNpdmUoZnVsbFBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUoYmFja3VwRGlyLCBmdWxsUGF0aCk7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxQYXRoID0gcGF0aC5qb2luKHByb2plY3RSb290LCByZWxhdGl2ZVBhdGgpO1xuICAgICAgICAgIFxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy5jb3B5RmlsZVN5bmMoZnVsbFBhdGgsIG9yaWdpbmFsUGF0aCk7XG4gICAgICAgICAgICBsb2dnZXIuc3VjY2VzcyhgUmVzdG9yZWQ6ICR7cmVsYXRpdmVQYXRofWApO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byByZXN0b3JlICR7cmVsYXRpdmVQYXRofTpgLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlc3RvcmVSZWN1cnNpdmUoYmFja3VwRGlyKTtcbiAgICBsb2dnZXIuc3VjY2Vzcygn4pyFIFJlc3RvcmUgY29tcGxldGUnKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVGaWxlcyhcbiAgcmVzdWx0czogRmlsZVJlc3VsdFtdLFxuICBvcHRpb25zOiB7IGRyeVJ1bjogYm9vbGVhbjsgcHJvamVjdFJvb3Q6IHN0cmluZyB9XG4pOiBQcm9taXNlPG51bWJlcj4ge1xuICBpZiAob3B0aW9ucy5kcnlSdW4pIHtcbiAgICByZXR1cm4gcmVzdWx0cy5maWx0ZXIociA9PiByLmhhc0NoYW5nZXMgJiYgci5zdGF0dXMgIT09ICdlcnJvcicpLmxlbmd0aDtcbiAgfVxuICBcbiAgY29uc3Qgd3JpdGVyID0gbmV3IEZpbGVXcml0ZXIoeyBcbiAgICBkcnlSdW46IGZhbHNlLCBcbiAgICBwcm9qZWN0Um9vdDogb3B0aW9ucy5wcm9qZWN0Um9vdCBcbiAgfSk7XG4gIFxuICByZXR1cm4gd3JpdGVyLndyaXRlUmVzdWx0cyhyZXN1bHRzKTtcbn1cbiJdfQ==
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export { scanProject, ScannedFile } from './scanner';
|
|
2
|
-
export { transformFiles, TransformOptions, TransformResults } from './transformer';
|
|
2
|
+
export { transformFiles, transformFilesDetailed, TransformOptions, TransformResults, DetailedTransformResults } from './transformer';
|
|
3
3
|
export { TailwindMapper, CSSProperty, ConversionResult } from './tailwindMapper';
|
|
4
4
|
export { JSXParser, JSXTransformation, JSXParseResult } from './jsxParser';
|
|
5
5
|
export { CSSParser, CSSRule, CSSParseResult, UtilityWithVariant, SelectorTarget } from './cssParser';
|
|
6
|
-
export { FileWriter, FileWriteOptions } from './fileWriter';
|
|
6
|
+
export { FileWriter, FileWriteOptions, writeFiles } from './fileWriter';
|
|
7
7
|
export { loadTailwindConfig, TailwindConfig } from './utils/config';
|
|
8
8
|
export { logger } from './utils/logger';
|
|
9
|
+
export { Reporter, FileResult, SummaryStats, ReporterOptions } from './utils/reporter';
|
|
10
|
+
export { computeUnifiedDiff, formatDiff, computeAndFormatDiff, getChangeStats, DiffResult, DiffHunk, DiffLine } from './utils/diff';
|
|
9
11
|
export { Breakpoint, MediaQueryInfo, getDefaultBreakpoints, resolveBreakpointsFromConfig, parseMediaQuery, findBreakpointForMinWidth, processMediaQuery, prefixWithBreakpoint } from './utils/breakpointResolver';
|
|
10
12
|
export { ParsedSelector, PSEUDO_TO_VARIANT, SUPPORTED_PSEUDOS, parseSelector, mapPseudoToVariant, processPseudoSelector, parseMultipleSelectors } from './utils/pseudoSelectorResolver';
|
|
11
13
|
export { VARIANT_ORDER, isResponsiveVariant, isPseudoVariant, sortVariants, deduplicateVariants, normalizeVariantOrder, assembleUtility, assembleUtilities, mergeUtilities, MergedUtility } from './utils/variantAssembler';
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.groupDescendantRulesByParent = exports.transformDescendantSelectors = exports.isHtmlElement = exports.processDescendantSelector = exports.isSimpleSelector = exports.isDescendantSelector = exports.parseDescendantSelector = exports.mergeUtilities = exports.assembleUtilities = exports.assembleUtility = exports.normalizeVariantOrder = exports.deduplicateVariants = exports.sortVariants = exports.isPseudoVariant = exports.isResponsiveVariant = exports.VARIANT_ORDER = exports.parseMultipleSelectors = exports.processPseudoSelector = exports.mapPseudoToVariant = exports.parseSelector = exports.SUPPORTED_PSEUDOS = exports.PSEUDO_TO_VARIANT = exports.prefixWithBreakpoint = exports.processMediaQuery = exports.findBreakpointForMinWidth = exports.parseMediaQuery = exports.resolveBreakpointsFromConfig = exports.getDefaultBreakpoints = exports.logger = exports.loadTailwindConfig = exports.FileWriter = exports.CSSParser = exports.JSXParser = exports.TailwindMapper = exports.transformFiles = exports.scanProject = void 0;
|
|
3
|
+
exports.groupDescendantRulesByParent = exports.transformDescendantSelectors = exports.isHtmlElement = exports.processDescendantSelector = exports.isSimpleSelector = exports.isDescendantSelector = exports.parseDescendantSelector = exports.mergeUtilities = exports.assembleUtilities = exports.assembleUtility = exports.normalizeVariantOrder = exports.deduplicateVariants = exports.sortVariants = exports.isPseudoVariant = exports.isResponsiveVariant = exports.VARIANT_ORDER = exports.parseMultipleSelectors = exports.processPseudoSelector = exports.mapPseudoToVariant = exports.parseSelector = exports.SUPPORTED_PSEUDOS = exports.PSEUDO_TO_VARIANT = exports.prefixWithBreakpoint = exports.processMediaQuery = exports.findBreakpointForMinWidth = exports.parseMediaQuery = exports.resolveBreakpointsFromConfig = exports.getDefaultBreakpoints = exports.getChangeStats = exports.computeAndFormatDiff = exports.formatDiff = exports.computeUnifiedDiff = exports.Reporter = exports.logger = exports.loadTailwindConfig = exports.writeFiles = exports.FileWriter = exports.CSSParser = exports.JSXParser = exports.TailwindMapper = exports.transformFilesDetailed = exports.transformFiles = exports.scanProject = void 0;
|
|
4
4
|
// Export public API
|
|
5
5
|
var scanner_1 = require("./scanner");
|
|
6
6
|
Object.defineProperty(exports, "scanProject", { enumerable: true, get: function () { return scanner_1.scanProject; } });
|
|
7
7
|
var transformer_1 = require("./transformer");
|
|
8
8
|
Object.defineProperty(exports, "transformFiles", { enumerable: true, get: function () { return transformer_1.transformFiles; } });
|
|
9
|
+
Object.defineProperty(exports, "transformFilesDetailed", { enumerable: true, get: function () { return transformer_1.transformFilesDetailed; } });
|
|
9
10
|
var tailwindMapper_1 = require("./tailwindMapper");
|
|
10
11
|
Object.defineProperty(exports, "TailwindMapper", { enumerable: true, get: function () { return tailwindMapper_1.TailwindMapper; } });
|
|
11
12
|
var jsxParser_1 = require("./jsxParser");
|
|
@@ -14,10 +15,18 @@ var cssParser_1 = require("./cssParser");
|
|
|
14
15
|
Object.defineProperty(exports, "CSSParser", { enumerable: true, get: function () { return cssParser_1.CSSParser; } });
|
|
15
16
|
var fileWriter_1 = require("./fileWriter");
|
|
16
17
|
Object.defineProperty(exports, "FileWriter", { enumerable: true, get: function () { return fileWriter_1.FileWriter; } });
|
|
18
|
+
Object.defineProperty(exports, "writeFiles", { enumerable: true, get: function () { return fileWriter_1.writeFiles; } });
|
|
17
19
|
var config_1 = require("./utils/config");
|
|
18
20
|
Object.defineProperty(exports, "loadTailwindConfig", { enumerable: true, get: function () { return config_1.loadTailwindConfig; } });
|
|
19
21
|
var logger_1 = require("./utils/logger");
|
|
20
22
|
Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
|
|
23
|
+
var reporter_1 = require("./utils/reporter");
|
|
24
|
+
Object.defineProperty(exports, "Reporter", { enumerable: true, get: function () { return reporter_1.Reporter; } });
|
|
25
|
+
var diff_1 = require("./utils/diff");
|
|
26
|
+
Object.defineProperty(exports, "computeUnifiedDiff", { enumerable: true, get: function () { return diff_1.computeUnifiedDiff; } });
|
|
27
|
+
Object.defineProperty(exports, "formatDiff", { enumerable: true, get: function () { return diff_1.formatDiff; } });
|
|
28
|
+
Object.defineProperty(exports, "computeAndFormatDiff", { enumerable: true, get: function () { return diff_1.computeAndFormatDiff; } });
|
|
29
|
+
Object.defineProperty(exports, "getChangeStats", { enumerable: true, get: function () { return diff_1.getChangeStats; } });
|
|
21
30
|
var breakpointResolver_1 = require("./utils/breakpointResolver");
|
|
22
31
|
Object.defineProperty(exports, "getDefaultBreakpoints", { enumerable: true, get: function () { return breakpointResolver_1.getDefaultBreakpoints; } });
|
|
23
32
|
Object.defineProperty(exports, "resolveBreakpointsFromConfig", { enumerable: true, get: function () { return breakpointResolver_1.resolveBreakpointsFromConfig; } });
|
|
@@ -51,4 +60,4 @@ Object.defineProperty(exports, "isHtmlElement", { enumerable: true, get: functio
|
|
|
51
60
|
var jsxDescendantTransformer_1 = require("./jsxDescendantTransformer");
|
|
52
61
|
Object.defineProperty(exports, "transformDescendantSelectors", { enumerable: true, get: function () { return jsxDescendantTransformer_1.transformDescendantSelectors; } });
|
|
53
62
|
Object.defineProperty(exports, "groupDescendantRulesByParent", { enumerable: true, get: function () { return jsxDescendantTransformer_1.groupDescendantRulesByParent; } });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0JBQW9CO0FBQ3BCLHFDQUFxRDtBQUE1QyxzR0FBQSxXQUFXLE9BQUE7QUFDcEIsNkNBQXFJO0FBQTVILDZHQUFBLGNBQWMsT0FBQTtBQUFFLHFIQUFBLHNCQUFzQixPQUFBO0FBQy9DLG1EQUFpRjtBQUF4RSxnSEFBQSxjQUFjLE9BQUE7QUFDdkIseUNBQTJFO0FBQWxFLHNHQUFBLFNBQVMsT0FBQTtBQUNsQix5Q0FBcUc7QUFBNUYsc0dBQUEsU0FBUyxPQUFBO0FBQ2xCLDJDQUF3RTtBQUEvRCx3R0FBQSxVQUFVLE9BQUE7QUFBb0Isd0dBQUEsVUFBVSxPQUFBO0FBQ2pELHlDQUFvRTtBQUEzRCw0R0FBQSxrQkFBa0IsT0FBQTtBQUMzQix5Q0FBd0M7QUFBL0IsZ0dBQUEsTUFBTSxPQUFBO0FBQ2YsNkNBQXVGO0FBQTlFLG9HQUFBLFFBQVEsT0FBQTtBQUNqQixxQ0FRc0I7QUFQcEIsMEdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsa0dBQUEsVUFBVSxPQUFBO0FBQ1YsNEdBQUEsb0JBQW9CLE9BQUE7QUFDcEIsc0dBQUEsY0FBYyxPQUFBO0FBS2hCLGlFQVNvQztBQU5sQywySEFBQSxxQkFBcUIsT0FBQTtBQUNyQixrSUFBQSw0QkFBNEIsT0FBQTtBQUM1QixxSEFBQSxlQUFlLE9BQUE7QUFDZiwrSEFBQSx5QkFBeUIsT0FBQTtBQUN6Qix1SEFBQSxpQkFBaUIsT0FBQTtBQUNqQiwwSEFBQSxvQkFBb0IsT0FBQTtBQUV0Qix5RUFRd0M7QUFOdEMsMkhBQUEsaUJBQWlCLE9BQUE7QUFDakIsMkhBQUEsaUJBQWlCLE9BQUE7QUFDakIsdUhBQUEsYUFBYSxPQUFBO0FBQ2IsNEhBQUEsa0JBQWtCLE9BQUE7QUFDbEIsK0hBQUEscUJBQXFCLE9BQUE7QUFDckIsZ0lBQUEsc0JBQXNCLE9BQUE7QUFFeEIsNkRBV2tDO0FBVmhDLGlIQUFBLGFBQWEsT0FBQTtBQUNiLHVIQUFBLG1CQUFtQixPQUFBO0FBQ25CLG1IQUFBLGVBQWUsT0FBQTtBQUNmLGdIQUFBLFlBQVksT0FBQTtBQUNaLHVIQUFBLG1CQUFtQixPQUFBO0FBQ25CLHlIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLG1IQUFBLGVBQWUsT0FBQTtBQUNmLHFIQUFBLGlCQUFpQixPQUFBO0FBQ2pCLGtIQUFBLGNBQWMsT0FBQTtBQUdoQixpRkFTNEM7QUFMMUMscUlBQUEsdUJBQXVCLE9BQUE7QUFDdkIsa0lBQUEsb0JBQW9CLE9BQUE7QUFDcEIsOEhBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsdUlBQUEseUJBQXlCLE9BQUE7QUFDekIsMkhBQUEsYUFBYSxPQUFBO0FBRWYsdUVBSW9DO0FBSGxDLHdJQUFBLDRCQUE0QixPQUFBO0FBRTVCLHdJQUFBLDRCQUE0QixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRXhwb3J0IHB1YmxpYyBBUElcbmV4cG9ydCB7IHNjYW5Qcm9qZWN0LCBTY2FubmVkRmlsZSB9IGZyb20gJy4vc2Nhbm5lcic7XG5leHBvcnQgeyB0cmFuc2Zvcm1GaWxlcywgdHJhbnNmb3JtRmlsZXNEZXRhaWxlZCwgVHJhbnNmb3JtT3B0aW9ucywgVHJhbnNmb3JtUmVzdWx0cywgRGV0YWlsZWRUcmFuc2Zvcm1SZXN1bHRzIH0gZnJvbSAnLi90cmFuc2Zvcm1lcic7XG5leHBvcnQgeyBUYWlsd2luZE1hcHBlciwgQ1NTUHJvcGVydHksIENvbnZlcnNpb25SZXN1bHQgfSBmcm9tICcuL3RhaWx3aW5kTWFwcGVyJztcbmV4cG9ydCB7IEpTWFBhcnNlciwgSlNYVHJhbnNmb3JtYXRpb24sIEpTWFBhcnNlUmVzdWx0IH0gZnJvbSAnLi9qc3hQYXJzZXInO1xuZXhwb3J0IHsgQ1NTUGFyc2VyLCBDU1NSdWxlLCBDU1NQYXJzZVJlc3VsdCwgVXRpbGl0eVdpdGhWYXJpYW50LCBTZWxlY3RvclRhcmdldCB9IGZyb20gJy4vY3NzUGFyc2VyJztcbmV4cG9ydCB7IEZpbGVXcml0ZXIsIEZpbGVXcml0ZU9wdGlvbnMsIHdyaXRlRmlsZXMgfSBmcm9tICcuL2ZpbGVXcml0ZXInO1xuZXhwb3J0IHsgbG9hZFRhaWx3aW5kQ29uZmlnLCBUYWlsd2luZENvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcbmV4cG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vdXRpbHMvbG9nZ2VyJztcbmV4cG9ydCB7IFJlcG9ydGVyLCBGaWxlUmVzdWx0LCBTdW1tYXJ5U3RhdHMsIFJlcG9ydGVyT3B0aW9ucyB9IGZyb20gJy4vdXRpbHMvcmVwb3J0ZXInO1xuZXhwb3J0IHsgXG4gIGNvbXB1dGVVbmlmaWVkRGlmZiwgXG4gIGZvcm1hdERpZmYsIFxuICBjb21wdXRlQW5kRm9ybWF0RGlmZiwgXG4gIGdldENoYW5nZVN0YXRzLFxuICBEaWZmUmVzdWx0LFxuICBEaWZmSHVuayxcbiAgRGlmZkxpbmVcbn0gZnJvbSAnLi91dGlscy9kaWZmJztcbmV4cG9ydCB7XG4gIEJyZWFrcG9pbnQsXG4gIE1lZGlhUXVlcnlJbmZvLFxuICBnZXREZWZhdWx0QnJlYWtwb2ludHMsXG4gIHJlc29sdmVCcmVha3BvaW50c0Zyb21Db25maWcsXG4gIHBhcnNlTWVkaWFRdWVyeSxcbiAgZmluZEJyZWFrcG9pbnRGb3JNaW5XaWR0aCxcbiAgcHJvY2Vzc01lZGlhUXVlcnksXG4gIHByZWZpeFdpdGhCcmVha3BvaW50XG59IGZyb20gJy4vdXRpbHMvYnJlYWtwb2ludFJlc29sdmVyJztcbmV4cG9ydCB7XG4gIFBhcnNlZFNlbGVjdG9yLFxuICBQU0VVRE9fVE9fVkFSSUFOVCxcbiAgU1VQUE9SVEVEX1BTRVVET1MsXG4gIHBhcnNlU2VsZWN0b3IsXG4gIG1hcFBzZXVkb1RvVmFyaWFudCxcbiAgcHJvY2Vzc1BzZXVkb1NlbGVjdG9yLFxuICBwYXJzZU11bHRpcGxlU2VsZWN0b3JzXG59IGZyb20gJy4vdXRpbHMvcHNldWRvU2VsZWN0b3JSZXNvbHZlcic7XG5leHBvcnQge1xuICBWQVJJQU5UX09SREVSLFxuICBpc1Jlc3BvbnNpdmVWYXJpYW50LFxuICBpc1BzZXVkb1ZhcmlhbnQsXG4gIHNvcnRWYXJpYW50cyxcbiAgZGVkdXBsaWNhdGVWYXJpYW50cyxcbiAgbm9ybWFsaXplVmFyaWFudE9yZGVyLFxuICBhc3NlbWJsZVV0aWxpdHksXG4gIGFzc2VtYmxlVXRpbGl0aWVzLFxuICBtZXJnZVV0aWxpdGllcyxcbiAgTWVyZ2VkVXRpbGl0eVxufSBmcm9tICcuL3V0aWxzL3ZhcmlhbnRBc3NlbWJsZXInO1xuZXhwb3J0IHtcbiAgRGVzY2VuZGFudFNlbGVjdG9yLFxuICBTZWxlY3RvclBhcnQsXG4gIFNlbGVjdG9yVHlwZSxcbiAgcGFyc2VEZXNjZW5kYW50U2VsZWN0b3IsXG4gIGlzRGVzY2VuZGFudFNlbGVjdG9yLFxuICBpc1NpbXBsZVNlbGVjdG9yLFxuICBwcm9jZXNzRGVzY2VuZGFudFNlbGVjdG9yLFxuICBpc0h0bWxFbGVtZW50XG59IGZyb20gJy4vdXRpbHMvZGVzY2VuZGFudFNlbGVjdG9yUmVzb2x2ZXInO1xuZXhwb3J0IHtcbiAgdHJhbnNmb3JtRGVzY2VuZGFudFNlbGVjdG9ycyxcbiAgRGVzY2VuZGFudFRyYW5zZm9ybVJlc3VsdCxcbiAgZ3JvdXBEZXNjZW5kYW50UnVsZXNCeVBhcmVudFxufSBmcm9tICcuL2pzeERlc2NlbmRhbnRUcmFuc2Zvcm1lcic7XG4iXX0=
|
package/dist/transformer.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ScannedFile } from './scanner';
|
|
2
2
|
import { TailwindConfig } from './utils/config';
|
|
3
|
+
import { FileResult, SummaryStats } from './utils/reporter';
|
|
3
4
|
export interface TransformOptions {
|
|
4
5
|
dryRun: boolean;
|
|
5
6
|
deleteCss: boolean;
|
|
@@ -16,4 +17,9 @@ export interface TransformResults {
|
|
|
16
17
|
classesReplaced: number;
|
|
17
18
|
warnings: number;
|
|
18
19
|
}
|
|
20
|
+
export interface DetailedTransformResults {
|
|
21
|
+
fileResults: FileResult[];
|
|
22
|
+
stats: SummaryStats;
|
|
23
|
+
}
|
|
19
24
|
export declare function transformFiles(files: ScannedFile[], options: TransformOptions): Promise<TransformResults>;
|
|
25
|
+
export declare function transformFilesDetailed(files: ScannedFile[], options: TransformOptions): Promise<DetailedTransformResults>;
|