tailwindcss 0.0.0-insiders.c8bf2d4 → 0.0.0-insiders.c8c3a22

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.
Files changed (203) hide show
  1. package/README.md +4 -5
  2. package/lib/cli/build/deps.js +17 -9
  3. package/lib/cli/build/index.js +15 -9
  4. package/lib/cli/build/plugin.js +61 -55
  5. package/lib/cli/build/utils.js +18 -8
  6. package/lib/cli/build/watching.js +17 -13
  7. package/lib/cli/help/index.js +6 -4
  8. package/lib/cli/index.js +16 -25
  9. package/lib/cli/init/index.js +28 -11
  10. package/lib/cli-peer-dependencies.js +12 -4
  11. package/lib/cli.js +1 -5
  12. package/lib/corePluginList.js +10 -2
  13. package/lib/corePlugins.js +318 -91
  14. package/lib/css/preflight.css +26 -9
  15. package/lib/featureFlags.js +14 -10
  16. package/lib/index.js +1 -5
  17. package/lib/lib/cacheInvalidation.js +7 -5
  18. package/lib/lib/collapseAdjacentRules.js +3 -1
  19. package/lib/lib/collapseDuplicateDeclarations.js +10 -8
  20. package/lib/lib/content.js +84 -14
  21. package/lib/lib/defaultExtractor.js +61 -29
  22. package/lib/lib/evaluateTailwindFunctions.js +20 -16
  23. package/lib/lib/expandApplyAtRules.js +60 -33
  24. package/lib/lib/expandTailwindAtRules.js +38 -31
  25. package/lib/lib/findAtConfigPath.js +6 -4
  26. package/lib/lib/generateRules.js +100 -65
  27. package/lib/lib/getModuleDependencies.js +85 -37
  28. package/lib/lib/load-config.js +61 -0
  29. package/lib/lib/normalizeTailwindDirectives.js +5 -3
  30. package/lib/lib/offsets.js +58 -7
  31. package/lib/lib/partitionApplyAtRules.js +3 -1
  32. package/lib/lib/regex.js +21 -7
  33. package/lib/lib/remap-bitfield.js +3 -1
  34. package/lib/lib/resolveDefaultsAtRules.js +38 -34
  35. package/lib/lib/setupContextUtils.js +157 -96
  36. package/lib/lib/setupTrackingContext.js +28 -25
  37. package/lib/lib/sharedState.js +29 -28
  38. package/lib/lib/substituteScreenAtRules.js +5 -3
  39. package/lib/plugin.js +8 -58
  40. package/lib/postcss-plugins/nesting/index.js +3 -1
  41. package/lib/postcss-plugins/nesting/plugin.js +8 -6
  42. package/lib/processTailwindFeatures.js +15 -15
  43. package/lib/public/colors.js +49 -25
  44. package/lib/public/create-plugin.js +5 -3
  45. package/lib/public/default-config.js +6 -4
  46. package/lib/public/default-theme.js +6 -4
  47. package/lib/public/load-config.js +12 -0
  48. package/lib/public/resolve-config.js +6 -4
  49. package/lib/util/applyImportantSelector.js +38 -0
  50. package/lib/util/bigSign.js +3 -1
  51. package/lib/util/buildMediaQuery.js +3 -1
  52. package/lib/util/cloneDeep.js +3 -1
  53. package/lib/util/cloneNodes.js +36 -14
  54. package/lib/util/color.js +11 -7
  55. package/lib/util/colorNames.js +752 -0
  56. package/lib/util/configurePlugins.js +3 -1
  57. package/lib/util/createPlugin.js +3 -1
  58. package/lib/util/createUtilityPlugin.js +5 -3
  59. package/lib/util/dataTypes.js +210 -32
  60. package/lib/util/defaults.js +6 -4
  61. package/lib/util/escapeClassName.js +7 -5
  62. package/lib/util/escapeCommas.js +3 -1
  63. package/lib/util/flattenColorPalette.js +3 -1
  64. package/lib/util/formatVariantSelector.js +38 -109
  65. package/lib/util/getAllConfigs.js +6 -4
  66. package/lib/util/hashConfig.js +6 -4
  67. package/lib/util/isKeyframeRule.js +3 -1
  68. package/lib/util/isPlainObject.js +4 -2
  69. package/lib/util/isSyntacticallyValidPropertyValue.js +3 -1
  70. package/lib/util/log.js +8 -4
  71. package/lib/util/nameClass.js +12 -6
  72. package/lib/util/negateValue.js +3 -1
  73. package/lib/util/normalizeConfig.js +10 -10
  74. package/lib/util/normalizeScreens.js +12 -4
  75. package/lib/util/parseAnimationValue.js +4 -2
  76. package/lib/util/parseBoxShadowValue.js +6 -2
  77. package/lib/util/parseDependency.js +3 -1
  78. package/lib/util/parseGlob.js +7 -6
  79. package/lib/util/parseObjectStyles.js +9 -7
  80. package/lib/util/pluginUtils.js +44 -19
  81. package/lib/util/prefixSelector.js +6 -4
  82. package/lib/util/pseudoElements.js +212 -0
  83. package/lib/util/removeAlphaVariables.js +3 -1
  84. package/lib/util/resolveConfig.js +10 -8
  85. package/lib/util/resolveConfigPath.js +28 -10
  86. package/lib/util/responsive.js +6 -4
  87. package/lib/util/splitAtTopLevelOnly.js +6 -2
  88. package/lib/util/tap.js +3 -1
  89. package/lib/util/toColorValue.js +3 -1
  90. package/lib/util/toPath.js +3 -1
  91. package/lib/util/transformThemeValue.js +6 -4
  92. package/lib/util/validateConfig.js +16 -3
  93. package/lib/util/validateFormalSyntax.js +3 -1
  94. package/lib/util/withAlphaVariable.js +6 -2
  95. package/lib/value-parser/LICENSE +22 -0
  96. package/lib/value-parser/README.md +3 -0
  97. package/lib/value-parser/index.d.js +2 -0
  98. package/lib/value-parser/index.js +22 -0
  99. package/lib/value-parser/parse.js +259 -0
  100. package/lib/value-parser/stringify.js +38 -0
  101. package/lib/value-parser/unit.js +86 -0
  102. package/lib/value-parser/walk.js +16 -0
  103. package/loadConfig.d.ts +4 -0
  104. package/loadConfig.js +2 -0
  105. package/nesting/index.d.ts +4 -0
  106. package/package.json +35 -42
  107. package/peers/index.js +68941 -50533
  108. package/resolveConfig.d.ts +22 -3
  109. package/scripts/generate-types.js +1 -2
  110. package/src/cli/build/index.js +7 -7
  111. package/src/cli/build/plugin.js +44 -42
  112. package/src/cli/build/watching.js +5 -3
  113. package/src/cli/index.js +8 -26
  114. package/src/cli/init/index.js +37 -8
  115. package/src/cli.js +1 -5
  116. package/src/corePluginList.js +1 -1
  117. package/src/corePlugins.js +299 -79
  118. package/src/css/preflight.css +26 -9
  119. package/src/featureFlags.js +3 -9
  120. package/src/index.js +1 -5
  121. package/src/lib/content.js +87 -0
  122. package/src/lib/defaultExtractor.js +56 -18
  123. package/src/lib/evaluateTailwindFunctions.js +4 -1
  124. package/src/lib/expandApplyAtRules.js +32 -1
  125. package/src/lib/expandTailwindAtRules.js +31 -32
  126. package/src/lib/generateRules.js +66 -32
  127. package/src/lib/getModuleDependencies.js +70 -30
  128. package/src/lib/load-config.ts +55 -0
  129. package/src/lib/offsets.js +61 -2
  130. package/src/lib/resolveDefaultsAtRules.js +16 -14
  131. package/src/lib/setupContextUtils.js +91 -40
  132. package/src/lib/setupTrackingContext.js +6 -8
  133. package/src/lib/sharedState.js +10 -20
  134. package/src/plugin.js +3 -63
  135. package/src/processTailwindFeatures.js +3 -5
  136. package/src/public/colors.js +22 -0
  137. package/src/public/default-config.js +1 -1
  138. package/src/public/default-theme.js +2 -2
  139. package/src/public/load-config.js +2 -0
  140. package/src/util/applyImportantSelector.js +26 -0
  141. package/src/util/cloneNodes.js +35 -14
  142. package/src/util/color.js +2 -2
  143. package/src/util/colorNames.js +150 -0
  144. package/src/util/dataTypes.js +180 -19
  145. package/src/util/formatVariantSelector.js +13 -101
  146. package/src/util/getAllConfigs.js +2 -2
  147. package/src/util/isPlainObject.js +1 -1
  148. package/src/util/normalizeConfig.js +3 -4
  149. package/src/util/parseAnimationValue.js +1 -1
  150. package/src/util/parseGlob.js +1 -2
  151. package/src/util/pluginUtils.js +18 -6
  152. package/src/util/prefixSelector.js +1 -0
  153. package/src/util/pseudoElements.js +171 -0
  154. package/src/util/resolveConfigPath.js +14 -1
  155. package/src/util/splitAtTopLevelOnly.js +4 -1
  156. package/src/util/validateConfig.js +13 -0
  157. package/src/value-parser/LICENSE +22 -0
  158. package/src/value-parser/README.md +3 -0
  159. package/src/value-parser/index.d.ts +177 -0
  160. package/src/value-parser/index.js +28 -0
  161. package/src/value-parser/parse.js +303 -0
  162. package/src/value-parser/stringify.js +41 -0
  163. package/src/value-parser/unit.js +118 -0
  164. package/src/value-parser/walk.js +18 -0
  165. package/stubs/.gitignore +1 -0
  166. package/stubs/.prettierrc.json +6 -0
  167. package/stubs/{defaultConfig.stub.js → config.full.js} +121 -16
  168. package/stubs/{simpleConfig.stub.js → config.simple.js} +0 -1
  169. package/stubs/postcss.config.js +6 -0
  170. package/stubs/tailwind.config.cjs +2 -0
  171. package/stubs/tailwind.config.js +2 -0
  172. package/stubs/tailwind.config.ts +3 -0
  173. package/types/config.d.ts +17 -14
  174. package/types/generated/colors.d.ts +22 -0
  175. package/types/generated/corePluginList.d.ts +1 -1
  176. package/types/generated/default-theme.d.ts +61 -9
  177. package/types/index.d.ts +7 -3
  178. package/lib/constants.js +0 -44
  179. package/lib/lib/detectNesting.js +0 -43
  180. package/lib/oxide/cli/build/deps.js +0 -81
  181. package/lib/oxide/cli/build/index.js +0 -47
  182. package/lib/oxide/cli/build/plugin.js +0 -364
  183. package/lib/oxide/cli/build/utils.js +0 -77
  184. package/lib/oxide/cli/build/watching.js +0 -177
  185. package/lib/oxide/cli/help/index.js +0 -70
  186. package/lib/oxide/cli/index.js +0 -220
  187. package/lib/oxide/cli/init/index.js +0 -35
  188. package/lib/oxide/cli.js +0 -5
  189. package/lib/oxide/postcss-plugin.js +0 -2
  190. package/scripts/swap-engines.js +0 -40
  191. package/src/constants.js +0 -17
  192. package/src/lib/detectNesting.js +0 -47
  193. package/src/oxide/cli/build/deps.ts +0 -91
  194. package/src/oxide/cli/build/index.ts +0 -47
  195. package/src/oxide/cli/build/plugin.ts +0 -436
  196. package/src/oxide/cli/build/utils.ts +0 -74
  197. package/src/oxide/cli/build/watching.ts +0 -225
  198. package/src/oxide/cli/help/index.ts +0 -69
  199. package/src/oxide/cli/index.ts +0 -212
  200. package/src/oxide/cli/init/index.ts +0 -32
  201. package/src/oxide/cli.ts +0 -1
  202. package/src/oxide/postcss-plugin.ts +0 -1
  203. /package/stubs/{defaultPostCssConfig.stub.js → postcss.config.cjs} +0 -0
