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