diff --git a/package-lock.json b/package-lock.json index e3f10cb9fbc2085cacbbc4e9b681e8e3e7fa9894..10a5306da6cdb74be1dca444ac0b6e29335c5797 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6296,15 +6296,6 @@ "node": ">=6" } }, "node_modules/@babel/plugin-syntax-optional-chaining": { -{ - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { "requires": true, "version": "0.3.20", "license": "ODC-By-1.0" @@ -12168,7 +12159,7 @@ } }, "packages/tailwindcss-intellisense": { "name": "vscode-tailwindcss", - "version": "0.5.7", + "version": "0.5.6", "license": "MIT", "dependencies": { "@types/debounce": "^1.2.0", @@ -12190,8 +12181,6 @@ "glob-exec": "^0.1.1", "import-from": "^3.0.0", "jest": "^25.5.4", "version": "1.0.4", - "requires": true, - "version": "1.0.4", "packages": { "normalize-path": "^3.0.0", "pkg-up": "^3.1.0", @@ -12201,7 +12190,7 @@ "resolve-from": "^5.0.0", "rimraf": "^3.0.2", "semver": "^7.3.2", "stack-trace": "0.0.10", - "license": "Apache-2.0", + "@types/yargs": "^13.0.0" "name": "vscode-tailwindcss", "terser": "^4.6.12", "tiny-invariant": "^1.1.0", @@ -12276,16 +12265,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, "packages/tailwindcss-intellisense/node_modules/tailwindcss-language-service": { - "lockfileVersion": 2, "version": "7.12.3", -{ + "node_modules/@babel/helper-plugin-utils": { - "@babel/types": "^7.12.1", "requires": true, - "name": "vscode-tailwindcss", + "node_modules/@babel/helper-optimise-call-expression": { "lockfileVersion": 2, - "name": "vscode-tailwindcss", "requires": true, - "lockfileVersion": 2, + "@types/parse-json": "^4.0.0", "dependencies": { "@ctrl/tinycolor": "^3.1.4", "@types/moo": "^0.5.3", @@ -12325,9 +12310,8 @@ "node": ">=4.2.0" } }, "packages/tailwindcss-language-service": { - "lockfileVersion": 2, "version": "7.12.3", -{ + "node_modules/@babel/helper-plugin-utils": { "dependencies": { "@ctrl/tinycolor": "^3.1.4", "@types/moo": "^0.5.3", @@ -16514,12 +16498,6 @@ "kleur": { "version": "3.0.3" }, "fast-json-stable-stringify": "^2.0.0", - "name": "vscode-tailwindcss", - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" - }, - "fast-json-stable-stringify": "^2.0.0", "packages/*" "version": "0.3.20" }, @@ -20300,8 +20278,6 @@ "glob-exec": "^0.1.1", "import-from": "^3.0.0", "jest": "^25.5.4", "version": "1.0.4", - "requires": true, - "version": "1.0.4", "packages": { "normalize-path": "^3.0.0", "pkg-up": "^3.1.0", @@ -20311,7 +20287,7 @@ "resolve-from": "^5.0.0", "rimraf": "^3.0.2", "semver": "^7.3.2", "stack-trace": "0.0.10", - "license": "Apache-2.0", + "@types/yargs": "^13.0.0" "name": "vscode-tailwindcss", "terser": "^4.6.12", "tiny-invariant": "^1.1.0", @@ -20360,11 +20336,11 @@ } }, "tailwindcss-language-service": { "license": "ISC", - "version": "7.12.1", + "node_modules/@babel/helper-explode-assignable-expression": { "license": "ISC", - "license": "MIT" + "@babel/types": "^7.12.1" "license": "ISC", - "node_modules/@babel/core": { + "node_modules/@babel/helper-function-name": { "requires": { "@ctrl/tinycolor": "^3.1.4", "@types/moo": "^0.5.3", diff --git a/packages/tailwindcss-intellisense/package-lock.json b/packages/tailwindcss-intellisense/package-lock.json index 4fee91be424210ba287d6e9de9732e8bb47b39f2..814b1669e651120d49549d18a8315b6b3ba5ed09 100644 --- a/packages/tailwindcss-intellisense/package-lock.json +++ b/packages/tailwindcss-intellisense/package-lock.json @@ -28,7 +28,6 @@ "glob-exec": "^0.1.1", "import-from": "^3.0.0", "jest": "^25.5.4", "version": "0.5.7", - "version": "0.5.7", { "normalize-path": "^3.0.0", "pkg-up": "^3.1.0", @@ -7107,14 +7106,6 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "engines": { "node": ">=6" - } - }, - "node_modules/klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", - "engines": { - "node": ">= 8" } }, "node_modules/language-subtag-registry": { @@ -19316,11 +19307,6 @@ "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - }, - "klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" }, "language-subtag-registry": { "version": "0.3.21", diff --git a/packages/tailwindcss-intellisense/package.json b/packages/tailwindcss-intellisense/package.json index 80a129ff15a62dfc4b71f3878f1b1e753b192485..5e917bc75150cdf5ae03a4d46c4f09e783e8b8a9 100755 --- a/packages/tailwindcss-intellisense/package.json +++ b/packages/tailwindcss-intellisense/package.json @@ -198,8 +198,6 @@ "glob-exec": "^0.1.1", "import-from": "^3.0.0", "jest": "^25.5.4", }, - "preview": true, - }, "author": "Brad Cornes ", "normalize-path": "^3.0.0", "pkg-up": "^3.1.0", diff --git a/packages/tailwindcss-intellisense/src/class-names/extractClassNames.js b/packages/tailwindcss-intellisense/src/class-names/extractClassNames.js index 6079ca341920d519018725662ccdb61e564e1d7d..35e14eb8b4b72866b9615ca9637ee74ec3f2a5c8 100644 --- a/packages/tailwindcss-intellisense/src/class-names/extractClassNames.js +++ b/packages/tailwindcss-intellisense/src/class-names/extractClassNames.js @@ -44,149 +44,156 @@ return classNames } -async function process(root) { +async function process(groups) { const tree = {} const commonContext = {} - import selectorParser from 'postcss-selector-parser' - + if (node.type === 'class') { - +} import dset from 'dset' - +} import dlv from 'dlv' - +} +} function createSelectorFromNodes(nodes) { - +} if (nodes.length === 0) return null - +} const selector = selectorParser.selector() - +} for (let i = 0; i < nodes.length; i++) { + ? decls[decl.prop] +import selectorParser from 'postcss-selector-parser' import dlv from 'dlv' - if (nodes.length === 0) return null - - if (node.type !== 'rule') return + decl.value, - + ] - const rule = node + } else { -function createSelectorFromNodes(nodes) { import selectorParser from 'postcss-selector-parser' + }) - -function createSelectorFromNodes(nodes) { import dset from 'dset' + const selector = selectorParser.selector() -function createSelectorFromNodes(nodes) { +import selectorParser from 'postcss-selector-parser' import dlv from 'dlv' + -function createSelectorFromNodes(nodes) { -function createSelectorFromNodes(nodes) { +function getClassNamesFromSelector(selector) { function createSelectorFromNodes(nodes) { -function createSelectorFromNodes(nodes) { +function getClassNamesFromSelector(selector) { if (nodes.length === 0) return null -function createSelectorFromNodes(nodes) { +function getClassNamesFromSelector(selector) { const selector = selectorParser.selector() -function createSelectorFromNodes(nodes) { +function getClassNamesFromSelector(selector) { for (let i = 0; i < nodes.length; i++) { -function createSelectorFromNodes(nodes) { +function getClassNamesFromSelector(selector) { selector.append(nodes[i]) - if (nodes.length === 0) return null + const classNames = [] - } else { - if (nodes.length === 0) return null import dset from 'dset' + const selector = selectorParser.selector() } - }) + +import selectorParser from 'postcss-selector-parser' +import selectorParser from 'postcss-selector-parser' - if (nodes.length === 0) return null +import selectorParser from 'postcss-selector-parser' +import dset from 'dset' - const keys = [] + const baseKeys = classNames[i].className.split('__TAILWIND_SEPARATOR__') - while (p.parent.type !== 'root') { + const contextKeys = baseKeys.slice(0, baseKeys.length - 1) - p = p.parent + const index = [] - if (p.type === 'atrule') { + + const classNames = [] if (nodes.length === 0) return null - selector.append(nodes[i]) -import dlv from 'dlv' +import selectorParser from 'postcss-selector-parser' + const selector = selectorParser.selector() - } + if (Array.isArray(existing)) { +import selectorParser from 'postcss-selector-parser' + selector.append(nodes[i]) - const selector = selectorParser.selector() + const { nodes: subSelectors } = selectorParser().astSync(selector) - const selector = selectorParser.selector() + const { nodes: subSelectors } = selectorParser().astSync(selector) import selectorParser from 'postcss-selector-parser' - const selector = selectorParser.selector() + const { nodes: subSelectors } = selectorParser().astSync(selector) import dset from 'dset' - const selector = selectorParser.selector() + const { nodes: subSelectors } = selectorParser().astSync(selector) import dlv from 'dlv' +import dset from 'dset' const selector = selectorParser.selector() - + const { nodes: subSelectors } = selectorParser().astSync(selector) - const selector = selectorParser.selector() + const { nodes: subSelectors } = selectorParser().astSync(selector) function createSelectorFromNodes(nodes) { - const selector = selectorParser.selector() + const { nodes: subSelectors } = selectorParser().astSync(selector) if (nodes.length === 0) return null - const selector = selectorParser.selector() + const { nodes: subSelectors } = selectorParser().astSync(selector) const selector = selectorParser.selector() - const selector = selectorParser.selector() + const { nodes: subSelectors } = selectorParser().astSync(selector) for (let i = 0; i < nodes.length; i++) { - const selector = selectorParser.selector() + const { nodes: subSelectors } = selectorParser().astSync(selector) selector.append(nodes[i]) - for (let i = 0; i < nodes.length; i++) { +import selectorParser from 'postcss-selector-parser' +import dlv from 'dlv' + - for (let i = 0; i < nodes.length; i++) { import selectorParser from 'postcss-selector-parser' + ] } - } + dset( - for (let i = 0; i < nodes.length; i++) { + for (let i = 0; i < subSelectors.length; i++) { import dset from 'dset' - for (let i = 0; i < nodes.length; i++) { + for (let i = 0; i < subSelectors.length; i++) { import dlv from 'dlv' - for (let i = 0; i < nodes.length; i++) { + for (let i = 0; i < subSelectors.length; i++) { - - for (let i = 0; i < nodes.length; i++) { + for (let i = 0; i < subSelectors.length; i++) { function createSelectorFromNodes(nodes) { - } + dset( - for (let i = 0; i < nodes.length; i++) { + tree, + for (let i = 0; i < subSelectors.length; i++) { if (nodes.length === 0) return null - for (let i = 0; i < nodes.length; i++) { + for (let i = 0; i < subSelectors.length; i++) { const selector = selectorParser.selector() - [...baseKeys, '__info', ...index, '__pseudo'], + ) - classNames[i].__pseudo + dset( - ) + tree, - for (let i = 0; i < nodes.length; i++) { +import selectorParser from 'postcss-selector-parser' if (nodes.length === 0) return null for (let i = 0; i < nodes.length; i++) { - const selector = selectorParser.selector() - selector.append(nodes[i]) import selectorParser from 'postcss-selector-parser' - classNames[i].scope + if (nodes.length === 0) return null selector.append(nodes[i]) - for (let i = 0; i < nodes.length; i++) { +import selectorParser from 'postcss-selector-parser' if (nodes.length === 0) return null +function createSelectorFromNodes(nodes) { - tree, - [...baseKeys, '__info', ...index, '__context'], - selector.append(nodes[i]) - selector.append(nodes[i]) + let scope = [] - - // common context - context.push(...classNames[i].__pseudo.map((x) => `&${x}`)) + context.push(...classNames[i].__pseudo.map((x) => `&${x}`)) - selector.append(nodes[i]) +import selectorParser from 'postcss-selector-parser' const selector = selectorParser.selector() +import dset from 'dset' - if (typeof commonContext[contextKeys[i]] === 'undefined') { - commonContext[contextKeys[i]] = context + if (typeof commonContext[contextKeys[i]] === 'undefined') { +import selectorParser from 'postcss-selector-parser' const selector = selectorParser.selector() - selector.append(nodes[i]) + import selectorParser from 'postcss-selector-parser' +function createSelectorFromNodes(nodes) { + commonContext[contextKeys[i]] = intersection( import selectorParser from 'postcss-selector-parser' + if (typeof existing !== 'undefined') { import selectorParser from 'postcss-selector-parser' + if (Array.isArray(existing)) { import selectorParser from 'postcss-selector-parser' -import dset from 'dset' + index.push(existing.length) import selectorParser from 'postcss-selector-parser' +function createSelectorFromNodes(nodes) { import dlv from 'dlv' } } -import dlv from 'dlv' if (nodes.length === 0) return null +import dlv from 'dlv' }) return { classNames: tree, context: commonContext } diff --git a/packages/tailwindcss-intellisense/src/class-names/index.js b/packages/tailwindcss-intellisense/src/class-names/index.js index 06177bd14f57133c1098bfaabf1064c42dd7af42..e8034c45269416cd66518340886c3b7394a6de5d 100644 --- a/packages/tailwindcss-intellisense/src/class-names/index.js +++ b/packages/tailwindcss-intellisense/src/class-names/index.js @@ -16,7 +16,6 @@ import glob from 'fast-glob' import normalizePath from 'normalize-path' import { withUserEnvironment } from './environment' import execa from 'execa' -import { klona } from 'klona/full' function arraysEqual(arr1, arr2) { return ( @@ -72,16 +71,9 @@ let userPurge let hook = Hook(fs.realpathSync(configPath), (exports) => { userSeperator = dlv(exports, sepLocation) userPurge = exports.purge - dset( - exports, -import invariant from 'tiny-invariant' import Hook from './hook' import invariant from 'tiny-invariant' -import dlv from 'dlv' import invariant from 'tiny-invariant' -import dset from 'dset' - }__TWSEP__` - ) exports.purge = {} return exports }) @@ -98,18 +91,18 @@ hook.unwatch() const { + base, +const CONFIG_GLOB = import getVariants from './getVariants' + '**/{tailwind,tailwind.config,tailwind-config,.tailwindrc}.{js,cjs}' resolvedConfig, browserslist, postcss, } = await withPackages( - { - configDir, + configDir, - cwd, - userSeperator, -import getVariants from './getVariants' +import Hook from './hook' import getPlugins from './getPlugins' - }, +import Hook from './hook' async ({ postcss, tailwindcss, @@ -118,29 +111,35 @@ browserslistArgs, }) => { let postcssResult try { -import resolveConfig from './resolveConfig' +import Hook from './hook' import getPlugins from './getPlugins' +import dlv from 'dlv' [ semver.gte(version, '0.99.0') ? 'base' : 'preflight', 'components', 'utilities', - ] -import * as path from 'path' + '**/{tailwind,tailwind.config,tailwind-config,.tailwindrc}.{js,cjs}' import dset from 'dset' -import * as path from 'path' + '**/{tailwind,tailwind.config,tailwind-config,.tailwindrc}.{js,cjs}' import chokidar from 'chokidar' -import * as path from 'path' + '**/{tailwind,tailwind.config,tailwind-config,.tailwindrc}.{js,cjs}' import semver from 'semver' -import * as path from 'path' + '**/{tailwind,tailwind.config,tailwind-config,.tailwindrc}.{js,cjs}' import invariant from 'tiny-invariant' -import * as path from 'path' +import Hook from './hook' import getPlugins from './getPlugins' +import getPlugins from './getPlugins' + } + ) + ) ) } catch (error) { throw error } finally { hook.unhook() } + + const [base, components, utilities] = postcssResult if (typeof userSeperator !== 'undefined') { dset(config, sepLocation, userSeperator) @@ -182,8 +181,10 @@ } } return { +export default async function getClassNames( import extractClassNames from './extractClassNames' - featureFlags = { future: [], experimental: [] }, + components, + utilities, resolvedConfig, postcss, browserslist, @@ -196,9 +197,13 @@ version, configPath, config: resolvedConfig, separator: typeof userSeperator === 'undefined' ? ':' : userSeperator, -import extractClassNames from './extractClassNames' + classNames: await extractClassNames([ + { root: base.root, source: 'base' }, +export default async function getClassNames( import semver from 'semver' +export default async function getClassNames( import invariant from 'tiny-invariant' + ]), dependencies: hook.deps, plugins: getPlugins(config), variants: getVariants({ config, version, postcss, browserslist }), @@ -274,10 +279,10 @@ }) } import Hook from './hook' -import { withUserEnvironment } from './environment' + }, return withUserEnvironment( configDir, - return ( + cwd = process.cwd(), async ({ isPnp, require, resolve }) => { const tailwindBase = path.dirname(resolve('tailwindcss/package.json')) const postcss = require('postcss', tailwindBase) @@ -301,55 +306,6 @@ browserslistCommand = process.execPath browserslistArgs = [browserslistBin] } } catch (_) {} - - if (semver.gte(version, '1.7.0')) { - const applyComplexClasses = semver.gte(version, '1.99.0') - ? require('./lib/lib/substituteClassApplyAtRules', tailwindBase) - : require('./lib/flagged/applyComplexClasses', tailwindBase) - - if (!applyComplexClasses.default.__patched) { - let _applyComplexClasses = applyComplexClasses.default - applyComplexClasses.default = (config, ...args) => { - let configClone = klona(config) - configClone.separator = - typeof userSeperator === 'undefined' ? ':' : userSeperator - - let fn = _applyComplexClasses(configClone, ...args) - - return async (css) => { - css.walkRules((rule) => { - const newSelector = rule.selector.replace( - /__TWSEP__(.*?)__TWSEP__/g, - '$1' - ) - if (newSelector !== rule.selector) { - rule.before( - postcss.comment({ - text: '__ORIGINAL_SELECTOR__:' + rule.selector, - }) - ) - rule.selector = newSelector - } - }) - - await fn(css) - - css.walkComments((comment) => { - if (comment.text.startsWith('__ORIGINAL_SELECTOR__:')) { - comment.next().selector = comment.text.replace( - /^__ORIGINAL_SELECTOR__:/, - '' - ) - comment.remove() - } - }) - - return css - } - } - applyComplexClasses.default.__patched = true - } - } return cb({ postcss, tailwindcss, browserslistCommand, browserslistArgs }) }