package/README.md CHANGED
@@ -12,15 +12,14 @@
12
12
  A utility-first CSS framework for rapidly building custom user interfaces.
13
13
  </p>
14
14
 
15
-
16
15
  <p align="center">
17
- <a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci-stable.yml?branch=master" alt="Build Status"></a>
16
+ <a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=main" alt="Build Status"></a>
18
17
  <a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
19
18
  <a href="https://github.com/tailwindcss/tailwindcss/releases"><img src="https://img.shields.io/npm/v/tailwindcss.svg" alt="Latest Release"></a>
20
- <a href="https://github.com/tailwindcss/tailwindcss/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
19
+ <a href="https://github.com/tailwindcss/tailwindcss/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
21
20
  </p>
22
21
 
23
- ------
22
+ ---
24
23
 
25
24
  ## Documentation
26
25
 
@@ -38,4 +37,4 @@ For casual chit-chat with others using the framework:
38
37
 
39
38
  ## Contributing
40
39
 
41
- If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/master/.github/CONTRIBUTING.md) **before submitting a pull request**.
40
+ If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
@@ -10,25 +10,33 @@ function _export(target, all) {
10
10
  });
11
11
  }
12
12
  _export(exports, {
13
- loadPostcss: ()=>loadPostcss,
14
- loadPostcssImport: ()=>loadPostcssImport,
15
- loadCssNano: ()=>loadCssNano,
16
- loadAutoprefixer: ()=>loadAutoprefixer
13
+ loadPostcss: function() {
14
+ return loadPostcss;
15
+ },
16
+ loadPostcssImport: function() {
17
+ return loadPostcssImport;
18
+ },
19
+ loadCssNano: function() {
20
+ return loadCssNano;
21
+ },
22
+ loadAutoprefixer: function() {
23
+ return loadAutoprefixer;
24
+ }
17
25
  });
