1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.loadPostcssConfiguration = exports.findTailwindConfiguration = exports.generateSearchDirectories = void 0;
|
4 | const node_fs_1 = require("node:fs");
|
5 | const node_path_1 = require("node:path");
|
6 | const postcssConfigurationFiles = ['postcss.config.json', '.postcssrc.json'];
|
7 | const tailwindConfigFiles = [
|
8 | 'tailwind.config.js',
|
9 | 'tailwind.config.cjs',
|
10 | 'tailwind.config.mjs',
|
11 | 'tailwind.config.ts',
|
12 | ];
|
13 | function generateSearchDirectories(roots) {
|
14 | return roots.map(root => {
|
15 | return {
|
16 | root,
|
17 | files: new Set((0, node_fs_1.readdirSync)(root, { withFileTypes: true })
|
18 | .filter(entry => entry.isFile())
|
19 | .map(entry => entry.name)),
|
20 | };
|
21 | });
|
22 | }
|
23 | exports.generateSearchDirectories = generateSearchDirectories;
|
24 | function findFile(searchDirectories, potentialFiles) {
|
25 | for (const { root, files } of searchDirectories) {
|
26 | for (const potential of potentialFiles) {
|
27 | if (files.has(potential)) {
|
28 | return (0, node_path_1.join)(root, potential);
|
29 | }
|
30 | }
|
31 | }
|
32 | return undefined;
|
33 | }
|
34 | function findTailwindConfiguration(searchDirectories) {
|
35 | return findFile(searchDirectories, tailwindConfigFiles);
|
36 | }
|
37 | exports.findTailwindConfiguration = findTailwindConfiguration;
|
38 | function readPostcssConfiguration(configurationFile) {
|
39 | const data = (0, node_fs_1.readFileSync)(configurationFile, 'utf-8');
|
40 | const config = JSON.parse(data);
|
41 | return config;
|
42 | }
|
43 | function loadPostcssConfiguration(searchDirectories) {
|
44 | const configPath = findFile(searchDirectories, postcssConfigurationFiles);
|
45 | if (!configPath) {
|
46 | return undefined;
|
47 | }
|
48 | const raw = readPostcssConfiguration(configPath);
|
49 |
|
50 | if (!raw.plugins || typeof raw.plugins !== 'object') {
|
51 | return undefined;
|
52 | }
|
53 |
|
54 | if (Array.isArray(raw.plugins)) {
|
55 | if (raw.plugins.length < 1) {
|
56 | return undefined;
|
57 | }
|
58 | const config = { plugins: [] };
|
59 | for (const element of raw.plugins) {
|
60 | if (typeof element === 'string') {
|
61 | config.plugins.push([element]);
|
62 | }
|
63 | else {
|
64 | config.plugins.push(element);
|
65 | }
|
66 | }
|
67 | return config;
|
68 | }
|
69 |
|
70 | const entries = Object.entries(raw.plugins);
|
71 | if (entries.length < 1) {
|
72 | return undefined;
|
73 | }
|
74 | const config = { plugins: [] };
|
75 | for (const [name, options] of entries) {
|
76 | if (!options || (typeof options !== 'object' && typeof options !== 'string')) {
|
77 | continue;
|
78 | }
|
79 | config.plugins.push([name, options]);
|
80 | }
|
81 | return config;
|
82 | }
|
83 | exports.loadPostcssConfiguration = loadPostcssConfiguration;
|
84 |
|
\ | No newline at end of file |