perf: cherry-pick only used lodash imports (#4099)

This commit is contained in:
Alexander Lichter 2018-10-18 16:43:44 +01:00 committed by Pooya Parsa
parent 119d349478
commit ab5af540e0
11 changed files with 76 additions and 90 deletions

2
.gitignore vendored
View File

@ -4,7 +4,7 @@ jspm_packages
# Only keep yarn.lock in the root # Only keep yarn.lock in the root
package-lock.json package-lock.json
**/yarn.lock ./**/yarn.lock
# Logs # Logs
*.log *.log

View File

@ -1,7 +1,14 @@
import path from 'path' import path from 'path'
import fs from 'fs' import fs from 'fs'
import pify from 'pify' import pify from 'pify'
import _ from 'lodash' import uniqBy from 'lodash/uniqBy'
import map from 'lodash/map'
import debounce from 'lodash/debounce'
import concat from 'lodash/concat'
import omit from 'lodash/omit'
import uniq from 'lodash/uniq'
import template from 'lodash/template'
import values from 'lodash/values'
import chokidar from 'chokidar' import chokidar from 'chokidar'
import fsExtra from 'fs-extra' import fsExtra from 'fs-extra'
import hash from 'hash-sum' import hash from 'hash-sum'
@ -92,7 +99,7 @@ export default class Builder {
} }
normalizePlugins() { normalizePlugins() {
return _.uniqBy( return uniqBy(
this.options.plugins.map((p) => { this.options.plugins.map((p) => {
if (typeof p === 'string') p = { src: p } if (typeof p === 'string') p = { src: p }
const pluginBaseName = path.basename(p.src, path.extname(p.src)).replace( const pluginBaseName = path.basename(p.src, path.extname(p.src)).replace(
@ -205,7 +212,7 @@ export default class Builder {
.join('|'), .join('|'),
messages: this.options.messages, messages: this.options.messages,
splitChunks: this.options.build.splitChunks, splitChunks: this.options.build.splitChunks,
uniqBy: _.uniqBy, uniqBy,
isDev: this.options.dev, isDev: this.options.dev,
debug: this.options.debug, debug: this.options.debug,
vue: { config: this.options.vue.config }, vue: { config: this.options.vue.config },
@ -411,7 +418,7 @@ export default class Builder {
const fileContent = await fsExtra.readFile(src, 'utf8') const fileContent = await fsExtra.readFile(src, 'utf8')
let content let content
try { try {
const template = _.template(fileContent, { const templateFunction = template(fileContent, {
imports: { imports: {
serialize, serialize,
devalue, devalue,
@ -425,7 +432,7 @@ export default class Builder {
}, },
interpolate: /<%=([\s\S]+?)%>/g interpolate: /<%=([\s\S]+?)%>/g
}) })
content = template( content = templateFunction(
Object.assign({}, templateVars, { Object.assign({}, templateVars, {
options: options || {}, options: options || {},
custom, custom,
@ -635,11 +642,11 @@ export default class Builder {
r(src, `${this.options.dir.pages}/**/*.{vue,js}`) r(src, `${this.options.dir.pages}/**/*.{vue,js}`)
) )
} }
patterns = _.map(patterns, upath.normalizeSafe) patterns = map(patterns, upath.normalizeSafe)
const options = this.options.watchers.chokidar const options = this.options.watchers.chokidar
/* istanbul ignore next */ /* istanbul ignore next */
const refreshFiles = _.debounce(() => this.generateRoutesAndFiles(), 200) const refreshFiles = debounce(() => this.generateRoutesAndFiles(), 200)
// Watch for src Files // Watch for src Files
this.watchers.files = chokidar this.watchers.files = chokidar
@ -648,18 +655,18 @@ export default class Builder {
.on('unlink', refreshFiles) .on('unlink', refreshFiles)
// Watch for custom provided files // Watch for custom provided files
let customPatterns = _.concat( let customPatterns = concat(
this.options.build.watch, this.options.build.watch,
..._.values(_.omit(this.options.build.styleResources, ['options'])) ...values(omit(this.options.build.styleResources, ['options']))
) )
customPatterns = _.map(_.uniq(customPatterns), upath.normalizeSafe) customPatterns = map(uniq(customPatterns), upath.normalizeSafe)
this.watchers.custom = chokidar this.watchers.custom = chokidar
.watch(customPatterns, options) .watch(customPatterns, options)
.on('change', refreshFiles) .on('change', refreshFiles)
} }
watchServer() { watchServer() {
const nuxtRestartWatch = _.concat( const nuxtRestartWatch = concat(
this.options.serverMiddleware this.options.serverMiddleware
.filter(i => typeof i === 'string') .filter(i => typeof i === 'string')
.map(this.nuxt.resolver.resolveAlias), .map(this.nuxt.resolver.resolveAlias),
@ -694,7 +701,7 @@ export default class Builder {
// TODO: remove ignore when generateConfig enabled again // TODO: remove ignore when generateConfig enabled again
async generateConfig() /* istanbul ignore next */ { async generateConfig() /* istanbul ignore next */ {
const config = path.resolve(this.options.buildDir, 'build.config.js') const config = path.resolve(this.options.buildDir, 'build.config.js')
const options = _.omit(this.options, Options.unsafeKeys) const options = omit(this.options, Options.unsafeKeys)
await fsExtra.writeFile( await fsExtra.writeFile(
config, config,
`export default ${JSON.stringify(options, null, ' ')}`, `export default ${JSON.stringify(options, null, ' ')}`,

View File

@ -1,7 +1,8 @@
import path from 'path' import path from 'path'
import consola from 'consola' import consola from 'consola'
import TimeFixPlugin from 'time-fix-plugin' import TimeFixPlugin from 'time-fix-plugin'
import _ from 'lodash' import clone from 'lodash/clone'
import cloneDeep from 'lodash/cloneDeep'
import VueLoader from 'vue-loader' import VueLoader from 'vue-loader'
import MiniCssExtractPlugin from 'mini-css-extract-plugin' import MiniCssExtractPlugin from 'mini-css-extract-plugin'
import WebpackBar from 'webpackbar' import WebpackBar from 'webpackbar'
@ -33,7 +34,7 @@ export default class WebpackBaseConfig {
} }
getBabelOptions() { getBabelOptions() {
const options = _.clone(this.options.build.babel) const options = clone(this.options.build.babel)
if (typeof options.presets === 'function') { if (typeof options.presets === 'function') {
options.presets = options.presets({ isServer: this.isServer }) options.presets = options.presets({ isServer: this.isServer })
@ -324,6 +325,6 @@ export default class WebpackBaseConfig {
const extendedConfig = this.extendConfig(config) const extendedConfig = this.extendConfig(config)
// Clone deep avoid leaking config between Client and Server // Clone deep avoid leaking config between Client and Server
return _.cloneDeep(extendedConfig) return cloneDeep(extendedConfig)
} }
} }

View File

@ -1,5 +1,5 @@
import hash from 'hash-sum' import hash from 'hash-sum'
import { uniq } from 'lodash' import uniq from 'lodash/uniq'
import { isJS, isCSS, onEmit } from './util' import { isJS, isCSS, onEmit } from './util'

View File

@ -1,6 +1,8 @@
import fs from 'fs' import fs from 'fs'
import path from 'path' import path from 'path'
import _ from 'lodash' import defaults from 'lodash/defaults'
import merge from 'lodash/merge'
import cloneDeep from 'lodash/cloneDeep'
import createResolver from 'postcss-import-resolver' import createResolver from 'postcss-import-resolver'
import { isPureObject } from '@nuxt/common' import { isPureObject } from '@nuxt/common'
@ -112,7 +114,7 @@ export default class PostcssConfig {
return config return config
} }
config = this.normalize(_.cloneDeep(this.postcss)) config = this.normalize(cloneDeep(this.postcss))
// Apply default plugins // Apply default plugins
if (isPureObject(config)) { if (isPureObject(config)) {
@ -121,10 +123,10 @@ export default class PostcssConfig {
delete config.preset delete config.preset
} }
if (Array.isArray(config.plugins)) { if (Array.isArray(config.plugins)) {
_.defaults(config, this.defaultConfig) defaults(config, this.defaultConfig)
} else { } else {
// Keep the order of default plugins // Keep the order of default plugins
config = _.merge({}, this.defaultConfig, config) config = merge({}, this.defaultConfig, config)
this.loadPlugins(config) this.loadPlugins(config)
} }
return config return config

View File

@ -1,6 +1,6 @@
import path from 'path' import path from 'path'
import fs from 'fs' import fs from 'fs'
import _ from 'lodash' import capitalize from 'lodash/capitalize'
import env from 'std-env' import env from 'std-env'
const nuxtDir = fs.existsSync(path.resolve(__dirname, '..', '..', 'package.js')) const nuxtDir = fs.existsSync(path.resolve(__dirname, '..', '..', 'package.js'))
@ -22,8 +22,8 @@ export default {
nuxt: globalName => `$${globalName}`, nuxt: globalName => `$${globalName}`,
context: globalName => `__${globalName.toUpperCase()}__`, context: globalName => `__${globalName.toUpperCase()}__`,
pluginPrefix: globalName => globalName, pluginPrefix: globalName => globalName,
readyCallback: globalName => `on${_.capitalize(globalName)}Ready`, readyCallback: globalName => `on${capitalize(globalName)}Ready`,
loadedCallback: globalName => `_on${_.capitalize(globalName)}Loaded` loadedCallback: globalName => `_on${capitalize(globalName)}Loaded`
}, },
// Server options // Server options

View File

@ -1,8 +1,12 @@
import path from 'path' import path from 'path'
import fs from 'fs' import fs from 'fs'
import _ from 'lodash' import defaultsDeep from 'lodash/defaultsDeep'
import defaults from 'lodash/defaults'
import pick from 'lodash/pick'
import isObject from 'lodash/isObject'
import consola from 'consola' import consola from 'consola'
import { isString } from '@nuxt/common'
import { isPureObject, isUrl, guardDir } from './utils' import { isPureObject, isUrl, guardDir } from './utils'
import Modes from './modes' import Modes from './modes'
import NuxtConfig from './nuxt.config' import NuxtConfig from './nuxt.config'
@ -42,7 +46,7 @@ Options.from = function (_options) {
options.extensions = [options.extensions] options.extensions = [options.extensions]
} }
options.globalName = (_.isString(options.globalName) && /^[a-zA-Z]+$/.test(options.globalName)) options.globalName = (isString(options.globalName) && /^[a-zA-Z]+$/.test(options.globalName))
? options.globalName.toLowerCase() ? options.globalName.toLowerCase()
: `nuxt` : `nuxt`
@ -54,11 +58,11 @@ Options.from = function (_options) {
// const buildDir = options.buildDir || defaults.buildDir // const buildDir = options.buildDir || defaults.buildDir
// const buildConfig = resolve(options.rootDir, buildDir, 'build.config.js') // const buildConfig = resolve(options.rootDir, buildDir, 'build.config.js')
// if (existsSync(buildConfig)) { // if (existsSync(buildConfig)) {
// _.defaultsDeep(options, require(buildConfig)) // defaultsDeep(options, require(buildConfig))
// } // }
// Apply defaults // Apply defaults
_.defaultsDeep(options, NuxtConfig) defaultsDeep(options, NuxtConfig)
// Check srcDir and generate.dir excistence // Check srcDir and generate.dir excistence
const hasSrcDir = hasValue(options.srcDir) const hasSrcDir = hasValue(options.srcDir)
@ -166,7 +170,7 @@ Options.from = function (_options) {
reportOnly: options.debug reportOnly: options.debug
} }
if (csp) { if (csp) {
options.render.csp = _.defaults(_.isObject(csp) ? csp : {}, cspDefaults) options.render.csp = defaults(isObject(csp) ? csp : {}, cspDefaults)
} }
// cssSourceMap // cssSourceMap
@ -190,7 +194,7 @@ Options.from = function (_options) {
} }
// merge custom env with variables // merge custom env with variables
const eligibleEnvVariables = _.pick(process.env, Object.keys(process.env).filter(k => k.startsWith('NUXT_ENV_'))) const eligibleEnvVariables = pick(process.env, Object.keys(process.env).filter(k => k.startsWith('NUXT_ENV_')))
Object.assign(options.env, eligibleEnvVariables) Object.assign(options.env, eligibleEnvVariables)
// Normalize ignore // Normalize ignore
@ -218,7 +222,7 @@ Options.from = function (_options) {
// Apply mode preset // Apply mode preset
const modePreset = Modes[options.mode || 'universal'] || Modes.universal const modePreset = Modes[options.mode || 'universal'] || Modes.universal
_.defaultsDeep(options, modePreset) defaultsDeep(options, modePreset)
// If no server-side rendering, add appear true transition // If no server-side rendering, add appear true transition
/* istanbul ignore if */ /* istanbul ignore if */

View File

@ -1,5 +1,6 @@
import path from 'path' import path from 'path'
import _ from 'lodash' import escapeRegExp from 'lodash/escapeRegExp'
import get from 'lodash/get'
import consola from 'consola' import consola from 'consola'
export const encodeHtml = function encodeHtml(str) { export const encodeHtml = function encodeHtml(str) {
@ -145,7 +146,7 @@ export const wChunk = function wChunk(p = '') {
} }
const reqSep = /\//g const reqSep = /\//g
const sysSep = _.escapeRegExp(path.sep) const sysSep = escapeRegExp(path.sep)
const normalize = string => string.replace(reqSep, sysSep) const normalize = string => string.replace(reqSep, sysSep)
export const r = function r(...args) { export const r = function r(...args) {
@ -335,8 +336,8 @@ export const createRoutes = function createRoutes(files, srcDir, pagesDir) {
// Guard dir1 from dir2 which can be indiscriminately removed // Guard dir1 from dir2 which can be indiscriminately removed
export const guardDir = function guardDir(options, key1, key2) { export const guardDir = function guardDir(options, key1, key2) {
const dir1 = _.get(options, key1, false) const dir1 = get(options, key1, false)
const dir2 = _.get(options, key2, false) const dir2 = get(options, key2, false)
if ( if (
dir1 && dir1 &&

View File

@ -1,6 +1,6 @@
import https from 'https' import https from 'https'
import enableDestroy from 'server-destroy' import enableDestroy from 'server-destroy'
import _ from 'lodash' import isPlainObject from 'lodash/isPlainObject'
import consola from 'consola' import consola from 'consola'
import chalk from 'chalk' import chalk from 'chalk'
@ -51,7 +51,7 @@ export default class Nuxt {
} }
// Add hooks // Add hooks
if (_.isPlainObject(this.options.hooks)) { if (isPlainObject(this.options.hooks)) {
this.addHooks(this.options.hooks) this.addHooks(this.options.hooks)
} else if (typeof this.options.hooks === 'function') { } else if (typeof this.options.hooks === 'function') {
this.options.hooks(this.hook) this.options.hooks(this.hook)

View File

@ -2,7 +2,7 @@ import path from 'path'
import crypto from 'crypto' import crypto from 'crypto'
import devalue from '@nuxtjs/devalue' import devalue from '@nuxtjs/devalue'
import serveStatic from 'serve-static' import serveStatic from 'serve-static'
import _ from 'lodash' import template from 'lodash/template'
import fs from 'fs-extra' import fs from 'fs-extra'
import { createBundleRenderer } from 'vue-server-renderer' import { createBundleRenderer } from 'vue-server-renderer'
import connect from 'connect' import connect from 'connect'
@ -414,10 +414,13 @@ export default class Renderer {
virtualConsole: true, virtualConsole: true,
beforeParse(window) { beforeParse(window) {
// Mock window.scrollTo // Mock window.scrollTo
window.scrollTo = () => {} window.scrollTo = () => {
}
} }
}, opts) }, opts)
const jsdomErrHandler = (err) => { throw err } const jsdomErrHandler = (err) => {
throw err
}
if (options.virtualConsole) { if (options.virtualConsole) {
if (options.virtualConsole === true) { if (options.virtualConsole === true) {
options.virtualConsole = new jsdom.VirtualConsole().sendTo(consola) options.virtualConsole = new jsdom.VirtualConsole().sendTo(consola)
@ -452,7 +455,7 @@ export default class Renderer {
} }
const parseTemplate = templateStr => const parseTemplate = templateStr =>
_.template(templateStr, { template(templateStr, {
interpolate: /{{([\s\S]+?)}}/g interpolate: /{{([\s\S]+?)}}/g
}) })

View File

@ -2603,12 +2603,7 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2" lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0" lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000890, caniuse-lite@^1.0.30000892: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000890, caniuse-lite@^1.0.30000892, caniuse-lite@^1.0.30000893:
version "1.0.30000892"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000892.tgz#344d2b51ee3ff5977537da4aa449c90eec40b759"
integrity sha512-X9rxMaWZNbJB5qjkDqPtNv/yfViTeUL6ILk0QJNxLV3OhKC5Acn5vxsuUvllR6B48mog8lmS+whwHq/QIYSL9w==
caniuse-lite@^1.0.30000893:
version "1.0.30000893" version "1.0.30000893"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000893.tgz#284b20932bd41b93e21626975f2050cb01561986" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000893.tgz#284b20932bd41b93e21626975f2050cb01561986"
integrity sha512-kOddHcTEef+NgN/fs0zmX2brHTNATVOWMEIhlZHCuwQRtXobjSw9pAECc44Op4bTBcavRjkLaPrGomknH7+Jvg== integrity sha512-kOddHcTEef+NgN/fs0zmX2brHTNATVOWMEIhlZHCuwQRtXobjSw9pAECc44Op4bTBcavRjkLaPrGomknH7+Jvg==
@ -3353,14 +3348,14 @@ cssesc@^1.0.1:
integrity sha512-S2hzrpWvE6G/rW7i7IxJfWBYn27QWfOIncUW++8Rbo1VB5zsJDSVPcnI+Q8z7rhxT6/yZeLOCja4cZnghJrNGA== integrity sha512-S2hzrpWvE6G/rW7i7IxJfWBYn27QWfOIncUW++8Rbo1VB5zsJDSVPcnI+Q8z7rhxT6/yZeLOCja4cZnghJrNGA==
cssnano-preset-default@^4.0.2: cssnano-preset-default@^4.0.2:
version "4.0.2" version "4.0.3"
resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.2.tgz#1de3f27e73b7f0fbf87c1d7fd7a63ae980ac3774" resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.3.tgz#9bfd1b06d4aa3991ed958ad9b9ec25a179261705"
integrity sha512-zO9PeP84l1E4kbrdyF7NSLtA/JrJY1paX5FHy5+w/ziIXO2kDqDMfJ/mosXkaHHSa3RPiIY3eB6aEgwx3IiGqA== integrity sha512-RYxcuQhGGybn+4twdn/c/A6Ephq31znqbWMdtjWdyC84IcqnXxBuLue0iNxHhwUr+eNtaJU4pJX8ro9F7Crw5w==
dependencies: dependencies:
css-declaration-sorter "^4.0.1" css-declaration-sorter "^4.0.1"
cssnano-util-raw-cache "^4.0.1" cssnano-util-raw-cache "^4.0.1"
postcss "^7.0.0" postcss "^7.0.0"
postcss-calc "^6.0.2" postcss-calc "^7.0.0"
postcss-colormin "^4.0.2" postcss-colormin "^4.0.2"
postcss-convert-values "^4.0.1" postcss-convert-values "^4.0.1"
postcss-discard-comments "^4.0.1" postcss-discard-comments "^4.0.1"
@ -3410,17 +3405,7 @@ cssnano-util-same-parent@^4.0.0:
resolved "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" resolved "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
cssnano@^4.1.0: cssnano@^4.1.0, cssnano@^4.1.5:
version "4.1.4"
resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.4.tgz#55b71e3d8f5451dd3edc7955673415c98795788f"
integrity sha512-wP0wbOM9oqsek14CiNRYrK9N3w3jgadtGZKHXysgC/OMVpy0KZgWVPdNqODSZbz7txO9Gekr9taOfcCgL0pOOw==
dependencies:
cosmiconfig "^5.0.0"
cssnano-preset-default "^4.0.2"
is-resolvable "^1.0.0"
postcss "^7.0.0"
cssnano@^4.1.5:
version "4.1.5" version "4.1.5"
resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.5.tgz#cfe5ffa722079f339ac2a6d547d88dd8ac8a498d" resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.5.tgz#cfe5ffa722079f339ac2a6d547d88dd8ac8a498d"
integrity sha512-+6m3g8zV87VDIMCXpDzlaXyzo9h9VrIn9o/XRU6ufH/AddZw/mHzmmmNv83+MxpX5rnVbYPxuAMYPjuDgjd9Hw== integrity sha512-+6m3g8zV87VDIMCXpDzlaXyzo9h9VrIn9o/XRU6ufH/AddZw/mHzmmmNv83+MxpX5rnVbYPxuAMYPjuDgjd9Hw==
@ -6743,7 +6728,7 @@ memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
meow@^3.3.0: meow@^3.3.0:
version "3.7.0" version "3.7.0"
resolved "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" resolved "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
dependencies: dependencies:
camelcase-keys "^2.0.0" camelcase-keys "^2.0.0"
@ -7882,15 +7867,15 @@ postcss-attribute-case-insensitive@^4.0.0:
postcss "^7.0.2" postcss "^7.0.2"
postcss-selector-parser "^5.0.0-rc.3" postcss-selector-parser "^5.0.0-rc.3"
postcss-calc@^6.0.2: postcss-calc@^7.0.0:
version "6.0.2" version "7.0.0"
resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-6.0.2.tgz#4d9a43e27dbbf27d095fecb021ac6896e2318337" resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.0.tgz#cf0e78e1d7d9f75119b833abc786fa4b61afedda"
integrity sha512-fiznXjEN5T42Qm7qqMCVJXS3roaj9r4xsSi+meaBVe7CJBl8t/QLOXu02Z2E6oWAMWIvCuF6JrvzFekmVEbOKA== integrity sha512-o04XICBwDxXVYw1TXkzxs36WRgk9OECGiSUoyYMNoFWHLAQCKKeaqhrNBTUKdStMfwik3gSLLztHebTSV5kJOA==
dependencies: dependencies:
css-unit-converter "^1.1.1" css-unit-converter "^1.1.1"
postcss "^7.0.2" postcss "^7.0.2"
postcss-selector-parser "^2.2.2" postcss-selector-parser "^5.0.0-rc.3"
reduce-css-calc "^2.0.0" postcss-value-parser "^3.3.0"
postcss-color-functional-notation@^2.0.1: postcss-color-functional-notation@^2.0.1:
version "2.0.1" version "2.0.1"
@ -8123,9 +8108,9 @@ postcss-media-minmax@^4.0.0:
postcss "^7.0.2" postcss "^7.0.2"
postcss-merge-longhand@^4.0.6: postcss-merge-longhand@^4.0.6:
version "4.0.6" version "4.0.7"
resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.6.tgz#2b938fa3529c3d1657e53dc7ff0fd604dbc85ff1" resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.7.tgz#77430fa60e36745887c1c725ab3782c40f48363d"
integrity sha512-JavnI+V4IHWsaUAfOoKeMEiJQGXTraEy1nHM0ILlE6NIQPEZrJDAnPh3lNGZ5HAk2mSSrwp66JoGhvjp6SqShA== integrity sha512-b2g9jC52xY0bwl8Dz1Xzfvn8x1KfmSQ0O8rc88hiv0bmYM6ky3xk1Zq128UClizM6SMBx0w7aqfrpS9u71d4Ow==
dependencies: dependencies:
css-color-names "0.0.4" css-color-names "0.0.4"
postcss "^7.0.0" postcss "^7.0.0"
@ -8424,15 +8409,6 @@ postcss-selector-not@^4.0.0:
balanced-match "^1.0.0" balanced-match "^1.0.0"
postcss "^7.0.2" postcss "^7.0.2"
postcss-selector-parser@^2.2.2:
version "2.2.3"
resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=
dependencies:
flatten "^1.0.2"
indexes-of "^1.0.1"
uniq "^1.0.1"
postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.1: postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.1:
version "3.1.1" version "3.1.1"
resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
@ -9057,14 +9033,6 @@ redent@^2.0.0:
indent-string "^3.0.0" indent-string "^3.0.0"
strip-indent "^2.0.0" strip-indent "^2.0.0"
reduce-css-calc@^2.0.0:
version "2.1.5"
resolved "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.5.tgz#f283712f0c9708ef952d328f4b16112d57b03714"
integrity sha512-AybiBU03FKbjYzyvJvwkJZY6NLN+80Ufc2EqEs+41yQH+8wqBEslD6eGiS0oIeq5TNLA5PrhBeYHXWdn8gtW7A==
dependencies:
css-unit-converter "^1.1.1"
postcss-value-parser "^3.3.0"
regenerate-unicode-properties@^7.0.0: regenerate-unicode-properties@^7.0.0:
version "7.0.0" version "7.0.0"
resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c"