tailwindcss 0.0.0-insiders.fde30c3 → 0.0.0-insiders.ff26372
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/README.md +1 -1
- package/index.css +5 -0
- package/lib/cli/build/index.js +29 -20
- package/lib/cli/build/plugin.js +213 -144
- package/lib/cli/build/utils.js +31 -21
- package/lib/cli/build/watching.js +26 -22
- package/lib/cli/help/index.js +17 -15
- package/lib/cli/index.js +223 -10
- package/lib/cli/init/index.js +30 -13
- package/lib/cli.js +1 -237
- package/lib/corePluginList.js +8 -1
- package/lib/corePlugins.js +2108 -1813
- package/lib/css/preflight.css +15 -3
- package/lib/featureFlags.js +36 -22
- package/lib/index.js +1 -47
- package/lib/lib/cacheInvalidation.js +10 -8
- package/lib/lib/collapseAdjacentRules.js +9 -7
- package/lib/lib/collapseDuplicateDeclarations.js +11 -9
- package/lib/lib/content.js +66 -36
- package/lib/lib/defaultExtractor.js +21 -14
- package/lib/lib/detectNesting.js +18 -10
- package/lib/lib/evaluateTailwindFunctions.js +43 -39
- package/lib/lib/expandApplyAtRules.js +58 -50
- package/lib/lib/expandTailwindAtRules.js +112 -44
- package/lib/lib/findAtConfigPath.js +11 -9
- package/lib/lib/generateRules.js +192 -122
- package/lib/lib/getModuleDependencies.js +85 -37
- package/lib/lib/handleImportAtRules.js +50 -0
- package/lib/lib/load-config.js +42 -0
- package/lib/lib/normalizeTailwindDirectives.js +26 -39
- package/lib/lib/offsets.js +136 -47
- package/lib/lib/partitionApplyAtRules.js +5 -3
- package/lib/lib/regex.js +26 -12
- package/lib/lib/remap-bitfield.js +89 -0
- package/lib/lib/resolveDefaultsAtRules.js +49 -45
- package/lib/lib/setupContextUtils.js +300 -220
- package/lib/lib/setupTrackingContext.js +54 -29
- package/lib/lib/sharedState.js +36 -17
- package/lib/lib/substituteScreenAtRules.js +9 -7
- package/lib/plugin.js +164 -0
- package/lib/postcss-plugins/nesting/index.js +5 -3
- package/lib/postcss-plugins/nesting/plugin.js +19 -17
- package/lib/processTailwindFeatures.js +19 -17
- package/lib/public/colors.js +269 -245
- package/lib/public/create-plugin.js +5 -3
- package/lib/public/default-config.js +6 -4
- package/lib/public/default-theme.js +6 -4
- package/lib/public/load-config.js +12 -0
- package/lib/public/resolve-config.js +6 -4
- package/lib/util/applyImportantSelector.js +36 -0
- package/lib/util/bigSign.js +3 -1
- package/lib/util/buildMediaQuery.js +5 -3
- package/lib/util/cloneDeep.js +4 -2
- package/lib/util/cloneNodes.js +4 -2
- package/lib/util/color.js +42 -24
- package/lib/util/colorNames.js +752 -0
- package/lib/util/configurePlugins.js +3 -1
- package/lib/util/createPlugin.js +3 -1
- package/lib/util/createUtilityPlugin.js +8 -6
- package/lib/util/dataTypes.js +213 -97
- package/lib/util/defaults.js +9 -7
- package/lib/util/escapeClassName.js +9 -7
- package/lib/util/escapeCommas.js +4 -2
- package/lib/util/flattenColorPalette.js +5 -3
- package/lib/util/formatVariantSelector.js +149 -177
- package/lib/util/getAllConfigs.js +11 -8
- package/lib/util/hashConfig.js +6 -4
- package/lib/util/isKeyframeRule.js +4 -2
- package/lib/util/isPlainObject.js +4 -2
- package/lib/util/isSyntacticallyValidPropertyValue.js +13 -11
- package/lib/util/log.js +31 -10
- package/lib/util/nameClass.js +16 -10
- package/lib/util/negateValue.js +12 -10
- package/lib/util/normalizeConfig.js +101 -69
- package/lib/util/normalizeScreens.js +30 -22
- package/lib/util/parseAnimationValue.js +41 -39
- package/lib/util/parseBoxShadowValue.js +24 -20
- package/lib/util/parseDependency.js +7 -5
- package/lib/util/parseGlob.js +10 -8
- package/lib/util/parseObjectStyles.js +10 -8
- package/lib/util/pluginUtils.js +54 -63
- package/lib/util/prefixSelector.js +27 -11
- package/lib/util/pseudoElements.js +209 -0
- package/lib/util/removeAlphaVariables.js +4 -2
- package/lib/util/resolveConfig.js +25 -19
- package/lib/util/resolveConfigPath.js +28 -12
- package/lib/util/responsive.js +7 -5
- package/lib/util/splitAtTopLevelOnly.js +12 -4
- package/lib/util/tap.js +3 -1
- package/lib/util/toColorValue.js +4 -2
- package/lib/util/toPath.js +5 -3
- package/lib/util/transformThemeValue.js +30 -28
- package/lib/util/validateConfig.js +31 -7
- package/lib/util/validateFormalSyntax.js +8 -6
- package/lib/util/withAlphaVariable.js +11 -7
- package/lib/value-parser/LICENSE +22 -0
- package/lib/value-parser/README.md +3 -0
- package/lib/value-parser/index.d.js +2 -0
- package/lib/value-parser/index.js +22 -0
- package/lib/value-parser/parse.js +259 -0
- package/lib/value-parser/stringify.js +38 -0
- package/lib/value-parser/unit.js +86 -0
- package/lib/value-parser/walk.js +16 -0
- package/loadConfig.d.ts +4 -0
- package/loadConfig.js +2 -0
- package/package.json +49 -50
- package/src/cli/build/index.js +11 -7
- package/src/cli/build/plugin.js +110 -75
- package/src/cli/build/watching.js +4 -2
- package/src/cli/index.js +217 -3
- package/src/cli/init/index.js +37 -8
- package/src/cli.js +1 -232
- package/src/corePluginList.js +1 -1
- package/src/corePlugins.js +247 -44
- package/src/css/preflight.css +15 -3
- package/src/featureFlags.js +7 -3
- package/src/index.js +1 -47
- package/src/lib/content.js +45 -18
- package/src/lib/defaultExtractor.js +8 -2
- package/src/lib/detectNesting.js +9 -1
- package/src/lib/evaluateTailwindFunctions.js +4 -1
- package/src/lib/expandApplyAtRules.js +8 -1
- package/src/lib/expandTailwindAtRules.js +78 -13
- package/src/lib/generateRules.js +137 -52
- package/src/lib/getModuleDependencies.js +70 -30
- package/src/lib/handleImportAtRules.js +34 -0
- package/src/lib/load-config.ts +31 -0
- package/src/lib/normalizeTailwindDirectives.js +0 -27
- package/src/lib/offsets.js +105 -2
- package/src/lib/remap-bitfield.js +82 -0
- package/src/lib/setupContextUtils.js +121 -61
- package/src/lib/setupTrackingContext.js +37 -14
- package/src/lib/sharedState.js +11 -4
- package/src/plugin.js +133 -0
- package/src/processTailwindFeatures.js +3 -2
- package/src/public/colors.js +22 -0
- package/src/public/default-config.js +1 -1
- package/src/public/default-theme.js +2 -2
- package/src/public/load-config.js +2 -0
- package/src/util/applyImportantSelector.js +27 -0
- package/src/util/color.js +18 -3
- package/src/util/colorNames.js +150 -0
- package/src/util/dataTypes.js +93 -9
- package/src/util/formatVariantSelector.js +161 -174
- package/src/util/getAllConfigs.js +2 -2
- package/src/util/log.js +24 -0
- package/src/util/negateValue.js +1 -1
- package/src/util/normalizeConfig.js +39 -11
- package/src/util/pluginUtils.js +11 -38
- package/src/util/prefixSelector.js +29 -10
- package/src/util/pseudoElements.js +167 -0
- package/src/util/resolveConfigPath.js +12 -1
- package/src/util/splitAtTopLevelOnly.js +8 -1
- package/src/util/validateConfig.js +23 -0
- package/src/value-parser/LICENSE +22 -0
- package/src/value-parser/README.md +3 -0
- package/src/value-parser/index.d.ts +177 -0
- package/src/value-parser/index.js +28 -0
- package/src/value-parser/parse.js +303 -0
- package/src/value-parser/stringify.js +41 -0
- package/src/value-parser/unit.js +118 -0
- package/src/value-parser/walk.js +18 -0
- package/stubs/.gitignore +1 -0
- package/stubs/.prettierrc.json +6 -0
- package/stubs/{defaultConfig.stub.js → config.full.js} +52 -9
- package/stubs/{simpleConfig.stub.js → config.simple.js} +1 -2
- package/stubs/{defaultPostCssConfig.stub.js → postcss.config.cjs} +0 -1
- package/stubs/postcss.config.js +5 -0
- package/stubs/tailwind.config.cjs +2 -0
- package/stubs/tailwind.config.js +2 -0
- package/stubs/tailwind.config.ts +3 -0
- package/types/config.d.ts +19 -12
- package/types/generated/colors.d.ts +22 -0
- package/types/generated/corePluginList.d.ts +1 -1
- package/types/generated/default-theme.d.ts +33 -3
- package/CHANGELOG.md +0 -2347
- package/lib/cli/build/deps.js +0 -54
- package/lib/cli/shared.js +0 -12
- package/lib/cli-peer-dependencies.js +0 -28
- package/lib/constants.js +0 -44
- package/peers/index.js +0 -79526
- package/scripts/install-integrations.js +0 -27
- package/scripts/rebuildFixtures.js +0 -68
- package/src/cli/build/deps.js +0 -56
- package/src/cli/shared.js +0 -5
- package/src/cli-peer-dependencies.js +0 -15
- package/src/constants.js +0 -17
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
<p align="center">
|
|
17
|
-
<a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/workflow/status/tailwindlabs/tailwindcss/
|
|
17
|
+
<a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=master" alt="Build Status"></a>
|
|
18
18
|
<a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
|
|
19
19
|
<a href="https://github.com/tailwindcss/tailwindcss/releases"><img src="https://img.shields.io/npm/v/tailwindcss.svg" alt="Latest Release"></a>
|
|
20
20
|
<a href="https://github.com/tailwindcss/tailwindcss/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
|
package/index.css
ADDED
package/lib/cli/build/index.js
CHANGED
|
@@ -5,44 +5,53 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
Object.defineProperty(exports, "build", {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: ()
|
|
8
|
+
get: function() {
|
|
9
|
+
return build;
|
|
10
|
+
}
|
|
9
11
|
});
|
|
10
|
-
const _fs = /*#__PURE__*/
|
|
11
|
-
const _path = /*#__PURE__*/
|
|
12
|
-
const
|
|
13
|
-
|
|
12
|
+
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
13
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
14
|
+
const _resolveConfigPath = require("../../util/resolveConfigPath.js");
|
|
15
|
+
const _plugin = require("./plugin.js");
|
|
16
|
+
function _interop_require_default(obj) {
|
|
14
17
|
return obj && obj.__esModule ? obj : {
|
|
15
18
|
default: obj
|
|
16
19
|
};
|
|
17
20
|
}
|
|
18
|
-
async function build(args
|
|
19
|
-
let input = args[
|
|
20
|
-
let shouldWatch = args[
|
|
21
|
+
async function build(args) {
|
|
22
|
+
let input = args['--input'];
|
|
23
|
+
let shouldWatch = args['--watch'];
|
|
21
24
|
// TODO: Deprecate this in future versions
|
|
22
|
-
if (!input && args[
|
|
23
|
-
console.error(
|
|
24
|
-
input = args[
|
|
25
|
+
if (!input && args['_'][1]) {
|
|
26
|
+
console.error('[deprecation] Running tailwindcss without -i, please provide an input file.');
|
|
27
|
+
input = args['--input'] = args['_'][1];
|
|
25
28
|
}
|
|
26
|
-
if (input && input !==
|
|
27
|
-
console.error(`Specified input file ${args[
|
|
29
|
+
if (input && input !== '-' && !_fs.default.existsSync(input = _path.default.resolve(input))) {
|
|
30
|
+
console.error(`Specified input file ${args['--input']} does not exist.`);
|
|
28
31
|
process.exit(9);
|
|
29
32
|
}
|
|
30
|
-
if (args[
|
|
31
|
-
console.error(`Specified config file ${args[
|
|
33
|
+
if (args['--config'] && !_fs.default.existsSync(args['--config'] = _path.default.resolve(args['--config']))) {
|
|
34
|
+
console.error(`Specified config file ${args['--config']} does not exist.`);
|
|
32
35
|
process.exit(9);
|
|
33
36
|
}
|
|
37
|
+
if (args['--no-autoprefixer']) {
|
|
38
|
+
console.error('[deprecation] The --no-autoprefixer flag is deprecated and has no effect.');
|
|
39
|
+
}
|
|
34
40
|
// TODO: Reference the @config path here if exists
|
|
35
|
-
let configPath = args[
|
|
36
|
-
let processor = await (0,
|
|
41
|
+
let configPath = args['--config'] ? args['--config'] : (0, _resolveConfigPath.resolveDefaultConfigPath)();
|
|
42
|
+
let processor = await (0, _plugin.createProcessor)(args, configPath);
|
|
37
43
|
if (shouldWatch) {
|
|
38
44
|
// Abort the watcher if stdin is closed to avoid zombie processes
|
|
39
45
|
// You can disable this behavior with --watch=always
|
|
40
|
-
if (args[
|
|
41
|
-
process.stdin.on(
|
|
46
|
+
if (args['--watch'] !== 'always') {
|
|
47
|
+
process.stdin.on('end', ()=>process.exit(0));
|
|
42
48
|
}
|
|
43
49
|
process.stdin.resume();
|
|
44
50
|
await processor.watch();
|
|
45
51
|
} else {
|
|
46
|
-
await processor.build()
|
|
52
|
+
await processor.build().catch((e)=>{
|
|
53
|
+
console.error(e);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
});
|
|
47
56
|
}
|
|
48
57
|
}
|
package/lib/cli/build/plugin.js
CHANGED
|
@@ -5,32 +5,118 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
Object.defineProperty(exports, "createProcessor", {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: ()
|
|
8
|
+
get: function() {
|
|
9
|
+
return createProcessor;
|
|
10
|
+
}
|
|
9
11
|
});
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
12
|
+
const _packagejson = /*#__PURE__*/ _interop_require_default(require("../../../package.json"));
|
|
13
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
14
|
+
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
15
|
+
const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
|
|
16
|
+
const _postcssloadconfig = /*#__PURE__*/ _interop_require_default(require("postcss-load-config"));
|
|
17
|
+
const _browserslist = /*#__PURE__*/ _interop_require_default(require("browserslist"));
|
|
18
|
+
const _lightningcss = /*#__PURE__*/ _interop_require_wildcard(require("lightningcss"));
|
|
13
19
|
const _lilconfig = require("lilconfig");
|
|
14
|
-
const _plugins = /*#__PURE__*/
|
|
20
|
+
const _plugins = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/plugins" // Little bit scary, looking at private/internal API
|
|
15
21
|
));
|
|
16
|
-
const _options = /*#__PURE__*/
|
|
22
|
+
const _options = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/options" // Little bit scary, looking at private/internal API
|
|
17
23
|
));
|
|
18
|
-
const _processTailwindFeatures = /*#__PURE__*/
|
|
19
|
-
const _deps = require("./deps");
|
|
24
|
+
const _processTailwindFeatures = /*#__PURE__*/ _interop_require_default(require("../../processTailwindFeatures"));
|
|
20
25
|
const _utils = require("./utils");
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
26
|
+
const _sharedState = require("../../lib/sharedState");
|
|
27
|
+
const _resolveConfig = /*#__PURE__*/ _interop_require_default(require("../../../resolveConfig.js"));
|
|
28
|
+
const _content = require("../../lib/content.js");
|
|
29
|
+
const _watching = require("./watching.js");
|
|
30
|
+
const _fastglob = /*#__PURE__*/ _interop_require_default(require("fast-glob"));
|
|
31
|
+
const _findAtConfigPath = require("../../lib/findAtConfigPath.js");
|
|
32
|
+
const _log = /*#__PURE__*/ _interop_require_default(require("../../util/log"));
|
|
33
|
+
const _loadconfig = require("../../lib/load-config");
|
|
34
|
+
const _getModuleDependencies = /*#__PURE__*/ _interop_require_default(require("../../lib/getModuleDependencies"));
|
|
35
|
+
const _validateConfig = require("../../util/validateConfig");
|
|
36
|
+
const _handleImportAtRules = require("../../lib/handleImportAtRules");
|
|
37
|
+
const _featureFlags = require("../../featureFlags");
|
|
38
|
+
function _interop_require_default(obj) {
|
|
30
39
|
return obj && obj.__esModule ? obj : {
|
|
31
40
|
default: obj
|
|
32
41
|
};
|
|
33
42
|
}
|
|
43
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
44
|
+
if (typeof WeakMap !== "function") return null;
|
|
45
|
+
var cacheBabelInterop = new WeakMap();
|
|
46
|
+
var cacheNodeInterop = new WeakMap();
|
|
47
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
48
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
49
|
+
})(nodeInterop);
|
|
50
|
+
}
|
|
51
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
52
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
53
|
+
return obj;
|
|
54
|
+
}
|
|
55
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
56
|
+
return {
|
|
57
|
+
default: obj
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
61
|
+
if (cache && cache.has(obj)) {
|
|
62
|
+
return cache.get(obj);
|
|
63
|
+
}
|
|
64
|
+
var newObj = {};
|
|
65
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
66
|
+
for(var key in obj){
|
|
67
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
68
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
69
|
+
if (desc && (desc.get || desc.set)) {
|
|
70
|
+
Object.defineProperty(newObj, key, desc);
|
|
71
|
+
} else {
|
|
72
|
+
newObj[key] = obj[key];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
newObj.default = obj;
|
|
77
|
+
if (cache) {
|
|
78
|
+
cache.set(obj, newObj);
|
|
79
|
+
}
|
|
80
|
+
return newObj;
|
|
81
|
+
}
|
|
82
|
+
function license() {
|
|
83
|
+
return `/* ! tailwindcss v${_packagejson.default.version} | MIT License | https://tailwindcss.com */\n`;
|
|
84
|
+
}
|
|
85
|
+
async function lightningcss(result, { map = true, minify = true } = {}) {
|
|
86
|
+
try {
|
|
87
|
+
var _browserslist_findConfig;
|
|
88
|
+
var _result_opts_from;
|
|
89
|
+
let resolvedBrowsersListConfig = (_browserslist_findConfig = _browserslist.default.findConfig((_result_opts_from = result.opts.from) !== null && _result_opts_from !== void 0 ? _result_opts_from : process.cwd())) === null || _browserslist_findConfig === void 0 ? void 0 : _browserslist_findConfig.defaults;
|
|
90
|
+
let defaultBrowsersListConfig = _packagejson.default.browserslist;
|
|
91
|
+
let browsersListConfig = resolvedBrowsersListConfig !== null && resolvedBrowsersListConfig !== void 0 ? resolvedBrowsersListConfig : defaultBrowsersListConfig;
|
|
92
|
+
let transformed = _lightningcss.default.transform({
|
|
93
|
+
filename: result.opts.from || 'input.css',
|
|
94
|
+
code: Buffer.from(result.css, 'utf-8'),
|
|
95
|
+
minify,
|
|
96
|
+
sourceMap: result.map === undefined ? map : !!result.map,
|
|
97
|
+
inputSourceMap: result.map ? result.map.toString() : undefined,
|
|
98
|
+
targets: _lightningcss.default.browserslistToTargets((0, _browserslist.default)(browsersListConfig)),
|
|
99
|
+
drafts: {
|
|
100
|
+
nesting: true
|
|
101
|
+
},
|
|
102
|
+
include: _lightningcss.Features.Nesting,
|
|
103
|
+
exclude: _lightningcss.Features.LogicalProperties
|
|
104
|
+
});
|
|
105
|
+
return Object.assign(result, {
|
|
106
|
+
css: transformed.code.toString('utf8'),
|
|
107
|
+
map: result.map ? Object.assign(result.map, {
|
|
108
|
+
toString () {
|
|
109
|
+
var _transformed_map;
|
|
110
|
+
return (_transformed_map = transformed.map) === null || _transformed_map === void 0 ? void 0 : _transformed_map.toString();
|
|
111
|
+
}
|
|
112
|
+
}) : result.map
|
|
113
|
+
});
|
|
114
|
+
} catch (err) {
|
|
115
|
+
console.error('Unable to use Lightning CSS. Using raw version instead.');
|
|
116
|
+
console.error(err);
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
34
120
|
/**
|
|
35
121
|
*
|
|
36
122
|
* @param {string} [customPostCssPath ]
|
|
@@ -40,8 +126,8 @@ function _interopRequireDefault(obj) {
|
|
|
40
126
|
let file = _path.default.resolve(customPostCssPath);
|
|
41
127
|
// Implementation, see: https://unpkg.com/browse/postcss-load-config@3.1.0/src/index.js
|
|
42
128
|
// @ts-ignore
|
|
43
|
-
let { config ={}
|
|
44
|
-
if (typeof config ===
|
|
129
|
+
let { config = {} } = await (0, _lilconfig.lilconfig)('postcss').load(file);
|
|
130
|
+
if (typeof config === 'function') {
|
|
45
131
|
config = config();
|
|
46
132
|
} else {
|
|
47
133
|
config = Object.assign({}, config);
|
|
@@ -54,13 +140,13 @@ function _interopRequireDefault(obj) {
|
|
|
54
140
|
plugins: (0, _plugins.default)(config, file),
|
|
55
141
|
options: (0, _options.default)(config, file)
|
|
56
142
|
};
|
|
57
|
-
})() : await (0,
|
|
143
|
+
})() : await (0, _postcssloadconfig.default)();
|
|
58
144
|
let configPlugins = config.plugins;
|
|
59
145
|
let configPluginTailwindIdx = configPlugins.findIndex((plugin)=>{
|
|
60
|
-
if (typeof plugin ===
|
|
146
|
+
if (typeof plugin === 'function' && plugin.name === 'tailwindcss') {
|
|
61
147
|
return true;
|
|
62
148
|
}
|
|
63
|
-
if (typeof plugin ===
|
|
149
|
+
if (typeof plugin === 'object' && plugin !== null && plugin.postcssPlugin === 'tailwindcss') {
|
|
64
150
|
return true;
|
|
65
151
|
}
|
|
66
152
|
return false;
|
|
@@ -73,48 +159,16 @@ function _interopRequireDefault(obj) {
|
|
|
73
159
|
config.options
|
|
74
160
|
];
|
|
75
161
|
}
|
|
76
|
-
function loadBuiltinPostcssPlugins() {
|
|
77
|
-
let postcss = (0, _deps.loadPostcss)();
|
|
78
|
-
let IMPORT_COMMENT = "__TAILWIND_RESTORE_IMPORT__: ";
|
|
79
|
-
return [
|
|
80
|
-
[
|
|
81
|
-
(root)=>{
|
|
82
|
-
root.walkAtRules("import", (rule)=>{
|
|
83
|
-
if (rule.params.slice(1).startsWith("tailwindcss/")) {
|
|
84
|
-
rule.after(postcss.comment({
|
|
85
|
-
text: IMPORT_COMMENT + rule.params
|
|
86
|
-
}));
|
|
87
|
-
rule.remove();
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
},
|
|
91
|
-
(0, _deps.loadPostcssImport)(),
|
|
92
|
-
(root)=>{
|
|
93
|
-
root.walkComments((rule)=>{
|
|
94
|
-
if (rule.text.startsWith(IMPORT_COMMENT)) {
|
|
95
|
-
rule.after(postcss.atRule({
|
|
96
|
-
name: "import",
|
|
97
|
-
params: rule.text.replace(IMPORT_COMMENT, "")
|
|
98
|
-
}));
|
|
99
|
-
rule.remove();
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
],
|
|
104
|
-
[],
|
|
105
|
-
{}
|
|
106
|
-
];
|
|
107
|
-
}
|
|
108
162
|
let state = {
|
|
109
163
|
/** @type {any} */ context: null,
|
|
110
164
|
/** @type {ReturnType<typeof createWatcher> | null} */ watcher: null,
|
|
111
165
|
/** @type {{content: string, extension: string}[]} */ changedContent: [],
|
|
112
|
-
|
|
166
|
+
/** @type {{config: import('../../../types').Config, dependencies: Set<string>, dispose: Function } | null} */ configBag: null,
|
|
113
167
|
contextDependencies: new Set(),
|
|
114
168
|
/** @type {import('../../lib/content.js').ContentPath[]} */ contentPaths: [],
|
|
115
169
|
refreshContentPaths () {
|
|
116
170
|
var _this_context;
|
|
117
|
-
this.contentPaths = (0,
|
|
171
|
+
this.contentPaths = (0, _content.parseCandidateFiles)(this.context, (_this_context = this.context) === null || _this_context === void 0 ? void 0 : _this_context.tailwindConfig);
|
|
118
172
|
},
|
|
119
173
|
get config () {
|
|
120
174
|
return this.context.tailwindConfig;
|
|
@@ -126,51 +180,57 @@ let state = {
|
|
|
126
180
|
};
|
|
127
181
|
},
|
|
128
182
|
loadConfig (configPath, content) {
|
|
183
|
+
var _content;
|
|
129
184
|
if (this.watcher && configPath) {
|
|
130
|
-
this.refreshConfigDependencies(
|
|
185
|
+
this.refreshConfigDependencies();
|
|
131
186
|
}
|
|
132
|
-
let config =
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
187
|
+
let config = (0, _loadconfig.loadConfig)(configPath);
|
|
188
|
+
let dependencies = (0, _getModuleDependencies.default)(configPath);
|
|
189
|
+
this.configBag = {
|
|
190
|
+
config,
|
|
191
|
+
dependencies,
|
|
192
|
+
dispose () {
|
|
193
|
+
for (let file of dependencies){
|
|
194
|
+
delete require.cache[require.resolve(file)];
|
|
195
|
+
}
|
|
137
196
|
}
|
|
138
|
-
}
|
|
197
|
+
};
|
|
198
|
+
this.configBag.config = (0, _validateConfig.validateConfig)((0, _resolveConfig.default)(this.configBag.config));
|
|
139
199
|
// Override content files if `--content` has been passed explicitly
|
|
140
|
-
if ((content === null ||
|
|
141
|
-
config.content.files = content;
|
|
200
|
+
if (((_content = content) === null || _content === void 0 ? void 0 : _content.length) > 0) {
|
|
201
|
+
this.configBag.config.content.files = content;
|
|
142
202
|
}
|
|
143
|
-
return config;
|
|
203
|
+
return this.configBag.config;
|
|
144
204
|
},
|
|
145
|
-
refreshConfigDependencies (
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
if (configPath) {
|
|
151
|
-
let deps = (0, _getModuleDependenciesJs.default)(configPath).map(({ file })=>file);
|
|
152
|
-
for (let dependency of deps){
|
|
153
|
-
this.configDependencies.add(dependency);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
_shared.env.DEBUG && console.timeEnd("Module dependencies");
|
|
205
|
+
refreshConfigDependencies () {
|
|
206
|
+
var _this_configBag;
|
|
207
|
+
_sharedState.env.DEBUG && console.time('Module dependencies');
|
|
208
|
+
(_this_configBag = this.configBag) === null || _this_configBag === void 0 ? void 0 : _this_configBag.dispose();
|
|
209
|
+
_sharedState.env.DEBUG && console.timeEnd('Module dependencies');
|
|
157
210
|
},
|
|
158
211
|
readContentPaths () {
|
|
159
212
|
let content = [];
|
|
160
213
|
// Resolve globs from the content config
|
|
161
214
|
// TODO: When we make the postcss plugin async-capable this can become async
|
|
162
|
-
let files =
|
|
215
|
+
let files = _fastglob.default.sync(this.contentPatterns.all);
|
|
163
216
|
for (let file of files){
|
|
164
|
-
|
|
165
|
-
content
|
|
166
|
-
|
|
167
|
-
|
|
217
|
+
if ((0, _featureFlags.flagEnabled)(this.config, 'oxideParser')) {
|
|
218
|
+
content.push({
|
|
219
|
+
file,
|
|
220
|
+
extension: _path.default.extname(file).slice(1)
|
|
221
|
+
});
|
|
222
|
+
} else {
|
|
223
|
+
content.push({
|
|
224
|
+
content: _fs.default.readFileSync(_path.default.resolve(file), 'utf8'),
|
|
225
|
+
extension: _path.default.extname(file).slice(1)
|
|
226
|
+
});
|
|
227
|
+
}
|
|
168
228
|
}
|
|
169
229
|
// Resolve raw content in the tailwind config
|
|
170
230
|
let rawContent = this.config.content.files.filter((file)=>{
|
|
171
|
-
return file !== null && typeof file ===
|
|
231
|
+
return file !== null && typeof file === 'object';
|
|
172
232
|
});
|
|
173
|
-
for (let { raw: htmlContent
|
|
233
|
+
for (let { raw: htmlContent, extension = 'html' } of rawContent){
|
|
174
234
|
content.push({
|
|
175
235
|
content: htmlContent,
|
|
176
236
|
extension
|
|
@@ -178,67 +238,69 @@ let state = {
|
|
|
178
238
|
}
|
|
179
239
|
return content;
|
|
180
240
|
},
|
|
181
|
-
getContext ({ createContext
|
|
241
|
+
getContext ({ createContext, cliConfigPath, root, result, content }) {
|
|
182
242
|
if (this.context) {
|
|
183
243
|
this.context.changedContent = this.changedContent.splice(0);
|
|
184
244
|
return this.context;
|
|
185
245
|
}
|
|
186
|
-
|
|
187
|
-
var
|
|
188
|
-
let configPath = (
|
|
189
|
-
|
|
190
|
-
|
|
246
|
+
_sharedState.env.DEBUG && console.time('Searching for config');
|
|
247
|
+
var _findAtConfigPath1;
|
|
248
|
+
let configPath = (_findAtConfigPath1 = (0, _findAtConfigPath.findAtConfigPath)(root, result)) !== null && _findAtConfigPath1 !== void 0 ? _findAtConfigPath1 : cliConfigPath;
|
|
249
|
+
_sharedState.env.DEBUG && console.timeEnd('Searching for config');
|
|
250
|
+
_sharedState.env.DEBUG && console.time('Loading config');
|
|
191
251
|
let config = this.loadConfig(configPath, content);
|
|
192
|
-
|
|
193
|
-
|
|
252
|
+
_sharedState.env.DEBUG && console.timeEnd('Loading config');
|
|
253
|
+
_sharedState.env.DEBUG && console.time('Creating context');
|
|
194
254
|
this.context = createContext(config, []);
|
|
195
255
|
Object.assign(this.context, {
|
|
196
256
|
userConfigPath: configPath
|
|
197
257
|
});
|
|
198
|
-
|
|
199
|
-
|
|
258
|
+
_sharedState.env.DEBUG && console.timeEnd('Creating context');
|
|
259
|
+
_sharedState.env.DEBUG && console.time('Resolving content paths');
|
|
200
260
|
this.refreshContentPaths();
|
|
201
|
-
|
|
261
|
+
_sharedState.env.DEBUG && console.timeEnd('Resolving content paths');
|
|
202
262
|
if (this.watcher) {
|
|
203
|
-
|
|
263
|
+
_sharedState.env.DEBUG && console.time('Watch new files');
|
|
204
264
|
this.watcher.refreshWatchedFiles();
|
|
205
|
-
|
|
265
|
+
_sharedState.env.DEBUG && console.timeEnd('Watch new files');
|
|
206
266
|
}
|
|
207
|
-
_shared.env.DEBUG && console.time("Reading content files");
|
|
208
267
|
for (let file of this.readContentPaths()){
|
|
209
268
|
this.context.changedContent.push(file);
|
|
210
269
|
}
|
|
211
|
-
_shared.env.DEBUG && console.timeEnd("Reading content files");
|
|
212
270
|
return this.context;
|
|
213
271
|
}
|
|
214
272
|
};
|
|
215
273
|
async function createProcessor(args, cliConfigPath) {
|
|
216
274
|
var _args_content;
|
|
217
|
-
let
|
|
218
|
-
let
|
|
219
|
-
let
|
|
220
|
-
let
|
|
221
|
-
let
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
275
|
+
let input = args['--input'];
|
|
276
|
+
let output = args['--output'];
|
|
277
|
+
let includePostCss = args['--postcss'];
|
|
278
|
+
let customPostCssPath = typeof args['--postcss'] === 'string' ? args['--postcss'] : undefined;
|
|
279
|
+
let [beforePlugins, afterPlugins, postcssOptions] = includePostCss ? await loadPostCssPlugins(customPostCssPath) : [
|
|
280
|
+
[],
|
|
281
|
+
[],
|
|
282
|
+
{}
|
|
283
|
+
];
|
|
284
|
+
beforePlugins.unshift(...(0, _handleImportAtRules.handleImportAtRules)());
|
|
285
|
+
if (args['--purge']) {
|
|
286
|
+
_log.default.warn('purge-flag-deprecated', [
|
|
287
|
+
'The `--purge` flag has been deprecated.',
|
|
288
|
+
'Please use `--content` instead.'
|
|
227
289
|
]);
|
|
228
|
-
if (!args[
|
|
229
|
-
args[
|
|
290
|
+
if (!args['--content']) {
|
|
291
|
+
args['--content'] = args['--purge'];
|
|
230
292
|
}
|
|
231
293
|
}
|
|
232
294
|
var _args_content_split;
|
|
233
|
-
let content = (_args_content_split = (_args_content = args[
|
|
295
|
+
let content = (_args_content_split = (_args_content = args['--content']) === null || _args_content === void 0 ? void 0 : _args_content.split(RegExp("(?<!{[^}]+),"))) !== null && _args_content_split !== void 0 ? _args_content_split : [];
|
|
234
296
|
let tailwindPlugin = ()=>{
|
|
235
297
|
return {
|
|
236
|
-
postcssPlugin:
|
|
237
|
-
Once (root, { result
|
|
238
|
-
|
|
239
|
-
(0, _processTailwindFeatures.default)(({ createContext
|
|
298
|
+
postcssPlugin: 'tailwindcss',
|
|
299
|
+
async Once (root, { result }) {
|
|
300
|
+
_sharedState.env.DEBUG && console.time('Compiling CSS');
|
|
301
|
+
await (0, _processTailwindFeatures.default)(({ createContext })=>{
|
|
240
302
|
console.error();
|
|
241
|
-
console.error(
|
|
303
|
+
console.error('Rebuilding...');
|
|
242
304
|
return ()=>{
|
|
243
305
|
return state.getContext({
|
|
244
306
|
createContext,
|
|
@@ -249,7 +311,7 @@ async function createProcessor(args, cliConfigPath) {
|
|
|
249
311
|
});
|
|
250
312
|
};
|
|
251
313
|
})(root, result);
|
|
252
|
-
|
|
314
|
+
_sharedState.env.DEBUG && console.timeEnd('Compiling CSS');
|
|
253
315
|
}
|
|
254
316
|
};
|
|
255
317
|
};
|
|
@@ -257,60 +319,62 @@ async function createProcessor(args, cliConfigPath) {
|
|
|
257
319
|
let plugins = [
|
|
258
320
|
...beforePlugins,
|
|
259
321
|
tailwindPlugin,
|
|
260
|
-
!args[
|
|
261
|
-
...afterPlugins
|
|
262
|
-
!args["--no-autoprefixer"] && (0, _deps.loadAutoprefixer)(),
|
|
263
|
-
args["--minify"] && (0, _deps.loadCssNano)()
|
|
322
|
+
!args['--minify'] && _utils.formatNodes,
|
|
323
|
+
...afterPlugins
|
|
264
324
|
].filter(Boolean);
|
|
265
325
|
/** @type {import('postcss').Processor} */ // @ts-ignore
|
|
266
|
-
let processor =
|
|
326
|
+
let processor = (0, _postcss.default)(plugins);
|
|
267
327
|
async function readInput() {
|
|
268
328
|
// Piping in data, let's drain the stdin
|
|
269
|
-
if (input ===
|
|
329
|
+
if (input === '-') {
|
|
270
330
|
return (0, _utils.drainStdin)();
|
|
271
331
|
}
|
|
272
332
|
// Input file has been provided
|
|
273
333
|
if (input) {
|
|
274
|
-
return _fs.default.promises.readFile(_path.default.resolve(input),
|
|
334
|
+
return _fs.default.promises.readFile(_path.default.resolve(input), 'utf8');
|
|
275
335
|
}
|
|
276
336
|
// No input file provided, fallback to default atrules
|
|
277
|
-
return
|
|
337
|
+
return '@tailwind base; @tailwind components; @tailwind utilities';
|
|
278
338
|
}
|
|
279
339
|
async function build() {
|
|
280
340
|
let start = process.hrtime.bigint();
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
341
|
+
let options = {
|
|
342
|
+
...postcssOptions,
|
|
343
|
+
from: input,
|
|
344
|
+
to: output
|
|
345
|
+
};
|
|
346
|
+
return readInput().then((css)=>processor.process(css, options)).then((result)=>lightningcss(result, {
|
|
347
|
+
...options,
|
|
348
|
+
minify: !!args['--minify']
|
|
285
349
|
})).then((result)=>{
|
|
286
350
|
if (!state.watcher) {
|
|
287
351
|
return result;
|
|
288
352
|
}
|
|
289
|
-
|
|
353
|
+
_sharedState.env.DEBUG && console.time('Recording PostCSS dependencies');
|
|
290
354
|
for (let message of result.messages){
|
|
291
|
-
if (message.type ===
|
|
355
|
+
if (message.type === 'dependency') {
|
|
292
356
|
state.contextDependencies.add(message.file);
|
|
293
357
|
}
|
|
294
358
|
}
|
|
295
|
-
|
|
359
|
+
_sharedState.env.DEBUG && console.timeEnd('Recording PostCSS dependencies');
|
|
296
360
|
// TODO: This needs to be in a different spot
|
|
297
|
-
|
|
361
|
+
_sharedState.env.DEBUG && console.time('Watch new files');
|
|
298
362
|
state.watcher.refreshWatchedFiles();
|
|
299
|
-
|
|
363
|
+
_sharedState.env.DEBUG && console.timeEnd('Watch new files');
|
|
300
364
|
return result;
|
|
301
365
|
}).then((result)=>{
|
|
302
366
|
if (!output) {
|
|
303
|
-
process.stdout.write(result.css);
|
|
367
|
+
process.stdout.write(license() + result.css);
|
|
304
368
|
return;
|
|
305
369
|
}
|
|
306
370
|
return Promise.all([
|
|
307
|
-
(0, _utils.outputFile)(result.opts.to, result.css),
|
|
308
|
-
result.map && (0, _utils.outputFile)(result.opts.to +
|
|
371
|
+
(0, _utils.outputFile)(result.opts.to, license() + result.css),
|
|
372
|
+
result.map && (0, _utils.outputFile)(result.opts.to + '.map', result.map.toString())
|
|
309
373
|
]);
|
|
310
374
|
}).then(()=>{
|
|
311
375
|
let end = process.hrtime.bigint();
|
|
312
376
|
console.error();
|
|
313
|
-
console.error(
|
|
377
|
+
console.error('Done in', (end - start) / BigInt(1e6) + 'ms.');
|
|
314
378
|
}).then(()=>{}, (err)=>{
|
|
315
379
|
// TODO: If an initial build fails we can't easily pick up any PostCSS dependencies
|
|
316
380
|
// that were collected before the error occurred
|
|
@@ -321,7 +385,11 @@ async function createProcessor(args, cliConfigPath) {
|
|
|
321
385
|
// If you fix it and then save the main CSS file so there's no error
|
|
322
386
|
// The watcher will start watching the imported CSS files and will be
|
|
323
387
|
// resilient to future errors.
|
|
324
|
-
|
|
388
|
+
if (state.watcher) {
|
|
389
|
+
console.error(err);
|
|
390
|
+
} else {
|
|
391
|
+
return Promise.reject(err);
|
|
392
|
+
}
|
|
325
393
|
});
|
|
326
394
|
}
|
|
327
395
|
/**
|
|
@@ -332,19 +400,20 @@ async function createProcessor(args, cliConfigPath) {
|
|
|
332
400
|
extension: change.extension
|
|
333
401
|
})));
|
|
334
402
|
}
|
|
335
|
-
if (input !== undefined && input !==
|
|
403
|
+
if (input !== undefined && input !== '-') {
|
|
336
404
|
state.contextDependencies.add(_path.default.resolve(input));
|
|
337
405
|
}
|
|
338
406
|
return {
|
|
339
407
|
build,
|
|
340
408
|
watch: async ()=>{
|
|
341
|
-
state.watcher = (0,
|
|
409
|
+
state.watcher = (0, _watching.createWatcher)(args, {
|
|
342
410
|
state,
|
|
343
411
|
/**
|
|
344
412
|
* @param {{file: string, content(): Promise<string>, extension: string}[]} changes
|
|
345
413
|
*/ async rebuild (changes) {
|
|
346
414
|
let needsNewContext = changes.some((change)=>{
|
|
347
|
-
|
|
415
|
+
var _state_configBag;
|
|
416
|
+
return ((_state_configBag = state.configBag) === null || _state_configBag === void 0 ? void 0 : _state_configBag.dependencies.has(change.file)) || state.contextDependencies.has(change.file);
|
|
348
417
|
});
|
|
349
418
|
if (needsNewContext) {
|
|
350
419
|
state.context = null;
|