@samitouri / QOS-React / commits / 96c5846610

feat[devtools]: add package for fusebox integration (#28553)

## Summary Stacked on https://github.com/facebook/react/pull/28552. Review only the [last commit at the top](https://github.com/facebook/react/pull/28553/commits/c69952f1bf6e23252d47e0f7eb98efbbb2cc2c55). These changes add new package `react-devtools-fusebox`, which is the entrypoint for the RDT Frontend, which will be used in Chrome DevTools panel. The main differences from other frontend shells (extension, standalone) are: 1. This package builds scripts in ESM format, this is required by Chrome DevTools, see webpack config: https://github.com/facebook/react/blob/c69952f1bf6e23252d47e0f7eb98efbbb2cc2c55/packages/react-devtools-fusebox/webpack.config.frontend.js#L50-L52 2. The build includes styles in a separate `.css` file, which is required for Chrome DevTools: styles are loaded lazily once panel is mounted.

Ruslan Lesiutin committed Apr 12, 2024 at 15:29 UTC 96c58466109c2944adb817001fec38088a7c431e
7 files changed +337 -3
.gitignore
+1
@@ -33,6 +33,7 @@ packages/react-devtools-extensions/firefox/*.xpi
33 packages/react-devtools-extensions/firefox/*.pem
34 packages/react-devtools-extensions/shared/build
35 packages/react-devtools-extensions/.tempUserDataDir
36 +packages/react-devtools-fusebox/dist
37 packages/react-devtools-inline/dist
38 packages/react-devtools-shell/dist
39 packages/react-devtools-timeline/dist
packages/react-devtools-fusebox/README.md new
+6
@@ -0,0 +1,6 @@
1 +# react-native-fusebox
2 +
3 +This package is private and not expected to become public anytime soon. Consider using [react-devtools-inline](https://github.com/facebook/react/tree/main/packages/react-devtools-inline) or [react-devtools-core](https://github.com/facebook/react/tree/main/packages/react-devtools-core).
4 +
5 +## What is Fusebox?
6 +"Fusebox" is the internal codename for the new React Native debugger stack based on Chrome DevTools.
packages/react-devtools-fusebox/package.json new
+22
@@ -0,0 +1,22 @@
1 +{
2 + "name": "react-devtools-fusebox",
3 + "version": "0.0.0",
4 + "private": "true",
5 + "license": "MIT",
6 + "files": ["dist"],
7 + "scripts": {
8 + "build:frontend:local": "cross-env NODE_ENV=development webpack --config webpack.config.frontend.js",
9 + "build:frontend": "cross-env NODE_ENV=production webpack --config webpack.config.frontend.js",
10 + "build": "yarn build:frontend"
11 + },
12 + "devDependencies": {
13 + "buffer": "^6.0.3",
14 + "cross-env": "^7.0.3",
15 + "css-loader": "^6.9.1",
16 + "mini-css-extract-plugin": "^2.7.7",
17 + "process": "^0.11.10",
18 + "webpack": "^5.82.1",
19 + "webpack-cli": "^5.1.1",
20 + "workerize-loader": "^2.0.2"
21 + }
22 +}
packages/react-devtools-fusebox/src/frontend.js new
+62
@@ -0,0 +1,62 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import * as React from 'react';
11 +import {createRoot} from 'react-dom/client';
12 +import Bridge from 'react-devtools-shared/src/bridge';
13 +import Store from 'react-devtools-shared/src/devtools/store';
14 +import DevTools from 'react-devtools-shared/src/devtools/views/DevTools';
15 +
16 +import type {Wall} from 'react-devtools-shared/src/frontend/types';
17 +import type {FrontendBridge} from 'react-devtools-shared/src/bridge';
18 +
19 +type Config = {
20 + checkBridgeProtocolCompatibility?: boolean,
21 + supportsNativeInspection?: boolean,
22 + supportsProfiling?: boolean,
23 +};
24 +
25 +export function createBridge(wall?: Wall): FrontendBridge {
26 + if (wall != null) {
27 + return new Bridge(wall);
28 + }
29 +
30 + return new Bridge({listen: () => {}, send: () => {}});
31 +}
32 +
33 +export function createStore(bridge: FrontendBridge, config?: Config): Store {
34 + return new Store(bridge, {
35 + checkBridgeProtocolCompatibility: true,
36 + supportsTraceUpdates: true,
37 + supportsNativeInspection: true,
38 + ...config,
39 + });
40 +}
41 +
42 +type InitializationOptions = {
43 + bridge: FrontendBridge,
44 + store: Store,
45 +};
46 +
47 +export function initialize(
48 + contentWindow: Element | Document,
49 + options: InitializationOptions,
50 +): void {
51 + const {bridge, store} = options;
52 + const root = createRoot(contentWindow);
53 +
54 + root.render(
55 + <DevTools
56 + bridge={bridge}
57 + store={store}
58 + showTabBar={true}
59 + warnIfLegacyBackendDetected={true}
60 + />,
61 + );
62 +}
packages/react-devtools-fusebox/webpack.config.frontend.js new
+141
@@ -0,0 +1,141 @@
1 +const {resolve} = require('path');
2 +const Webpack = require('webpack');
3 +const {
4 + DARK_MODE_DIMMED_WARNING_COLOR,
5 + DARK_MODE_DIMMED_ERROR_COLOR,
6 + DARK_MODE_DIMMED_LOG_COLOR,
7 + LIGHT_MODE_DIMMED_WARNING_COLOR,
8 + LIGHT_MODE_DIMMED_ERROR_COLOR,
9 + LIGHT_MODE_DIMMED_LOG_COLOR,
10 + GITHUB_URL,
11 + getVersionString,
12 +} = require('react-devtools-extensions/utils');
13 +const {resolveFeatureFlags} = require('react-devtools-shared/buildUtils');
14 +const MiniCssExtractPlugin = require('mini-css-extract-plugin');
15 +
16 +const NODE_ENV = process.env.NODE_ENV;
17 +if (!NODE_ENV) {
18 + console.error('NODE_ENV not set');
19 + process.exit(1);
20 +}
21 +
22 +const builtModulesDir = resolve(
23 + __dirname,
24 + '..',
25 + '..',
26 + 'build',
27 + 'oss-experimental',
28 +);
29 +
30 +const __DEV__ = NODE_ENV === 'development';
31 +
32 +const EDITOR_URL = process.env.EDITOR_URL || null;
33 +
34 +const DEVTOOLS_VERSION = getVersionString();
35 +
36 +const babelOptions = {
37 + configFile: resolve(
38 + __dirname,
39 + '..',
40 + 'react-devtools-shared',
41 + 'babel.config.js',
42 + ),
43 +};
44 +
45 +module.exports = {
46 + mode: __DEV__ ? 'development' : 'production',
47 + entry: {
48 + frontend: './src/frontend.js',
49 + },
50 + experiments: {
51 + outputModule: true,
52 + },
53 + output: {
54 + path: __dirname + '/dist',
55 + publicPath: '/dist/',
56 + filename: '[name].js',
57 + chunkFilename: '[name].chunk.js',
58 + library: {
59 + type: 'module',
60 + },
61 + },
62 + node: {
63 + global: false,
64 + },
65 + resolve: {
66 + alias: {
67 + 'react-devtools-feature-flags': resolveFeatureFlags('fusebox'),
68 + react: resolve(builtModulesDir, 'react'),
69 + 'react-debug-tools': resolve(builtModulesDir, 'react-debug-tools'),
70 + 'react-dom/client': resolve(builtModulesDir, 'react-dom/client'),
71 + 'react-dom': resolve(builtModulesDir, 'react-dom'),
72 + 'react-is': resolve(builtModulesDir, 'react-is'),
73 + scheduler: resolve(builtModulesDir, 'scheduler'),
74 + },
75 + },
76 + optimization: {
77 + minimize: false,
78 + },
79 + plugins: [
80 + new MiniCssExtractPlugin(),
81 + new Webpack.ProvidePlugin({
82 + process: 'process/browser',
83 + Buffer: ['buffer', 'Buffer'],
84 + }),
85 + new Webpack.DefinePlugin({
86 + __DEV__,
87 + __EXPERIMENTAL__: true,
88 + __EXTENSION__: false,
89 + __PROFILE__: false,
90 + __TEST__: NODE_ENV === 'test',
91 + 'process.env.DEVTOOLS_PACKAGE': `"react-devtools-fusebox"`,
92 + 'process.env.DEVTOOLS_VERSION': `"${DEVTOOLS_VERSION}"`,
93 + 'process.env.EDITOR_URL': EDITOR_URL != null ? `"${EDITOR_URL}"` : null,
94 + 'process.env.GITHUB_URL': `"${GITHUB_URL}"`,
95 + 'process.env.NODE_ENV': `"${NODE_ENV}"`,
96 + 'process.env.DARK_MODE_DIMMED_WARNING_COLOR': `"${DARK_MODE_DIMMED_WARNING_COLOR}"`,
97 + 'process.env.DARK_MODE_DIMMED_ERROR_COLOR': `"${DARK_MODE_DIMMED_ERROR_COLOR}"`,
98 + 'process.env.DARK_MODE_DIMMED_LOG_COLOR': `"${DARK_MODE_DIMMED_LOG_COLOR}"`,
99 + 'process.env.LIGHT_MODE_DIMMED_WARNING_COLOR': `"${LIGHT_MODE_DIMMED_WARNING_COLOR}"`,
100 + 'process.env.LIGHT_MODE_DIMMED_ERROR_COLOR': `"${LIGHT_MODE_DIMMED_ERROR_COLOR}"`,
101 + 'process.env.LIGHT_MODE_DIMMED_LOG_COLOR': `"${LIGHT_MODE_DIMMED_LOG_COLOR}"`,
102 + }),
103 + ],
104 + module: {
105 + rules: [
106 + {
107 + test: /\.worker\.js$/,
108 + use: [
109 + {
110 + loader: 'workerize-loader',
111 + options: {
112 + inline: true,
113 + name: '[name]',
114 + },
115 + },
116 + {
117 + loader: 'babel-loader',
118 + options: babelOptions,
119 + },
120 + ],
121 + },
122 + {
123 + test: /\.js$/,
124 + loader: 'babel-loader',
125 + options: babelOptions,
126 + },
127 + {
128 + test: /\.css$/i,
129 + use: [
130 + {
131 + loader: MiniCssExtractPlugin.loader,
132 + },
133 + {
134 + loader: 'css-loader',
135 + options: {modules: true},
136 + },
137 + ],
138 + },
139 + ],
140 + },
141 +};
packages/react-devtools-shared/buildUtils.js
+1
@@ -13,6 +13,7 @@ function resolveFeatureFlags(target) {
13 switch (target) {
14 case 'inline':
15 case 'shell':
16 + case 'fusebox':
17 flagsPath = 'DevToolsFeatureFlags.default';
18 break;
19 case 'core/backend-oss':
yarn.lock
+104 -3
@@ -5878,6 +5878,13 @@ cross-env@^3.1.4:
5878 cross-spawn "^5.1.0"
5879 is-windows "^1.0.0"
5880
5881 +cross-env@^7.0.3:
5882 + version "7.0.3"
5883 + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
5884 + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
5885 + dependencies:
5886 + cross-spawn "^7.0.1"
5887 +
5888 cross-fetch@^3.0.4:
5889 version "3.1.5"
5890 resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f"
@@ -5922,7 +5929,7 @@ cross-spawn@^7.0.0:
5929 shebang-command "^2.0.0"
5930 which "^2.0.1"
5931
5925 -cross-spawn@^7.0.2, cross-spawn@^7.0.3:
5932 +cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
5933 version "7.0.3"
5934 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
5935 integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -6005,6 +6012,20 @@ css-loader@^4.2.1:
6012 schema-utils "^2.7.0"
6013 semver "^7.3.2"
6014
6015 +css-loader@^6.9.1:
6016 + version "6.10.0"
6017 + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7"
6018 + integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==
6019 + dependencies:
6020 + icss-utils "^5.1.0"
6021 + postcss "^8.4.33"
6022 + postcss-modules-extract-imports "^3.0.0"
6023 + postcss-modules-local-by-default "^4.0.4"
6024 + postcss-modules-scope "^3.1.1"
6025 + postcss-modules-values "^4.0.0"
6026 + postcss-value-parser "^4.2.0"
6027 + semver "^7.5.4"
6028 +
6029 css-select-base-adapter@^0.1.1:
6030 version "0.1.1"
6031 resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
@@ -8941,6 +8962,11 @@ icss-utils@^4.0.0, icss-utils@^4.1.1:
8962 dependencies:
8963 postcss "^7.0.14"
8964
8965 +icss-utils@^5.0.0, icss-utils@^5.1.0:
8966 + version "5.1.0"
8967 + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
8968 + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
8969 +
8970 ieee754@^1.1.12, ieee754@^1.1.4:
8971 version "1.1.13"
8972 resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
@@ -11225,6 +11251,14 @@ mimic-response@^3.1.0:
11251 resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
11252 integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
11253
11254 +mini-css-extract-plugin@^2.7.7:
11255 + version "2.8.1"
11256 + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz#75245f3f30ce3a56dbdd478084df6fe475f02dc7"
11257 + integrity sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==
11258 + dependencies:
11259 + schema-utils "^4.0.0"
11260 + tapable "^2.2.1"
11261 +
11262 minimalistic-assert@^1.0.0:
11263 version "1.0.1"
11264 resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
@@ -11358,6 +11392,11 @@ nan@^2.12.1:
11392 resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
11393 integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
11394
11395 +nanoid@^3.3.7:
11396 + version "3.3.7"
11397 + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
11398 + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
11399 +
11400 nanomatch@^1.2.9:
11401 version "1.2.13"
11402 resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
@@ -12491,6 +12530,11 @@ postcss-modules-extract-imports@^2.0.0:
12530 dependencies:
12531 postcss "^7.0.5"
12532
12533 +postcss-modules-extract-imports@^3.0.0:
12534 + version "3.0.0"
12535 + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
12536 + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
12537 +
12538 postcss-modules-local-by-default@^1.2.0:
12539 version "1.2.0"
12540 resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
@@ -12509,6 +12553,15 @@ postcss-modules-local-by-default@^3.0.3:
12553 postcss-selector-parser "^6.0.2"
12554 postcss-value-parser "^4.1.0"
12555
12556 +postcss-modules-local-by-default@^4.0.4:
12557 + version "4.0.4"
12558 + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6"
12559 + integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==
12560 + dependencies:
12561 + icss-utils "^5.0.0"
12562 + postcss-selector-parser "^6.0.2"
12563 + postcss-value-parser "^4.1.0"
12564 +
12565 postcss-modules-scope@^1.1.0:
12566 version "1.1.0"
12567 resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
@@ -12525,6 +12578,13 @@ postcss-modules-scope@^2.2.0:
12578 postcss "^7.0.6"
12579 postcss-selector-parser "^6.0.0"
12580
12581 +postcss-modules-scope@^3.1.1:
12582 + version "3.1.1"
12583 + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134"
12584 + integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==
12585 + dependencies:
12586 + postcss-selector-parser "^6.0.4"
12587 +
12588 postcss-modules-values@^1.3.0:
12589 version "1.3.0"
12590 resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
@@ -12541,6 +12601,13 @@ postcss-modules-values@^3.0.0:
12601 icss-utils "^4.0.0"
12602 postcss "^7.0.6"
12603
12604 +postcss-modules-values@^4.0.0:
12605 + version "4.0.0"
12606 + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
12607 + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
12608 + dependencies:
12609 + icss-utils "^5.0.0"
12610 +
12611 postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
12612 version "6.0.2"
12613 resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
@@ -12550,6 +12617,14 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
12617 indexes-of "^1.0.1"
12618 uniq "^1.0.1"
12619
12620 +postcss-selector-parser@^6.0.4:
12621 + version "6.0.16"
12622 + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04"
12623 + integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==
12624 + dependencies:
12625 + cssesc "^3.0.0"
12626 + util-deprecate "^1.0.2"
12627 +
12628 postcss-value-parser@^3.3.0:
12629 version "3.3.1"
12630 resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
@@ -12560,6 +12635,11 @@ postcss-value-parser@^4.1.0:
12635 resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
12636 integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
12637
12638 +postcss-value-parser@^4.2.0:
12639 + version "4.2.0"
12640 + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
12641 + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
12642 +
12643 postcss@7.0.32, postcss@^7.0.14, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6:
12644 version "7.0.32"
12645 resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d"
@@ -12578,6 +12658,15 @@ postcss@^6.0.1, postcss@^6.0.23:
12658 source-map "^0.6.1"
12659 supports-color "^5.4.0"
12660
12661 +postcss@^8.4.33:
12662 + version "8.4.35"
12663 + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7"
12664 + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==
12665 + dependencies:
12666 + nanoid "^3.3.7"
12667 + picocolors "^1.0.0"
12668 + source-map-js "^1.0.2"
12669 +
12670 prelude-ls@^1.2.1:
12671 version "1.2.1"
12672 resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@@ -13814,6 +13903,13 @@ semver@^7.3.5:
13903 dependencies:
13904 lru-cache "^6.0.0"
13905
13906 +semver@^7.5.4:
13907 + version "7.6.0"
13908 + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
13909 + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
13910 + dependencies:
13911 + lru-cache "^6.0.0"
13912 +
13913 send@0.18.0:
13914 version "0.18.0"
13915 resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
@@ -14170,6 +14266,11 @@ source-map-js@^0.6.2:
14266 resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e"
14267 integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==
14268
14269 +source-map-js@^1.0.2:
14270 + version "1.0.2"
14271 + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
14272 + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
14273 +
14274 source-map-resolve@^0.5.0:
14275 version "0.5.3"
14276 resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
@@ -14821,7 +14922,7 @@ table@^6.0.9:
14922 string-width "^4.2.3"
14923 strip-ansi "^6.0.1"
14924
14824 -tapable@^2.1.1, tapable@^2.2.0:
14925 +tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1:
14926 version "2.2.1"
14927 resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
14928 integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
@@ -15540,7 +15641,7 @@ userhome@^1.0.0:
15641 resolved "https://registry.yarnpkg.com/userhome/-/userhome-1.0.0.tgz#b6491ff12d21a5e72671df9ccc8717e1c6688c0b"
15642 integrity sha1-tkkf8S0hpecmcd+czIcX4cZojAs=
15643
15543 -util-deprecate@^1.0.1, util-deprecate@~1.0.1:
15644 +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
15645 version "1.0.2"
15646 resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
15647 integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=