diff --git a/examples/children/react16/src/index.js b/examples/children/react16/src/index.js
index aa43a4059..dd93cc38d 100644
--- a/examples/children/react16/src/index.js
+++ b/examples/children/react16/src/index.js
@@ -97,3 +97,8 @@ if (window.__MICRO_APP_ENVIRONMENT__) {
// setInterval(() => {
// console.log(`子应用${window.__MICRO_APP_NAME__}的setInterval`)
// }, 1000)
+
+// const dynamicScript1 = document.createElement('script')
+// dynamicScript1.setAttribute('type', 'module')
+// dynamicScript1.textContent = 'console.warn("inline module")'
+// document.head.appendChild(dynamicScript1)
diff --git a/examples/children/vite/src/main.js b/examples/children/vite/src/main.js
index 5ff1fdeaf..5d93bc2ce 100644
--- a/examples/children/vite/src/main.js
+++ b/examples/children/vite/src/main.js
@@ -14,6 +14,32 @@ const router = VueRouter.createRouter({
routes,
})
-const app = createApp(App)
-app.use(router)
-app.mount('#vite-app')
+// const app = createApp(App)
+// app.use(router)
+// app.mount('#vite-app')
+
+
+let app = null
+// 将渲染操作放入 mount 函数
+function mount () {
+ app = createApp(App)
+ app.use(router)
+ app.mount('#vite-app')
+
+ console.log('微应用child-vite渲染了')
+}
+
+// 将卸载操作放入 unmount 函数
+function unmount () {
+ app.unmount()
+ app = null
+ console.log('微应用child-vite卸载了')
+}
+
+// 微前端环境下,注册mount和unmount方法
+if (window.__MICRO_APP_BASE_APPLICATION__) {
+ window['micro-app-vite'] = { mount, unmount }
+} else {
+ // 非微前端环境直接渲染
+ mount()
+}
diff --git a/src/__tests__/common.ts b/src/__tests__/common/initial.ts
similarity index 95%
rename from src/__tests__/common.ts
rename to src/__tests__/common/initial.ts
index 9e1cf1302..b43ab974a 100644
--- a/src/__tests__/common.ts
+++ b/src/__tests__/common/initial.ts
@@ -1,7 +1,7 @@
/* eslint-disable promise/param-names */
import '@webcomponents/webcomponentsjs/custom-elements-es5-adapter'
-import { setCurrentAppName, defer } from '../libs/utils'
-const liveServer = require('../../scripts/test_server')
+import { setCurrentAppName, defer } from '../../libs/utils'
+const liveServer = require('../../../scripts/test_server')
global.fetch = require('node-fetch')
jest.useRealTimers()
diff --git a/src/__tests__/common/set_ssr_env.ts b/src/__tests__/common/set_ssr_env.ts
new file mode 100644
index 000000000..70605d9d5
--- /dev/null
+++ b/src/__tests__/common/set_ssr_env.ts
@@ -0,0 +1,3 @@
+Object.defineProperty(global, 'window', {
+ value: undefined,
+})
diff --git a/src/__tests__/create_app.test.ts b/src/__tests__/create_app.test.ts
index 125be3f18..971cb2da8 100644
--- a/src/__tests__/create_app.test.ts
+++ b/src/__tests__/create_app.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names */
-import { commonStartEffect, releaseAllEffect, ports } from './common'
+import { commonStartEffect, releaseAllEffect, ports } from './common/initial'
import { appInstanceMap } from '../create_app'
import { appStatus } from '../constants'
import microApp from '..'
diff --git a/src/__tests__/demo/common/index.html b/src/__tests__/demo/common/index.html
index b3cadad13..1b99c936f 100644
--- a/src/__tests__/demo/common/index.html
+++ b/src/__tests__/demo/common/index.html
@@ -24,6 +24,11 @@
+
+
+
common
diff --git a/src/__tests__/demo/common/script2.js b/src/__tests__/demo/common/script2.js
index 7675df267..25d74f3ef 100644
--- a/src/__tests__/demo/common/script2.js
+++ b/src/__tests__/demo/common/script2.js
@@ -2,3 +2,10 @@
const pdom = document.createElement('p')
pdom.innerText = '22222'
document.querySelectorAll('body')[0].append('11111', pdom)
+
+// 动态创建的 ignore 类型script保留原有特性,不会被处理
+const dynamicIgnoreScript = document.createElement('script')
+dynamicIgnoreScript.setAttribute('ignore', 'true')
+dynamicIgnoreScript.textContent = 'window.ignoreInjectData = 1'
+document.body.appendChild(dynamicIgnoreScript)
+expect(((0, eval)('window')).ignoreInjectData).toBe(1)
diff --git a/src/__tests__/interact/index.test.ts b/src/__tests__/interact/index.test.ts
index 0a4ed4cd4..ec8dde45a 100644
--- a/src/__tests__/interact/index.test.ts
+++ b/src/__tests__/interact/index.test.ts
@@ -7,7 +7,7 @@ import {
rebuildDataCenterSnapshot,
} from '../../interact'
import { defer } from '../../libs/utils'
-import { rewriteConsole, releaseConsole } from '../common'
+import { rewriteConsole, releaseConsole } from '../common/initial'
import CreateApp, { appInstanceMap } from '../../create_app'
describe('data center', () => {
diff --git a/src/__tests__/interact/lifecycles_event.test.ts b/src/__tests__/interact/lifecycles_event.test.ts
index 5a794b8ca..fd06445a8 100644
--- a/src/__tests__/interact/lifecycles_event.test.ts
+++ b/src/__tests__/interact/lifecycles_event.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names */
-import { commonStartEffect, releaseAllEffect, ports } from '../common'
+import { commonStartEffect, releaseAllEffect, ports } from '../common/initial'
import microApp from '../..'
describe('lifecycles_event', () => {
diff --git a/src/__tests__/libs/additional.test.ts b/src/__tests__/libs/additional.test.ts
index 192c660de..54db8d7e6 100644
--- a/src/__tests__/libs/additional.test.ts
+++ b/src/__tests__/libs/additional.test.ts
@@ -1,8 +1,11 @@
import { listenUmountOfNestedApp, replaseUnmountOfNestedApp } from '../../libs/additional'
import CreateApp, { appInstanceMap } from '../../create_app'
+import { elementInstanceMap } from '../../micro_app_element'
describe('test additional', () => {
+ // 卸载循环内嵌的子应用
test('unmount app loop build-in', () => {
+ // test-app1模拟开启shadowRoot的未卸载孙应用
const con1 = document.createElement('micro-app')
// @ts-ignore
con1.disconnectedCallback = jest.fn
@@ -15,7 +18,9 @@ describe('test additional', () => {
container: con1.shadowRoot,
}
appInstanceMap.set('test-app1', app1 as CreateApp)
+ elementInstanceMap.set(con1, true)
+ // test-app2模拟正常未卸载孙应用
const con2 = document.createElement('micro-app')
// @ts-ignore
con2.disconnectedCallback = jest.fn
@@ -27,7 +32,9 @@ describe('test additional', () => {
container: con2,
}
appInstanceMap.set('test-app2', app2 as CreateApp)
+ elementInstanceMap.set(con2, true)
+ // test-app3模拟已卸载孙应用(没有container)
const app3 = {
name: 'test-app3',
url: 'http://localhost:3000/',
@@ -38,12 +45,16 @@ describe('test additional', () => {
expect(appInstanceMap.size).toBe(3)
+ // 模拟非嵌套循环
replaseUnmountOfNestedApp()
listenUmountOfNestedApp()
+ // 模拟嵌套循环
window.__MICRO_APP_ENVIRONMENT__ = true
replaseUnmountOfNestedApp()
listenUmountOfNestedApp()
+
+ // 模拟当前应用被卸载
const event = new CustomEvent('unmount')
window.dispatchEvent(event)
@@ -51,4 +62,29 @@ describe('test additional', () => {
window.__MICRO_APP_ENVIRONMENT__ = false
})
+
+ // 分支覆盖
+ test('coverage of branch', () => {
+ // test-app4模已卸载孙应用
+ const app1 = {
+ name: 'test-app4',
+ url: 'http://localhost:3000/',
+ scopecss: true,
+ useSandbox: true,
+ }
+ appInstanceMap.set('test-app4', app1 as CreateApp)
+
+ // 模拟嵌套循环
+ window.__MICRO_APP_ENVIRONMENT__ = true
+ window.__MICRO_APP_UMD_MODE__ = true // 设置为umd模式
+ replaseUnmountOfNestedApp()
+ listenUmountOfNestedApp()
+
+ // 模拟当前应用被卸载
+ const event = new CustomEvent('unmount')
+ window.dispatchEvent(event)
+
+ // umd模式不清空appInstanceMap
+ expect(appInstanceMap.size).toBe(1)
+ })
})
diff --git a/src/__tests__/libs/utils.test.ts b/src/__tests__/libs/utils.test.ts
index 67a5e5f9c..b364a3f4e 100644
--- a/src/__tests__/libs/utils.test.ts
+++ b/src/__tests__/libs/utils.test.ts
@@ -1,6 +1,6 @@
/* eslint-disable promise/param-names */
import * as Utils from '../../libs/utils'
-import { rewriteConsole, releaseConsole } from '../common'
+import { rewriteConsole, releaseConsole } from '../common/initial'
beforeAll(() => {
rewriteConsole()
@@ -134,7 +134,7 @@ test('polyfill for requestIdleCallback', async () => {
// polyfill
const mockFn2 = jest.fn()
- Utils.requestIdleCallback((param) => {
+ Utils.requestIdleCallback((param: any) => {
mockFn2()
expect(param.didTimeout).toBeFalsy()
expect(param.timeRemaining()).toBeLessThan(51)
diff --git a/src/__tests__/main.test.ts b/src/__tests__/main.test.ts
index f233e351d..700be1165 100644
--- a/src/__tests__/main.test.ts
+++ b/src/__tests__/main.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names, no-console */
-import { commonStartEffect, releaseAllEffect, ports } from './common'
+import { commonStartEffect, releaseAllEffect, ports } from './common/initial'
import microApp, { preFetch, removeDomScope, version, pureCreateElement } from '..'
import { appInstanceMap } from '../create_app'
import { getCurrentAppName, defer } from '../libs/utils'
diff --git a/src/__tests__/micro_app_element.test.ts b/src/__tests__/micro_app_element.test.ts
index 9eea9b50d..f1740b836 100644
--- a/src/__tests__/micro_app_element.test.ts
+++ b/src/__tests__/micro_app_element.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names */
-import { commonStartEffect, releaseAllEffect, ports } from './common'
+import { commonStartEffect, releaseAllEffect, ports } from './common/initial'
import { appInstanceMap } from '../create_app'
import microApp from '..'
import { defer } from '../libs/utils'
@@ -246,4 +246,19 @@ describe('micro_app_element', () => {
}, false)
})
})
+
+ // 先插入micro-app元素,后设置name、url属性
+ test('set name & url after connectedCallback', async () => {
+ const microappElement15 = document.createElement('micro-app')
+ appCon.appendChild(microappElement15)
+
+ microappElement15.setAttribute('name', 'test-app15')
+ microappElement15.setAttribute('url', `http://127.0.0.1:${ports.micro_app_element}/common/`)
+
+ await new Promise((reslove) => {
+ microappElement15.addEventListener('mounted', () => {
+ reslove(true)
+ }, false)
+ })
+ })
})
diff --git a/src/__tests__/prefetch.test.ts b/src/__tests__/prefetch.test.ts
index b75046fa6..6816bef61 100644
--- a/src/__tests__/prefetch.test.ts
+++ b/src/__tests__/prefetch.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names */
-import { commonStartEffect, releaseAllEffect, ports } from './common'
+import { commonStartEffect, releaseAllEffect, ports } from './common/initial'
import microApp from '..'
import preFetch from '../prefetch'
import { globalLinks } from '../source/links'
diff --git a/src/__tests__/sandbox/effect.test.ts b/src/__tests__/sandbox/effect.test.ts
index 608b05859..a27978416 100644
--- a/src/__tests__/sandbox/effect.test.ts
+++ b/src/__tests__/sandbox/effect.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names */
-import { commonStartEffect, releaseAllEffect, ports } from '../common'
+import { commonStartEffect, releaseAllEffect, ports } from '../common/initial'
import { appInstanceMap } from '../../create_app'
import microApp from '../..'
// import { defer } from '../../src/libs/utils'
diff --git a/src/__tests__/sandbox/effect2.test.ts b/src/__tests__/sandbox/effect2.test.ts
index cbae63931..9c4a5673d 100644
--- a/src/__tests__/sandbox/effect2.test.ts
+++ b/src/__tests__/sandbox/effect2.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names */
-import { commonStartEffect, releaseAllEffect, ports } from '../common'
+import { commonStartEffect, releaseAllEffect, ports } from '../common/initial'
import { appInstanceMap } from '../../create_app'
import microApp from '../..'
diff --git a/src/__tests__/sandbox/index.test.ts b/src/__tests__/sandbox/index.test.ts
index 4bc61258a..6eb3deb7f 100644
--- a/src/__tests__/sandbox/index.test.ts
+++ b/src/__tests__/sandbox/index.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names */
-import { commonStartEffect, releaseAllEffect, ports } from '../common'
+import { commonStartEffect, releaseAllEffect, ports } from '../common/initial'
import { appInstanceMap } from '../../create_app'
import microApp from '../..'
import Sandbox from '../../sandbox'
diff --git a/src/__tests__/source/index.test.ts b/src/__tests__/source/index.test.ts
index ec9f1019b..6c25149d6 100644
--- a/src/__tests__/source/index.test.ts
+++ b/src/__tests__/source/index.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names */
-import { commonStartEffect, releaseAllEffect, ports } from '../common'
+import { commonStartEffect, releaseAllEffect, ports } from '../common/initial'
import { appInstanceMap } from '../../create_app'
import microApp from '../..'
diff --git a/src/__tests__/source/links.test.ts b/src/__tests__/source/links.test.ts
index edbbf3491..d31e62647 100644
--- a/src/__tests__/source/links.test.ts
+++ b/src/__tests__/source/links.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names */
-import { commonStartEffect, releaseAllEffect, ports, setAppName } from '../common'
+import { commonStartEffect, releaseAllEffect, ports, setAppName } from '../common/initial'
import { appInstanceMap } from '../../create_app'
import { globalLinks, formatHTMLStyleAfterUmdInit } from '../../source/links'
import microApp from '../..'
diff --git a/src/__tests__/source/load_event.test.ts b/src/__tests__/source/load_event.test.ts
index 99469ac39..e09a35dde 100644
--- a/src/__tests__/source/load_event.test.ts
+++ b/src/__tests__/source/load_event.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names */
-import { commonStartEffect, releaseAllEffect, ports, setAppName } from '../common'
+import { commonStartEffect, releaseAllEffect, ports, setAppName } from '../common/initial'
import microApp from '../..'
describe('source load_event', () => {
diff --git a/src/__tests__/source/patch.test.ts b/src/__tests__/source/patch.test.ts
index c36f18d7e..7fb01fa1b 100644
--- a/src/__tests__/source/patch.test.ts
+++ b/src/__tests__/source/patch.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names, no-extend-native */
-import { commonStartEffect, releaseAllEffect, ports, setAppName, clearAppName } from '../common'
+import { commonStartEffect, releaseAllEffect, ports, setAppName, clearAppName } from '../common/initial'
import { appInstanceMap } from '../../create_app'
import microApp from '../..'
diff --git a/src/__tests__/source/scoped_css.test.ts b/src/__tests__/source/scoped_css.test.ts
index 074ced44f..9caac1322 100644
--- a/src/__tests__/source/scoped_css.test.ts
+++ b/src/__tests__/source/scoped_css.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names, no-extend-native */
-import { commonStartEffect, releaseAllEffect, ports, setAppName } from '../common'
+import { commonStartEffect, releaseAllEffect, ports, setAppName } from '../common/initial'
import { defer } from '../../libs/utils'
import microApp from '../..'
diff --git a/src/__tests__/source/scripts.test.ts b/src/__tests__/source/scripts.test.ts
index a7fae751f..872cffc29 100644
--- a/src/__tests__/source/scripts.test.ts
+++ b/src/__tests__/source/scripts.test.ts
@@ -1,5 +1,5 @@
/* eslint-disable promise/param-names */
-import { commonStartEffect, releaseAllEffect, ports, setAppName } from '../common'
+import { commonStartEffect, releaseAllEffect, ports, setAppName } from '../common/initial'
import { appInstanceMap } from '../../create_app'
import { globalScripts } from '../../source/scripts'
import microApp from '../..'
diff --git a/src/__tests__/source/scripts2.test.ts b/src/__tests__/source/scripts2.test.ts
index 8dca13b20..bdab219d0 100644
--- a/src/__tests__/source/scripts2.test.ts
+++ b/src/__tests__/source/scripts2.test.ts
@@ -1,11 +1,13 @@
/* eslint-disable promise/param-names */
import { rawDocumentCreateElement, rawSetAttribute } from './support_module'
-import { commonStartEffect, releaseAllEffect, ports, setAppName } from '../common'
+import { commonStartEffect, releaseAllEffect, ports, setAppName } from '../common/initial'
import microApp from '../..'
describe('source scripts2', () => {
let appCon: Element
beforeAll(() => {
+ // URL.createObjectURL is undefined in jest env
+ global.URL.createObjectURL = jest.fn()
commonStartEffect(ports.source_scripts2)
microApp.start({
plugins: {}
@@ -53,6 +55,7 @@ describe('source scripts2', () => {
microappElement2.setAttribute('name', 'test-app2')
microappElement2.setAttribute('url', `http://127.0.0.1:${ports.source_scripts2}/dynamic/`)
microappElement2.setAttribute('inline', 'true')
+ microappElement2.setAttribute('disablesandbox', 'true')
appCon.appendChild(microappElement2)
await new Promise((reslove) => {
diff --git a/src/__tests__/ssr_env.test.ts b/src/__tests__/ssr_env.test.ts
new file mode 100644
index 000000000..cd2a04591
--- /dev/null
+++ b/src/__tests__/ssr_env.test.ts
@@ -0,0 +1,22 @@
+import './common/set_ssr_env'
+import preFetch from '../prefetch'
+import { initGloalEnv } from '../libs/global_env'
+import microApp from '../micro_app'
+
+describe('test ssr environment', () => {
+ beforeAll(() => {
+ global.console.error = jest.fn()
+ })
+ // 在非浏览器环境使用prefetch
+ test('run prefetch in non browser environment', () => {
+ preFetch([])
+ expect(console.error).toBeCalledWith('[micro-app] preFetch is only supported in browser environment')
+ })
+
+ // 在非浏览器环境执行start
+ test('run start in non browser environment', () => {
+ microApp.start()
+ initGloalEnv()
+ expect(console.error).toBeCalledWith('[micro-app] micro-app is not supported in this environment')
+ })
+})
diff --git a/src/libs/utils.ts b/src/libs/utils.ts
index a4731adc1..6b440de66 100644
--- a/src/libs/utils.ts
+++ b/src/libs/utils.ts
@@ -1,25 +1,19 @@
-/* eslint-disable no-new-func */
+/* eslint-disable no-new-func, indent */
import type { Func } from '@micro-app/types'
export const version = '__VERSION__'
export const isBrowser = typeof window !== 'undefined'
-export const globalThis: Window = (function () {
- let gt
- if (typeof global !== 'undefined') {
- gt = global
- } else if (typeof self !== 'undefined') {
- gt = self
- } else {
- try {
- gt = Function('return this')()
- } catch (e) {
- throw new Error('global object is unavailable in this environment')
- }
- }
- return gt
-})()
+export const globalThis = (typeof global !== 'undefined')
+ ? global
+ : (
+ (typeof window !== 'undefined')
+ ? window
+ : (
+ (typeof self !== 'undefined') ? self : Function('return this')()
+ )
+ )
/**
* format error log
diff --git a/src/source/patch.ts b/src/source/patch.ts
index a3c48f19f..cb763245b 100644
--- a/src/source/patch.ts
+++ b/src/source/patch.ts
@@ -9,7 +9,7 @@ import {
} from '../libs/utils'
import scopedCSS from './scoped_css'
import { extractLinkFromHtml, foramtDynamicLink } from './links'
-import { extractScriptElement, runScript, runDynamicScript } from './scripts'
+import { extractScriptElement, runScript, runDynamicRemoteScript } from './scripts'
import microApp from '../micro_app'
import globalEnv from '../libs/global_env'
@@ -75,7 +75,7 @@ function handleNewNode (parent: Node, child: Node, app: AppInterface): Node {
dynamicElementInMicroAppMap.set(child, replaceElement)
return replaceElement
} else { // remote script
- const replaceElement = runDynamicScript(url, info, app, child)
+ const replaceElement = runDynamicRemoteScript(url, info, app, child)
dynamicElementInMicroAppMap.set(child, replaceElement)
return replaceElement
}
diff --git a/src/source/scripts.ts b/src/source/scripts.ts
index 4f9c9b5e6..23fc03865 100644
--- a/src/source/scripts.ts
+++ b/src/source/scripts.ts
@@ -89,7 +89,7 @@ export function extractScriptElement (
if (isDynamic) {
return { replaceComment }
- } else if (replaceComment) {
+ } else {
return parent.replaceChild(replaceComment, script)
}
}
@@ -238,7 +238,7 @@ export function runScript (
* @param app app
* @param originScript origin script element
*/
-export function runDynamicScript (
+export function runDynamicRemoteScript (
url: string,
info: sourceScriptInfo,
app: AppInterface,
diff --git a/yarn.lock b/yarn.lock
index f1aa798ec..041b7b656 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4773,7 +4773,7 @@ jest@26.6.0:
import-local "^3.0.2"
jest-cli "^26.6.0"
-"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
@@ -5142,13 +5142,6 @@ log-update@^4.0.0:
slice-ansi "^4.0.0"
wrap-ansi "^6.2.0"
-loose-envify@^1.1.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
- integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
- dependencies:
- js-tokens "^3.0.0 || ^4.0.0"
-
lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
@@ -5554,7 +5547,7 @@ oauth-sign@~0.9.0:
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-object-assign@^4, object-assign@^4.1.1, object-assign@latest:
+object-assign@^4, object-assign@latest:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -6098,14 +6091,6 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
-react@~17.0.2:
- version "17.0.2"
- resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
- integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
- dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
-
read-pkg-up@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
@@ -7391,6 +7376,11 @@ url-parse-lax@^3.0.0:
dependencies:
prepend-http "^2.0.0"
+url-polyfill@~1.1.12:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/url-polyfill/-/url-polyfill-1.1.12.tgz#6cdaa17f6b022841b3aec0bf8dbd87ac0cd33331"
+ integrity sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A==
+
use@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"