Support globally installed React DevTools
Summary: - Support loading globally installed DevTools Background: 1. Initially, I wanted to use react-devtools-core as before. react-devtools-core standalone contains quite a few imports of node.js APIs. After [a conversation with Brian](https://fb.workplace.com/groups/react.devtools/permalink/3131548550392044), I pivoted to react-devtools-inline 2. Technical design doc of react-devtools-inline integration: https://docs.google.com/document/d/1STUSUhXzrW_KkvqSu7Ge-rxjVFF7oU3_NbwzimkO_Z4 3. We support usage of globally installed devtools. Code of react-devtools-inline is not ready to be used by the browser as is. We need to bundle it and substitute React and ReactDOM imports with the globals. 4. As we can't pre-compile what users install globally, we need to bundle global devtools on demand, 5. I tried re-using our Metro bundling pipeline initially, but gave up after fighting it for 2 days. Included, `rollup` instead. 6. Size of a `tgz` archive with a plugin is 2.1MB allow-large-files Reviewed By: mweststrate Differential Revision: D34968770 fbshipit-source-id: 352299964ccc195b8677dbda47db84ffaf38737b
This commit is contained in:
committed by
Facebook GitHub Bot
parent
68aec1df60
commit
ba9a80545d
@@ -34,6 +34,14 @@ test('transform react-dom requires to global object', () => {
|
|||||||
expect(code).toBe('global.ReactDOM;');
|
expect(code).toBe('global.ReactDOM;');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('transform react-dom/client requires to global object', () => {
|
||||||
|
const src = 'require("react-dom/client")';
|
||||||
|
const ast = parse(src);
|
||||||
|
const transformed = transformFromAstSync(ast, src, babelOptions)!.ast;
|
||||||
|
const {code} = generate(transformed!);
|
||||||
|
expect(code).toBe('global.ReactDOMClient;');
|
||||||
|
});
|
||||||
|
|
||||||
test('transform flipper requires to global object', () => {
|
test('transform flipper requires to global object', () => {
|
||||||
const src = 'require("flipper")';
|
const src = 'require("flipper")';
|
||||||
const ast = parse(src);
|
const ast = parse(src);
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ export const BUILTINS = [
|
|||||||
'v8',
|
'v8',
|
||||||
'repl',
|
'repl',
|
||||||
'timers',
|
'timers',
|
||||||
|
'perf_hooks',
|
||||||
|
'fsevents',
|
||||||
|
'./fsevents.node',
|
||||||
// MWE node-fetch looks strange here, not sure what the effect of changing that would be
|
// MWE node-fetch looks strange here, not sure what the effect of changing that would be
|
||||||
'node-fetch',
|
'node-fetch',
|
||||||
// jest is referred to in source code, like in TestUtils, but we don't want to ever bundle it up!
|
// jest is referred to in source code, like in TestUtils, but we don't want to ever bundle it up!
|
||||||
|
|||||||
34
desktop/babel-transformer/src/fsevents-dynamic-imports.tsx
Normal file
34
desktop/babel-transformer/src/fsevents-dynamic-imports.tsx
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {CallExpression, identifier} from '@babel/types';
|
||||||
|
import {NodePath} from '@babel/traverse';
|
||||||
|
module.exports = () => ({
|
||||||
|
name: 'skip-fsevents-dynamic-imports-on-win-and-linux',
|
||||||
|
visitor: {
|
||||||
|
CallExpression(path: NodePath<CallExpression>) {
|
||||||
|
if (process.platform === 'darwin') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const node = path.node;
|
||||||
|
if (
|
||||||
|
node.type === 'CallExpression' &&
|
||||||
|
node.callee.type === 'Import' &&
|
||||||
|
node.arguments.length === 1 &&
|
||||||
|
node.arguments[0].type === 'StringLiteral'
|
||||||
|
) {
|
||||||
|
const source = node.arguments[0].value;
|
||||||
|
if (source === 'fsevents') {
|
||||||
|
path.replaceWith(identifier('triggerReferenceError'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -17,10 +17,7 @@ import {
|
|||||||
} from './replace-flipper-requires';
|
} from './replace-flipper-requires';
|
||||||
|
|
||||||
// do not apply this transform for these paths
|
// do not apply this transform for these paths
|
||||||
const EXCLUDE_PATHS = [
|
const EXCLUDE_PATHS = ['relay-devtools/DevtoolsUI'];
|
||||||
'/node_modules/react-devtools-core/',
|
|
||||||
'relay-devtools/DevtoolsUI',
|
|
||||||
];
|
|
||||||
function isExcludedPath(path: string) {
|
function isExcludedPath(path: string) {
|
||||||
for (const epath of EXCLUDE_PATHS) {
|
for (const epath of EXCLUDE_PATHS) {
|
||||||
if (path.indexOf(epath) > -1) {
|
if (path.indexOf(epath) > -1) {
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ const requireReplacements: any = {
|
|||||||
'flipper-plugin': 'global.FlipperPlugin',
|
'flipper-plugin': 'global.FlipperPlugin',
|
||||||
react: 'global.React',
|
react: 'global.React',
|
||||||
'react-dom': 'global.ReactDOM',
|
'react-dom': 'global.ReactDOM',
|
||||||
|
'react-dom/client': 'global.ReactDOMClient',
|
||||||
|
'react-is': 'global.ReactIs',
|
||||||
antd: 'global.antd',
|
antd: 'global.antd',
|
||||||
immer: 'global.Immer',
|
immer: 'global.Immer',
|
||||||
'@emotion/styled': 'global.emotion_styled',
|
'@emotion/styled': 'global.emotion_styled',
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import {default as getCacheKey} from './get-cache-key';
|
|||||||
|
|
||||||
const presets = [require('@babel/preset-react')];
|
const presets = [require('@babel/preset-react')];
|
||||||
const plugins = [
|
const plugins = [
|
||||||
|
require('./fsevents-dynamic-imports'),
|
||||||
require('./electron-requires'),
|
require('./electron-requires'),
|
||||||
require('./import-react'),
|
require('./import-react'),
|
||||||
require('./app-flipper-requires'),
|
require('./app-flipper-requires'),
|
||||||
|
|||||||
@@ -17,7 +17,11 @@ const presets = [
|
|||||||
{targets: {electron: flipperEnv.FLIPPER_ELECTRON_VERSION}},
|
{targets: {electron: flipperEnv.FLIPPER_ELECTRON_VERSION}},
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
const plugins = [require('./electron-requires-main'), require('./fb-stubs')];
|
const plugins = [
|
||||||
|
require('./fsevents-dynamic-imports'),
|
||||||
|
require('./electron-requires-main'),
|
||||||
|
require('./fb-stubs'),
|
||||||
|
];
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
transform,
|
transform,
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import {default as doTransform} from './transform';
|
|||||||
|
|
||||||
const presets = [require('@babel/preset-react')];
|
const presets = [require('@babel/preset-react')];
|
||||||
const plugins = [
|
const plugins = [
|
||||||
|
require('./fsevents-dynamic-imports'),
|
||||||
require('./electron-requires'),
|
require('./electron-requires'),
|
||||||
require('./plugin-flipper-requires'),
|
require('./plugin-flipper-requires'),
|
||||||
require('./fb-stubs'),
|
require('./fb-stubs'),
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ const presets = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
const plugins = [
|
const plugins = [
|
||||||
|
require('./fsevents-dynamic-imports'),
|
||||||
require('./electron-requires'),
|
require('./electron-requires'),
|
||||||
require('./plugin-flipper-requires'),
|
require('./plugin-flipper-requires'),
|
||||||
require('./fb-stubs'),
|
require('./fb-stubs'),
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ const presets = [
|
|||||||
|
|
||||||
// In DEV builds, we keep node_modules as is, as to not waste resources on trying to bundle them
|
// In DEV builds, we keep node_modules as is, as to not waste resources on trying to bundle them
|
||||||
const plugins = [
|
const plugins = [
|
||||||
|
require('./fsevents-dynamic-imports'),
|
||||||
require('./electron-requires-server'),
|
require('./electron-requires-server'),
|
||||||
require('./plugin-flipper-requires'),
|
require('./plugin-flipper-requires'),
|
||||||
require('./fb-stubs'),
|
require('./fb-stubs'),
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ const presets = [
|
|||||||
// electron-requires makes sure that *only* requires of built in node_modules are using "electronRequire"
|
// electron-requires makes sure that *only* requires of built in node_modules are using "electronRequire"
|
||||||
// (which effectively makes them external, as electronRequire === require, but not rolled up with Metro)
|
// (which effectively makes them external, as electronRequire === require, but not rolled up with Metro)
|
||||||
const plugins = [
|
const plugins = [
|
||||||
|
require('./fsevents-dynamic-imports'),
|
||||||
require('./electron-requires'),
|
require('./electron-requires'),
|
||||||
require('./plugin-flipper-requires'),
|
require('./plugin-flipper-requires'),
|
||||||
require('./fb-stubs'),
|
require('./fb-stubs'),
|
||||||
|
|||||||
@@ -77,10 +77,15 @@ export interface FlipperServerForServerAddOn extends FlipperServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export type ServerAddOnCleanup = () => Promise<void>;
|
export type ServerAddOnCleanup = () => Promise<void>;
|
||||||
|
|
||||||
|
export type ServerAddOnExtras = {
|
||||||
|
flipperServer: FlipperServerForServerAddOn;
|
||||||
|
};
|
||||||
|
|
||||||
export type ServerAddOn<
|
export type ServerAddOn<
|
||||||
Events extends EventsContract,
|
Events extends EventsContract,
|
||||||
Methods extends MethodsContract,
|
Methods extends MethodsContract,
|
||||||
> = (
|
> = (
|
||||||
connection: ServerAddOnPluginConnection<Events, Methods>,
|
connection: ServerAddOnPluginConnection<Events, Methods>,
|
||||||
{flipperServer}: {flipperServer: FlipperServerForServerAddOn},
|
extras: ServerAddOnExtras,
|
||||||
) => Promise<ServerAddOnCleanup>;
|
) => Promise<ServerAddOnCleanup>;
|
||||||
|
|||||||
@@ -55,8 +55,7 @@
|
|||||||
"@types/tmp": "^0.2.3",
|
"@types/tmp": "^0.2.3",
|
||||||
"@types/which": "^2.0.1",
|
"@types/which": "^2.0.1",
|
||||||
"@types/ws": "^8.5.2",
|
"@types/ws": "^8.5.2",
|
||||||
"memorystream": "^0.3.1",
|
"memorystream": "^0.3.1"
|
||||||
"tmp": "^0.2.1"
|
|
||||||
},
|
},
|
||||||
"peerDependencies": {},
|
"peerDependencies": {},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -23,6 +23,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../plugin-lib"
|
"path": "../plugin-lib"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../pkg-lib"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
"react-debounce-render": "^7.0.1",
|
"react-debounce-render": "^7.0.1",
|
||||||
"react-dom": "^0.0.0-experimental-14c2be8da-20220304",
|
"react-dom": "^0.0.0-experimental-14c2be8da-20220304",
|
||||||
"react-element-to-jsx-string": "^14.3.4",
|
"react-element-to-jsx-string": "^14.3.4",
|
||||||
|
"react-is": "^17.0.2",
|
||||||
"react-markdown": "^6.0.3",
|
"react-markdown": "^6.0.3",
|
||||||
"react-player": "^2.10.0",
|
"react-player": "^2.10.0",
|
||||||
"react-redux": "^7.2.6",
|
"react-redux": "^7.2.6",
|
||||||
@@ -54,6 +55,7 @@
|
|||||||
"@types/lodash.memoize": "^4.1.6",
|
"@types/lodash.memoize": "^4.1.6",
|
||||||
"@types/react": "^17.0.39",
|
"@types/react": "^17.0.39",
|
||||||
"@types/react-dom": "^17.0.12",
|
"@types/react-dom": "^17.0.12",
|
||||||
|
"@types/react-is": "^17.0.3",
|
||||||
"@types/react-test-renderer": "^17.0.1",
|
"@types/react-test-renderer": "^17.0.1",
|
||||||
"@types/react-virtualized-auto-sizer": "^1.0.1",
|
"@types/react-virtualized-auto-sizer": "^1.0.1",
|
||||||
"@types/react-window": "^1.8.5",
|
"@types/react-window": "^1.8.5",
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ import {
|
|||||||
import {PluginDefinition} from '../plugin';
|
import {PluginDefinition} from '../plugin';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom';
|
||||||
|
import ReactDOMClient from 'react-dom/client';
|
||||||
|
import ReactIs from 'react-is';
|
||||||
import {
|
import {
|
||||||
registerPlugins,
|
registerPlugins,
|
||||||
addGatekeepedPlugins,
|
addGatekeepedPlugins,
|
||||||
@@ -61,6 +63,8 @@ export default async (store: Store, _logger: Logger) => {
|
|||||||
// this list should match `replace-flipper-requires.tsx` and the `builtInModules` in `desktop/.eslintrc`
|
// this list should match `replace-flipper-requires.tsx` and the `builtInModules` in `desktop/.eslintrc`
|
||||||
globalObject.React = React;
|
globalObject.React = React;
|
||||||
globalObject.ReactDOM = ReactDOM;
|
globalObject.ReactDOM = ReactDOM;
|
||||||
|
globalObject.ReactDOMClient = ReactDOMClient;
|
||||||
|
globalObject.ReactIs = ReactIs;
|
||||||
globalObject.Flipper = deprecatedExports;
|
globalObject.Flipper = deprecatedExports;
|
||||||
globalObject.FlipperPlugin = FlipperPluginSDK;
|
globalObject.FlipperPlugin = FlipperPluginSDK;
|
||||||
globalObject.Immer = Immer;
|
globalObject.Immer = Immer;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
* @format
|
* @format
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {createRoot} from 'react-dom/client';
|
import {createRoot, Root} from 'react-dom/client';
|
||||||
import {
|
import {
|
||||||
Layout,
|
Layout,
|
||||||
usePlugin,
|
usePlugin,
|
||||||
@@ -50,13 +50,17 @@ export function devicePlugin(client: DevicePluginClient<Events, Methods>) {
|
|||||||
|
|
||||||
const globalDevToolsAvailable = createState(false);
|
const globalDevToolsAvailable = createState(false);
|
||||||
let globalDevToolsInstance: DevToolsInstance | undefined;
|
let globalDevToolsInstance: DevToolsInstance | undefined;
|
||||||
const useGlobalDevTools = createState(false, {
|
|
||||||
persist: 'useGlobalDevTools',
|
|
||||||
persistToLocalStorage: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
let devToolsInstance: DevToolsInstance | undefined;
|
let devToolsInstance: DevToolsInstance | undefined;
|
||||||
const selectedDevToolsInstanceType = createState<DevToolsInstanceType>('oss');
|
const selectedDevToolsInstanceType = createState<DevToolsInstanceType>(
|
||||||
|
'oss',
|
||||||
|
{
|
||||||
|
persist: 'selectedDevToolsInstanceType',
|
||||||
|
persistToLocalStorage: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
let root: Root | undefined;
|
||||||
|
|
||||||
let pollHandle: NodeJS.Timeout | undefined = undefined;
|
let pollHandle: NodeJS.Timeout | undefined = undefined;
|
||||||
|
|
||||||
@@ -87,14 +91,17 @@ export function devicePlugin(client: DevicePluginClient<Events, Methods>) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (useGlobalDevTools.get() && globalDevToolsInstance) {
|
if (
|
||||||
|
selectedDevToolsInstanceType.get() === 'global' &&
|
||||||
|
globalDevToolsInstance
|
||||||
|
) {
|
||||||
console.debug(
|
console.debug(
|
||||||
'flipper-plugin-react-devtools.maybeGetInitialGlobalDevTools -> using global devtools',
|
'flipper-plugin-react-devtools.maybeGetInitialGlobalDevTools -> using global devtools',
|
||||||
);
|
);
|
||||||
return globalDevToolsInstance;
|
return globalDevToolsInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
useGlobalDevTools.set(false); // disable in case it was enabled
|
selectedDevToolsInstanceType.set('oss'); // disable in case it was enabled
|
||||||
console.debug(
|
console.debug(
|
||||||
'flipper-plugin-react-devtools.maybeGetInitialGlobalDevTools -> using OSS devtools',
|
'flipper-plugin-react-devtools.maybeGetInitialGlobalDevTools -> using OSS devtools',
|
||||||
);
|
);
|
||||||
@@ -133,7 +140,6 @@ export function devicePlugin(client: DevicePluginClient<Events, Methods>) {
|
|||||||
);
|
);
|
||||||
return devToolsInstance.type;
|
return devToolsInstance.type;
|
||||||
});
|
});
|
||||||
useGlobalDevTools.update((v) => !v);
|
|
||||||
|
|
||||||
await rebootDevTools();
|
await rebootDevTools();
|
||||||
}
|
}
|
||||||
@@ -145,6 +151,14 @@ export function devicePlugin(client: DevicePluginClient<Events, Methods>) {
|
|||||||
if (pollHandle) {
|
if (pollHandle) {
|
||||||
clearTimeout(pollHandle);
|
clearTimeout(pollHandle);
|
||||||
}
|
}
|
||||||
|
const devToolsNode = document.getElementById(DEV_TOOLS_NODE_ID);
|
||||||
|
if (!devToolsNode) {
|
||||||
|
setStatus(ConnectionStatus.Error, 'Failed to find target DOM Node');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (root) {
|
||||||
|
root.unmount();
|
||||||
|
}
|
||||||
await bootDevTools();
|
await bootDevTools();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,7 +230,7 @@ export function devicePlugin(client: DevicePluginClient<Events, Methods>) {
|
|||||||
store,
|
store,
|
||||||
});
|
});
|
||||||
|
|
||||||
const root = createRoot(devToolsNode);
|
root = createRoot(devToolsNode);
|
||||||
root.render(React.createElement(DevTools));
|
root.render(React.createElement(DevTools));
|
||||||
|
|
||||||
console.debug('flipper-plugin-react-devtools -> connected');
|
console.debug('flipper-plugin-react-devtools -> connected');
|
||||||
@@ -315,7 +329,6 @@ export function devicePlugin(client: DevicePluginClient<Events, Methods>) {
|
|||||||
rebootDevTools,
|
rebootDevTools,
|
||||||
metroDevice,
|
metroDevice,
|
||||||
globalDevToolsAvailable,
|
globalDevToolsAvailable,
|
||||||
useGlobalDevTools,
|
|
||||||
selectedDevToolsInstanceType,
|
selectedDevToolsInstanceType,
|
||||||
toggleUseGlobalDevTools,
|
toggleUseGlobalDevTools,
|
||||||
initialized,
|
initialized,
|
||||||
@@ -346,13 +359,15 @@ function DevToolsInstanceToolbar() {
|
|||||||
const globalDevToolsAvailable = useValue(instance.globalDevToolsAvailable);
|
const globalDevToolsAvailable = useValue(instance.globalDevToolsAvailable);
|
||||||
const connectionStatus = useValue(instance.connectionStatus);
|
const connectionStatus = useValue(instance.connectionStatus);
|
||||||
const statusMessage = useValue(instance.statusMessage);
|
const statusMessage = useValue(instance.statusMessage);
|
||||||
const useGlobalDevTools = useValue(instance.useGlobalDevTools);
|
const selectedDevToolsInstanceType = useValue(
|
||||||
|
instance.selectedDevToolsInstanceType,
|
||||||
|
);
|
||||||
const initialized = useValue(instance.initialized);
|
const initialized = useValue(instance.initialized);
|
||||||
|
|
||||||
const selectionControl = globalDevToolsAvailable ? (
|
const selectionControl = globalDevToolsAvailable ? (
|
||||||
<>
|
<>
|
||||||
<Switch
|
<Switch
|
||||||
checked={useGlobalDevTools}
|
checked={selectedDevToolsInstanceType === 'global'}
|
||||||
onChange={instance.toggleUseGlobalDevTools}
|
onChange={instance.toggleUseGlobalDevTools}
|
||||||
size="small"
|
size="small"
|
||||||
disabled={!initialized}
|
disabled={!initialized}
|
||||||
|
|||||||
@@ -19,7 +19,10 @@
|
|||||||
"flipper-plugin"
|
"flipper-plugin"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@rollup/plugin-commonjs": "^21.0.3",
|
||||||
|
"@rollup/plugin-node-resolve": "^13.1.3",
|
||||||
"react-devtools-inline": "^4.24.3",
|
"react-devtools-inline": "^4.24.3",
|
||||||
|
"rollup": "^2.70.1",
|
||||||
"ws": "^8.5.0"
|
"ws": "^8.5.0"
|
||||||
},
|
},
|
||||||
"title": "React DevTools",
|
"title": "React DevTools",
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ import {
|
|||||||
} from 'flipper-plugin';
|
} from 'flipper-plugin';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import {WebSocketServer, WebSocket} from 'ws';
|
import {WebSocketServer, WebSocket} from 'ws';
|
||||||
|
import {rollup} from 'rollup';
|
||||||
|
import resolve from '@rollup/plugin-node-resolve';
|
||||||
|
import commonjs from '@rollup/plugin-commonjs';
|
||||||
import {Events, Methods} from './contract';
|
import {Events, Methods} from './contract';
|
||||||
|
|
||||||
const DEV_TOOLS_PORT = 8097; // hardcoded in RN
|
const DEV_TOOLS_PORT = 8097; // hardcoded in RN
|
||||||
@@ -33,7 +36,6 @@ async function findGlobalDevTools(
|
|||||||
const devToolsPath = path.join(
|
const devToolsPath = path.join(
|
||||||
basePath.trim(),
|
basePath.trim(),
|
||||||
'react-devtools-inline',
|
'react-devtools-inline',
|
||||||
'dist',
|
|
||||||
'frontend.js',
|
'frontend.js',
|
||||||
);
|
);
|
||||||
await flipperServer.exec('node-api-fs-stat', devToolsPath);
|
await flipperServer.exec('node-api-fs-stat', devToolsPath);
|
||||||
@@ -131,12 +133,26 @@ const serverAddOn: ServerAddOn<Events, Methods> = async (
|
|||||||
globalDevToolsPath,
|
globalDevToolsPath,
|
||||||
);
|
);
|
||||||
|
|
||||||
// TODO: Transform ReactDevTools for browsers
|
const bundle = await rollup({
|
||||||
/*
|
input: globalDevToolsPath,
|
||||||
const globalDevToolsSource = globalDevToolsPath;
|
plugins: [resolve(), commonjs()],
|
||||||
return globalDevToolsSource;
|
external: ['react', 'react-is', 'react-dom/client', 'react-dom'],
|
||||||
*/
|
});
|
||||||
return;
|
|
||||||
|
try {
|
||||||
|
const {output} = await bundle.generate({
|
||||||
|
format: 'iife',
|
||||||
|
globals: {
|
||||||
|
react: 'global.React',
|
||||||
|
'react-is': 'global.ReactIs',
|
||||||
|
'react-dom/client': 'global.ReactDOMClient',
|
||||||
|
'react-dom': 'global.ReactDOM',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return output[0].code;
|
||||||
|
} finally {
|
||||||
|
await bundle.close();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return async () => {
|
return async () => {
|
||||||
|
|||||||
@@ -109,6 +109,40 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
|
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
|
||||||
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
|
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
|
||||||
|
|
||||||
|
"@rollup/plugin-commonjs@^21.0.3":
|
||||||
|
version "21.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.3.tgz#287896c64926ef3d7f0013708dcdcc1223576ef0"
|
||||||
|
integrity sha512-ThGfwyvcLc6cfP/MWxA5ACF+LZCvsuhUq7V5134Az1oQWsiC7lNpLT4mJI86WQunK7BYmpUiHmMk2Op6OAHs0g==
|
||||||
|
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-node-resolve@^13.1.3":
|
||||||
|
version "13.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz#2ed277fb3ad98745424c1d2ba152484508a92d79"
|
||||||
|
integrity sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ==
|
||||||
|
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.1.0":
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
|
||||||
|
integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
|
||||||
|
dependencies:
|
||||||
|
"@types/estree" "0.0.39"
|
||||||
|
estree-walker "^1.0.1"
|
||||||
|
picomatch "^2.2.2"
|
||||||
|
|
||||||
"@testing-library/dom@^7.28.1":
|
"@testing-library/dom@^7.28.1":
|
||||||
version "7.29.4"
|
version "7.29.4"
|
||||||
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.29.4.tgz#1647c2b478789621ead7a50614ad81ab5ae5b86c"
|
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.29.4.tgz#1647c2b478789621ead7a50614ad81ab5ae5b86c"
|
||||||
@@ -165,6 +199,16 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/dateformat/-/dateformat-3.0.1.tgz#98d747a2e5e9a56070c6bf14e27bff56204e34cc"
|
resolved "https://registry.yarnpkg.com/@types/dateformat/-/dateformat-3.0.1.tgz#98d747a2e5e9a56070c6bf14e27bff56204e34cc"
|
||||||
integrity sha512-KlPPdikagvL6ELjWsljbyDIPzNCeliYkqRpI+zea99vBBbCIA5JNshZAwQKTON139c87y9qvTFVgkFd14rtS4g==
|
integrity sha512-KlPPdikagvL6ELjWsljbyDIPzNCeliYkqRpI+zea99vBBbCIA5JNshZAwQKTON139c87y9qvTFVgkFd14rtS4g==
|
||||||
|
|
||||||
|
"@types/estree@*":
|
||||||
|
version "0.0.51"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
|
||||||
|
integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
|
||||||
|
|
||||||
|
"@types/estree@0.0.39":
|
||||||
|
version "0.0.39"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
|
||||||
|
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
|
||||||
|
|
||||||
"@types/hoist-non-react-statics@^3.3.0":
|
"@types/hoist-non-react-statics@^3.3.0":
|
||||||
version "3.3.1"
|
version "3.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
|
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
|
||||||
@@ -240,6 +284,13 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/resize-observer-browser/-/resize-observer-browser-0.1.5.tgz#36d897708172ac2380cd486da7a3daf1161c1e23"
|
resolved "https://registry.yarnpkg.com/@types/resize-observer-browser/-/resize-observer-browser-0.1.5.tgz#36d897708172ac2380cd486da7a3daf1161c1e23"
|
||||||
integrity sha512-8k/67Z95Goa6Lznuykxkfhq9YU3l1Qe6LNZmwde1u7802a3x8v44oq0j91DICclxatTr0rNnhXx7+VTIetSrSQ==
|
integrity sha512-8k/67Z95Goa6Lznuykxkfhq9YU3l1Qe6LNZmwde1u7802a3x8v44oq0j91DICclxatTr0rNnhXx7+VTIetSrSQ==
|
||||||
|
|
||||||
|
"@types/resolve@1.17.1":
|
||||||
|
version "1.17.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6"
|
||||||
|
integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/sql-formatter@^2.3.0":
|
"@types/sql-formatter@^2.3.0":
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/sql-formatter/-/sql-formatter-2.3.0.tgz#d2584c54f865fd57a7fe7e88ee8ed3623b23da33"
|
resolved "https://registry.yarnpkg.com/@types/sql-formatter/-/sql-formatter-2.3.0.tgz#d2584c54f865fd57a7fe7e88ee8ed3623b23da33"
|
||||||
@@ -366,6 +417,11 @@ braces@^2.3.1:
|
|||||||
split-string "^3.0.2"
|
split-string "^3.0.2"
|
||||||
to-regex "^3.0.1"
|
to-regex "^3.0.1"
|
||||||
|
|
||||||
|
builtin-modules@^3.1.0:
|
||||||
|
version "3.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887"
|
||||||
|
integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==
|
||||||
|
|
||||||
cache-base@^1.0.1:
|
cache-base@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
|
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
|
||||||
@@ -463,6 +519,11 @@ colors@0.5.x:
|
|||||||
resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774"
|
resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774"
|
||||||
integrity sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=
|
integrity sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=
|
||||||
|
|
||||||
|
commondir@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
||||||
|
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
|
||||||
|
|
||||||
component-emitter@^1.2.1:
|
component-emitter@^1.2.1:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
|
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
|
||||||
@@ -697,6 +758,11 @@ deep-equal@^1.0.1:
|
|||||||
object-keys "^1.1.1"
|
object-keys "^1.1.1"
|
||||||
regexp.prototype.flags "^1.2.0"
|
regexp.prototype.flags "^1.2.0"
|
||||||
|
|
||||||
|
deepmerge@^4.2.2:
|
||||||
|
version "4.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
|
||||||
|
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
|
||||||
|
|
||||||
define-properties@^1.1.3:
|
define-properties@^1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
||||||
@@ -748,6 +814,16 @@ escape-string-regexp@^1.0.5:
|
|||||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||||
|
|
||||||
|
estree-walker@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
|
||||||
|
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
|
||||||
|
|
||||||
|
estree-walker@^2.0.1:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||||
|
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||||
|
|
||||||
eventemitter3@^4.0.1:
|
eventemitter3@^4.0.1:
|
||||||
version "4.0.7"
|
version "4.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
|
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
|
||||||
@@ -861,6 +937,11 @@ fs.realpath@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||||
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
|
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
|
||||||
|
|
||||||
|
fsevents@~2.3.2:
|
||||||
|
version "2.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
|
||||||
|
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
|
||||||
|
|
||||||
function-bind@^1.1.1:
|
function-bind@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||||
@@ -892,6 +973,18 @@ glob@^7.1.3:
|
|||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
path-is-absolute "^1.0.0"
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
|
glob@^7.1.6:
|
||||||
|
version "7.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
|
||||||
|
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
|
||||||
|
dependencies:
|
||||||
|
fs.realpath "^1.0.0"
|
||||||
|
inflight "^1.0.4"
|
||||||
|
inherits "2"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
once "^1.3.0"
|
||||||
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
global@^4.3.1:
|
global@^4.3.1:
|
||||||
version "4.4.0"
|
version "4.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
|
resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
|
||||||
@@ -1024,6 +1117,13 @@ is-ci@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ci-info "^2.0.0"
|
ci-info "^2.0.0"
|
||||||
|
|
||||||
|
is-core-module@^2.8.1:
|
||||||
|
version "2.8.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
|
||||||
|
integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
|
||||||
|
dependencies:
|
||||||
|
has "^1.0.3"
|
||||||
|
|
||||||
is-data-descriptor@^0.1.4:
|
is-data-descriptor@^0.1.4:
|
||||||
version "0.1.4"
|
version "0.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
|
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
|
||||||
@@ -1075,6 +1175,11 @@ is-extendable@^1.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-plain-object "^2.0.4"
|
is-plain-object "^2.0.4"
|
||||||
|
|
||||||
|
is-module@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
|
||||||
|
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
|
||||||
|
|
||||||
is-number@^3.0.0:
|
is-number@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
|
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
|
||||||
@@ -1089,6 +1194,13 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
isobject "^3.0.1"
|
isobject "^3.0.1"
|
||||||
|
|
||||||
|
is-reference@^1.2.1:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
|
||||||
|
integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/estree" "*"
|
||||||
|
|
||||||
is-regex@^1.0.4:
|
is-regex@^1.0.4:
|
||||||
version "1.1.4"
|
version "1.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
|
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
|
||||||
@@ -1222,6 +1334,13 @@ lz-string@^1.4.4:
|
|||||||
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
|
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
|
||||||
integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
|
integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
|
||||||
|
|
||||||
|
magic-string@^0.25.7:
|
||||||
|
version "0.25.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
|
||||||
|
integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
|
||||||
|
dependencies:
|
||||||
|
sourcemap-codec "^1.4.8"
|
||||||
|
|
||||||
map-cache@^0.2.2:
|
map-cache@^0.2.2:
|
||||||
version "0.2.2"
|
version "0.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
|
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
|
||||||
@@ -1398,6 +1517,11 @@ path-key@^2.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
||||||
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
|
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
|
||||||
|
|
||||||
|
path-parse@^1.0.7:
|
||||||
|
version "1.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||||
|
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||||
|
|
||||||
performance-now@^0.2.0:
|
performance-now@^0.2.0:
|
||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
|
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
|
||||||
@@ -1408,6 +1532,11 @@ performance-now@^2.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
||||||
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
||||||
|
|
||||||
|
picomatch@^2.2.2:
|
||||||
|
version "2.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||||
|
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||||
|
|
||||||
posix-character-classes@^0.1.0:
|
posix-character-classes@^0.1.0:
|
||||||
version "0.1.1"
|
version "0.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
||||||
@@ -1665,6 +1794,15 @@ resolve-url@^0.2.1:
|
|||||||
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
||||||
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
|
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
|
||||||
|
|
||||||
|
resolve@^1.17.0, resolve@^1.19.0:
|
||||||
|
version "1.22.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
|
||||||
|
integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
|
||||||
|
dependencies:
|
||||||
|
is-core-module "^2.8.1"
|
||||||
|
path-parse "^1.0.7"
|
||||||
|
supports-preserve-symlinks-flag "^1.0.0"
|
||||||
|
|
||||||
ret@~0.1.10:
|
ret@~0.1.10:
|
||||||
version "0.1.15"
|
version "0.1.15"
|
||||||
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
|
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
|
||||||
@@ -1677,6 +1815,13 @@ rimraf@^2.6.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
glob "^7.1.3"
|
glob "^7.1.3"
|
||||||
|
|
||||||
|
rollup@^2.70.1:
|
||||||
|
version "2.70.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.1.tgz#824b1f1f879ea396db30b0fc3ae8d2fead93523e"
|
||||||
|
integrity sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
safe-regex@^1.1.0:
|
safe-regex@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
|
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
|
||||||
@@ -1813,6 +1958,11 @@ supports-color@^7.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
has-flag "^4.0.0"
|
has-flag "^4.0.0"
|
||||||
|
|
||||||
|
supports-preserve-symlinks-flag@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
||||||
|
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||||
|
|
||||||
symbol-observable@^1.2.0:
|
symbol-observable@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
|
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
|
||||||
|
|||||||
@@ -2735,6 +2735,13 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/react" "*"
|
"@types/react" "*"
|
||||||
|
|
||||||
|
"@types/react-is@^17.0.3":
|
||||||
|
version "17.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a"
|
||||||
|
integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==
|
||||||
|
dependencies:
|
||||||
|
"@types/react" "*"
|
||||||
|
|
||||||
"@types/react-redux@^7.1.20":
|
"@types/react-redux@^7.1.20":
|
||||||
version "7.1.20"
|
version "7.1.20"
|
||||||
resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.20.tgz#42f0e61ababb621e12c66c96dda94c58423bd7df"
|
resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.20.tgz#42f0e61ababb621e12c66c96dda94c58423bd7df"
|
||||||
|
|||||||
Reference in New Issue
Block a user