tailwindcss 0.0.0-insiders.fda68f7 → 0.0.0-oxide.6bf5e56

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 (195) hide show
  1. package/CHANGELOG.md +603 -2
  2. package/LICENSE +1 -2
  3. package/README.md +14 -6
  4. package/colors.d.ts +3 -0
  5. package/colors.js +2 -304
  6. package/defaultConfig.d.ts +3 -0
  7. package/defaultConfig.js +2 -4
  8. package/defaultTheme.d.ts +4 -0
  9. package/defaultTheme.js +2 -4
  10. package/lib/cli/build/deps.js +54 -0
  11. package/lib/cli/build/index.js +48 -0
  12. package/lib/cli/build/plugin.js +367 -0
  13. package/lib/cli/build/utils.js +78 -0
  14. package/lib/cli/build/watching.js +178 -0
  15. package/lib/cli/help/index.js +71 -0
  16. package/lib/cli/index.js +18 -0
  17. package/lib/cli/init/index.js +46 -0
  18. package/lib/cli/shared.js +13 -0
  19. package/lib/cli-peer-dependencies.js +22 -14
  20. package/lib/cli.js +217 -743
  21. package/lib/constants.js +41 -34
  22. package/lib/corePluginList.js +178 -5
  23. package/lib/corePlugins.js +3879 -2941
  24. package/lib/css/preflight.css +22 -9
  25. package/lib/featureFlags.js +61 -50
  26. package/lib/index.js +45 -28
  27. package/lib/lib/cacheInvalidation.js +90 -0
  28. package/lib/lib/collapseAdjacentRules.js +52 -36
  29. package/lib/lib/collapseDuplicateDeclarations.js +83 -0
  30. package/lib/lib/content.js +176 -0
  31. package/lib/lib/defaultExtractor.js +236 -0
  32. package/lib/lib/detectNesting.js +37 -0
  33. package/lib/lib/evaluateTailwindFunctions.js +203 -161
  34. package/lib/lib/expandApplyAtRules.js +502 -221
  35. package/lib/lib/expandTailwindAtRules.js +258 -243
  36. package/lib/lib/findAtConfigPath.js +44 -0
  37. package/lib/lib/generateRules.js +775 -320
  38. package/lib/lib/getModuleDependencies.js +44 -46
  39. package/lib/lib/normalizeTailwindDirectives.js +79 -60
  40. package/lib/lib/offsets.js +217 -0
  41. package/lib/lib/partitionApplyAtRules.js +56 -0
  42. package/lib/lib/regex.js +60 -0
  43. package/lib/lib/resolveDefaultsAtRules.js +150 -94
  44. package/lib/lib/setupContextUtils.js +1146 -599
  45. package/lib/lib/setupTrackingContext.js +129 -177
  46. package/lib/lib/sharedState.js +53 -21
  47. package/lib/lib/substituteScreenAtRules.js +26 -28
  48. package/{nesting → lib/postcss-plugins/nesting}/README.md +2 -2
  49. package/lib/postcss-plugins/nesting/index.js +19 -0
  50. package/lib/postcss-plugins/nesting/plugin.js +87 -0
  51. package/lib/processTailwindFeatures.js +58 -53
  52. package/lib/public/colors.js +331 -0
  53. package/lib/public/create-plugin.js +15 -0
  54. package/lib/public/default-config.js +16 -0
  55. package/lib/public/default-theme.js +16 -0
  56. package/lib/public/resolve-config.js +22 -0
  57. package/lib/util/bigSign.js +7 -6
  58. package/lib/util/buildMediaQuery.js +21 -32
  59. package/lib/util/cloneDeep.js +16 -14
  60. package/lib/util/cloneNodes.js +29 -15
  61. package/lib/util/color.js +90 -66
  62. package/lib/util/configurePlugins.js +17 -15
  63. package/lib/util/createPlugin.js +23 -26
  64. package/lib/util/createUtilityPlugin.js +46 -46
  65. package/lib/util/dataTypes.js +242 -0
  66. package/lib/util/defaults.js +20 -15
  67. package/lib/util/escapeClassName.js +18 -17
  68. package/lib/util/escapeCommas.js +7 -6
  69. package/lib/util/flattenColorPalette.js +13 -12
  70. package/lib/util/formatVariantSelector.js +285 -0
  71. package/lib/util/getAllConfigs.js +44 -18
  72. package/lib/util/hashConfig.js +15 -12
  73. package/lib/util/isKeyframeRule.js +7 -6
  74. package/lib/util/isPlainObject.js +11 -11
  75. package/lib/util/isSyntacticallyValidPropertyValue.js +72 -0
  76. package/lib/util/log.js +52 -33
  77. package/lib/util/nameClass.js +37 -26
  78. package/lib/util/negateValue.js +31 -17
  79. package/lib/util/normalizeConfig.js +281 -0
  80. package/lib/util/normalizeScreens.js +170 -0
  81. package/lib/util/parseAnimationValue.js +85 -54
  82. package/lib/util/parseBoxShadowValue.js +84 -0
  83. package/lib/util/parseDependency.js +41 -70
  84. package/lib/util/parseGlob.js +34 -0
  85. package/lib/util/parseObjectStyles.js +30 -24
  86. package/lib/util/pluginUtils.js +252 -287
  87. package/lib/util/prefixSelector.js +20 -20
  88. package/lib/util/removeAlphaVariables.js +29 -0
  89. package/lib/util/resolveConfig.js +221 -256
  90. package/lib/util/resolveConfigPath.js +43 -48
  91. package/lib/util/responsive.js +18 -14
  92. package/lib/util/splitAtTopLevelOnly.js +43 -0
  93. package/lib/util/tap.js +8 -7
  94. package/lib/util/toColorValue.js +7 -6
  95. package/lib/util/toPath.js +27 -8
  96. package/lib/util/transformThemeValue.js +67 -28
  97. package/lib/util/validateConfig.js +24 -0
  98. package/lib/util/validateFormalSyntax.js +24 -0
  99. package/lib/util/withAlphaVariable.js +67 -57
  100. package/nesting/index.js +2 -12
  101. package/package.json +60 -65
  102. package/peers/index.js +76445 -84221
  103. package/plugin.d.ts +11 -0
  104. package/plugin.js +1 -2
  105. package/resolveConfig.d.ts +12 -0
  106. package/resolveConfig.js +2 -7
  107. package/scripts/create-plugin-list.js +2 -2
  108. package/scripts/generate-types.js +105 -0
  109. package/scripts/release-channel.js +18 -0
  110. package/scripts/release-notes.js +21 -0
  111. package/scripts/type-utils.js +27 -0
  112. package/src/cli/build/deps.js +56 -0
  113. package/src/cli/build/index.js +49 -0
  114. package/src/cli/build/plugin.js +439 -0
  115. package/src/cli/build/utils.js +76 -0
  116. package/src/cli/build/watching.js +227 -0
  117. package/src/cli/help/index.js +70 -0
  118. package/src/cli/index.js +3 -0
  119. package/src/cli/init/index.js +50 -0
  120. package/src/cli/shared.js +6 -0
  121. package/src/cli-peer-dependencies.js +7 -1
  122. package/src/cli.js +50 -575
  123. package/src/corePluginList.js +1 -1
  124. package/src/corePlugins.js +2405 -1948
  125. package/src/css/preflight.css +22 -9
  126. package/src/featureFlags.js +26 -10
  127. package/src/index.js +19 -6
  128. package/src/lib/cacheInvalidation.js +52 -0
  129. package/src/lib/collapseAdjacentRules.js +21 -2
  130. package/src/lib/collapseDuplicateDeclarations.js +93 -0
  131. package/src/lib/content.js +212 -0
  132. package/src/lib/defaultExtractor.js +211 -0
  133. package/src/lib/detectNesting.js +39 -0
  134. package/src/lib/evaluateTailwindFunctions.js +84 -10
  135. package/src/lib/expandApplyAtRules.js +508 -153
  136. package/src/lib/expandTailwindAtRules.js +130 -104
  137. package/src/lib/findAtConfigPath.js +48 -0
  138. package/src/lib/generateRules.js +596 -70
  139. package/src/lib/normalizeTailwindDirectives.js +10 -3
  140. package/src/lib/offsets.js +270 -0
  141. package/src/lib/partitionApplyAtRules.js +52 -0
  142. package/src/lib/regex.js +74 -0
  143. package/src/lib/resolveDefaultsAtRules.js +105 -47
  144. package/src/lib/setupContextUtils.js +828 -196
  145. package/src/lib/setupTrackingContext.js +19 -54
  146. package/src/lib/sharedState.js +45 -7
  147. package/src/lib/substituteScreenAtRules.js +6 -3
  148. package/src/postcss-plugins/nesting/README.md +42 -0
  149. package/src/postcss-plugins/nesting/index.js +13 -0
  150. package/src/postcss-plugins/nesting/plugin.js +80 -0
  151. package/src/processTailwindFeatures.js +19 -2
  152. package/src/public/colors.js +300 -0
  153. package/src/public/create-plugin.js +2 -0
  154. package/src/public/default-config.js +4 -0
  155. package/src/public/default-theme.js +4 -0
  156. package/src/public/resolve-config.js +7 -0
  157. package/src/util/buildMediaQuery.js +14 -16
  158. package/src/util/cloneNodes.js +19 -2
  159. package/src/util/color.js +31 -14
  160. package/src/util/createUtilityPlugin.js +2 -11
  161. package/src/util/dataTypes.js +256 -0
  162. package/src/util/defaults.js +6 -0
  163. package/src/util/formatVariantSelector.js +319 -0
  164. package/src/util/getAllConfigs.js +19 -0
  165. package/src/util/isSyntacticallyValidPropertyValue.js +61 -0
  166. package/src/util/log.js +23 -22
  167. package/src/util/nameClass.js +14 -6
  168. package/src/util/negateValue.js +15 -5
  169. package/src/util/normalizeConfig.js +300 -0
  170. package/src/util/normalizeScreens.js +140 -0
  171. package/src/util/parseAnimationValue.js +7 -1
  172. package/src/util/parseBoxShadowValue.js +72 -0
  173. package/src/util/parseDependency.js +37 -38
  174. package/src/util/parseGlob.js +24 -0
  175. package/src/util/pluginUtils.js +216 -197
  176. package/src/util/prefixSelector.js +7 -8
  177. package/src/util/removeAlphaVariables.js +24 -0
  178. package/src/util/resolveConfig.js +86 -91
  179. package/src/util/splitAtTopLevelOnly.js +45 -0
  180. package/src/util/toPath.js +23 -1
  181. package/src/util/transformThemeValue.js +33 -8
  182. package/src/util/validateConfig.js +13 -0
  183. package/src/util/validateFormalSyntax.js +34 -0
  184. package/src/util/withAlphaVariable.js +14 -9
  185. package/stubs/defaultConfig.stub.js +186 -117
  186. package/stubs/simpleConfig.stub.js +1 -1
  187. package/types/config.d.ts +362 -0
  188. package/types/generated/.gitkeep +0 -0
  189. package/types/generated/colors.d.ts +276 -0
  190. package/types/generated/corePluginList.d.ts +1 -0
  191. package/types/generated/default-theme.d.ts +342 -0
  192. package/types/index.d.ts +7 -0
  193. package/lib/lib/setupWatchingContext.js +0 -331
  194. package/nesting/plugin.js +0 -41
  195. package/src/lib/setupWatchingContext.js +0 -306
