From 5bc4f475e6236b1d0355f464d2dea80e3b24448d Mon Sep 17 00:00:00 2001 From: Jack Hsu Date: Tue, 17 Aug 2021 09:41:19 -0400 Subject: [PATCH] feat(react): add format option for buildable libs - Clean up @nrwl/web:package executor - Combine react package e2e tests to speed up test time --- docs/angular/api-web/executors/package.md | 8 + docs/node/api-web/executors/package.md | 8 + docs/react/api-web/executors/package.md | 8 + e2e/react/src/react-package.test.ts | 114 +++--- package.json | 22 +- packages/web/babel.ts | 3 +- packages/web/package.json | 20 +- .../executors/package/lib/normalize.spec.ts | 46 +++ .../src/executors/package/lib/normalize.ts | 46 +++ .../executors/package/{ => lib}/run-rollup.ts | 0 .../executors/package/package.impl.spec.ts | 34 +- .../web/src/executors/package/package.impl.ts | 85 ++-- .../web/src/executors/package/schema.d.ts | 23 ++ .../web/src/executors/package/schema.json | 10 + packages/web/src/utils/normalize.spec.ts | 47 +-- packages/web/src/utils/normalize.ts | 49 +-- packages/web/src/utils/types.ts | 23 -- yarn.lock | 384 ++++++++++++++++-- 18 files changed, 640 insertions(+), 290 deletions(-) create mode 100644 packages/web/src/executors/package/lib/normalize.spec.ts create mode 100644 packages/web/src/executors/package/lib/normalize.ts rename packages/web/src/executors/package/{ => lib}/run-rollup.ts (100%) create mode 100644 packages/web/src/executors/package/schema.d.ts diff --git a/docs/angular/api-web/executors/package.md b/docs/angular/api-web/executors/package.md index 5688d002df6081..c275ab8fb5aada 100644 --- a/docs/angular/api-web/executors/package.md +++ b/docs/angular/api-web/executors/package.md @@ -76,6 +76,14 @@ Type: `boolean` CSS files will be extracted to the output folder. +### format + +Alias(es): f + +Type: `array` + +Only build the specified comma-separated formats (esm,umd,cjs) + ### globals Type: `object[]` diff --git a/docs/node/api-web/executors/package.md b/docs/node/api-web/executors/package.md index 16e75c3c7021bf..7e4729824605d4 100644 --- a/docs/node/api-web/executors/package.md +++ b/docs/node/api-web/executors/package.md @@ -77,6 +77,14 @@ Type: `boolean` CSS files will be extracted to the output folder. +### format + +Alias(es): f + +Type: `array` + +Only build the specified comma-separated formats (esm,umd,cjs) + ### globals Type: `object[]` diff --git a/docs/react/api-web/executors/package.md b/docs/react/api-web/executors/package.md index 16e75c3c7021bf..7e4729824605d4 100644 --- a/docs/react/api-web/executors/package.md +++ b/docs/react/api-web/executors/package.md @@ -77,6 +77,14 @@ Type: `boolean` CSS files will be extracted to the output folder. +### format + +Alias(es): f + +Type: `array` + +Only build the specified comma-separated formats (esm,umd,cjs) + ### globals Type: `object[]` diff --git a/e2e/react/src/react-package.test.ts b/e2e/react/src/react-package.test.ts index dbb466d40cb001..337fc791cc700a 100644 --- a/e2e/react/src/react-package.test.ts +++ b/e2e/react/src/react-package.test.ts @@ -5,6 +5,7 @@ import { newProject, readFile, readJson, + rmDist, runCLI, uniq, updateFile, @@ -118,9 +119,65 @@ describe('Build React libraries and apps', () => { return JSON.stringify(json, null, 2); }); }); + afterEach(() => killPorts()); describe('Publishable libraries', () => { + it('should build libraries with and without dependencies', () => { + /* + * 1. Without dependencies + */ + const childLibOutput = runCLI(`build ${childLib}`) + // FIX for windows and OSX where output names might get broken to multipleline + .replace(/\s\s\s││\s\s\s/gm, ''); + const childLib2Output = runCLI(`build ${childLib2}`) + // FIX for windows and OSX where output names might get broken to multipleline + .replace(/\s\s\s││\s\s\s/gm, ''); + + expect(childLibOutput).toContain(`${childLib}.umd.js`); + expect(childLibOutput).toContain(`${childLib}.esm.js`); + expect(childLibOutput).toContain(`Bundle complete: ${childLib}`); + + expect(childLib2Output).toContain(`${childLib2}.esm.js`); + expect(childLib2Output).toContain(`${childLib2}.umd.js`); + expect(childLib2Output).toContain(`Bundle complete: ${childLib2}`); + + checkFilesExist(`dist/libs/${childLib}/assets/hello.txt`); + checkFilesExist(`dist/libs/${childLib2}/README.md`); + + /* + * 2. With dependencies + */ + let parentLibOutput = runCLI(`build ${parentLib}`) + // FIX for windows and OSX where output names might get broken to multipleline + .replace(/\s\s\s││\s\s\s/gm, ''); + + expect(parentLibOutput).toContain(`${parentLib}.esm.js`); + expect(parentLibOutput).toContain(`${parentLib}.umd.js`); + expect(parentLibOutput).toContain(`Bundle complete: ${parentLib}`); + + const jsonFile = readJson(`dist/libs/${parentLib}/package.json`); + expect(jsonFile.peerDependencies).toEqual( + expect.objectContaining({ + [`@${proj}/${childLib}`]: '0.0.1', + [`@${proj}/${childLib2}`]: '0.0.1', + }) + ); + + /* + * 3. With dependencies without existing dist + */ + rmDist(); + + parentLibOutput = runCLI( + `build ${parentLib} --with-deps --skip-nx-cache` + ).replace(/\s\s\s││\s\s\s/gm, ''); + + expect(parentLibOutput).toContain(`Bundle complete: ${parentLib}`); + expect(parentLibOutput).toContain(`Bundle complete: ${childLib}`); + expect(parentLibOutput).toContain(`Bundle complete: ${childLib2}`); + }); + it('should preserve the tsconfig target set by user', () => { // Setup const myLib = uniq('my-lib'); @@ -172,53 +229,6 @@ describe('Build React libraries and apps', () => { expect(content).toContain('function __generator(thisArg, body) {'); }); - it('should build the library when it does not have any deps', () => { - const output = runCLI(`build ${childLib}`) - // FIX for windows and OSX where output names might get broken to multipleline - .replace(/\s\s\s││\s\s\s/gm, ''); - expect(output).toContain(`${childLib}.esm.js`); - expect(output).toContain(`Bundle complete: ${childLib}`); - checkFilesExist(`dist/libs/${childLib}/assets/hello.txt`); - }); - - it('should copy the README to dist', () => { - const output = runCLI(`build ${childLib2}`); - expect(output).toContain(`Bundle complete: ${childLib2}`); - checkFilesExist(`dist/libs/${childLib2}/README.md`); - }); - - it('should properly add references to any dependency into the parent package.json', () => { - const childLibOutput = runCLI(`build ${childLib}`) - // FIX for windows and OSX where output names might get broken to multipleline - .replace(/\s\s\s││\s\s\s/gm, ''); - const childLib2Output = runCLI(`build ${childLib2}`) - // FIX for windows and OSX where output names might get broken to multipleline - .replace(/\s\s\s││\s\s\s/gm, ''); - const parentLibOutput = runCLI(`build ${parentLib}`) - // FIX for windows and OSX where output names might get broken to multipleline - .replace(/\s\s\s││\s\s\s/gm, ''); - - expect(childLibOutput).toContain(`${childLib}.esm.js`); - expect(childLibOutput).toContain(`${childLib}.umd.js`); - expect(childLibOutput).toContain(`Bundle complete: ${childLib}`); - - expect(childLib2Output).toContain(`${childLib2}.esm.js`); - expect(childLib2Output).toContain(`${childLib2}.umd.js`); - expect(childLib2Output).toContain(`Bundle complete: ${childLib2}`); - - expect(parentLibOutput).toContain(`${parentLib}.esm.js`); - expect(parentLibOutput).toContain(`${parentLib}.umd.js`); - expect(parentLibOutput).toContain(`Bundle complete: ${parentLib}`); - - const jsonFile = readJson(`dist/libs/${parentLib}/package.json`); - expect(jsonFile.peerDependencies).toEqual( - expect.objectContaining({ - [`@${proj}/${childLib}`]: '0.0.1', - [`@${proj}/${childLib2}`]: '0.0.1', - }) - ); - }); - it('should build an app composed out of publishable libs', () => { const buildWithDeps = runCLI( `build ${app} --with-deps --buildLibsFromSource=false` @@ -235,14 +245,4 @@ describe('Build React libraries and apps', () => { expect(failedBuild).toContain(`Can't resolve`); }, 1000000); }); - - describe('Buildable libraries', () => { - it('should build dependent libraries', () => { - const parentLibOutput = runCLI(`build ${parentLib} --with-deps`); - - expect(parentLibOutput).toContain(`Bundle complete: ${parentLib}`); - expect(parentLibOutput).toContain(`Bundle complete: ${childLib}`); - expect(parentLibOutput).toContain(`Bundle complete: ${childLib2}`); - }); - }); }); diff --git a/package.json b/package.json index 5992264290eb91..9a3053b9c07e46 100644 --- a/package.json +++ b/package.json @@ -76,11 +76,11 @@ "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", "@popperjs/core": "^2.9.2", "@reduxjs/toolkit": "1.5.0", - "@rollup/plugin-babel": "5.0.2", - "@rollup/plugin-commonjs": "11.0.2", - "@rollup/plugin-image": "2.0.4", + "@rollup/plugin-commonjs": "^20.0.0", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-image": "^2.1.0", "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "7.1.1", + "@rollup/plugin-node-resolve": "^13.0.4", "@schematics/angular": "~12.1.0", "@storybook/addon-essentials": "~6.3.0", "@storybook/addon-knobs": "~6.3.0", @@ -113,7 +113,7 @@ "angular": "1.8.0", "autoprefixer": "^10.2.5", "babel-jest": "27.0.6", - "caniuse-lite": "^1.0.30001030", + "caniuse-lite": "^1.0.30001251", "chalk": "4.1.0", "chokidar": "^3.5.1", "circular-dependency-plugin": "5.2.0", @@ -197,12 +197,12 @@ "react-router-dom": "5.1.2", "regenerator-runtime": "0.13.7", "release-it": "^14.11.3", - "rollup": "1.31.1", - "rollup-plugin-copy": "3.3.0", - "rollup-plugin-filesize": "^9.0.0", - "rollup-plugin-local-resolve": "1.0.7", - "rollup-plugin-peer-deps-external": "2.2.2", - "rollup-plugin-postcss": "^4.0.0", + "rollup": "^2.56.2", + "rollup-plugin-copy": "^3.4.0", + "rollup-plugin-filesize": "^9.1.1", + "rollup-plugin-local-resolve": "^1.0.7", + "rollup-plugin-peer-deps-external": "^2.2.4", + "rollup-plugin-postcss": "^4.0.1", "rollup-plugin-typescript2": "^0.30.0", "rxjs": "6.6.7", "rxjs-for-await": "0.0.2", diff --git a/packages/web/babel.ts b/packages/web/babel.ts index 2e968c34fb1a41..cd163cea00801f 100644 --- a/packages/web/babel.ts +++ b/packages/web/babel.ts @@ -36,7 +36,7 @@ module.exports = function (api: any, options: NxReactBabelPresetOptions = {}) { // All other options will fail in Jest since Node does not support some ES features // such as import syntax. process.env.NODE_ENV === 'test' - ? { targets: { node: 'current' } } + ? { targets: { node: 'current' }, loose: true } : { // Allow importing core-js in entrypoint and use browserlist to select polyfills. // This is needed for differential loading as well. @@ -48,6 +48,7 @@ module.exports = function (api: any, options: NxReactBabelPresetOptions = {}) { bugfixes: true, // Exclude transforms that make all code slower exclude: ['transform-typeof-symbol'], + loose: true, }, ], require.resolve('@babel/preset-typescript'), diff --git a/packages/web/package.json b/packages/web/package.json index faff4e4401f0ce..9533562719dc8f 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -41,11 +41,11 @@ "@babel/plugin-transform-runtime": "^7.15.0", "@babel/runtime": "^7.14.8", "@babel/preset-typescript": "^7.15.0", - "@rollup/plugin-commonjs": "11.0.2", - "@rollup/plugin-babel": "5.0.2", - "@rollup/plugin-image": "2.0.4", + "@rollup/plugin-commonjs": "^20.0.0", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-image": "^2.1.0", "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "7.1.1", + "@rollup/plugin-node-resolve": "^13.0.4", "autoprefixer": "^10.2.5", "babel-loader": "8.1.0", "babel-plugin-const-enum": "^1.0.1", @@ -53,7 +53,7 @@ "babel-plugin-transform-async-to-promises": "^0.8.15", "babel-plugin-transform-typescript-metadata": "^0.3.1", "browserslist": "^4.16.6", - "caniuse-lite": "^1.0.30001030", + "caniuse-lite": "^1.0.30001251", "chalk": "4.1.0", "chokidar": "^3.5.1", "circular-dependency-plugin": "5.2.0", @@ -80,12 +80,12 @@ "rxjs": "^6.5.4", "rxjs-for-await": "0.0.2", "rimraf": "^3.0.2", - "rollup": "1.31.1", - "rollup-plugin-copy": "^3.3.0", - "rollup-plugin-filesize": "^9.0.0", + "rollup": "^2.56.2", + "rollup-plugin-copy": "^3.4.0", + "rollup-plugin-filesize": "^9.1.1", "rollup-plugin-local-resolve": "^1.0.7", - "rollup-plugin-peer-deps-external": "^2.2.2", - "rollup-plugin-postcss": "^4.0.0", + "rollup-plugin-peer-deps-external": "^2.2.4", + "rollup-plugin-postcss": "^4.0.1", "rollup-plugin-typescript2": "^0.30.0", "sass": "^1.26.3", "sass-loader": "8.0.2", diff --git a/packages/web/src/executors/package/lib/normalize.spec.ts b/packages/web/src/executors/package/lib/normalize.spec.ts new file mode 100644 index 00000000000000..731d6ee23b847e --- /dev/null +++ b/packages/web/src/executors/package/lib/normalize.spec.ts @@ -0,0 +1,46 @@ +import { normalizePackageOptions } from './normalize'; +import { WebPackageOptions } from '../schema'; + +describe('normalizePackageOptions', () => { + let testOptions: WebPackageOptions; + let root: string; + let sourceRoot: string; + + beforeEach(() => { + testOptions = { + outputPath: '/tmp', + project: 'apps/nodeapp/package.json', + entryFile: 'apps/nodeapp/src/main.ts', + tsConfig: 'apps/nodeapp/tsconfig.app.json', + rollupConfig: 'apps/nodeapp/rollup.config', + format: ['esm'], + }; + root = '/root'; + sourceRoot = 'apps/nodeapp/src'; + }); + + it('should resolve both node modules and relative path for rollupConfig', () => { + let result = normalizePackageOptions(testOptions, root, sourceRoot); + expect(result.rollupConfig).toEqual(['/root/apps/nodeapp/rollup.config']); + + result = normalizePackageOptions( + { + ...testOptions, + // something that exists in node_modules + rollupConfig: 'react', + }, + root, + sourceRoot + ); + expect(result.rollupConfig).toHaveLength(1); + expect(result.rollupConfig[0]).toMatch('react'); + expect(result.rollupConfig[0]).not.toMatch(root); + }); + + it('should handle rollupConfig being undefined', () => { + delete testOptions.rollupConfig; + + const result = normalizePackageOptions(testOptions, root, sourceRoot); + expect(result.rollupConfig).toEqual([]); + }); +}); diff --git a/packages/web/src/executors/package/lib/normalize.ts b/packages/web/src/executors/package/lib/normalize.ts new file mode 100644 index 00000000000000..e495ca4ba52e0b --- /dev/null +++ b/packages/web/src/executors/package/lib/normalize.ts @@ -0,0 +1,46 @@ +import { dirname } from 'path'; + +import { AssetGlobPattern } from '../../../utils/types'; +import { normalizeAssets, normalizePluginPath } from '../../../utils/normalize'; +import { WebPackageOptions } from '../schema'; + +export interface NormalizedWebPackageOptions extends WebPackageOptions { + entryRoot: string; + projectRoot: string; + assets: AssetGlobPattern[]; + rollupConfig: string[]; +} + +export function normalizePackageOptions( + options: WebPackageOptions, + root: string, + sourceRoot: string +): NormalizedWebPackageOptions { + const entryFile = `${root}/${options.entryFile}`; + const entryRoot = dirname(entryFile); + const project = `${root}/${options.project}`; + const projectRoot = dirname(project); + const outputPath = `${root}/${options.outputPath}`; + + if (options.buildableProjectDepsInPackageJsonType == undefined) { + options.buildableProjectDepsInPackageJsonType = 'peerDependencies'; + } + + return { + ...options, + // de-dupe formats + format: Array.from(new Set(options.format)), + rollupConfig: [] + .concat(options.rollupConfig) + .filter(Boolean) + .map((p) => normalizePluginPath(p, root)), + assets: options.assets + ? normalizeAssets(options.assets, root, sourceRoot) + : undefined, + entryFile, + entryRoot, + project, + projectRoot, + outputPath, + }; +} diff --git a/packages/web/src/executors/package/run-rollup.ts b/packages/web/src/executors/package/lib/run-rollup.ts similarity index 100% rename from packages/web/src/executors/package/run-rollup.ts rename to packages/web/src/executors/package/lib/run-rollup.ts diff --git a/packages/web/src/executors/package/package.impl.spec.ts b/packages/web/src/executors/package/package.impl.spec.ts index 9df4049dd6c356..f431b3920ec684 100644 --- a/packages/web/src/executors/package/package.impl.spec.ts +++ b/packages/web/src/executors/package/package.impl.spec.ts @@ -1,16 +1,15 @@ -let mockCopyPlugin = jest.fn(); -jest.mock('rollup-plugin-copy', () => mockCopyPlugin); -jest.mock('tsconfig-paths-webpack-plugin'); - import { ExecutorContext } from '@nrwl/devkit'; -import { createRollupOptions } from './package.impl'; -import { PackageBuilderOptions } from '../../utils/types'; -import { normalizePackageOptions } from '../../utils/normalize'; import * as rollup from 'rollup'; +import { WebPackageOptions } from './schema'; +import { createRollupOptions } from './package.impl'; +import { normalizePackageOptions } from './lib/normalize'; + +jest.mock('rollup-plugin-copy', () => jest.fn()); +jest.mock('tsconfig-paths-webpack-plugin'); describe('packageExecutor', () => { let context: ExecutorContext; - let testOptions: PackageBuilderOptions; + let testOptions: WebPackageOptions; beforeEach(async () => { context = { @@ -30,11 +29,12 @@ describe('packageExecutor', () => { project: 'libs/ui/package.json', tsConfig: 'libs/ui/tsconfig.json', watch: false, + format: ['esm', 'umd'], }; }); describe('createRollupOptions', () => { - it('should work', () => { + it('should create rollup options for valid config', () => { const result: any = createRollupOptions( normalizePackageOptions(testOptions, '/root', '/root/src'), [], @@ -43,17 +43,18 @@ describe('packageExecutor', () => { '/root/src', [] ); + expect(result.map((x) => x.output)).toEqual([ { - file: '/root/dist/ui/example.umd.js', - format: 'umd', - globals: {}, + file: '/root/dist/ui/example.esm.js', + format: 'esm', + globals: { 'react/jsx-runtime': 'jsxRuntime' }, name: 'Example', }, { - file: '/root/dist/ui/example.esm.js', - format: 'esm', - globals: {}, + file: '/root/dist/ui/example.umd.js', + format: 'umd', + globals: { 'react/jsx-runtime': 'jsxRuntime' }, name: 'Example', }, ]); @@ -138,7 +139,8 @@ describe('packageExecutor', () => { '/root/src', [] ); - expect(mockCopyPlugin).toHaveBeenCalledWith({ + + expect(require('rollup-plugin-copy')).toHaveBeenCalledWith({ targets: [{ dest: '/root/dist/ui', src: 'C:/windows/path/README.md' }], }); }); diff --git a/packages/web/src/executors/package/package.impl.ts b/packages/web/src/executors/package/package.impl.ts index 5a91cf965b42e3..05f4b4c9d44a25 100644 --- a/packages/web/src/executors/package/package.impl.ts +++ b/packages/web/src/executors/package/package.impl.ts @@ -1,6 +1,3 @@ -import type { ExecutorContext, ProjectGraphNode } from '@nrwl/devkit'; -import { logger, names, readJsonFile, writeJsonFile } from '@nrwl/devkit'; - import * as rollup from 'rollup'; import * as peerDepsExternal from 'rollup-plugin-peer-deps-external'; import * as localResolve from 'rollup-plugin-local-resolve'; @@ -11,6 +8,8 @@ import { catchError, concatMap, last, tap } from 'rxjs/operators'; import { eachValueFrom } from 'rxjs-for-await'; import * as autoprefixer from 'autoprefixer'; +import type { ExecutorContext, ProjectGraphNode } from '@nrwl/devkit'; +import { logger, names, readJsonFile, writeJsonFile } from '@nrwl/devkit'; import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import { calculateProjectDependencies, @@ -19,17 +18,18 @@ import { DependentBuildableProjectNode, updateBuildableProjectPackageJsonDependencies, } from '@nrwl/workspace/src/utilities/buildable-libs-utils'; +import resolve from '@rollup/plugin-node-resolve'; -import { AssetGlobPattern, PackageBuilderOptions } from '../../utils/types'; +import { AssetGlobPattern } from '../../utils/types'; +import { deleteOutputDir } from '../../utils/delete-output-dir'; +import { WebPackageOptions } from './schema'; +import { runRollup } from './lib/run-rollup'; import { - NormalizedBundleBuilderOptions, + NormalizedWebPackageOptions, normalizePackageOptions, -} from '../../utils/normalize'; -import { deleteOutputDir } from '../../utils/delete-output-dir'; -import { runRollup } from './run-rollup'; +} from './lib/normalize'; // These use require because the ES import isn't correct. -const resolve = require('@rollup/plugin-node-resolve'); const commonjs = require('@rollup/plugin-commonjs'); const typescript = require('rollup-plugin-typescript2'); const image = require('@rollup/plugin-image'); @@ -38,21 +38,10 @@ const copy = require('rollup-plugin-copy'); const postcss = require('rollup-plugin-postcss'); const filesize = require('rollup-plugin-filesize'); -interface OutputConfig { - format: rollup.ModuleFormat; - extension: string; - declaration?: boolean; -} - -const outputConfigs: OutputConfig[] = [ - { format: 'umd', extension: 'umd' }, - { format: 'esm', extension: 'esm' }, -]; - const fileExtensions = ['.js', '.jsx', '.ts', '.tsx']; export default async function* run( - rawOptions: PackageBuilderOptions, + rawOptions: WebPackageOptions, context: ExecutorContext ) { const project = context.workspace.projects[context.projectName]; @@ -167,20 +156,14 @@ export default async function* run( // ----------------------------------------------------------------------------- export function createRollupOptions( - options: NormalizedBundleBuilderOptions, + options: NormalizedWebPackageOptions, dependencies: DependentBuildableProjectNode[], context: ExecutorContext, packageJson: any, sourceRoot: string, npmDeps: string[] ): rollup.InputOptions[] { - return outputConfigs.map((config) => { - const compilerOptions = createCompilerOptions( - config, - options, - dependencies - ); - + return options.format.map((format) => { const plugins = [ copy({ targets: convertCopyAssetsToRollupOptions( @@ -193,7 +176,7 @@ export function createRollupOptions( check: true, tsconfig: options.tsConfig, tsconfigOverride: { - compilerOptions, + compilerOptions: createCompilerOptions(format, options, dependencies), }, }), peerDepsExternal({ @@ -213,6 +196,8 @@ export function createRollupOptions( getBabelInputPlugin({ // Let's `@nrwl/web/babel` preset know that we are packaging. caller: { + // Ignored since this is for our custom babel-loader + babel preset + // @ts-ignore isNxPackage: true, }, cwd: join(context.root, sourceRoot), @@ -222,29 +207,25 @@ export function createRollupOptions( babelHelpers: 'bundled', exclude: /node_modules/, plugins: [ - config.format === 'esm' + format === 'esm' ? undefined : require.resolve('babel-plugin-transform-async-to-promises'), ].filter(Boolean), }), - commonjs({ - namedExports: { - // This is needed because `react/jsx-runtime` exports `jsx` on the module export. - // Without this mapping the transformed import `import {jsx as _jsx} from 'react/jsx-runtime'` will fail. - 'react/jsx-runtime': ['jsx', 'jsxs', 'Fragment'], - 'react/jsx-dev-runtime': ['jsxDEV', 'Fragment'], - }, - }), + commonjs(), filesize(), json(), ]; const globals = options.globals - ? options.globals.reduce((acc, item) => { - acc[item.moduleId] = item.global; - return acc; - }, {}) - : {}; + ? options.globals.reduce( + (acc, item) => { + acc[item.moduleId] = item.global; + return acc; + }, + { 'react/jsx-runtime': 'jsxRuntime' } + ) + : { 'react/jsx-runtime': 'jsxRuntime' }; const externalPackages = dependencies .map((d) => d.name) @@ -255,8 +236,8 @@ export function createRollupOptions( input: options.entryFile, output: { globals, - format: config.format, - file: `${options.outputPath}/${context.projectName}.${config.extension}.js`, + format, + file: `${options.outputPath}/${context.projectName}.${format}.js`, name: options.umdName || names(context.projectName).className, }, external: (id) => @@ -271,31 +252,31 @@ export function createRollupOptions( }); } -function createCompilerOptions(config, options, dependencies) { +function createCompilerOptions(format, options, dependencies) { const compilerOptionPaths = computeCompilerOptionsPaths( options.tsConfig, dependencies ); - const baseCompilerOptions = { + const compilerOptions = { rootDir: options.entryRoot, allowJs: false, declaration: true, paths: compilerOptionPaths, }; - if (config.format !== 'esm') { + if (format !== 'esm') { return { - ...baseCompilerOptions, + ...compilerOptions, target: 'es5', }; } - return baseCompilerOptions; + return compilerOptions; } function updatePackageJson( - options: NormalizedBundleBuilderOptions, + options: NormalizedWebPackageOptions, context: ExecutorContext, target: ProjectGraphNode, dependencies: DependentBuildableProjectNode[], diff --git a/packages/web/src/executors/package/schema.d.ts b/packages/web/src/executors/package/schema.d.ts new file mode 100644 index 00000000000000..5ea8199f49df69 --- /dev/null +++ b/packages/web/src/executors/package/schema.d.ts @@ -0,0 +1,23 @@ +export interface Globals { + moduleId: string; + global: string; +} + +export interface WebPackageOptions { + outputPath: string; + tsConfig: string; + project: string; + entryFile: string; + extractCss?: boolean; + globals?: Globals[]; + external?: string[]; + rollupConfig?: string | string[]; + babelConfig?: string; + watch?: boolean; + assets?: any[]; + updateBuildableProjectDepsInPackageJson?: boolean; + buildableProjectDepsInPackageJsonType?: 'dependencies' | 'peerDependencies'; + umdName?: string; + deleteOutputPath?: boolean; + format: string[]; +} diff --git a/packages/web/src/executors/package/schema.json b/packages/web/src/executors/package/schema.json index bcd61dfb802393..b64343ebd4a53e 100644 --- a/packages/web/src/executors/package/schema.json +++ b/packages/web/src/executors/package/schema.json @@ -25,6 +25,16 @@ "type": "string", "description": "The path to tsconfig file." }, + "format": { + "type": "array", + "description": "Only build the specified comma-separated formats (esm,umd,cjs)", + "alias": "f", + "items": { + "type": "string", + "enum": ["esm", "umd", "cjs"] + }, + "default": ["esm", "umd"] + }, "external": { "type": "array", "description": "A list of external modules that will not be bundled (react, react-dom, etc.).", diff --git a/packages/web/src/utils/normalize.spec.ts b/packages/web/src/utils/normalize.spec.ts index d0f51050f27c85..456d0228367321 100644 --- a/packages/web/src/utils/normalize.spec.ts +++ b/packages/web/src/utils/normalize.spec.ts @@ -1,5 +1,5 @@ -import { normalizeBuildOptions, normalizePackageOptions } from './normalize'; -import { BuildBuilderOptions, PackageBuilderOptions } from './types'; +import { normalizeBuildOptions } from './normalize'; +import { BuildBuilderOptions } from './types'; import * as fs from 'fs'; @@ -112,46 +112,3 @@ describe('normalizeBuildOptions', () => { expect(result.webpackConfig).not.toMatch(root); }); }); - -describe('normalizePackageOptions', () => { - let testOptions: PackageBuilderOptions; - let root: string; - let sourceRoot: string; - - beforeEach(() => { - testOptions = { - outputPath: '/tmp', - project: 'apps/nodeapp/package.json', - entryFile: 'apps/nodeapp/src/main.ts', - tsConfig: 'apps/nodeapp/tsconfig.app.json', - rollupConfig: 'apps/nodeapp/rollup.config', - }; - root = '/root'; - sourceRoot = 'apps/nodeapp/src'; - }); - - it('should resolve both node modules and relative path for rollupConfig', () => { - let result = normalizePackageOptions(testOptions, root, sourceRoot); - expect(result.rollupConfig).toEqual(['/root/apps/nodeapp/rollup.config']); - - result = normalizePackageOptions( - { - ...testOptions, - // something that exists in node_modules - rollupConfig: 'react', - }, - root, - sourceRoot - ); - expect(result.rollupConfig).toHaveLength(1); - expect(result.rollupConfig[0]).toMatch('react'); - expect(result.rollupConfig[0]).not.toMatch(root); - }); - - it('should handle rollupConfig being undefined', () => { - delete testOptions.rollupConfig; - - const result = normalizePackageOptions(testOptions, root, sourceRoot); - expect(result.rollupConfig).toEqual([]); - }); -}); diff --git a/packages/web/src/utils/normalize.ts b/packages/web/src/utils/normalize.ts index c44253948ad9ed..fcbff4af708e06 100644 --- a/packages/web/src/utils/normalize.ts +++ b/packages/web/src/utils/normalize.ts @@ -1,11 +1,7 @@ import { WebBuildBuilderOptions } from '../executors/build/build.impl'; import { normalizePath } from '@nrwl/devkit'; -import { resolve, dirname, relative, basename } from 'path'; -import { - AssetGlobPattern, - BuildBuilderOptions, - PackageBuilderOptions, -} from './types'; +import { basename, dirname, relative, resolve } from 'path'; +import { AssetGlobPattern, BuildBuilderOptions } from './types'; import { statSync } from 'fs'; export interface FileReplacement { @@ -13,45 +9,6 @@ export interface FileReplacement { with: string; } -export interface NormalizedBundleBuilderOptions extends PackageBuilderOptions { - entryRoot: string; - projectRoot: string; - assets: AssetGlobPattern[]; - rollupConfig: string[]; -} - -export function normalizePackageOptions( - options: PackageBuilderOptions, - root: string, - sourceRoot: string -): NormalizedBundleBuilderOptions { - const entryFile = `${root}/${options.entryFile}`; - const entryRoot = dirname(entryFile); - const project = `${root}/${options.project}`; - const projectRoot = dirname(project); - const outputPath = `${root}/${options.outputPath}`; - - if (options.buildableProjectDepsInPackageJsonType == undefined) { - options.buildableProjectDepsInPackageJsonType = 'peerDependencies'; - } - - return { - ...options, - rollupConfig: [] - .concat(options.rollupConfig) - .filter(Boolean) - .map((p) => normalizePluginPath(p, root)), - assets: options.assets - ? normalizeAssets(options.assets, root, sourceRoot) - : undefined, - entryFile, - entryRoot, - project, - projectRoot, - outputPath, - }; -} - export function normalizeBuildOptions( options: T, root: string, @@ -70,7 +27,7 @@ export function normalizeBuildOptions( }; } -function normalizePluginPath(pluginPath: void | string, root: string) { +export function normalizePluginPath(pluginPath: void | string, root: string) { if (!pluginPath) { return ''; } diff --git a/packages/web/src/utils/types.ts b/packages/web/src/utils/types.ts index 9b9e8bc0dc16c0..7252816989277a 100644 --- a/packages/web/src/utils/types.ts +++ b/packages/web/src/utils/types.ts @@ -39,29 +39,6 @@ export interface BuildBuilderOptions { sourceRoot?: string; } -export interface Globals { - moduleId: string; - global: string; -} - -export interface PackageBuilderOptions { - outputPath: string; - tsConfig: string; - project: string; - entryFile: string; - extractCss?: boolean; - globals?: Globals[]; - external?: string[]; - rollupConfig?: string | string[]; - babelConfig?: string; - watch?: boolean; - assets?: any[]; - updateBuildableProjectDepsInPackageJson?: boolean; - buildableProjectDepsInPackageJsonType?: 'dependencies' | 'peerDependencies'; - umdName?: string; - deleteOutputPath?: boolean; -} - export interface AssetGlobPattern { glob: string; input: string; diff --git a/yarn.lock b/yarn.lock index e7916714b958e3..615c4c1d1a0a1b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -870,6 +870,13 @@ dependencies: "@babel/types" "^7.12.13" +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" + integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== + dependencies: + "@babel/types" "^7.14.5" + "@babel/helper-module-imports@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" @@ -877,13 +884,6 @@ dependencies: "@babel/types" "^7.13.12" -"@babel/helper-module-imports@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" - integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== - dependencies: - "@babel/types" "^7.14.5" - "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz#7de42f10d789b423eb902ebd24031ca77cb1e10e" @@ -4583,6 +4583,14 @@ "@babel/helper-module-imports" "^7.7.4" "@rollup/pluginutils" "^3.0.8" +"@rollup/plugin-babel@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@rollup%2fplugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" + integrity sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + "@rollup/plugin-commonjs@11.0.2": version "11.0.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.0.2.tgz#837cc6950752327cb90177b608f0928a4e60b582" @@ -4607,6 +4615,19 @@ magic-string "^0.25.7" resolve "^1.17.0" +"@rollup/plugin-commonjs@^20.0.0": + version "20.0.0" + resolved "https://registry.yarnpkg.com/@rollup%2fplugin-commonjs/-/plugin-commonjs-20.0.0.tgz#3246872dcbcb18a54aaa6277a8c7d7f1b155b745" + integrity sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + commondir "^1.0.1" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" + "@rollup/plugin-image@2.0.4": version "2.0.4" resolved "https://registry.yarnpkg.com/@rollup/plugin-image/-/plugin-image-2.0.4.tgz#a9b22737684986d2299b7803b82bf87af47d41de" @@ -4615,6 +4636,14 @@ "@rollup/pluginutils" "^3.0.4" mini-svg-data-uri "^1.1.3" +"@rollup/plugin-image@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@rollup%2fplugin-image/-/plugin-image-2.1.0.tgz#55a477f07af04b1b0caf63f098568a8bf8b1fa8f" + integrity sha512-IiRhjv65A4Rb/9R+gTP2JdIciumkc8c+3xFoUfw3PUkX77SqqzvJ028AfX856E3ZdExMrqY9C9ZVXN46w6rh9A== + dependencies: + "@rollup/pluginutils" "^3.1.0" + mini-svg-data-uri "^1.2.3" + "@rollup/plugin-json@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" @@ -4645,6 +4674,18 @@ is-module "^1.0.0" resolve "^1.19.0" +"@rollup/plugin-node-resolve@^13.0.4": + version "13.0.4" + resolved "https://registry.yarnpkg.com/@rollup%2fplugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz#b10222f4145a019740acb7738402130d848660c0" + integrity sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + "@rollup/pluginutils@^3.0.0", "@rollup/pluginutils@^3.0.4", "@rollup/pluginutils@^3.0.6", "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" @@ -8762,7 +8803,7 @@ caniuse-lite@^1.0.30001202: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001219.tgz#5bfa5d0519f41f993618bd318f606a4c4c16156b" integrity sha512-c0yixVG4v9KBc/tQ2rlbB3A/bgBFRvl8h8M4IeUbqCca4gsiCfvtaheUssbnux/Mb66Vjz7x8yYjDgYcNQOhyQ== -caniuse-lite@^1.0.30001228: +caniuse-lite@^1.0.30001228, caniuse-lite@^1.0.30001251: version "1.0.30001251" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz#6853a606ec50893115db660f82c094d18f096d85" integrity sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A== @@ -9265,6 +9306,11 @@ color@^3.2.0: color-convert "^1.9.3" color-string "^1.6.0" +colord@^2.0.1: + version "2.7.0" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.7.0.tgz#706ea36fe0cd651b585eb142fe64b6480185270e" + integrity sha512-pZJBqsHz+pYyw3zpX6ZRXWoCHM1/cvFikY9TV8G3zcejCaKE0lhankoj8iScyrrePA8C7yJ5FStfA9zbcOnw7Q== + colorette@^1.1.0, colorette@^1.2.1, colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" @@ -10074,6 +10120,13 @@ css-declaration-sorter@^4.0.1: postcss "^7.0.1" timsort "^0.3.0" +css-declaration-sorter@^6.0.3: + version "6.1.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.1.tgz#77b32b644ba374bc562c0fc6f4fdaba4dfb0b749" + integrity sha512-BZ1aOuif2Sb7tQYY1GeCjG7F++8ggnwUkH5Ictw0mrdpqpEd+zWmcPdstnH2TItlb74FqR0DrVEieon221T/1Q== + dependencies: + timsort "^0.3.0" + css-has-pseudo@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" @@ -10325,6 +10378,41 @@ cssnano-preset-default@^5.0.1: postcss-svgo "^5.0.0" postcss-unique-selectors "^5.0.0" +cssnano-preset-default@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.3.tgz#caa54183a8c8df03124a9e23f374ab89df5a9a99" + integrity sha512-qo9tX+t4yAAZ/yagVV3b+QBKeLklQbmgR3wI7mccrDcR+bEk9iHgZN1E7doX68y9ThznLya3RDmR+nc7l6/2WQ== + dependencies: + css-declaration-sorter "^6.0.3" + cssnano-utils "^2.0.1" + postcss-calc "^8.0.0" + postcss-colormin "^5.2.0" + postcss-convert-values "^5.0.1" + postcss-discard-comments "^5.0.1" + postcss-discard-duplicates "^5.0.1" + postcss-discard-empty "^5.0.1" + postcss-discard-overridden "^5.0.1" + postcss-merge-longhand "^5.0.2" + postcss-merge-rules "^5.0.2" + postcss-minify-font-values "^5.0.1" + postcss-minify-gradients "^5.0.1" + postcss-minify-params "^5.0.1" + postcss-minify-selectors "^5.1.0" + postcss-normalize-charset "^5.0.1" + postcss-normalize-display-values "^5.0.1" + postcss-normalize-positions "^5.0.1" + postcss-normalize-repeat-style "^5.0.1" + postcss-normalize-string "^5.0.1" + postcss-normalize-timing-functions "^5.0.1" + postcss-normalize-unicode "^5.0.1" + postcss-normalize-url "^5.0.2" + postcss-normalize-whitespace "^5.0.1" + postcss-ordered-values "^5.0.2" + postcss-reduce-initial "^5.0.1" + postcss-reduce-transforms "^5.0.1" + postcss-svgo "^5.0.2" + postcss-unique-selectors "^5.0.1" + cssnano-preset-simple@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-2.0.0.tgz#b55e72cb970713f425560a0e141b0335249e2f96" @@ -10366,6 +10454,11 @@ cssnano-utils@^2.0.0: resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.0.tgz#b04baaa312aa3dd5a854b7f61d76b9d94be07f74" integrity sha512-xvxmTszdrvSyTACdPe8VU5J6p4sm3egpgw54dILvNqt5eBUv6TFjACLhSxtRuEsxYrgy8uDy269YjScO5aKbGA== +cssnano-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" + integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== + cssnano@^4.1.10: version "4.1.10" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" @@ -10385,6 +10478,16 @@ cssnano@^5.0.0: cssnano-preset-default "^5.0.1" is-resolvable "^1.1.0" +cssnano@^5.0.1: + version "5.0.7" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.7.tgz#e81894bdf31aa01a0ca3d1d0eee47be18f7f3012" + integrity sha512-7C0tbb298hef3rq+TtBbMuezBQ9VrFtrQEsPNuBKNVgWny/67vdRsnq8EoNu7TRjAHURgYvWlRIpCUmcMZkRzw== + dependencies: + cssnano-preset-default "^5.1.3" + is-resolvable "^1.1.0" + lilconfig "^2.0.3" + yaml "^1.10.2" + csso@^4.0.2, csso@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" @@ -17836,6 +17939,11 @@ mini-svg-data-uri@^1.1.3: resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.2.3.tgz#e16baa92ad55ddaa1c2c135759129f41910bc39f" integrity sha512-zd6KCAyXgmq6FV1mR10oKXYtvmA9vRoB6xPSTUJTbFApCtkefDnYueVR1gkof3KcdLZo1Y8mjF2DFmQMIxsHNQ== +mini-svg-data-uri@^1.2.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.3.3.tgz#91d2c09f45e056e5e1043340b8b37ba7b50f4fac" + integrity sha512-+fA2oRcR1dJI/7ITmeQJDrYWks0wodlOz0pAEhKYJ2IVc1z0AnwJUsKY2fzFmPAM3Jo9J0rBx8JAA9QQSJ5PuA== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -19779,6 +19887,16 @@ postcss-colormin@^5.0.0: color "^3.1.1" postcss-value-parser "^4.1.0" +postcss-colormin@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.0.tgz#2b620b88c0ff19683f3349f4cf9e24ebdafb2c88" + integrity sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + colord "^2.0.1" + postcss-value-parser "^4.1.0" + postcss-convert-values@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" @@ -19794,6 +19912,13 @@ postcss-convert-values@^5.0.0: dependencies: postcss-value-parser "^4.1.0" +postcss-convert-values@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz#4ec19d6016534e30e3102fdf414e753398645232" + integrity sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg== + dependencies: + postcss-value-parser "^4.1.0" + postcss-custom-media@^7.0.8: version "7.0.8" resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" @@ -19837,6 +19962,11 @@ postcss-discard-comments@^5.0.0: resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.0.tgz#6c27310e0657c0b9e38a6175ad001b5aa28964bc" integrity sha512-Umig6Gxs8m20RihiXY6QkePd6mp4FxkA1Dg+f/Kd6uw0gEMfKRjDeQOyFkLibexbJJGHpE3lrN/Q0R9SMrUMbQ== +postcss-discard-comments@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe" + integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg== + postcss-discard-duplicates@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" @@ -19849,6 +19979,11 @@ postcss-discard-duplicates@^5.0.0: resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.0.tgz#6a2c4f779e8d20da6781e90730f234f9e650c51c" integrity sha512-vEJJ+Y3pFUnO1FyCBA6PSisGjHtnphL3V6GsNvkASq/VkP3OX5/No5RYXXLxHa2QegStNzg6HYrYdo71uR4caQ== +postcss-discard-duplicates@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d" + integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA== + postcss-discard-empty@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" @@ -19861,6 +19996,11 @@ postcss-discard-empty@^5.0.0: resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.0.tgz#0f0a9baee415f5f7be4ae046ba235e98626ba821" integrity sha512-+wigy099Y1xZxG36WG5L1f2zeH1oicntkJEW4TDIqKKDO2g9XVB3OhoiHTu08rDEjLnbcab4rw0BAccwi2VjiQ== +postcss-discard-empty@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" + integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== + postcss-discard-overridden@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" @@ -19873,6 +20013,11 @@ postcss-discard-overridden@^5.0.0: resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.0.tgz#ac00f695a60001eda52135a11fac87376b8da9ee" integrity sha512-hybnScTaZM2iEA6kzVQ6Spozy7kVdLw+lGw8hftLlBEzt93uzXoltkYp9u0tI8xbfhxDLTOOzHsHQCkYdmzRUg== +postcss-discard-overridden@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" + integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== + postcss-double-position-gradients@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" @@ -20035,6 +20180,15 @@ postcss-merge-longhand@^5.0.1: postcss-value-parser "^4.1.0" stylehacks "^5.0.0" +postcss-merge-longhand@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz#277ada51d9a7958e8ef8cf263103c9384b322a41" + integrity sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw== + dependencies: + css-color-names "^1.0.1" + postcss-value-parser "^4.1.0" + stylehacks "^5.0.1" + postcss-merge-rules@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" @@ -20058,6 +20212,17 @@ postcss-merge-rules@^5.0.0: postcss-selector-parser "^6.0.4" vendors "^1.0.3" +postcss-merge-rules@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz#d6e4d65018badbdb7dcc789c4f39b941305d410a" + integrity sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + cssnano-utils "^2.0.1" + postcss-selector-parser "^6.0.5" + vendors "^1.0.3" + postcss-minify-font-values@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" @@ -20073,6 +20238,13 @@ postcss-minify-font-values@^5.0.0: dependencies: postcss-value-parser "^4.1.0" +postcss-minify-font-values@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" + integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA== + dependencies: + postcss-value-parser "^4.1.0" + postcss-minify-gradients@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" @@ -20092,6 +20264,15 @@ postcss-minify-gradients@^5.0.0: is-color-stop "^1.1.0" postcss-value-parser "^4.1.0" +postcss-minify-gradients@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz#2dc79fd1a1afcb72a9e727bc549ce860f93565d2" + integrity sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g== + dependencies: + cssnano-utils "^2.0.1" + is-color-stop "^1.1.0" + postcss-value-parser "^4.1.0" + postcss-minify-params@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" @@ -20115,6 +20296,17 @@ postcss-minify-params@^5.0.0: postcss-value-parser "^4.1.0" uniqs "^2.0.0" +postcss-minify-params@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz#371153ba164b9d8562842fdcd929c98abd9e5b6c" + integrity sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw== + dependencies: + alphanum-sort "^1.0.2" + browserslist "^4.16.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + uniqs "^2.0.0" + postcss-minify-selectors@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" @@ -20133,6 +20325,14 @@ postcss-minify-selectors@^5.0.0: alphanum-sort "^1.0.2" postcss-selector-parser "^3.1.2" +postcss-minify-selectors@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" + integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og== + dependencies: + alphanum-sort "^1.0.2" + postcss-selector-parser "^6.0.5" + postcss-modules-extract-imports@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" @@ -20234,6 +20434,11 @@ postcss-normalize-charset@^5.0.0: resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.0.tgz#59e1fe2094fb2e3371cc5b054cbc39828a41a710" integrity sha512-pqsCkgo9KmQP0ew6DqSA+uP9YN6EfsW20pQ3JU5JoQge09Z6Too4qU0TNDsTNWuEaP8SWsMp+19l15210MsDZQ== +postcss-normalize-charset@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" + integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== + postcss-normalize-display-values@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" @@ -20251,6 +20456,14 @@ postcss-normalize-display-values@^5.0.0: cssnano-utils "^2.0.0" postcss-value-parser "^4.1.0" +postcss-normalize-display-values@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" + integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + postcss-normalize-positions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" @@ -20268,6 +20481,13 @@ postcss-normalize-positions@^5.0.0: dependencies: postcss-value-parser "^4.1.0" +postcss-normalize-positions@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" + integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg== + dependencies: + postcss-value-parser "^4.1.0" + postcss-normalize-repeat-style@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" @@ -20286,6 +20506,14 @@ postcss-normalize-repeat-style@^5.0.0: cssnano-utils "^2.0.0" postcss-value-parser "^4.1.0" +postcss-normalize-repeat-style@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" + integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + postcss-normalize-string@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" @@ -20302,6 +20530,13 @@ postcss-normalize-string@^5.0.0: dependencies: postcss-value-parser "^4.1.0" +postcss-normalize-string@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" + integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA== + dependencies: + postcss-value-parser "^4.1.0" + postcss-normalize-timing-functions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" @@ -20319,6 +20554,14 @@ postcss-normalize-timing-functions@^5.0.0: cssnano-utils "^2.0.0" postcss-value-parser "^4.1.0" +postcss-normalize-timing-functions@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" + integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + postcss-normalize-unicode@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" @@ -20336,6 +20579,14 @@ postcss-normalize-unicode@^5.0.0: browserslist "^4.16.0" postcss-value-parser "^4.1.0" +postcss-normalize-unicode@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" + integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA== + dependencies: + browserslist "^4.16.0" + postcss-value-parser "^4.1.0" + postcss-normalize-url@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" @@ -20355,6 +20606,15 @@ postcss-normalize-url@^5.0.0: normalize-url "^4.5.0" postcss-value-parser "^4.1.0" +postcss-normalize-url@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz#ddcdfb7cede1270740cf3e4dfc6008bd96abc763" + integrity sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ== + dependencies: + is-absolute-url "^3.0.3" + normalize-url "^6.0.1" + postcss-value-parser "^4.1.0" + postcss-normalize-whitespace@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" @@ -20370,6 +20630,13 @@ postcss-normalize-whitespace@^5.0.0: dependencies: postcss-value-parser "^4.1.0" +postcss-normalize-whitespace@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" + integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA== + dependencies: + postcss-value-parser "^4.1.0" + postcss-ordered-values@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" @@ -20387,6 +20654,14 @@ postcss-ordered-values@^5.0.0: cssnano-utils "^2.0.0" postcss-value-parser "^4.1.0" +postcss-ordered-values@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044" + integrity sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + postcss-overflow-shorthand@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" @@ -20478,6 +20753,14 @@ postcss-reduce-initial@^5.0.0: browserslist "^4.16.0" caniuse-api "^3.0.0" +postcss-reduce-initial@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946" + integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw== + dependencies: + browserslist "^4.16.0" + caniuse-api "^3.0.0" + postcss-reduce-transforms@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" @@ -20496,6 +20779,14 @@ postcss-reduce-transforms@^5.0.0: cssnano-utils "^2.0.0" postcss-value-parser "^4.1.0" +postcss-reduce-transforms@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" + integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + postcss-replace-overflow-wrap@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" @@ -20547,7 +20838,7 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector uniq "^1.0.1" util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.6: +postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.6: version "6.0.6" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== @@ -20573,6 +20864,14 @@ postcss-svgo@^5.0.0: postcss-value-parser "^4.1.0" svgo "^2.3.0" +postcss-svgo@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.2.tgz#bc73c4ea4c5a80fbd4b45e29042c34ceffb9257f" + integrity sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A== + dependencies: + postcss-value-parser "^4.1.0" + svgo "^2.3.0" + postcss-unique-selectors@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" @@ -20591,6 +20890,15 @@ postcss-unique-selectors@^5.0.0: postcss-selector-parser "^6.0.2" uniqs "^2.0.0" +postcss-unique-selectors@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz#3be5c1d7363352eff838bd62b0b07a0abad43bfc" + integrity sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w== + dependencies: + alphanum-sort "^1.0.2" + postcss-selector-parser "^6.0.5" + uniqs "^2.0.0" + postcss-url@^10.1.1: version "10.1.1" resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-10.1.1.tgz#f58b4ec684a7b662c170357150eddcbc04cefa24" @@ -22314,18 +22622,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rollup-plugin-copy@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-3.3.0.tgz#5ba230047f86b9f703a29288f242948a5580e7b9" - integrity sha512-euDjCUSBXZa06nqnwCNADbkAcYDfzwowfZQkto9K/TFhiH+QG7I4PUsEMwM9tDgomGWJc//z7KLW8t+tZwxADA== - dependencies: - "@types/fs-extra" "^8.0.1" - colorette "^1.1.0" - fs-extra "^8.1.0" - globby "10.0.1" - is-plain-object "^3.0.0" - -rollup-plugin-copy@^3.3.0: +rollup-plugin-copy@^3.3.0, rollup-plugin-copy@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz#f1228a3ffb66ffad8606e2f3fb7ff23141ed3286" integrity sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ== @@ -22336,7 +22633,7 @@ rollup-plugin-copy@^3.3.0: globby "10.0.1" is-plain-object "^3.0.0" -rollup-plugin-filesize@^9.0.0: +rollup-plugin-filesize@^9.0.0, rollup-plugin-filesize@^9.1.1: version "9.1.1" resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-9.1.1.tgz#31a6b02b27ce08082ef0970cfe4c451714ff91c4" integrity sha512-x0r2A85TCEdRwF3rm+bcN4eAmbER8tt+YVf88gBQ6sLyH4oGcnNLPQqAUX+v7mIvHC/y59QwZvo6vxaC2ias6Q== @@ -22350,17 +22647,12 @@ rollup-plugin-filesize@^9.0.0: pacote "^11.2.7" terser "^5.6.0" -rollup-plugin-local-resolve@1.0.7, rollup-plugin-local-resolve@^1.0.7: +rollup-plugin-local-resolve@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/rollup-plugin-local-resolve/-/rollup-plugin-local-resolve-1.0.7.tgz#c486701716c15add2127565c2eaa101123320887" integrity sha1-xIZwFxbBWt0hJ1ZcLqoQESMyCIc= -rollup-plugin-peer-deps-external@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.2.tgz#506cef67fb68f41cca3ec08ca6ff7936b190f568" - integrity sha512-XcHH4UW9exRTAf73d8rk2dw2UgF//cWbilhRI4Ni/n+t0zA1eBtohKyJROn0fxa4/+WZ5R3onAyIDiwRQL+59A== - -rollup-plugin-peer-deps-external@^2.2.2: +rollup-plugin-peer-deps-external@^2.2.2, rollup-plugin-peer-deps-external@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz#8a420bbfd6dccc30aeb68c9bf57011f2f109570d" integrity sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g== @@ -22384,6 +22676,25 @@ rollup-plugin-postcss@^4.0.0: safe-identifier "^0.4.2" style-inject "^0.3.0" +rollup-plugin-postcss@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.1.tgz#2856465b637ec02513676659aabf1ca3840f3af0" + integrity sha512-kUJHlpDGl9+kDfdUUbnerW0Mx1R0PL/6dgciUE/w19swYDBjug7RQfxIRvRGtO/cvCkynYyU8e/YFMI544vskA== + dependencies: + chalk "^4.1.0" + concat-with-sourcemaps "^1.1.0" + cssnano "^5.0.1" + import-cwd "^3.0.0" + p-queue "^6.6.2" + pify "^5.0.0" + postcss-load-config "^3.0.0" + postcss-modules "^4.0.0" + promise.series "^0.2.0" + resolve "^1.19.0" + rollup-pluginutils "^2.8.2" + safe-identifier "^0.4.2" + style-inject "^0.3.0" + rollup-plugin-sourcemaps@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz#bf93913ffe056e414419607f1d02780d7ece84ed" @@ -22426,6 +22737,13 @@ rollup@^2.45.1: optionalDependencies: fsevents "~2.3.1" +rollup@^2.56.2: + version "2.56.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.56.2.tgz#a045ff3f6af53ee009b5f5016ca3da0329e5470f" + integrity sha512-s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ== + optionalDependencies: + fsevents "~2.3.2" + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -23814,6 +24132,14 @@ stylehacks@^5.0.0: browserslist "^4.16.0" postcss-selector-parser "^6.0.4" +stylehacks@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb" + integrity sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA== + dependencies: + browserslist "^4.16.0" + postcss-selector-parser "^6.0.4" + stylis-rule-sheet@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430"