18
- const _indexJs = require("../../../peers/index.js");
26
+ const _index = require("../../../peers/index.js");
19
27
  function loadPostcss() {
20
28
  // Try to load a local `postcss` version first
21
29
  try {
22
30
  return require("postcss");
23
31
  } catch {}
24
- return (0, _indexJs.lazyPostcss)();
32
+ return (0, _index.lazyPostcss)();
25
33
  }
26
34
  function loadPostcssImport() {
27
35
  // Try to load a local `postcss-import` version first
28
36
  try {
29
37
  return require("postcss-import");
30
38
  } catch {}
31
- return (0, _indexJs.lazyPostcssImport)();
39
+ return (0, _index.lazyPostcssImport)();
32
40
  }
33
41
  function loadCssNano() {
34
42
  let options = {
@@ -43,12 +51,12 @@ function loadCssNano() {
43
51
  try {
44
52
  return require("cssnano");
45
53
  } catch {}
46
- return (0, _indexJs.lazyCssnano)()(options);
54
+ return (0, _index.lazyCssnano)()(options);
47
55
  }
48
56
  function loadAutoprefixer() {
49
57
  // Try to load a local `autoprefixer` version first
50
58
  try {
51
59
  return require("autoprefixer");
52
60
  } catch {}
53
- return (0, _indexJs.lazyAutoprefixer)();
61
+ return (0, _index.lazyAutoprefixer)();
54
62
  }
@@ -5,17 +5,20 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "build", {
7
7
  enumerable: true,
8
- get: ()=>build
8
+ get: function() {
9
+ return build;
10
+ }
9
11
  });
10
- const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
11
- const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
12
- const _pluginJs = require("./plugin.js");
13
- function _interopRequireDefault(obj) {
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, configs) {
21
+ async function build(args) {
19
22
  let input = args["--input"];
20
23
  let shouldWatch = args["--watch"];
21
24
  // TODO: Deprecate this in future versions
@@ -32,8 +35,8 @@ async function build(args, configs) {
32
35
  process.exit(9);
33
36
  }
34
37
  // TODO: Reference the @config path here if exists
35
- let configPath = args["--config"] ? args["--config"] : ((defaultPath)=>_fs.default.existsSync(defaultPath) ? defaultPath : null)(_path.default.resolve(`./${configs.tailwind}`));
36
- let processor = await (0, _pluginJs.createProcessor)(args, configPath);
38
+ let configPath = args["--config"] ? args["--config"] : (0, _resolveConfigPath.resolveDefaultConfigPath)();
39
+ let processor = await (0, _plugin.createProcessor)(args, configPath);
37
40
  if (shouldWatch) {
38
41
  // Abort the watcher if stdin is closed to avoid zombie processes
39
42
  // You can disable this behavior with --watch=always
@@ -43,6 +46,9 @@ async function build(args, configs) {
43
46
  process.stdin.resume();
44
47
  await processor.watch();
45
48
  } else {
46
- await processor.build();
49
+ await processor.build().catch((e)=>{
50
+ console.error(e);
51
+ process.exit(1);
52
+ });
47
53
  }
48
54
  }
@@ -5,28 +5,31 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "createProcessor", {
7
7
  enumerable: true,
8
- get: ()=>createProcessor
8
+ get: function() {
9
+ return createProcessor;
10
+ }
9
11
  });
10
- const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
11
- const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
12
- const _postcssLoadConfig = /*#__PURE__*/ _interopRequireDefault(require("postcss-load-config"));
12
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
+ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
14
+ const _postcssloadconfig = /*#__PURE__*/ _interop_require_default(require("postcss-load-config"));
13
15
  const _lilconfig = require("lilconfig");
14
- const _plugins = /*#__PURE__*/ _interopRequireDefault(require("postcss-load-config/src/plugins" // Little bit scary, looking at private/internal API
16
+ const _plugins = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/plugins" // Little bit scary, looking at private/internal API
15
17
  ));
16
- const _options = /*#__PURE__*/ _interopRequireDefault(require("postcss-load-config/src/options" // Little bit scary, looking at private/internal API
18
+ const _options = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/options" // Little bit scary, looking at private/internal API
17
19
  ));
18
- const _processTailwindFeatures = /*#__PURE__*/ _interopRequireDefault(require("../../processTailwindFeatures"));
20
+ const _processTailwindFeatures = /*#__PURE__*/ _interop_require_default(require("../../processTailwindFeatures"));
19
21
  const _deps = require("./deps");
20
22
  const _utils = require("./utils");
21
23
  const _sharedState = require("../../lib/sharedState");
22
- const _resolveConfigJs = /*#__PURE__*/ _interopRequireDefault(require("../../../resolveConfig.js"));
23
- const _getModuleDependenciesJs = /*#__PURE__*/ _interopRequireDefault(require("../../lib/getModuleDependencies.js"));
24
- const _contentJs = require("../../lib/content.js");
25
- const _watchingJs = require("./watching.js");
26
- const _fastGlob = /*#__PURE__*/ _interopRequireDefault(require("fast-glob"));
27
- const _findAtConfigPathJs = require("../../lib/findAtConfigPath.js");
28
- const _log = /*#__PURE__*/ _interopRequireDefault(require("../../util/log"));
29
- function _interopRequireDefault(obj) {
24
+ const _resolveConfig = /*#__PURE__*/ _interop_require_default(require("../../../resolveConfig.js"));
25
+ const _content = require("../../lib/content.js");
26
+ const _watching = require("./watching.js");
27
+ const _fastglob = /*#__PURE__*/ _interop_require_default(require("fast-glob"));
28
+ const _findAtConfigPath = require("../../lib/findAtConfigPath.js");
29
+ const _log = /*#__PURE__*/ _interop_require_default(require("../../util/log"));
30
+ const _loadconfig = require("../../lib/load-config");
31
+ const _getModuleDependencies = /*#__PURE__*/ _interop_require_default(require("../../lib/getModuleDependencies"));
32
+ function _interop_require_default(obj) {
30
33
  return obj && obj.__esModule ? obj : {
31
34
  default: obj
32
35
  };
@@ -54,7 +57,7 @@ function _interopRequireDefault(obj) {
54
57
  plugins: (0, _plugins.default)(config, file),
55
58
  options: (0, _options.default)(config, file)
56
59
  };
57
- })() : await (0, _postcssLoadConfig.default)();
60
+ })() : await (0, _postcssloadconfig.default)();
58
61
  let configPlugins = config.plugins;