package/plugin.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import type { Config, PluginCreator } from './types/config'
2
+ type Plugin = {
3
+ withOptions<T>(
4
+ plugin: (options: T) => PluginCreator,
5
+ config?: (options: T) => Partial<Config>
6
+ ): { (options: T): { handler: PluginCreator; config?: Partial<Config> }; __isOptionsFunction: true }
7
+ (plugin: PluginCreator, config?: Partial<Config>): { handler: PluginCreator; config?: Partial<Config> }
8
+ }
9
+
10
+ declare const plugin: Plugin
11
+ export = plugin
package/plugin.js CHANGED
@@ -1,3 +1,2 @@
1
- const createPlugin = require('./lib/util/createPlugin')
2
-
1
+ let createPlugin = require('./lib/public/create-plugin')
3
2
  module.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default
@@ -0,0 +1,12 @@
1
+ import type { Config, ResolvableTo } from './types/config'
2
+
3
+ type UnwrapResolvables<T> = {
4
+ [K in keyof T]: T[K] extends ResolvableTo<infer R> ? R : T[K]
5
+ }
6
+
7
+ type ResolvedConfig<T extends Config> = Omit<T, 'theme'> & {
8
+ theme: UnwrapResolvables<T['theme']>
9
+ }
10
+
11
+ declare function resolveConfig<T extends Config>(config: T): ResolvedConfig<T>
12
+ export = resolveConfig
package/resolveConfig.js CHANGED
@@ -1,7 +1,2 @@
1
- const resolveConfigObjects = require('./lib/util/resolveConfig').default
2
- const getAllConfigs = require('./lib/util/getAllConfigs').default
3
-
4
- module.exports = function resolveConfig(...configs) {
5
- const [, ...defaultConfigs] = getAllConfigs(configs[0])
6
- return resolveConfigObjects([...configs, ...defaultConfigs])
7
- }
1
+ let resolveConfig = require('./lib/public/resolve-config')
2
+ module.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default
@@ -1,8 +1,8 @@
1
- import * as corePlugins from '../src/corePlugins'
1
+ import { corePlugins } from '../src/corePlugins'
2
2
  import fs from 'fs'
