diff --git a/examples/hook/.eslintrc.json b/examples/hook/.eslintrc.json
new file mode 100644
index 000000000..81b15e863
--- /dev/null
+++ b/examples/hook/.eslintrc.json
@@ -0,0 +1,8 @@
+{
+ "env": {
+ "browser": true
+ },
+ "rules": {
+ "import/no-unresolved": "off"
+ }
+}
diff --git a/examples/hook/babel.config.js b/examples/hook/babel.config.js
new file mode 100644
index 000000000..50c603084
--- /dev/null
+++ b/examples/hook/babel.config.js
@@ -0,0 +1,4 @@
+module.exports = {
+ presets: ['@babel/preset-react'],
+ plugins: ['@babel/plugin-syntax-dynamic-import'],
+}
diff --git a/examples/hook/package.json b/examples/hook/package.json
new file mode 100644
index 000000000..9f44f8c1f
--- /dev/null
+++ b/examples/hook/package.json
@@ -0,0 +1,26 @@
+{
+ "private": true,
+ "scripts": {
+ "start": "webpack-dev-server",
+ "dev": "webpack-dev-server"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.6.4",
+ "@babel/plugin-syntax-dynamic-import": "^7.2.0",
+ "@babel/preset-react": "^7.6.3",
+ "babel-loader": "^8.0.4",
+ "html-webpack-plugin": "^3.2.0",
+ "webpack": "^4.30.0",
+ "webpack-cli": "^3.3.2",
+ "webpack-dev-server": "^3.3.1"
+ },
+ "dependencies": {
+ "@loadable/babel-plugin": "file:./../../packages/babel-plugin",
+ "@loadable/component": "file:./../../packages/component",
+ "@loadable/server": "file:./../../packages/server",
+ "@loadable/webpack-plugin": "file:./../../packages/webpack-plugin",
+ "moment": "^2.24.0",
+ "react": "^16.8.6",
+ "react-dom": "^16.8.6"
+ }
+}
diff --git a/examples/hook/src/Hello.js b/examples/hook/src/Hello.js
new file mode 100644
index 000000000..998b2088f
--- /dev/null
+++ b/examples/hook/src/Hello.js
@@ -0,0 +1 @@
+export default () => 'Hello'
diff --git a/examples/hook/src/index.js b/examples/hook/src/index.js
new file mode 100644
index 000000000..5d842bad5
--- /dev/null
+++ b/examples/hook/src/index.js
@@ -0,0 +1,25 @@
+import React from 'react'
+import { render } from 'react-dom'
+import loadable from '@loadable/component'
+
+const useHello = loadable.hook(() => import('./Hello'))
+const useMoment = loadable.hook(() => import('moment'))
+
+function App() {
+ const Hello = useHello()
+ const moment = useMoment()
+ const timeNow = React.useMemo(() => moment && moment().format('HH:mm'), [moment])
+
+ return (
+
+ {Hello ? : 'Loading hello'}
+
+ {timeNow || 'Loading moment library'}
+
+ )
+}
+
+const root = document.createElement('div')
+document.body.append(root)
+
+render(, root)
diff --git a/examples/hook/webpack.config.js b/examples/hook/webpack.config.js
new file mode 100644
index 000000000..f9ba3a798
--- /dev/null
+++ b/examples/hook/webpack.config.js
@@ -0,0 +1,15 @@
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+
+module.exports = {
+ mode: 'development',
+ module: {
+ rules: [
+ {
+ test: /\.js?$/,
+ exclude: /node_modules/,
+ use: 'babel-loader',
+ },
+ ],
+ },
+ plugins: [new HtmlWebpackPlugin()],
+}
diff --git a/package.json b/package.json
index 490a50f6a..247153fae 100644
--- a/package.json
+++ b/package.json
@@ -35,6 +35,7 @@
"@hedgepigdaniel/npm-publish-git": "^0.1.0",
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.4.0",
+ "@testing-library/react-hooks": "^8.0.1",
"babel-core": "^7.0.0-bridge.0",
"babel-eslint": "^10.0.3",
"babel-jest": "^24.9.0",
diff --git a/packages/babel-plugin/src/__snapshots__/index.test.js.snap b/packages/babel-plugin/src/__snapshots__/index.test.js.snap
index d68c72aee..29f7e3ac5 100644
--- a/packages/babel-plugin/src/__snapshots__/index.test.js.snap
+++ b/packages/babel-plugin/src/__snapshots__/index.test.js.snap
@@ -881,6 +881,177 @@ exports[`plugin custom signatures should not match on undeclared specifiers 1`]
myLoadable(() => import(\`./ModA\`));"
`;
+exports[`plugin lazy.hook should be transpiled too 1`] = `
+"import { lazy } from '@loadable/component';
+lazy.hook({
+ resolved: {},
+
+ chunkName() {
+ return \\"moment\\";
+ },
+
+ isReady(props) {
+ const key = this.resolve(props);
+
+ if (this.resolved[key] !== true) {
+ return false;
+ }
+
+ if (typeof __webpack_modules__ !== 'undefined') {
+ return !!__webpack_modules__[key];
+ }
+
+ return false;
+ },
+
+ importAsync: () => import(
+ /* webpackChunkName: \\"moment\\" */
+ 'moment'),
+
+ requireAsync(props) {
+ const key = this.resolve(props);
+ this.resolved[key] = false;
+ return this.importAsync(props).then(resolved => {
+ this.resolved[key] = true;
+ return resolved;
+ });
+ },
+
+ requireSync(props) {
+ const id = this.resolve(props);
+
+ if (typeof __webpack_require__ !== 'undefined') {
+ return __webpack_require__(id);
+ }
+
+ return eval('module.require')(id);
+ },
+
+ resolve() {
+ if (require.resolveWeak) {
+ return require.resolveWeak(\\"moment\\");
+ }
+
+ return eval('require.resolve')(\\"moment\\");
+ }
+
+});"
+`;
+
+exports[`plugin lazy.lib should be transpiled too 1`] = `
+"import { lazy } from '@loadable/component';
+lazy.lib({
+ resolved: {},
+
+ chunkName() {
+ return \\"moment\\";
+ },
+
+ isReady(props) {
+ const key = this.resolve(props);
+
+ if (this.resolved[key] !== true) {
+ return false;
+ }
+
+ if (typeof __webpack_modules__ !== 'undefined') {
+ return !!__webpack_modules__[key];
+ }
+
+ return false;
+ },
+
+ importAsync: () => import(
+ /* webpackChunkName: \\"moment\\" */
+ 'moment'),
+
+ requireAsync(props) {
+ const key = this.resolve(props);
+ this.resolved[key] = false;
+ return this.importAsync(props).then(resolved => {
+ this.resolved[key] = true;
+ return resolved;
+ });
+ },
+
+ requireSync(props) {
+ const id = this.resolve(props);
+
+ if (typeof __webpack_require__ !== 'undefined') {
+ return __webpack_require__(id);
+ }
+
+ return eval('module.require')(id);
+ },
+
+ resolve() {
+ if (require.resolveWeak) {
+ return require.resolveWeak(\\"moment\\");
+ }
+
+ return eval('require.resolve')(\\"moment\\");
+ }
+
+});"
+`;
+
+exports[`plugin loadable.hook should be transpiled too 1`] = `
+"import loadable from '@loadable/component';
+loadable.hook({
+ resolved: {},
+
+ chunkName() {
+ return \\"moment\\";
+ },
+
+ isReady(props) {
+ const key = this.resolve(props);
+
+ if (this.resolved[key] !== true) {
+ return false;
+ }
+
+ if (typeof __webpack_modules__ !== 'undefined') {
+ return !!__webpack_modules__[key];
+ }
+
+ return false;
+ },
+
+ importAsync: () => import(
+ /* webpackChunkName: \\"moment\\" */
+ 'moment'),
+
+ requireAsync(props) {
+ const key = this.resolve(props);
+ this.resolved[key] = false;
+ return this.importAsync(props).then(resolved => {
+ this.resolved[key] = true;
+ return resolved;
+ });
+ },
+
+ requireSync(props) {
+ const id = this.resolve(props);
+
+ if (typeof __webpack_require__ !== 'undefined') {
+ return __webpack_require__(id);
+ }
+
+ return eval('module.require')(id);
+ },
+
+ resolve() {
+ if (require.resolveWeak) {
+ return require.resolveWeak(\\"moment\\");
+ }
+
+ return eval('require.resolve')(\\"moment\\");
+ }
+
+});"
+`;
+
exports[`plugin loadable.lib should be transpiled too 1`] = `
"import loadable from '@loadable/component';
loadable.lib({
diff --git a/packages/babel-plugin/src/index.js b/packages/babel-plugin/src/index.js
index 33ae153b0..67dd7794f 100644
--- a/packages/babel-plugin/src/index.js
+++ b/packages/babel-plugin/src/index.js
@@ -45,17 +45,50 @@ const loadablePlugin = declare((api, {
return true
}
+ // `loadable.lib()`
+ if (
+ path.get('callee').isMemberExpression() &&
+ loadableImportSpecifiers.find(specifier => path.get('callee.object').isIdentifier({ name: specifier })) &&
+ path.get('callee.property').isIdentifier({ name: 'lib' })
+ ) {
+ return true
+ }
+
+ // `loadable.hook()`
+ if (
+ path.get('callee').isMemberExpression() &&
+ loadableImportSpecifiers.find(specifier => path.get('callee.object').isIdentifier({ name: specifier })) &&
+ path.get('callee.property').isIdentifier({ name: 'hook' })
+ ) {
+ return true
+ }
+
// `lazy()`
if (lazyImportSpecifier && path.get('callee').isIdentifier({ name: lazyImportSpecifier })) {
return true
}
- // `loadable.lib()`
- return (
+ // `lazy.lib()`
+ if (
+ lazyImportSpecifier &&
path.get('callee').isMemberExpression() &&
- loadableImportSpecifiers.find(specifier => path.get('callee.object').isIdentifier({ name: specifier })) &&
+ path.get('callee.object').isIdentifier({ name: lazyImportSpecifier }) &&
path.get('callee.property').isIdentifier({ name: 'lib' })
- )
+ ) {
+ return true
+ }
+
+ // `lazy.hook()`
+ if (
+ lazyImportSpecifier &&
+ path.get('callee').isMemberExpression() &&
+ path.get('callee.object').isIdentifier({ name: lazyImportSpecifier }) &&
+ path.get('callee.property').isIdentifier({ name: 'hook' })
+ ) {
+ return true
+ }
+
+ return false
}
function hasLoadableComment(path) {
diff --git a/packages/babel-plugin/src/index.test.js b/packages/babel-plugin/src/index.test.js
index 51d7e675b..a8cbfae31 100644
--- a/packages/babel-plugin/src/index.test.js
+++ b/packages/babel-plugin/src/index.test.js
@@ -202,6 +202,39 @@ describe('plugin', () => {
})
})
+ describe('lazy.lib', () => {
+ it('should be transpiled too', () => {
+ const result = testPlugin(`
+ import { lazy } from '@loadable/component'
+ lazy.lib(() => import('moment'))
+ `)
+
+ expect(result).toMatchSnapshot()
+ })
+ })
+
+ describe('loadable.hook', () => {
+ it('should be transpiled too', () => {
+ const result = testPlugin(`
+ import loadable from '@loadable/component'
+ loadable.hook(() => import('moment'))
+ `)
+
+ expect(result).toMatchSnapshot()
+ })
+ })
+
+ describe('lazy.hook', () => {
+ it('should be transpiled too', () => {
+ const result = testPlugin(`
+ import { lazy } from '@loadable/component'
+ lazy.hook(() => import('moment'))
+ `)
+
+ expect(result).toMatchSnapshot()
+ })
+ })
+
describe('custom signatures', () => {
it('(default) should support old named import', () => {
const result = testPlugin(`
diff --git a/packages/component/.size-snapshot.json b/packages/component/.size-snapshot.json
index 381cedb90..719576281 100644
--- a/packages/component/.size-snapshot.json
+++ b/packages/component/.size-snapshot.json
@@ -1,20 +1,20 @@
{
"dist/loadable.cjs.js": {
- "bundled": 16813,
- "minified": 7394,
- "gzipped": 2621
+ "bundled": 25178,
+ "minified": 10235,
+ "gzipped": 3246
},
"dist/loadable.esm.js": {
- "bundled": 16434,
- "minified": 7090,
- "gzipped": 2552,
+ "bundled": 24799,
+ "minified": 9931,
+ "gzipped": 3175,
"treeshaked": {
"rollup": {
"code": 276,
"import_statements": 276
},
"webpack": {
- "code": 5958
+ "code": 8364
}
}
}
diff --git a/packages/component/src/createLoadableHook.js b/packages/component/src/createLoadableHook.js
new file mode 100644
index 000000000..80c3697e4
--- /dev/null
+++ b/packages/component/src/createLoadableHook.js
@@ -0,0 +1,286 @@
+/* eslint-disable no-use-before-define, react/no-multi-comp, no-underscore-dangle */
+import React from 'react'
+import { invariant } from './util'
+import Context from './Context'
+import { LOADABLE_SHARED } from './shared'
+
+const STATUS_PENDING = 'PENDING'
+const STATUS_RESOLVED = 'RESOLVED'
+const STATUS_REJECTED = 'REJECTED'
+
+function resolveConstructor(ctor) {
+ if (typeof ctor === 'function') {
+ return {
+ requireAsync: ctor,
+ resolve() {
+ return undefined
+ },
+ chunkName() {
+ return undefined
+ },
+ }
+ }
+
+ return ctor
+}
+
+const useChunkExtractor = () => {
+ return React.useContext(Context)
+}
+
+const identity = v => v
+
+/**
+ * options
+ * - cacheKey - override default cache key
+ * - suspense set via lazy - throws promise if pending
+ *
+ * @returns
+ */
+function createLoadableHook(
+ defaultResolveExport = identity
+) {
+ function loadableHook(loadableConstructor, options = {}) {
+ const ctor = resolveConstructor(loadableConstructor)
+ const cache = {}
+
+ /**
+ * Cachekey represents the component to be loaded
+ * if key changes - component has to be reloaded
+ * @param props
+ * @returns {null|Component}
+ */
+ function getCacheKey(props) {
+ if (options.cacheKey) {
+ return options.cacheKey(props)
+ }
+ if (ctor.resolve) {
+ return ctor.resolve(props)
+ }
+ return 'static'
+ }
+
+ function cachedLoad(props) {
+ const cacheKey = getCacheKey(props)
+ let promise = cache[cacheKey]
+
+ if (!promise || promise.status === STATUS_REJECTED) {
+ promise = ctor.requireAsync(props)
+ promise.status = STATUS_PENDING
+ cache[cacheKey] = promise
+
+ promise.then(
+ () => {
+ promise.status = STATUS_RESOLVED
+ },
+ error => {
+ console.error(
+ 'loadable-components: failed to asynchronously load component',
+ {
+ fileName: ctor.resolve(props),
+ chunkName: ctor.chunkName(props),
+ error: error ? error.message : error,
+ },
+ )
+ promise.status = STATUS_REJECTED
+ },
+ )
+ }
+
+ return promise
+ }
+
+ /**
+ * access the persistent cache
+ */
+ function getCache(cacheKey) {
+ return cache[cacheKey]
+ }
+
+ /**
+ * sets the cache value. If called without value sets it as undefined
+ */
+ function setCache(cacheKey, value = undefined) {
+ cache[cacheKey] = value
+ }
+
+ function resolve(module, props) {
+ return options.resolveExport
+ ? options.resolveExport(module, props)
+ : defaultResolveExport(module)
+ }
+
+ /**
+ * Synchronously loads component
+ * target module is expected to already exists in the module cache
+ * or be capable to resolve synchronously (webpack target=node)
+ */
+ function loadSync(props) {
+ try {
+ return {
+ result: resolve(ctor.requireSync(props)),
+ }
+ } catch (error) {
+ console.error(
+ 'loadable-components: failed to synchronously load component, which expected to be available',
+ {
+ fileName: ctor.resolve(props),
+ chunkName: ctor.chunkName(props),
+ error: error ? error.message : error,
+ },
+ )
+ return {
+ error
+ }
+ }
+ }
+
+ /**
+ * Asynchronously loads a component.
+ */
+ function loadAsync(props) {
+ return cachedLoad(props)
+ }
+
+ function useLoadable(props) {
+ const cacheKey = getCacheKey(props)
+ const isMounted = React.useRef(true)
+ const loadingResult = React.useRef({
+ result: null,
+ error: null,
+ })
+ const [loadingState, setLoadingState] = React.useState({
+ cacheKey,
+ loading: true,
+ })
+ React.useEffect(() => {
+ isMounted.current = true
+ return () => {
+ isMounted.current = false
+ }
+ }, [])
+ const chunkExtractor = useChunkExtractor()
+ invariant(
+ !chunkExtractor || ctor.requireSync,
+ 'SSR requires `@loadable/babel-plugin`, please install it',
+ )
+ const cacheKeyChanged = cacheKey !== loadingState.cacheKey
+
+ let loadingThisRender = loadingState.loading || cacheKeyChanged
+
+ const isServer = !!chunkExtractor
+
+ // Client-side with `isReady` method present (SSR probably)
+ // If module is already loaded, we use a synchronous loading
+ // Only perform this synchronous loading if the component has not
+ // been marked with no SSR, else we risk hydration mismatches
+ const isSyncClientLoad = !isServer && loadingThisRender &&
+ options.ssr !== false &&
+ // is ready - was loaded in this session
+ ((ctor.isReady && ctor.isReady(props)) ||
+ // is ready - was loaded during SSR process
+ (ctor.chunkName &&
+ LOADABLE_SHARED.initialChunks[ctor.chunkName(props)]))
+
+ // Clear the cache if a new hook was mounted and the cached promise was rejected.
+ React.useEffect(() => {
+ // retrieve loading promise from a global cache
+ const cachedPromise = getCache(cacheKey)
+
+ // if promise exists, but rejected - clear cache
+ if (cachedPromise && cachedPromise.status === STATUS_REJECTED) {
+ setCache(cacheKey)
+ }
+ }, [cacheKey])
+
+ React.useEffect(() => {
+ if (!isSyncClientLoad && loadingThisRender) {
+ loadAsync(props)
+ .then(module => resolve(module, props))
+ .then(result => {
+ loadingResult.current = { result, error: null }
+ if (isMounted.current) {
+ setLoadingState({ loading: false, cacheKey })
+ }
+ })
+ .catch(error => {
+ loadingResult.current = { result: null, error }
+ if (isMounted.current) {
+ setLoadingState({ loading: false, cacheKey })
+ }
+ })
+ }
+ }, [cacheKey, loadingThisRender, isSyncClientLoad])
+
+ // Server-side
+ if (isServer) {
+ // This module has been marked with no SSR
+ if (options.ssr === false) {
+ return null
+ }
+
+ // We run load function, we assume that it won't fail and that it
+ // triggers a synchronous loading of the module
+ ctor.requireAsync(props).catch(() => null)
+
+ if (loadingThisRender) {
+ // So we can require now the module synchronously
+ loadingResult.current = loadSync(props)
+ setLoadingState({
+ cacheKey,
+ loading: false,
+ })
+ }
+
+ chunkExtractor.addChunk(ctor.chunkName(props))
+ return loadingResult.current.result
+ }
+
+ if (isSyncClientLoad) {
+ loadingResult.current = loadSync()
+ setLoadingState({
+ cacheKey,
+ loading: false,
+ })
+ loadingThisRender = false
+ }
+
+ const { error, result } = loadingResult.current
+
+ if (options.suspense) {
+ const cachedPromise = getCache(cacheKey) || loadAsync(props)
+ if (cachedPromise.status === STATUS_PENDING) {
+ throw loadAsync(props)
+ }
+ }
+
+ if (error) {
+ throw error
+ }
+
+ if (loadingThisRender) {
+ return null
+ }
+
+ return result
+ }
+ // In future, preload could use ``
+ useLoadable.preload = props => {
+ useLoadable.load(props)
+ }
+
+ useLoadable.load = props => {
+ return cachedLoad(props)
+ }
+
+ return useLoadable
+ }
+
+ function lazy(ctor, options) {
+ return loadableHook(ctor, { ...options, suspense: true })
+ }
+
+ return { loadableHook, lazy }
+}
+
+export default createLoadableHook
diff --git a/packages/component/src/index.js b/packages/component/src/index.js
index d026b247f..2fc6eb799 100644
--- a/packages/component/src/index.js
+++ b/packages/component/src/index.js
@@ -2,12 +2,15 @@
import * as sharedInternals from './sharedInternals'
import * as loadableExports from './loadable'
import * as libraryExports from './library'
+import * as hookExports from './loadableHook'
const { loadable } = loadableExports
loadable.lib = libraryExports.loadable
+loadable.hook = hookExports.loadableHook
const { lazy } = loadableExports
lazy.lib = libraryExports.lazy
+lazy.hook = hookExports.lazy
export default loadable
export { lazy }
diff --git a/packages/component/src/loadable.test.js b/packages/component/src/loadable.test.js
index 60c77b3b2..083fad065 100644
--- a/packages/component/src/loadable.test.js
+++ b/packages/component/src/loadable.test.js
@@ -4,6 +4,7 @@ import 'regenerator-runtime/runtime'
import '@testing-library/jest-dom/extend-expect'
import React from 'react'
import { render, cleanup, wait } from '@testing-library/react'
+import { renderHook } from '@testing-library/react-hooks'
import loadable, { lazy } from './index'
afterEach(cleanup)
diff --git a/packages/component/src/loadableHook.js b/packages/component/src/loadableHook.js
new file mode 100644
index 000000000..0bfceb2b3
--- /dev/null
+++ b/packages/component/src/loadableHook.js
@@ -0,0 +1,4 @@
+import createLoadableHook from './createLoadableHook'
+import { defaultResolveComponent } from './resolvers'
+
+export const { loadableHook, lazy } = createLoadableHook(defaultResolveComponent)
diff --git a/packages/component/src/loadableHook.test.js b/packages/component/src/loadableHook.test.js
new file mode 100644
index 000000000..e753d3479
--- /dev/null
+++ b/packages/component/src/loadableHook.test.js
@@ -0,0 +1,212 @@
+/* eslint-disable max-classes-per-file */
+/* eslint-disable import/no-extraneous-dependencies, react/no-multi-comp */
+import * as React from 'react'
+import 'regenerator-runtime/runtime'
+import '@testing-library/jest-dom/extend-expect'
+import { render, cleanup, wait } from '@testing-library/react'
+import { renderHook } from '@testing-library/react-hooks'
+import loadable, { lazy } from './index'
+
+afterEach(cleanup)
+
+const unresolvableLoad = jest.fn(() => new Promise(() => {}))
+
+const resolvedToDefault = value =>
+ jest.fn().mockResolvedValue({ default: value })
+
+ class ErrorBoundary extends React.Component {
+ constructor(props) {
+ super(props)
+
+ this.state = {
+ error: false,
+ retries: props.retries || 0,
+ }
+ }
+
+ componentDidCatch() {
+ this.setState(prevState => ({
+ error: true,
+ retries: prevState.retries - 1,
+ }))
+ }
+
+ render() {
+ const { children, fallback } = this.props
+ const { error, retries } = this.state
+
+ if (error) {
+ return (retries >= 0 && children) || fallback || null
+ }
+
+ return children || null
+ }
+ }
+
+describe('#loadable.hook', () => {
+ beforeEach(() => {
+ jest.spyOn(console, 'error').mockImplementation(() => {})
+ })
+
+ afterEach(() => {
+ // eslint-disable-next-line no-console
+ console.error.mockRestore()
+ })
+
+ it('returns null while loading', () => {
+ const useUnsolvableLoad = loadable.hook(unresolvableLoad)
+ const { result } = renderHook(useUnsolvableLoad)
+ expect(result.current).toEqual(null)
+ })
+
+ it('returns module when loaded', async () => {
+ const load = resolvedToDefault('loaded')
+ const useLoadedModule = loadable.hook(load)
+ const { result } = renderHook(useLoadedModule)
+ await wait(() => {
+ expect(result.current).toEqual('loaded')
+ })
+ })
+
+ it('supports preload', async () => {
+ const load = resolvedToDefault(() => 'loaded')
+ const useLoadedModule = loadable.hook(load)
+ expect(load).not.toHaveBeenCalled()
+ useLoadedModule.preload({ foo: 'bar' })
+ expect(load).toHaveBeenCalledWith({ foo: 'bar' })
+ expect(load).toHaveBeenCalledTimes(1)
+ })
+
+ it('supports non-default export', async () => {
+ const importedModule = { exported: 'loaded' }
+ const load = jest.fn().mockResolvedValue(importedModule)
+ const useModule = loadable.hook(load, { resolveExport: module => module.exported })
+ const { result } = renderHook(useModule)
+ await wait(() => {
+ expect(result.current).toBeTruthy()
+ expect(result.current).toBe('loaded')
+ })
+ })
+
+ it('supports full module export', async () => {
+ const importedModule = { exported: 'loaded', default: 'default' }
+ const load = jest.fn().mockResolvedValue(importedModule)
+ const useModule = loadable.hook(load, { resolveExport: module => module })
+ const { result } = renderHook(useModule)
+ await wait(() => {
+ expect(result.current).toBeTruthy()
+ expect(result.current.exported).toBe('loaded')
+ expect(result.current.default).toBe('default')
+ })
+ })
+
+ it('calls load func if cacheKey change', async () => {
+ const load = resolvedToDefault(({ value }) => value)
+ const useModule = loadable.hook(load, { cacheKey: ({ value }) => value })
+ const { rerender } = renderHook((props) => useModule(props), { initialProps: { value: 'first' }})
+ expect(load).toHaveBeenCalledTimes(1)
+ rerender({value: 'second'})
+ expect(load).toHaveBeenCalledTimes(2)
+ rerender({value: 'second'})
+ expect(load).toHaveBeenCalledTimes(2)
+ })
+
+ it('calls load func if resolve change', async () => {
+ const load = resolvedToDefault(({ value }) => value)
+ const useModule = loadable.hook({
+ requireAsync: load,
+ resolve: ({ value }) => value,
+ })
+ const { rerender } = renderHook((props) => useModule(props), { initialProps: { value: 'first' } })
+ await wait(() => {
+ expect(load).toHaveBeenCalledTimes(1)
+ })
+
+ rerender({ value: 'second' })
+ await wait(() => {
+ expect(load).toHaveBeenCalledTimes(2)
+ })
+ })
+
+ it('does not return previous module if cacheKey change', async () => {
+ const A = 'A'
+ const B = 'B'
+ const components = { A, B }
+ const load = jest.fn(async ({ name }) => {
+ const Component = components[name]
+ return { default: Component }
+ })
+ const useModule = loadable.hook(load, { cacheKey: ({ name }) => name })
+ const { result, rerender } = renderHook((props) => useModule(props), { initialProps: { name: 'A' }})
+ await wait(() => {
+ expect(result.current).toEqual('A')
+ expect(load).toHaveBeenCalledTimes(1)
+ expect(load).toHaveBeenCalledWith({ name: 'A' })
+ })
+ rerender({ name: B })
+ await wait(() => {
+ expect(result.current).toEqual('B')
+ expect(load).toHaveBeenCalledTimes(2)
+ expect(load).toHaveBeenCalledWith({ name: 'B' })
+ })
+ })
+
+ it('throws when an error occurs', async () => {
+ const load = jest.fn().mockRejectedValue(new Error('boom'))
+ const useModule = loadable.hook(load)
+ const { result } = renderHook(useModule)
+ await wait(() => {
+ expect(result.error.message).toBe('boom')
+ })
+ })
+
+ it('supports retry', async () => {
+ const load = jest
+ .fn()
+ .mockRejectedValueOnce(new Error('boom'))
+ .mockResolvedValueOnce({ default: 'loaded' })
+
+ const useModule = loadable.hook(load)
+ const { result } = renderHook(useModule)
+ await wait(() => expect(result.error.message).toBe('boom'))
+ const { result: remountedResult } = renderHook(useModule)
+ await wait(() => expect(remountedResult.current).toBe('loaded'))
+ })
+})
+
+describe('#lazy.hook', () => {
+ it('supports Suspense', async () => {
+ const module = { value: 'helloworld' }
+ const load = jest.fn().mockResolvedValue(module)
+ const useLibraryLazy = lazy.hook(load, { resolveExport: m => m.value })
+
+ const InnerComponent = () => {
+ const lib = useLibraryLazy()
+ return lib || 'error'
+ }
+ const { container } = render(
+
+
+
+ )
+ expect(container).toHaveTextContent('progress')
+ await wait(() => expect(container).toHaveTextContent('helloworld'))
+ })
+
+ it('supports Error Boundary', async () => {
+ const load = jest.fn().mockRejectedValue(new Error('Error Boundary'))
+ const useLibrary = lazy.hook(load)
+ const InnerComponent = () => {
+ useLibrary()
+ }
+ const { container } = render(
+
+
+
+
+ ,
+ )
+ expect(container).toHaveTextContent('progress')
+ await wait(() => expect(container).toHaveTextContent('error'))
+ })
+})
diff --git a/packages/server/__fixtures__/stats.json b/packages/server/__fixtures__/stats.json
index da2f3b2e6..55f9366d5 100644
--- a/packages/server/__fixtures__/stats.json
+++ b/packages/server/__fixtures__/stats.json
@@ -1,7 +1,7 @@
{
"errors": [],
"warnings": [],
- "hash": "84e08a1809b7b09283e2",
+ "hash": "7e05b4abf4b2242e96cc",
"publicPath": "/dist/node/",
"outputPath": "../../examples/server-side-rendering/public/dist/node",
"assetsByChunkName": {
diff --git a/yarn.lock b/yarn.lock
index 080d4f8d3..8af9284de 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -25,6 +25,14 @@
dependencies:
"@babel/highlight" "^7.0.0"
+"@babel/code-frame@^7.10.4":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3"
+ integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==
+ dependencies:
+ "@babel/highlight" "^7.22.10"
+ chalk "^2.4.2"
+
"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.7.7":
version "7.7.7"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9"
@@ -228,6 +236,11 @@
dependencies:
"@babel/types" "^7.7.4"
+"@babel/helper-validator-identifier@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193"
+ integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==
+
"@babel/helper-wrap-function@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace"
@@ -256,6 +269,15 @@
esutils "^2.0.2"
js-tokens "^4.0.0"
+"@babel/highlight@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7"
+ integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.22.5"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+
"@babel/node@^7.7.7":
version "7.7.7"
resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.7.7.tgz#10c488ca36da07670be0131679c4e22f9d7795d4"
@@ -793,6 +815,14 @@
pirates "^4.0.0"
source-map-support "^0.5.16"
+"@babel/runtime-corejs3@^7.10.2":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.22.10.tgz#5ecc3d32faa70009f084cc2e087d79e5f5cdcca9"
+ integrity sha512-IcixfV2Jl3UrqZX4c81+7lVg5++2ufYJyAFW3Aux/ZTvY6LVYYhJ9rMgnbX0zGVq6eqfVpnoatTjZdVki/GmWA==
+ dependencies:
+ core-js-pure "^3.30.2"
+ regenerator-runtime "^0.14.0"
+
"@babel/runtime-corejs3@^7.7.4":
version "7.7.7"
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.7.7.tgz#78fcbd472daec13abc42678bfc319e58a62235a3"
@@ -801,7 +831,14 @@
core-js-pure "^3.0.0"
regenerator-runtime "^0.13.2"
-"@babel/runtime@^7.4.5", "@babel/runtime@^7.5.1", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.6", "@babel/runtime@^7.7.7":
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682"
+ integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
+"@babel/runtime@^7.4.5", "@babel/runtime@^7.5.1", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.7":
version "7.7.7"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf"
integrity sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA==
@@ -1076,6 +1113,16 @@
"@types/istanbul-reports" "^1.1.1"
"@types/yargs" "^13.0.0"
+"@jest/types@^25.5.0":
+ version "25.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d"
+ integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^1.1.1"
+ "@types/yargs" "^15.0.0"
+ chalk "^3.0.0"
+
"@lerna/add@3.20.0":
version "3.20.0"
resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.20.0.tgz#bea7edf36fc93fb72ec34cb9ba854c48d4abf309"
@@ -1837,26 +1884,41 @@
"@types/node" ">= 8"
"@sheerun/mutationobserver-shim@^0.3.2":
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b"
- integrity sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q==
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25"
+ integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==
"@sindresorhus/is@^0.7.0":
version "0.7.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==
-"@testing-library/dom@^6.11.0":
- version "6.11.0"
- resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-6.11.0.tgz#962a38f1a721fdb7c9e35e7579e33ff13a00eda4"
- integrity sha512-Pkx9LMIGshyNbfmecjt18rrAp/ayMqGH674jYER0SXj0iG9xZc+zWRjk2Pg9JgPBDvwI//xGrI/oOQkAi4YEew==
- dependencies:
- "@babel/runtime" "^7.6.2"
+"@testing-library/dom@*":
+ version "9.3.1"
+ resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.1.tgz#8094f560e9389fb973fe957af41bf766937a9ee9"
+ integrity sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/runtime" "^7.12.5"
+ "@types/aria-query" "^5.0.1"
+ aria-query "5.1.3"
+ chalk "^4.1.0"
+ dom-accessibility-api "^0.5.9"
+ lz-string "^1.5.0"
+ pretty-format "^27.0.2"
+
+"@testing-library/dom@^6.15.0":
+ version "6.16.0"
+ resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-6.16.0.tgz#04ada27ed74ad4c0f0d984a1245bb29b1fd90ba9"
+ integrity sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA==
+ dependencies:
+ "@babel/runtime" "^7.8.4"
"@sheerun/mutationobserver-shim" "^0.3.2"
- "@types/testing-library__dom" "^6.0.0"
- aria-query "3.0.0"
- pretty-format "^24.9.0"
- wait-for-expect "^3.0.0"
+ "@types/testing-library__dom" "^6.12.1"
+ aria-query "^4.0.2"
+ dom-accessibility-api "^0.3.0"
+ pretty-format "^25.1.0"
+ wait-for-expect "^3.0.2"
"@testing-library/jest-dom@^4.2.4":
version "4.2.4"
@@ -1873,15 +1935,28 @@
pretty-format "^24.0.0"
redent "^3.0.0"
+"@testing-library/react-hooks@^8.0.1":
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-8.0.1.tgz#0924bbd5b55e0c0c0502d1754657ada66947ca12"
+ integrity sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ react-error-boundary "^3.1.0"
+
"@testing-library/react@^9.4.0":
- version "9.4.0"
- resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.4.0.tgz#b021ac8cb987c8dc54c6841875f745bf9b2e88e5"
- integrity sha512-XdhDWkI4GktUPsz0AYyeQ8M9qS/JFie06kcSnUVcpgOwFjAu9vhwR83qBl+lw9yZWkbECjL8Hd+n5hH6C0oWqg==
+ version "9.5.0"
+ resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.5.0.tgz#71531655a7890b61e77a1b39452fbedf0472ca5e"
+ integrity sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg==
dependencies:
- "@babel/runtime" "^7.7.6"
- "@testing-library/dom" "^6.11.0"
+ "@babel/runtime" "^7.8.4"
+ "@testing-library/dom" "^6.15.0"
"@types/testing-library__react" "^9.1.2"
+"@types/aria-query@^5.0.1":
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc"
+ integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==
+
"@types/babel__core@^7.1.0":
version "7.1.3"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30"
@@ -1980,9 +2055,9 @@
integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
"@types/react-dom@*":
- version "16.9.4"
- resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.4.tgz#0b58df09a60961dcb77f62d4f1832427513420df"
- integrity sha512-fya9xteU/n90tda0s+FtN5Ym4tbgxpq/hb/Af24dvs6uYnYn+fspaxw5USlw0R8apDNwxsqumdRoCoKitckQqw==
+ version "18.2.7"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63"
+ integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==
dependencies:
"@types/react" "*"
@@ -2006,20 +2081,28 @@
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
-"@types/testing-library__dom@*", "@types/testing-library__dom@^6.0.0":
- version "6.11.1"
- resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.11.1.tgz#6058a6ac391db679f7c60dbb27b81f0620de2dd9"
- integrity sha512-ImChHtQqmjwraRLqBC2sgSQFtczeFvBmBcfhTYZn/3KwXbyD07LQykEQ0xJo7QHc1GbVvf7pRyGaIe6PkCdxEw==
+"@types/testing-library__dom@*":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.5.0.tgz#e0a00dd766983b1d6e9d10d33e708005ce6ad13e"
+ integrity sha512-mj1aH4cj3XUpMEgVpognma5kHVtbm6U6cHZmEFzCRiXPvKkuHrFr3+yXdGLXvfFRBaQIVshPGHI+hGTOJlhS/g==
+ dependencies:
+ "@testing-library/dom" "*"
+
+"@types/testing-library__dom@^6.12.1":
+ version "6.14.0"
+ resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz#1aede831cb4ed4a398448df5a2c54b54a365644e"
+ integrity sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA==
dependencies:
pretty-format "^24.3.0"
"@types/testing-library__react@^9.1.2":
- version "9.1.2"
- resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.2.tgz#e33af9124c60a010fc03a34eff8f8a34a75c4351"
- integrity sha512-CYaMqrswQ+cJACy268jsLAw355DZtPZGt3Jwmmotlcu8O/tkoXBI6AeZ84oZBJsIsesozPKzWzmv/0TIU+1E9Q==
+ version "9.1.3"
+ resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.3.tgz#35eca61cc6ea923543796f16034882a1603d7302"
+ integrity sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==
dependencies:
"@types/react-dom" "*"
"@types/testing-library__dom" "*"
+ pretty-format "^25.1.0"
"@types/yargs-parser@*":
version "13.1.0"
@@ -2033,6 +2116,13 @@
dependencies:
"@types/yargs-parser" "*"
+"@types/yargs@^15.0.0":
+ version "15.0.15"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.15.tgz#e609a2b1ef9e05d90489c2f5f45bbfb2be092158"
+ integrity sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==
+ dependencies:
+ "@types/yargs-parser" "*"
+
"@webassemblyjs/ast@1.8.5":
version "1.8.5"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359"
@@ -2322,6 +2412,11 @@ ansi-regex@^5.0.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -2337,6 +2432,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
"@types/color-name" "^1.1.1"
color-convert "^2.0.1"
+ansi-styles@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
+ integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
+
any-promise@^1.0.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
@@ -2375,7 +2475,14 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
-aria-query@3.0.0, aria-query@^3.0.0:
+aria-query@5.1.3:
+ version "5.1.3"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e"
+ integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
+ dependencies:
+ deep-equal "^2.0.5"
+
+aria-query@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc"
integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=
@@ -2383,6 +2490,14 @@ aria-query@3.0.0, aria-query@^3.0.0:
ast-types-flow "0.0.7"
commander "^2.11.0"
+aria-query@^4.0.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
+ integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
+ dependencies:
+ "@babel/runtime" "^7.10.2"
+ "@babel/runtime-corejs3" "^7.10.2"
+
arr-diff@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
@@ -2398,6 +2513,14 @@ arr-union@^3.1.0:
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+array-buffer-byte-length@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead"
+ integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==
+ dependencies:
+ call-bind "^1.0.2"
+ is-array-buffer "^3.0.1"
+
array-differ@^2.0.3:
version "2.1.0"
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1"
@@ -2536,6 +2659,11 @@ atob@^2.1.2:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+available-typed-arrays@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
+ integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
+
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
@@ -2948,6 +3076,14 @@ cacheable-request@^2.1.1:
normalize-url "2.0.1"
responselike "1.0.2"
+call-bind@^1.0.0, call-bind@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
call-me-maybe@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
@@ -3052,6 +3188,14 @@ chalk@^3.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
+chalk@^4.1.0:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
chardet@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
@@ -3542,6 +3686,11 @@ core-js-pure@^3.0.0:
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.2.tgz#81f08059134d1c7318838024e1b8e866bcb1ddb3"
integrity sha512-PRasaCPjjCB65au2dMBPtxuIR6LM8MVNdbIbN57KxcDV1FAYQWlF0pqje/HC2sM6nm/s9KqSTkMTU75pozaghA==
+core-js-pure@^3.30.2:
+ version "3.32.1"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.1.tgz#5775b88f9062885f67b6d7edce59984e89d276f3"
+ integrity sha512-f52QZwkFVDPf7UEQZGHKx6NYxsxmVGJe5DIvbzOdRMJlmT6yv0KDjR8rmy3ngr/t5wU54c7Sp/qIJH0ppbhVpQ==
+
core-js@^3.2.1:
version "3.6.2"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.2.tgz#2799ea1a59050f0acf50dfe89b916d6503b16caa"
@@ -3784,6 +3933,30 @@ dedent@^0.7.0:
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
+deep-equal@^2.0.5:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa"
+ integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==
+ dependencies:
+ array-buffer-byte-length "^1.0.0"
+ call-bind "^1.0.2"
+ es-get-iterator "^1.1.3"
+ get-intrinsic "^1.2.1"
+ is-arguments "^1.1.1"
+ is-array-buffer "^3.0.2"
+ is-date-object "^1.0.5"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.2"
+ isarray "^2.0.5"
+ object-is "^1.1.5"
+ object-keys "^1.1.1"
+ object.assign "^4.1.4"
+ regexp.prototype.flags "^1.5.0"
+ side-channel "^1.0.4"
+ which-boxed-primitive "^1.0.2"
+ which-collection "^1.0.1"
+ which-typed-array "^1.1.9"
+
deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
@@ -3808,6 +3981,14 @@ define-properties@^1.1.2, define-properties@^1.1.3:
dependencies:
object-keys "^1.0.12"
+define-properties@^1.1.4, define-properties@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5"
+ integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==
+ dependencies:
+ has-property-descriptors "^1.0.0"
+ object-keys "^1.1.1"
+
define-property@^0.2.5:
version "0.2.5"
resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
@@ -3924,6 +4105,16 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
+dom-accessibility-api@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz#511e5993dd673b97c87ea47dba0e3892f7e0c983"
+ integrity sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==
+
+dom-accessibility-api@^0.5.9:
+ version "0.5.16"
+ resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453"
+ integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==
+
domain-browser@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
@@ -4080,6 +4271,21 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.1:
string.prototype.trimleft "^2.1.1"
string.prototype.trimright "^2.1.1"
+es-get-iterator@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6"
+ integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.3"
+ has-symbols "^1.0.3"
+ is-arguments "^1.1.1"
+ is-map "^2.0.2"
+ is-set "^2.0.2"
+ is-string "^1.0.7"
+ isarray "^2.0.5"
+ stop-iteration-iterator "^1.0.0"
+
es-to-primitive@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
@@ -4624,6 +4830,13 @@ follow-redirects@1.5.10:
dependencies:
debug "=3.1.0"
+for-each@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
+ integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
+ dependencies:
+ is-callable "^1.1.3"
+
for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -4717,6 +4930,11 @@ functional-red-black-tree@^1.0.1:
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+functions-have-names@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
+ integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+
gauge@~2.7.3:
version "2.7.4"
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
@@ -4741,6 +4959,16 @@ get-caller-file@^2.0.1:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82"
+ integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+
get-pkg-repo@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d"
@@ -4925,6 +5153,13 @@ globby@^9.2.0:
pify "^4.0.1"
slash "^2.0.0"
+gopd@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+ dependencies:
+ get-intrinsic "^1.1.3"
+
got@^8.0.0:
version "8.3.2"
resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937"
@@ -4998,6 +5233,11 @@ har-validator@~5.1.0:
ajv "^6.5.5"
har-schema "^2.0.0"
+has-bigints@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
+ integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
+
has-flag@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
@@ -5013,6 +5253,18 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+has-property-descriptors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
+ integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
+ dependencies:
+ get-intrinsic "^1.1.1"
+
+has-proto@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
+ integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
+
has-symbol-support-x@^1.4.1:
version "1.4.2"
resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455"
@@ -5023,6 +5275,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.1:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
+has-symbols@^1.0.2, has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
has-to-string-tag-x@^1.2.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d"
@@ -5030,6 +5287,13 @@ has-to-string-tag-x@^1.2.0:
dependencies:
has-symbol-support-x "^1.4.1"
+has-tostringtag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
+ integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+ dependencies:
+ has-symbols "^1.0.2"
+
has-unicode@^2.0.0, has-unicode@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -5342,6 +5606,15 @@ inquirer@^7.0.0:
strip-ansi "^5.1.0"
through "^2.3.6"
+internal-slot@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
+ integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==
+ dependencies:
+ get-intrinsic "^1.2.0"
+ has "^1.0.3"
+ side-channel "^1.0.4"
+
interpret@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
@@ -5381,11 +5654,35 @@ is-accessor-descriptor@^1.0.0:
dependencies:
kind-of "^6.0.0"
+is-arguments@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-array-buffer@^3.0.1, is-array-buffer@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe"
+ integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.2.0"
+ is-typed-array "^1.1.10"
+
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+is-bigint@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
+ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
+ dependencies:
+ has-bigints "^1.0.1"
+
is-binary-path@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
@@ -5393,6 +5690,14 @@ is-binary-path@^1.0.0:
dependencies:
binary-extensions "^1.0.0"
+is-boolean-object@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
+ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -5403,6 +5708,11 @@ is-buffer@^2.0.2:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623"
integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==
+is-callable@^1.1.3:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
+ integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
+
is-callable@^1.1.4, is-callable@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab"
@@ -5434,6 +5744,13 @@ is-date-object@^1.0.1:
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
+is-date-object@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
is-descriptor@^0.1.0:
version "0.1.6"
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
@@ -5517,11 +5834,23 @@ is-glob@^4.0.0, is-glob@^4.0.1:
dependencies:
is-extglob "^2.1.1"
+is-map@^2.0.1, is-map@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127"
+ integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
+
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-object@^1.0.4:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc"
+ integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
is-number@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
@@ -5577,11 +5906,31 @@ is-regex@^1.0.5:
dependencies:
has "^1.0.3"
+is-regex@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
is-retry-allowed@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
+is-set@^2.0.1, is-set@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
+ integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==
+
+is-shared-array-buffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
+ integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
+ dependencies:
+ call-bind "^1.0.2"
+
is-ssh@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3"
@@ -5604,6 +5953,13 @@ is-string@^1.0.5:
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
+is-string@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
+ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
is-symbol@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
@@ -5611,6 +5967,13 @@ is-symbol@^1.0.2:
dependencies:
has-symbols "^1.0.1"
+is-symbol@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
+ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
+ dependencies:
+ has-symbols "^1.0.2"
+
is-text-path@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e"
@@ -5618,6 +5981,13 @@ is-text-path@^1.0.1:
dependencies:
text-extensions "^1.0.0"
+is-typed-array@^1.1.10:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a"
+ integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==
+ dependencies:
+ which-typed-array "^1.1.11"
+
is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -5628,6 +5998,19 @@ is-utf8@^0.2.0:
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+is-weakmap@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
+ integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==
+
+is-weakset@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d"
+ integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.1"
+
is-windows@^1.0.0, is-windows@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
@@ -5643,6 +6026,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+isarray@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
+ integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -6504,6 +6892,11 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
+lz-string@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941"
+ integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
+
macos-release@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f"
@@ -7195,6 +7588,19 @@ object-inspect@^1.7.0:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
+object-inspect@^1.9.0:
+ version "1.12.3"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
+ integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
+
+object-is@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
+ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
@@ -7217,6 +7623,16 @@ object.assign@^4.1.0:
has-symbols "^1.0.0"
object-keys "^1.0.11"
+object.assign@^4.1.4:
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
+ integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ has-symbols "^1.0.3"
+ object-keys "^1.1.1"
+
object.entries@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b"
@@ -7733,6 +8149,25 @@ pretty-format@^24.0.0, pretty-format@^24.3.0, pretty-format@^24.9.0:
ansi-styles "^3.2.0"
react-is "^16.8.4"
+pretty-format@^25.1.0:
+ version "25.5.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a"
+ integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==
+ dependencies:
+ "@jest/types" "^25.5.0"
+ ansi-regex "^5.0.0"
+ ansi-styles "^4.0.0"
+ react-is "^16.12.0"
+
+pretty-format@^27.0.2:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e"
+ integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
+ dependencies:
+ ansi-regex "^5.0.1"
+ ansi-styles "^5.0.0"
+ react-is "^17.0.1"
+
prettycli@^1.4.3:
version "1.4.3"
resolved "https://registry.yarnpkg.com/prettycli/-/prettycli-1.4.3.tgz#b28ec2aad9de07ae1fd75ef294fb54cbdee07ed5"
@@ -7945,11 +8380,23 @@ react-dom@^16.12.0:
prop-types "^15.6.2"
scheduler "^0.18.0"
+react-error-boundary@^3.1.0:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0"
+ integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+
react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4:
version "16.12.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
+react-is@^17.0.1:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
+ integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
+
react@^16.12.0:
version "16.12.0"
resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83"
@@ -8159,6 +8606,11 @@ regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5"
integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==
+regenerator-runtime@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
+ integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
+
regenerator-transform@^0.14.0:
version "0.14.1"
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb"
@@ -8174,6 +8626,15 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
+regexp.prototype.flags@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb"
+ integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ functions-have-names "^1.2.3"
+
regexpp@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
@@ -8643,6 +9104,15 @@ shx@^0.3.2:
minimist "^1.2.0"
shelljs "^0.8.1"
+side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
@@ -8880,6 +9350,13 @@ stealthy-require@^1.1.1:
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
+stop-iteration-iterator@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
+ integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==
+ dependencies:
+ internal-slot "^1.0.4"
+
stream-browserify@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
@@ -9622,10 +10099,10 @@ w3c-hr-time@^1.0.1:
dependencies:
browser-process-hrtime "^0.1.2"
-wait-for-expect@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-3.0.1.tgz#ec204a76b0038f17711e575720aaf28505ac7185"
- integrity sha512-3Ha7lu+zshEG/CeHdcpmQsZnnZpPj/UsG3DuKO8FskjuDbkx3jE3845H+CuwZjA2YWYDfKMU2KhnCaXMLd3wVw==
+wait-for-expect@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-3.0.2.tgz#d2f14b2f7b778c9b82144109c8fa89ceaadaa463"
+ integrity sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==
walker@^1.0.7, walker@~1.0.5:
version "1.0.7"
@@ -9722,6 +10199,27 @@ whatwg-url@^7.0.0:
tr46 "^1.0.1"
webidl-conversions "^4.0.2"
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+ dependencies:
+ is-bigint "^1.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ is-symbol "^1.0.3"
+
+which-collection@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906"
+ integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==
+ dependencies:
+ is-map "^2.0.1"
+ is-set "^2.0.1"
+ is-weakmap "^2.0.1"
+ is-weakset "^2.0.1"
+
which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
@@ -9732,6 +10230,17 @@ which-pm-runs@^1.0.0:
resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
+which-typed-array@^1.1.11, which-typed-array@^1.1.9:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a"
+ integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==
+ dependencies:
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.0"
+
which@^1.2.9, which@^1.3.0, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"