59
62
  let configPluginTailwindIdx = configPlugins.findIndex((plugin)=>{
60
63
  if (typeof plugin === "function" && plugin.name === "tailwindcss") {
@@ -109,12 +112,12 @@ let state = {
109
112
  /** @type {any} */ context: null,
110
113
  /** @type {ReturnType<typeof createWatcher> | null} */ watcher: null,
111
114
  /** @type {{content: string, extension: string}[]} */ changedContent: [],
112
- configDependencies: new Set(),
115
+ /** @type {ReturnType<typeof load> | null} */ configBag: null,
113
116
  contextDependencies: new Set(),
114
117
  /** @type {import('../../lib/content.js').ContentPath[]} */ contentPaths: [],
115
118
  refreshContentPaths () {
116
119
  var _this_context;
117
- this.contentPaths = (0, _contentJs.parseCandidateFiles)(this.context, (_this_context = this.context) === null || _this_context === void 0 ? void 0 : _this_context.tailwindConfig);
120
+ this.contentPaths = (0, _content.parseCandidateFiles)(this.context, (_this_context = this.context) === null || _this_context === void 0 ? void 0 : _this_context.tailwindConfig);
118
121
  },
119
122
  get config () {
120
123
  return this.context.tailwindConfig;
@@ -127,51 +130,49 @@ let state = {
127
130
  },
128
131
  loadConfig (configPath, content) {
129
132
  if (this.watcher && configPath) {
130
- this.refreshConfigDependencies(configPath);
133
+ this.refreshConfigDependencies();
131
134
  }
132
- let config = configPath ? require(configPath) : {};
135
+ let config = (0, _loadconfig.loadConfig)(configPath);
136
+ let dependencies = (0, _getModuleDependencies.default)(configPath);
137
+ this.configBag = {
138
+ config,
139
+ dependencies,
140
+ dispose () {
141
+ for (let file of dependencies){
142
+ delete require.cache[require.resolve(file)];
143
+ }
144
+ }
145
+ };
133
146
  // @ts-ignore
134
- config = (0, _resolveConfigJs.default)(config, {
147
+ this.configBag.config = (0, _resolveConfig.default)(this.configBag.config, {
135
148
  content: {
136
149
  files: []
137
150
  }
138
151
  });
139
152
  // Override content files if `--content` has been passed explicitly
140
153
  if ((content === null || content === void 0 ? void 0 : content.length) > 0) {
141
- config.content.files = content;
154
+ this.configBag.config.content.files = content;
142
155
  }
143
- return config;
156
+ return this.configBag.config;
144
157
  },
145
- refreshConfigDependencies (configPath) {
158
+ refreshConfigDependencies () {
159
+ var _this_configBag;
146
160
  _sharedState.env.DEBUG && console.time("Module dependencies");
147
- for (let file of this.configDependencies){
148
- delete require.cache[require.resolve(file)];
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
- }
161
+ (_this_configBag = this.configBag) === null || _this_configBag === void 0 ? void 0 : _this_configBag.dispose();
156
162
  _sharedState.env.DEBUG && console.timeEnd("Module dependencies");
157
163
  },
158
164
  readContentPaths () {
159
165
  let content = [];
160
166
  // Resolve globs from the content config
161
167
  // TODO: When we make the postcss plugin async-capable this can become async
162
- let files = _fastGlob.default.sync(this.contentPatterns.all);
168
+ let files = _fastglob.default.sync(this.contentPatterns.all);
169
+ let checkBroadPattern = (0, _content.createBroadPatternCheck)(this.contentPatterns.all);
163
170
  for (let file of files){
164
- if (_sharedState.env.OXIDE) {
165
- content.push({
166
- file,
167
- extension: _path.default.extname(file).slice(1)
168
- });
169
- } else {
170
- content.push({
171
- content: _fs.default.readFileSync(_path.default.resolve(file), "utf8"),
172
- extension: _path.default.extname(file).slice(1)
173
- });
174
- }
171
+ checkBroadPattern(file);
172
+ content.push({
173
+ content: _fs.default.readFileSync(_path.default.resolve(file), "utf8"),
174
+ extension: _path.default.extname(file).slice(1)
175
+ });
175
176
  }
176
177
  // Resolve raw content in the tailwind config
177
178
  let rawContent = this.config.content.files.filter((file)=>{
@@ -186,14 +187,14 @@ let state = {
186
187
  return content;
187
188
  },
188
189
  getContext ({ createContext , cliConfigPath , root , result , content }) {
190
+ _sharedState.env.DEBUG && console.time("Searching for config");
191
+ var _findAtConfigPath1;
192
+ let configPath = (_findAtConfigPath1 = (0, _findAtConfigPath.findAtConfigPath)(root, result)) !== null && _findAtConfigPath1 !== void 0 ? _findAtConfigPath1 : cliConfigPath;
193
+ _sharedState.env.DEBUG && console.timeEnd("Searching for config");
189
194
  if (this.context) {
190
195
  this.context.changedContent = this.changedContent.splice(0);
191
196
  return this.context;
192
197
  }
193
- _sharedState.env.DEBUG && console.time("Searching for config");
194
- var _findAtConfigPath;
195
- let configPath = (_findAtConfigPath = (0, _findAtConfigPathJs.findAtConfigPath)(root, result)) !== null && _findAtConfigPath !== void 0 ? _findAtConfigPath : cliConfigPath;
196
- _sharedState.env.DEBUG && console.timeEnd("Searching for config");
197
198
  _sharedState.env.DEBUG && console.time("Loading config");
198
199
  let config = this.loadConfig(configPath, content);
199
200
  _sharedState.env.DEBUG && console.timeEnd("Loading config");
@@ -239,9 +240,9 @@ async function createProcessor(args, cliConfigPath) {
239
240
  let tailwindPlugin = ()=>{
240
241
  return {
241
242
  postcssPlugin: "tailwindcss",
242
- Once (root, { result }) {
243
+ async Once (root, { result }) {
243
244
  _sharedState.env.DEBUG && console.time("Compiling CSS");
244
- (0, _processTailwindFeatures.default)(({ createContext })=>{
245
+ await (0, _processTailwindFeatures.default)(({ createContext })=>{
245
246
  console.error();
246
247
  console.error("Rebuilding...");
247
248
  return ()=>{
@@ -278,7 +279,7 @@ async function createProcessor(args, cliConfigPath) {
278
279
  if (input) {
279
280
  return _fs.default.promises.readFile(_path.default.resolve(input), "utf8");
280
281
  }
281
- // No input file provided, fallback to default atrules
282
+ // No input file provided, fallback to default at-rules
282
283
  return "@tailwind base; @tailwind components; @tailwind utilities";
283
284
  }
284
285
  async function build() {
@@ -326,7 +327,11 @@ async function createProcessor(args, cliConfigPath) {
326
327
  // If you fix it and then save the main CSS file so there's no error
327
328
  // The watcher will start watching the imported CSS files and will be
328
329
  // resilient to future errors.
329
- console.error(err);
330
+ if (state.watcher) {
331
+ console.error(err);
332
+ } else {
333
+ return Promise.reject(err);
334
+ }
330
335
  });
331
336
  }
332
337
  /**
@@ -343,13 +348,14 @@ async function createProcessor(args, cliConfigPath) {
343
348
  return {
344
349
  build,
345
350
  watch: async ()=>{
346
- state.watcher = (0, _watchingJs.createWatcher)(args, {
351
+ state.watcher = (0, _watching.createWatcher)(args, {
347
352
  state,
348
353
  /**
349
354
  * @param {{file: string, content(): Promise<string>, extension: string}[]} changes
350
355
  */ async rebuild (changes) {
351
356
  let needsNewContext = changes.some((change)=>{
352
- return state.configDependencies.has(change.file) || state.contextDependencies.has(change.file);
357
+ var _state_configBag;
358
+ return ((_state_configBag = state.configBag) === null || _state_configBag === void 0 ? void 0 : _state_configBag.dependencies.has(change.file)) || state.contextDependencies.has(change.file);
353
359
  });
354
360
  if (needsNewContext) {
355
361
  state.context = null;
@@ -10,15 +10,25 @@ function _export(target, all) {
10
10
  });
11
11
  }
12
12
  _export(exports, {
13
- indentRecursive: ()=>indentRecursive,
14
- formatNodes: ()=>formatNodes,
15
- readFileWithRetries: ()=>readFileWithRetries,
16
- drainStdin: ()=>drainStdin,
17
- outputFile: ()=>outputFile
13
+ indentRecursive: function() {
14
+ return indentRecursive;
15
+ },
16
+ formatNodes: function() {
17
+ return formatNodes;
18
+ },
19
+ readFileWithRetries: function() {
20
+ return readFileWithRetries;
21
+ },
22
+ drainStdin: function() {
23
+ return drainStdin;
24
+ },
25
+ outputFile: function() {
26
+ return outputFile;
27
+ }
18
28
  });
19
- const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
20
- const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
21
- function _interopRequireDefault(obj) {
29
+ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
30
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
31
+ function _interop_require_default(obj) {
22
32
  return obj && obj.__esModule ? obj : {
23
33
  default: obj
24
34
  };
@@ -5,15 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "createWatcher", {
7
7
  enumerable: true,
8
- get: ()=>createWatcher
8
+ get: function() {
9
+ return createWatcher;
10
+ }
9
11
  });
10
- const _chokidar = /*#__PURE__*/ _interopRequireDefault(require("chokidar"));
11
- const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
12
- const _micromatch = /*#__PURE__*/ _interopRequireDefault(require("micromatch"));
13
- const _normalizePath = /*#__PURE__*/ _interopRequireDefault(require("normalize-path"));
14
- const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
15
- const _utilsJs = require("./utils.js");
16
- function _interopRequireDefault(obj) {
12
+ const _chokidar = /*#__PURE__*/ _interop_require_default(require("chokidar"));
13
+ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
14
+ const _micromatch = /*#__PURE__*/ _interop_require_default(require("micromatch"));
15
+ const _normalizepath = /*#__PURE__*/ _interop_require_default(require("normalize-path"));
16
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
17
+ const _utils = require("./utils.js");
18
+ function _interop_require_default(obj) {
17
19
  return obj && obj.__esModule ? obj : {
18
20
  default: obj
19
21
  };
@@ -64,7 +66,9 @@ function createWatcher(args, { state , rebuild }) {
64
66
  // Clear all pending rebuilds for the about-to-be-built files
65
67
  changes.forEach((change)=>pendingRebuilds.delete(change.file));
66
68
  // Resolve the promise even when the rebuild fails
67
- return rebuild(changes).then(()=>{}, ()=>{});
69
+ return rebuild(changes).then(()=>{}, (e)=>{
70
+ console.error(e.toString());
71
+ });
68
72
  }
69
73
  /**
70
74
  *
@@ -109,7 +113,7 @@ function createWatcher(args, { state , rebuild }) {
109
113
  // This can happen when a file is pseudo-atomically replaced (a copy is created, overwritten, the old one is unlinked, and the new one is renamed)
110
114
  // TODO: An an optimization we should allow removal when the config changes
111
115
  watcher.on("unlink", (file)=>{
112
- file = (0, _normalizePath.default)(file);
116
+ file = (0, _normalizepath.default)(file);
113
117
  // Only re-add the file if it's not covered by a dynamic pattern
114
118
  if (!_micromatch.default.some([
115
119
  file
@@ -122,7 +126,7 @@ function createWatcher(args, { state , rebuild }) {
122
126
  // This is very likely a chokidar bug but it's one we need to work around
123
127
  // We treat this as a change event and rebuild the CSS
124
128
  watcher.on("raw", (evt, filePath, meta)=>{
125
- if (evt !== "rename") {
129
+ if (evt !== "rename" || filePath === null) {
126
130
  return;
127
131
  }
128
132
  let watchedPath = meta.watchedPath;
@@ -148,7 +152,7 @@ function createWatcher(args, { state , rebuild }) {
148
152
  // We need to read the file as early as possible outside of the chain
149
153
  // because it may be gone by the time we get to it. doing the read
150
154
  // immediately increases the chance that the file is still there
151
- let content = await (0, _utilsJs.readFileWithRetries)(_path.default.resolve(filePath));
155
+ let content = await (0, _utils.readFileWithRetries)(_path.default.resolve(filePath));
152
156
  if (content === undefined) {
153
157
  return;
154
158
  }
@@ -171,7 +175,7 @@ function createWatcher(args, { state , rebuild }) {
171
175
  fswatcher: watcher,
172
176
  refreshWatchedFiles () {
173
177
  watcher.add(Array.from(state.contextDependencies));
174
- watcher.add(Array.from(state.configDependencies));
178
+ watcher.add(Array.from(state.configBag.dependencies));
175
179
  watcher.add(state.contentPatterns.all);
176
180
  }
177
181
  };
@@ -5,10 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "help", {
7
7
  enumerable: true,
8
- get: ()=>help
8
+ get: function() {
9
+ return help;
10
+ }
9
11
  });
10
- const _packageJson = /*#__PURE__*/ _interopRequireDefault(require("../../../package.json"));
11
- function _interopRequireDefault(obj) {
12
+ const _packagejson = /*#__PURE__*/ _interop_require_default(require("../../../package.json"));
13
+ function _interop_require_default(obj) {
12
14
  return obj && obj.__esModule ? obj : {
13
15
  default: obj
14
16
  };
@@ -17,7 +19,7 @@ function help({ message , usage , commands , options }) {
17
19
  let indent = 2;
18
20
  // Render header
19
21
  console.log();
20
- console.log(`${_packageJson.default.name} v${_packageJson.default.version}`);
22
+ console.log(`${_packagejson.default.name} v${_packagejson.default.version}`);
21
23
  // Render message
22
24
  if (message) {
23
25
  console.log();
package/lib/cli/index.js CHANGED
@@ -3,34 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
7
- const _arg = /*#__PURE__*/ _interopRequireDefault(require("arg"));
8
- const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
6
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
7
+ const _arg = /*#__PURE__*/ _interop_require_default(require("arg"));
8
+ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
9
9
  const _build = require("./build");
10
10
  const _help = require("./help");
11
11
  const _init = require("./init");
12
- function _interopRequireDefault(obj) {
12
+ function _interop_require_default(obj) {
13
13
  return obj && obj.__esModule ? obj : {
14
14
  default: obj
15
15
  };
16
16
  }
17
- function isESM() {
18
- const pkgPath = _path.default.resolve("./package.json");
19
- try {
20
- let pkg = JSON.parse(_fs.default.readFileSync(pkgPath, "utf8"));
21
- return pkg.type && pkg.type === "module";
22
- } catch (err) {
23
- return false;
24
- }
25
- }
26
- let configs = isESM() ? {
27
- tailwind: "tailwind.config.cjs",
28
- postcss: "postcss.config.cjs"
29
- } : {
30
- tailwind: "tailwind.config.js",
31
- postcss: "postcss.config.js"
32
- };
33
- // ---
34
17
  function oneOf(...options) {
35
18
  return Object.assign((value = true)=>{
36
19
  for (let option of options){
@@ -48,13 +31,21 @@ let commands = {
48
31
  init: {
49
32
  run: _init.init,
50
33
  args: {
51
- "--full": {
34
+ "--esm": {
52
35
  type: Boolean,
53
- description: `Initialize a full \`${configs.tailwind}\` file`
36
+ description: `Initialize configuration file as ESM`
37
+ },
38
+ "--ts": {
39
+ type: Boolean,
40
+ description: `Initialize configuration file as TypeScript`
54
41
  },
55
42
  "--postcss": {
56
43
  type: Boolean,
57
- description: `Initialize a \`${configs.postcss}\` file`
44
+ description: `Initialize a \`postcss.config.js\` file`
45
+ },
46
+ "--full": {
47
+ type: Boolean,
48
+ description: `Include the default values for all options in the generated configuration file`
58
49
  },
59
50
  "-f": "--full",
60
51
  "-p": "--postcss"
@@ -236,4 +227,4 @@ if (args["--help"]) {
236
227
  });
237
228
  process.exit(0);
238
229
  }
239
- run(args, configs);
230
+ run(args);
@@ -5,35 +5,52 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "init", {
7
7
  enumerable: true,
8
- get: ()=>init
8
+ get: function() {
9
+ return init;
10
+ }
9
11
  });
10
- const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
11
- const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
12
- function _interopRequireDefault(obj) {
12
+ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
13
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
14
+ function _interop_require_default(obj) {
13
15
  return obj && obj.__esModule ? obj : {
14
16
  default: obj
15
17
  };
16
18
  }
17
- function init(args, configs) {
19
+ function isESM() {
20
+ const pkgPath = _path.default.resolve("./package.json");
21
+ try {
22
+ let pkg = JSON.parse(_fs.default.readFileSync(pkgPath, "utf8"));
23
+ return pkg.type && pkg.type === "module";
24
+ } catch (err) {
25
+ return false;
26
+ }
27
+ }
28
+ function init(args) {
18
29
  let messages = [];
30
+ let isProjectESM = args["--ts"] || args["--esm"] || isESM();
31
+ let syntax = args["--ts"] ? "ts" : isProjectESM ? "js" : "cjs";
32
+ let extension = args["--ts"] ? "ts" : "js";
19
33
  var _args___;
20
- let tailwindConfigLocation = _path.default.resolve((_args___ = args["_"][1]) !== null && _args___ !== void 0 ? _args___ : `./${configs.tailwind}`);
34
+ let tailwindConfigLocation = _path.default.resolve((_args___ = args["_"][1]) !== null && _args___ !== void 0 ? _args___ : `./tailwind.config.${extension}`);
21
35
  if (_fs.default.existsSync(tailwindConfigLocation)) {
22
36
  messages.push(`${_path.default.basename(tailwindConfigLocation)} already exists.`);
23
37
  } else {
24
- let stubFile = _fs.default.readFileSync(args["--full"] ? _path.default.resolve(__dirname, "../../../stubs/defaultConfig.stub.js") : _path.default.resolve(__dirname, "../../../stubs/simpleConfig.stub.js"), "utf8");
38
+ let stubContentsFile = _fs.default.readFileSync(args["--full"] ? _path.default.resolve(__dirname, "../../../stubs/config.full.js") : _path.default.resolve(__dirname, "../../../stubs/config.simple.js"), "utf8");
39
+ let stubFile = _fs.default.readFileSync(_path.default.resolve(__dirname, `../../../stubs/tailwind.config.${syntax}`), "utf8");
25
40
  // Change colors import
26
- stubFile = stubFile.replace("../colors", "tailwindcss/colors");
41
+ stubContentsFile = stubContentsFile.replace("../colors", "tailwindcss/colors");
42
+ // Replace contents of {ts,js,cjs} file with the stub {simple,full}.
43
+ stubFile = stubFile.replace("__CONFIG__", stubContentsFile.replace("module.exports =", "").trim()).trim() + "\n\n";
27
44
  _fs.default.writeFileSync(tailwindConfigLocation, stubFile, "utf8");
28
45
  messages.push(`Created Tailwind CSS config file: ${_path.default.basename(tailwindConfigLocation)}`);
29
46
  }
30
47
  if (args["--postcss"]) {
31
- let postcssConfigLocation = _path.default.resolve(`./${configs.postcss}`);
48
+ let postcssConfigLocation = _path.default.resolve("./postcss.config.js");
32
49
  if (_fs.default.existsSync(postcssConfigLocation)) {
33
50
  messages.push(`${_path.default.basename(postcssConfigLocation)} already exists.`);
34
51
  } else {
35
- let stubFile1 = _fs.default.readFileSync(_path.default.resolve(__dirname, "../../../stubs/defaultPostCssConfig.stub.js"), "utf8");
36
- _fs.default.writeFileSync(postcssConfigLocation, stubFile1, "utf8");
52
+ let stubFile = _fs.default.readFileSync(isProjectESM ? _path.default.resolve(__dirname, "../../../stubs/postcss.config.js") : _path.default.resolve(__dirname, "../../../stubs/postcss.config.cjs"), "utf8");
53
+ _fs.default.writeFileSync(postcssConfigLocation, stubFile, "utf8");
37
54
  messages.push(`Created PostCSS config file: ${_path.default.basename(postcssConfigLocation)}`);
38
55
  }
39
56
  }
@@ -9,10 +9,18 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- lazyPostcss: ()=>lazyPostcss,
13
- lazyPostcssImport: ()=>lazyPostcssImport,
14
- lazyAutoprefixer: ()=>lazyAutoprefixer,
15
- lazyCssnano: ()=>lazyCssnano
12
+ lazyPostcss: function() {
13
+ return lazyPostcss;
14
+ },
15
+ lazyPostcssImport: function() {
16
+ return lazyPostcssImport;
17
+ },
18
+ lazyAutoprefixer: function() {
19
+ return lazyAutoprefixer;
20
+ },
21
+ lazyCssnano: function() {
22
+ return lazyCssnano;
23
+ }
16
24
  });
17
25
  function lazyPostcss() {
18
26
  return require("postcss");
package/lib/cli.js CHANGED
@@ -1,7 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- if (process.env.OXIDE) {
4
- module.exports = require("./oxide/cli");
5
- } else {
6
- module.exports = require("./cli/index");
7
- }
3
+ module.exports = require("./cli/index");