3
3
  import path from 'path'
4
4
 
5
- let corePluginList = Object.keys(corePlugins).filter((plugin) => !plugin.includes('Variants'))
5
+ let corePluginList = Object.keys(corePlugins)
6
6
 
7
7
  fs.writeFileSync(
8
8
  path.join(process.cwd(), 'src', 'corePluginList.js'),
@@ -0,0 +1,105 @@
1
+ import prettier from 'prettier'
2
+ import { corePlugins } from '../src/corePlugins'
3
+ import colors from '../src/public/colors'
4
+ import defaultTheme from '../src/public/default-theme'
5
+ import fs from 'fs'
6
+ import path from 'path'
7
+ import * as types from './type-utils'
8
+
9
+ fs.writeFileSync(
10
+ path.join(process.cwd(), 'types', 'generated', 'corePluginList.d.ts'),
11
+ `export type CorePluginList = ${Object.keys(corePlugins)
12
+ .map((p) => `'${p}'`)
13
+ .join(' | ')}`
14
+ )
15
+
16
+ let colorsWithoutDeprecatedColors = Object.fromEntries(
17
+ Object.entries(Object.getOwnPropertyDescriptors(colors))
18
+ .filter(([_, { value }]) => {
19
+ return typeof value !== 'undefined'
20
+ })
21
+ .map(([name, definition]) => [name, definition.value])
22
+ )
23
+
24
+ let deprecatedColors = Object.entries(Object.getOwnPropertyDescriptors(colors))
25
+ .filter(([_, { value }]) => {
26
+ return typeof value === 'undefined'
27
+ })
28
+ .map(([name, definition]) => {
29
+ let warn = console.warn
30
+ let messages = []
31
+ console.warn = (...args) => messages.push(args.pop())
32
+ definition.get()
33
+ console.warn = warn
34
+ let message = messages.join(' ').trim()
35
+ let newColor = message.match(/renamed to `(.*)`/)[1]
36
+ return `/** @deprecated ${message} */${name}: DefaultColors['${newColor}'],`
37
+ })
38
+ .join('\n')
39
+
40
+ fs.writeFileSync(
41
+ path.join(process.cwd(), 'types', 'generated', 'colors.d.ts'),
42
+ prettier.format(
43
+ `export interface DefaultColors { ${JSON.stringify(colorsWithoutDeprecatedColors).slice(
44
+ 1,
45
+ -1
46
+ )}\n${deprecatedColors}\n}`,
47
+ {
48
+ semi: false,
49
+ singleQuote: true,
50
+ printWidth: 100,
51
+ parser: 'typescript',
52
+ }
53
+ )
54
+ )
55
+
56
+ const defaultThemeTypes = Object.entries(defaultTheme)
57
+ .map(([name, value]) => {
58
+ // Special cases for slightly more accurate types
59
+ if (name === 'keyframes') {
60
+ return [name, `Record<${types.forKeys(value)}, Record<string, CSSDeclarationList>>`]
61
+ }
62
+
63
+ if (name === 'fontSize') {
64
+ return [name, `Record<${types.forKeys(value)}, [string, { lineHeight: string }]>`]
65
+ }
66
+
67
+ // General cases
68
+ if (typeof value === 'string') {
69
+ return [name, `string`]
70
+ }
71
+
72
+ if (typeof value === 'function') {
73
+ return [name, null]
74
+ }
75
+
76
+ if (typeof value === 'object') {
77
+ if (Object.keys(value).length === 0) {
78
+ return [name, null]
79
+ }
80
+
81
+ return [name, types.forValue(value)]
82
+ }
83
+
84
+ return [name, `unknown`]
85
+ })
86
+ .filter(([, type]) => type !== null)
87
+ .map(([name, type]) => `${name}: ${type}`)
88
+ .join('\n')
89
+
90
+ fs.writeFileSync(
91
+ path.join(process.cwd(), 'types', 'generated', 'default-theme.d.ts'),
92
+ prettier.format(
93
+ `
94
+ import { Config } from '../../types'
95
+ type CSSDeclarationList = Record<string, string>
96
+ export type DefaultTheme = Config['theme'] & { ${defaultThemeTypes} }
97
+ `,
98
+ {
99
+ semi: false,
100
+ singleQuote: true,
101
+ printWidth: 100,
102
+ parser: 'typescript',
103
+ }
104
+ )
105
+ )
@@ -0,0 +1,18 @@
1
+ // Given a version, figure out what the release channel is so that we can publish to the correct
2
+ // channel on npm.
3
+ //
4
+ // E.g.:
5
+ //
6
+ // 1.2.3 -> latest (default)
7
+ // 0.0.0-insiders.ffaa88 -> insiders
8
+ // 4.1.0-alpha.4 -> alpha
9
+
10
+ let version =
11
+ process.argv[2] || process.env.npm_package_version || require('../package.json').version
12
+
13
+ let match = /\d+\.\d+\.\d+-(.*)\.\d+/g.exec(version)
14
+ if (match) {
15
+ console.log(match[1])
16
+ } else {
17
+ console.log('latest')
18
+ }
@@ -0,0 +1,21 @@
1
+ // Given a version, figure out what the release notes are so that we can use this to pre-fill the
2
+ // relase notes on a GitHub release for the current version.
3
+
4
+ let path = require('path')
5
+ let fs = require('fs')
6
+
7
+ let version =
8
+ process.argv[2] || process.env.npm_package_version || require('../package.json').version
9
+
10
+ let changelog = fs.readFileSync(path.resolve(__dirname, '..', 'CHANGELOG.md'), 'utf8')
11
+ let match = new RegExp(
12
+ `## \\[${version}\\] - (.*)\\n\\n([\\s\\S]*?)\\n(?:(?:##\\s)|(?:\\[))`,
13
+ 'g'
14
+ ).exec(changelog)
15
+
16
+ if (match) {
17
+ let [, , notes] = match
18
+ console.log(notes.trim())
19
+ } else {
20
+ console.log(`Placeholder release notes for version: v${version}`)
21
+ }
@@ -0,0 +1,27 @@
1
+ export function union(types) {
2
+ return [...new Set(types)].join(' | ')
3
+ }
4
+
5
+ export function unionValues(values) {
6
+ return union(values.map(forValue))
7
+ }
8
+
9
+ export function forKeys(value) {
10
+ return union(Object.keys(value).map((key) => `'${key}'`))
11
+ }
12
+
13
+ export function forValue(value) {
14
+ if (Array.isArray(value)) {
15
+ return `(${unionValues(value)})[]`
16
+ }
17
+
18
+ if (typeof value === 'object') {
19
+ return `Record<${forKeys(value)}, ${unionValues(Object.values(value))}>`
20
+ }
21
+
22
+ if (typeof value === 'string') {
23
+ return `string`
24
+ }
25
+
26
+ return `any`
27
+ }
@@ -0,0 +1,56 @@
1
+ // @ts-check
2
+
3
+ import {
4
+ // @ts-ignore
5
+ lazyPostcss,
6
+
7
+ // @ts-ignore
8
+ lazyPostcssImport,
9
+
10
+ // @ts-ignore
11
+ lazyCssnano,
12
+
13
+ // @ts-ignore
14
+ lazyAutoprefixer,
15
+ } from '../../../peers/index.js'
16
+
17
+ /**
18
+ * @returns {import('postcss')}
19
+ */
20
+ export function loadPostcss() {
21
+ // Try to load a local `postcss` version first
22
+ try {
23
+ return require('postcss')
24
+ } catch {}
25
+
26
+ return lazyPostcss()
27
+ }
28
+
29
+ export function loadPostcssImport() {
30
+ // Try to load a local `postcss-import` version first
31
+ try {
32
+ return require('postcss-import')
33
+ } catch {}
34
+
35
+ return lazyPostcssImport()
36
+ }
37
+
38
+ export function loadCssNano() {
39
+ let options = { preset: ['default', { cssDeclarationSorter: false }] }
40
+
41
+ // Try to load a local `cssnano` version first
42
+ try {
43
+ return require('cssnano')
44
+ } catch {}
45
+
46
+ return lazyCssnano()(options)
47
+ }
48
+
49
+ export function loadAutoprefixer() {
50
+ // Try to load a local `autoprefixer` version first
51
+ try {
52
+ return require('autoprefixer')
53
+ } catch {}
54
+
55
+ return lazyAutoprefixer()
56
+ }
@@ -0,0 +1,49 @@
1
+ // @ts-check
2
+
3
+ import fs from 'fs'
4
+ import path from 'path'
5
+ import { createProcessor } from './plugin.js'
6
+
7
+ export async function build(args, configs) {
8
+ let input = args['--input']
9
+ let shouldWatch = args['--watch']
10
+
11
+ // TODO: Deprecate this in future versions
12
+ if (!input && args['_'][1]) {
13
+ console.error('[deprecation] Running tailwindcss without -i, please provide an input file.')
14
+ input = args['--input'] = args['_'][1]
15
+ }
16
+
17
+ if (input && input !== '-' && !fs.existsSync((input = path.resolve(input)))) {
18
+ console.error(`Specified input file ${args['--input']} does not exist.`)
19
+ process.exit(9)
20
+ }
21
+
22
+ if (args['--config'] && !fs.existsSync((args['--config'] = path.resolve(args['--config'])))) {
23
+ console.error(`Specified config file ${args['--config']} does not exist.`)
24
+ process.exit(9)
25
+ }
26
+
27
+ // TODO: Reference the @config path here if exists
28
+ let configPath = args['--config']
29
+ ? args['--config']
30
+ : ((defaultPath) => (fs.existsSync(defaultPath) ? defaultPath : null))(
31
+ path.resolve(`./${configs.tailwind}`)
32
+ )
33
+
34
+ let processor = await createProcessor(args, configPath)
35
+
36
+ if (shouldWatch) {
37
+ // Abort the watcher if stdin is closed to avoid zombie processes
38
+ // You can disable this behavior with --watch=always
39
+ if (args['--watch'] !== 'always') {
40
+ process.stdin.on('end', () => process.exit(0))
41
+ }
42
+
43
+ process.stdin.resume()
44
+
45
+ await processor.watch()
46
+ } else {
47
+ await processor.build()
48
+ }
49
+ }