diff --git a/package.json b/package.json
index 92a5c257421b..7bc15f8efec3 100644
--- a/package.json
+++ b/package.json
@@ -81,6 +81,7 @@
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-taroapi": "file:packages/babel-plugin-transform-taroapi",
+ "babel-preset-power-assert": "^3.0.0",
"conventional-changelog-cli": "^2.0.1",
"copy": "^0.3.2",
"css-loader": "^0.28.10",
@@ -122,6 +123,7 @@
"node-sass": "^4.7.2",
"npm-run-all": "^4.1.2",
"ora": "^2.1.0",
+ "power-assert": "^1.6.1",
"prettier": "^1.18.2",
"react": "^16.10.2",
"react-dom": "^16.10.2",
diff --git a/packages/taro-components/__tests__/audio.spec.js b/packages/taro-components/__tests__/audio.spec.js
index b5a5b56bfe36..c4d72a2cd411 100644
--- a/packages/taro-components/__tests__/audio.spec.js
+++ b/packages/taro-components/__tests__/audio.spec.js
@@ -2,6 +2,7 @@ import './polyfill'
import * as React from 'nervjs'
import { Audio } from '../h5'
import { waitForChange } from './utils'
+import * as assert from 'assert'
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const h = React.createElement
@@ -51,6 +52,11 @@ describe('Audio', () => {
}
render () {
+ const {
+ src,
+ controls,
+ loop
+ } = this.state
return
}
}
@@ -68,18 +74,17 @@ describe('Audio', () => {
* @type {HTMLAudioElement}
*/
const audio = node.childNodes[0]
- expect(audio instanceof HTMLAudioElement).toBeTruthy()
- expect(audio.src).toBe(location.origin + '/' + src)
- expect(audio.controls).toBe(controls)
- expect(audio.loop).toBe(loop)
+ assert(audio instanceof HTMLAudioElement)
+ assert(audio.src === location.origin + '/' + src)
+ assert(audio.controls === controls)
+ assert(audio.loop === loop)
instance.setState({
controls: false,
loop: false
})
- instance.forceUpdate()
-
- expect(audio.controls).toBe(true)
- expect(audio.loop).toBe(true)
+ await waitForChange(audio)
+ assert(audio.controls === false)
+ assert(audio.loop === false)
})
})
diff --git a/packages/taro-components/__tests__/block.spec.js b/packages/taro-components/__tests__/block.spec.js
new file mode 100644
index 000000000000..e0b3a8247630
--- /dev/null
+++ b/packages/taro-components/__tests__/block.spec.js
@@ -0,0 +1,52 @@
+import * as React from 'nervjs'
+import { Block } from '../h5'
+import { waitForChange } from './utils'
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+const h = React.createElement
+
+describe('Block', () => {
+ /**
+ * @type {HTMLElement}
+ */
+ let scratch
+
+ beforeAll(async () => {
+ scratch = document.createElement('div')
+ document.body.appendChild(scratch)
+ })
+
+ beforeEach(async () => {
+ scratch = document.createElement('div')
+ document.body.appendChild(scratch)
+ })
+
+ afterAll(async () => {
+ scratch.parentNode.removeChild(scratch)
+ scratch = null
+ })
+
+ it('有一个空的占位元素,并且 slot 能够使用', async () => {
+ const ref = React.createRef()
+
+ class App extends React.Component {
+ render () {
+ return
+
+
+
+ }
+ }
+
+ React.render(, scratch)
+
+ /**
+ * @type {HTMLElement}
+ */
+ const node = ref.current
+
+ await waitForChange(node)
+
+ expect(scratch.childNodes.length).toBe(1)
+ expect(node.childNodes.length).toBe(2)
+ })
+})
diff --git a/packages/taro-components/__tests__/button.spec.js b/packages/taro-components/__tests__/button.spec.js
new file mode 100644
index 000000000000..c61f98563509
--- /dev/null
+++ b/packages/taro-components/__tests__/button.spec.js
@@ -0,0 +1,203 @@
+import * as React from 'nervjs'
+import { Button } from '../h5'
+import { waitForChange, delay } from './utils'
+import * as assert from 'assert'
+import * as sinon from 'sinon'
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+const h = React.createElement
+
+function fireTouchEvent (el, type) {
+ const e = document.createEvent('UIEvent')
+ e.initEvent(type, true, true)
+ el.dispatchEvent(e)
+}
+
+describe('Button', () => {
+ /**
+ * @type {HTMLElement}
+ */
+ let scratch
+
+ beforeAll(async () => {
+ scratch = document.createElement('div')
+ document.body.appendChild(scratch)
+ })
+
+ beforeEach(async () => {
+ scratch.parentNode.removeChild(scratch)
+ scratch = document.createElement('div')
+ document.body.appendChild(scratch)
+ })
+
+ afterAll(async () => {
+ scratch.parentNode.removeChild(scratch)
+ scratch = null
+ })
+
+ it('props', async () => {
+ const ref = React.createRef()
+
+ const size = 'mini'
+ const plain = true
+ const loading = true
+ const disabled = false
+ /**
+ * @type {import('react').ReactInstance}
+ */
+ let instance
+
+ class App extends React.Component {
+ state = {
+ size,
+ plain,
+ loading,
+ disabled
+ }
+
+ constructor (props) {
+ super(props)
+ instance = this
+ }
+
+ render () {
+ const {
+ size,
+ plain,
+ loading,
+ disabled
+ } = this.state
+ return (
+
+ )
+ }
+ }
+
+ React.render(, scratch)
+
+ /**
+ * @type {HTMLElement}
+ */
+ const node = ref.current
+
+ await waitForChange(node)
+
+ /**
+ * @type {HTMLButtonElement}
+ */
+ const button = node.children[0]
+ assert(button.classList.contains('weui-btn_plain-default'))
+ assert(button.classList.contains('weui-btn-default') === false)
+ assert(button.classList.contains('weui-btn_mini'))
+ assert(button.classList.contains('weui-btn_loading'))
+ assert(button.classList.contains('weui-btn_disabled') === false)
+ const icon = button.getElementsByTagName('i')[0]
+ assert(icon.className === 'weui-loading')
+ assert(button.innerHTML.includes('button'))
+
+ instance.setState({
+ plain: false
+ })
+ await waitForChange(button)
+ assert(!button.classList.contains('weui-btn_plain-default'))
+ assert(button.classList.contains('weui-btn_default'))
+
+ instance.setState({
+ loading: false
+ })
+ await waitForChange(button)
+ assert(!button.classList.contains('weui-btn_loading'))
+ assert(icon.parentNode === null)
+
+ instance.setState({
+ disabled: true
+ })
+ await waitForChange(button)
+ assert(button.classList.contains('weui-btn_disabled'))
+
+ instance.setState({
+ size: 'big'
+ })
+ await waitForChange(button)
+ assert(button.classList.contains('weui-btn_mini') === false)
+ })
+
+ it('event', async () => {
+ const ref = React.createRef()
+
+ const clickSpy = sinon.spy()
+ const touchStartSpy = sinon.spy()
+ const touchEndSpy = sinon.spy()
+
+ const hoverStartTime = 50
+ const hoverStayTime = 100
+
+ class App extends React.Component {
+ state = {
+ hoverStartTime,
+ hoverStayTime
+ }
+
+ render () {
+ const {
+ hoverStartTime,
+ hoverStayTime
+ } = this.state
+ return (
+
+ )
+ }
+ }
+
+ React.render(, scratch)
+
+ /**
+ * @type {HTMLElement}
+ */
+ const node = ref.current
+
+ await waitForChange(node)
+ assert(node.hoverStartTime === hoverStartTime)
+ assert(node.hoverStayTime === hoverStayTime)
+ assert(node.hoverClass === 'button-hover')
+ /**
+ * @type {HTMLButtonElement}
+ */
+ const button = node.children[0]
+ button.click()
+ assert(clickSpy.callCount === 1)
+
+ fireTouchEvent(button, 'touchstart')
+ assert(touchStartSpy.callCount === 1)
+ await delay(hoverStartTime + 10)
+
+ // assert(button.classList.contains('button-hover'))
+
+ fireTouchEvent(button, 'touchend')
+ await delay(hoverStayTime + 10)
+ assert(button.classList.contains('button-hover') === false)
+ assert(touchStartSpy.callCount === 1)
+ })
+})
diff --git a/packages/taro-components/__tests__/polyfill.js b/packages/taro-components/__tests__/polyfill.js
index b1691d638a49..a7f496642458 100644
--- a/packages/taro-components/__tests__/polyfill.js
+++ b/packages/taro-components/__tests__/polyfill.js
@@ -1,4 +1,4 @@
-import { applyPolyfills, defineCustomElements } from '../dist/loader'
+import { applyPolyfills, defineCustomElements } from '../dist/loader/index.es2017.mjs'
// 此文件只要 import 一次即可
applyPolyfills().then(() => {
diff --git a/packages/taro-components/__tests__/utils.js b/packages/taro-components/__tests__/utils.js
index b2b54dc4b4f0..9c2b8054599b 100644
--- a/packages/taro-components/__tests__/utils.js
+++ b/packages/taro-components/__tests__/utils.js
@@ -1,14 +1,22 @@
export function waitForChange (dom) {
- return new Promise((resolve, reject) => {
+ return new Promise((resolve) => {
const observer = new MutationObserver(() => {
observer.disconnect()
resolve()
})
setTimeout(() => {
- reject(new Error('DOM 没有改变'))
+ resolve()
}, 500)
observer.observe(dom, { attributes: true, childList: true, subtree: true })
})
}
+
+export const delay = (ms) => {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ resolve()
+ }, ms)
+ })
+}
diff --git a/packages/taro-components/babel.config.js b/packages/taro-components/babel.config.js
index 3d0af338e1f9..f387c261c63d 100644
--- a/packages/taro-components/babel.config.js
+++ b/packages/taro-components/babel.config.js
@@ -1,7 +1,8 @@
module.exports = {
presets: [
['@babel/env', { targets: { node: 'current' } }],
- '@babel/typescript'
+ '@babel/preset-react',
+ 'power-assert'
],
plugins: [
'@babel/plugin-proposal-class-properties'
diff --git a/packages/taro-components/h5/index.js b/packages/taro-components/h5/index.js
index 4bfa95ad474b..ab1b506432bd 100644
--- a/packages/taro-components/h5/index.js
+++ b/packages/taro-components/h5/index.js
@@ -39,3 +39,4 @@ export const OfficialAccount = 'taro-official-account'
export const OpenData = 'taro-open-data'
export const WebView = 'taro-web-view'
export const NavigationBar = 'taro-navigation-bar'
+export const Block = 'taro-block'
diff --git a/packages/taro-components/mini/index.js b/packages/taro-components/mini/index.js
index 1e273f95b2e3..31225cc3b5c8 100644
--- a/packages/taro-components/mini/index.js
+++ b/packages/taro-components/mini/index.js
@@ -39,3 +39,4 @@ export const OfficialAccount = 'official-account'
export const OpenData = 'open-data'
export const WebView = 'web-view'
export const NavigationBar = 'navigation-bar'
+export const Block = 'block'
diff --git a/packages/taro-components/package.json b/packages/taro-components/package.json
index 6166d750f394..ec407e6357ba 100644
--- a/packages/taro-components/package.json
+++ b/packages/taro-components/package.json
@@ -17,8 +17,8 @@
"dev": "webpack --config webpack.prod.config.js --watch",
"deploy": "webpack --config webpack.config.js",
"build": "stencil build --config stencil.config.ts",
- "test": "karmatic --files '__tests__/**.spec.js'",
- "test:debug": "karmatic debug --files '__tests__/**.spec.js'",
+ "test": "karmatic --files '__tests__/**.spec.js' --coverage false",
+ "test:debug": "karmatic debug --files '__tests__/**.spec.js' --coverage false",
"test-update": "jest --updateSnapshot"
},
"repository": {
diff --git a/packages/taro-components/src/components.d.ts b/packages/taro-components/src/components.d.ts
index b6c2485403f5..91b980c215db 100644
--- a/packages/taro-components/src/components.d.ts
+++ b/packages/taro-components/src/components.d.ts
@@ -17,7 +17,6 @@ export namespace Components {
}
interface TaroBlock {}
interface TaroButton {
- 'class': string;
'disabled': boolean;
'hoverClass': string;
'hoverStartTime': number;
@@ -94,7 +93,6 @@ declare namespace LocalJSX {
}
interface TaroBlock {}
interface TaroButton {
- 'class'?: string;
'disabled'?: boolean;
'hoverClass'?: string;
'hoverStartTime'?: number;
diff --git a/packages/taro-components/src/components/button/button.tsx b/packages/taro-components/src/components/button/button.tsx
index ec0de93f8688..6bb3af020fbd 100644
--- a/packages/taro-components/src/components/button/button.tsx
+++ b/packages/taro-components/src/components/button/button.tsx
@@ -1,5 +1,5 @@
// eslint-disable-next-line @typescript-eslint/no-unused-vars
-import { Component, h, Host, Prop, State, ComponentInterface, Event, EventEmitter } from '@stencil/core'
+import { Component, h, Prop, State, ComponentInterface, Event, EventEmitter } from '@stencil/core'
import classNames from 'classnames'
@Component({
@@ -7,7 +7,6 @@ import classNames from 'classnames'
styleUrl: './style/index.scss'
})
export class Button implements ComponentInterface {
- @Prop() class: string
@Prop() disabled: boolean
@Prop() hoverClass = 'button-hover'
@Prop() type = 'default'
@@ -20,8 +19,7 @@ export class Button implements ComponentInterface {
@State() touch = false
@Event({
- eventName: 'click',
- bubbles: true
+ eventName: 'click'
}) onClick: EventEmitter
@Event({
@@ -35,7 +33,6 @@ export class Button implements ComponentInterface {
render () {
const {
disabled,
- onClick,
hoverClass,
hoverStartTime,
hoverStayTime,
@@ -45,7 +42,7 @@ export class Button implements ComponentInterface {
type
} = this
- const cls = this.class ?? classNames(
+ const cls = classNames(
'weui-btn',
'taro-button',
{
@@ -67,7 +64,7 @@ export class Button implements ComponentInterface {
}
}, hoverStartTime)
}
- this.onTouchStart.emit()
+ // this.onTouchStart.emit()
}
const _onTouchEnd = () => {
@@ -79,21 +76,20 @@ export class Button implements ComponentInterface {
}
}, hoverStayTime)
}
- this.onTouchEnd.emit()
+ // this.onTouchEnd.emit()
}
return (
-
{loading && }
-
+
)
}
}
diff --git a/yarn.lock b/yarn.lock
index f45381d95485..973afe136128 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3293,6 +3293,11 @@ acorn-dynamic-import@^4.0.0:
resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==
+acorn-es7-plugin@^1.0.12:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz#f2ee1f3228a90eead1245f9ab1922eb2e71d336b"
+ integrity sha1-8u4fMiipDurRJF+asZIusucdM2s=
+
acorn-globals@^4.1.0:
version "4.3.4"
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7"
@@ -3311,7 +3316,7 @@ acorn-walk@^6.0.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
-acorn@^5.5.3:
+acorn@^5.0.0, acorn@^5.5.3:
version "5.7.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
@@ -4122,6 +4127,24 @@ babel-plugin-dynamic-import-node@^2.3.0:
dependencies:
object.assign "^4.1.0"
+babel-plugin-empower-assert@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-empower-assert/-/babel-plugin-empower-assert-2.0.0.tgz#41087d602b5debea7a6b28654d5a458394c879d7"
+ integrity sha512-xAzOOTEYIp8BnbHNmU7xKj7mePlPP3/bvFqcjBTeJBDzl+pne4ZjNcpOnaV6WUYnux3fcOOgRW622CsWlU4SGg==
+
+babel-plugin-espower@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz#180db17126f88e754105b8b5216d21e520a6bd4e"
+ integrity sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A==
+ dependencies:
+ "@babel/generator" "^7.0.0"
+ "@babel/parser" "^7.0.0"
+ call-matcher "^1.0.0"
+ core-js "^2.0.0"
+ espower-location-detector "^1.0.0"
+ espurify "^1.6.0"
+ estraverse "^4.1.1"
+
babel-plugin-istanbul@^4.1.6:
version "4.1.6"
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45"
@@ -4245,6 +4268,15 @@ babel-preset-jest@^24.9.0:
"@babel/plugin-syntax-object-rest-spread" "^7.0.0"
babel-plugin-jest-hoist "^24.9.0"
+babel-preset-power-assert@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-power-assert/-/babel-preset-power-assert-3.0.0.tgz#3ceba576d57eb3f1b2e5e1865277539d9dc6570d"
+ integrity sha512-StkhBJsKdLemlsujCWjuHjjd/h+u7L2bgb/9/YsgBj1FBnE0BUthyaY8Xdpiqthf3NUudhd8BJMZFjGtXVKE6A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ babel-plugin-empower-assert "^2.0.0"
+ babel-plugin-espower "^3.0.0"
+
babel-register@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
@@ -4911,11 +4943,26 @@ cacheable-request@^2.1.1:
normalize-url "2.0.1"
responselike "1.0.2"
+call-matcher@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.1.0.tgz#23b2c1bc7a8394c8be28609d77ddbd5786680432"
+ integrity sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==
+ dependencies:
+ core-js "^2.0.0"
+ deep-equal "^1.0.0"
+ espurify "^1.6.0"
+ estraverse "^4.0.0"
+
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"
integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
+call-signature@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996"
+ integrity sha1-qEq8glpV70yysCi9dOIFpluaSZY=
+
caller-callsite@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
@@ -6063,6 +6110,11 @@ core-js@^1.0.0:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
+core-js@^2.0.0:
+ version "2.6.11"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
+ integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
+
core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.6.5:
version "2.6.10"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f"
@@ -6648,7 +6700,7 @@ deep-equal-ident@^1.1.1:
dependencies:
lodash.isequal "^3.0"
-deep-equal@^1.0.1:
+deep-equal@^1.0.0, deep-equal@^1.0.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
@@ -6869,6 +6921,11 @@ diacritics-map@^0.1.0:
resolved "https://registry.yarnpkg.com/diacritics-map/-/diacritics-map-0.1.0.tgz#6dfc0ff9d01000a2edf2865371cac316e94977af"
integrity sha1-bfwP+dAQAKLt8oZTccrDFulJd68=
+diff-match-patch@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.4.tgz#6ac4b55237463761c4daf0dc603eb869124744b1"
+ integrity sha512-Uv3SW8bmH9nAtHKaKSanOQmj2DnlH65fUpcrMdfdaOxUG02QQ4YGZ8AE7kKOMisF7UqvOlGKVYWRvezdncW9lg==
+
diff-sequences@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
@@ -7171,6 +7228,11 @@ each-props@^1.3.0:
is-plain-object "^2.0.1"
object.defaults "^1.1.0"
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+
ecc-jsbn@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
@@ -7232,6 +7294,22 @@ emojis-list@^2.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+empower-core@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-1.2.0.tgz#ce3fb2484d5187fa29c23fba8344b0b2fdf5601c"
+ integrity sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==
+ dependencies:
+ call-signature "0.0.2"
+ core-js "^2.0.0"
+
+empower@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/empower/-/empower-1.3.1.tgz#768979cbbb36d71d8f5edaab663deacb9dab916c"
+ integrity sha512-uB6/ViBaawOO/uujFADTK3SqdYlxYNn+N4usK9MRKZ4Hbn/1QSy8k2PezxCA2/+JGbF8vd/eOfghZ90oOSDZCA==
+ dependencies:
+ core-js "^2.0.0"
+ empower-core "^1.2.0"
+
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
@@ -7755,6 +7833,16 @@ eslint@^6.5.1:
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
+espower-location-detector@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5"
+ integrity sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=
+ dependencies:
+ is-url "^1.2.1"
+ path-is-absolute "^1.0.0"
+ source-map "^0.5.0"
+ xtend "^4.0.0"
+
espree@^6.1.2:
version "6.1.2"
resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d"
@@ -7779,6 +7867,13 @@ esprima@^4.0.0:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+espurify@^1.6.0:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.8.1.tgz#5746c6c1ab42d302de10bd1d5bf7f0e8c0515056"
+ integrity sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==
+ dependencies:
+ core-js "^2.0.0"
+
esquery@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
@@ -10797,7 +10892,7 @@ is-unc-path@^1.0.0:
dependencies:
unc-path-regex "^0.1.2"
-is-url@^1.2.2:
+is-url@^1.2.1, is-url@^1.2.2:
version "1.2.4"
resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
@@ -14094,7 +14189,7 @@ object-is@^1.0.1:
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6"
integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=
-object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
+object-keys@^1.0.0, 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"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
@@ -15630,6 +15725,105 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21
source-map "^0.6.1"
supports-color "^6.1.0"
+power-assert-context-formatter@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-context-formatter/-/power-assert-context-formatter-1.2.0.tgz#8fbe72692288ec5a7203cdf215c8b838a6061d2a"
+ integrity sha512-HLNEW8Bin+BFCpk/zbyKwkEu9W8/zThIStxGo7weYcFkKgMuGCHUJhvJeBGXDZf0Qm2xis4pbnnciGZiX0EpSg==
+ dependencies:
+ core-js "^2.0.0"
+ power-assert-context-traversal "^1.2.0"
+
+power-assert-context-reducer-ast@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.2.0.tgz#c7ca1c9e39a6fb717f7ac5fe9e76e192bf525df3"
+ integrity sha512-EgOxmZ/Lb7tw4EwSKX7ZnfC0P/qRZFEG28dx/690qvhmOJ6hgThYFm5TUWANDLK5NiNKlPBi5WekVGd2+5wPrw==
+ dependencies:
+ acorn "^5.0.0"
+ acorn-es7-plugin "^1.0.12"
+ core-js "^2.0.0"
+ espurify "^1.6.0"
+ estraverse "^4.2.0"
+
+power-assert-context-traversal@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-context-traversal/-/power-assert-context-traversal-1.2.0.tgz#f6e71454baf640de5c1c9c270349f5c9ab0b2e94"
+ integrity sha512-NFoHU6g2umNajiP2l4qb0BRWD773Aw9uWdWYH9EQsVwIZnog5bd2YYLFCVvaxWpwNzWeEfZIon2xtyc63026pQ==
+ dependencies:
+ core-js "^2.0.0"
+ estraverse "^4.1.0"
+
+power-assert-formatter@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz#5dc125ed50a3dfb1dda26c19347f3bf58ec2884a"
+ integrity sha1-XcEl7VCj37HdomwZNH879Y7CiEo=
+ dependencies:
+ core-js "^2.0.0"
+ power-assert-context-formatter "^1.0.7"
+ power-assert-context-reducer-ast "^1.0.7"
+ power-assert-renderer-assertion "^1.0.7"
+ power-assert-renderer-comparison "^1.0.7"
+ power-assert-renderer-diagram "^1.0.7"
+ power-assert-renderer-file "^1.0.7"
+
+power-assert-renderer-assertion@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.2.0.tgz#3db6ffcda106b37bc1e06432ad0d748a682b147a"
+ integrity sha512-3F7Q1ZLmV2ZCQv7aV7NJLNK9G7QsostrhOU7U0RhEQS/0vhEqrRg2jEJl1jtUL4ZyL2dXUlaaqrmPv5r9kRvIg==
+ dependencies:
+ power-assert-renderer-base "^1.1.1"
+ power-assert-util-string-width "^1.2.0"
+
+power-assert-renderer-base@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz#96a650c6fd05ee1bc1f66b54ad61442c8b3f63eb"
+ integrity sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=
+
+power-assert-renderer-comparison@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.2.0.tgz#e4f88113225a69be8aa586ead05aef99462c0495"
+ integrity sha512-7c3RKPDBKK4E3JqdPtYRE9cM8AyX4LC4yfTvvTYyx8zSqmT5kJnXwzR0yWQLOavACllZfwrAGQzFiXPc5sWa+g==
+ dependencies:
+ core-js "^2.0.0"
+ diff-match-patch "^1.0.0"
+ power-assert-renderer-base "^1.1.1"
+ stringifier "^1.3.0"
+ type-name "^2.0.1"
+
+power-assert-renderer-diagram@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.2.0.tgz#37f66e8542e5677c5b58e6d72b01c0d9a30e2219"
+ integrity sha512-JZ6PC+DJPQqfU6dwSmpcoD7gNnb/5U77bU5KgNwPPa+i1Pxiz6UuDeM3EUBlhZ1HvH9tMjI60anqVyi5l2oNdg==
+ dependencies:
+ core-js "^2.0.0"
+ power-assert-renderer-base "^1.1.1"
+ power-assert-util-string-width "^1.2.0"
+ stringifier "^1.3.0"
+
+power-assert-renderer-file@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-renderer-file/-/power-assert-renderer-file-1.2.0.tgz#3f4bebd9e1455d75cf2ac541e7bb515a87d4ce4b"
+ integrity sha512-/oaVrRbeOtGoyyd7e4IdLP/jIIUFJdqJtsYzP9/88R39CMnfF/S/rUc8ZQalENfUfQ/wQHu+XZYRMaCEZmEesg==
+ dependencies:
+ power-assert-renderer-base "^1.1.1"
+
+power-assert-util-string-width@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-util-string-width/-/power-assert-util-string-width-1.2.0.tgz#6e06d5e3581bb876c5d377c53109fffa95bd91a0"
+ integrity sha512-lX90G0igAW0iyORTILZ/QjZWsa1MZ6VVY3L0K86e2eKun3S4LKPH4xZIl8fdeMYLfOjkaszbNSzf1uugLeAm2A==
+ dependencies:
+ eastasianwidth "^0.2.0"
+
+power-assert@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/power-assert/-/power-assert-1.6.1.tgz#b28cbc02ae808afd1431d0cd5093a39ac5a5b1fe"
+ integrity sha512-VWkkZV6Y+W8qLX/PtJu2Ur2jDPIs0a5vbP0TpKeybNcIXmT4vcKoVkyTp5lnQvTpY/DxacAZ4RZisHRHLJcAZQ==
+ dependencies:
+ define-properties "^1.1.2"
+ empower "^1.3.1"
+ power-assert-formatter "^1.4.1"
+ universal-deep-strict-equal "^1.2.1"
+ xtend "^4.0.0"
+
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
@@ -18114,6 +18308,15 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
+stringifier@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-1.4.0.tgz#d704581567f4526265d00ed8ecb354a02c3fec28"
+ integrity sha512-cNsMOqqrcbLcHTXEVmkw9y0fwDwkdgtZwlfyolzpQDoAE1xdNGhQhxBUfiDvvZIKl1hnUEgMv66nHwtMz3OjPw==
+ dependencies:
+ core-js "^2.0.0"
+ traverse "^0.6.6"
+ type-name "^2.0.1"
+
stringify-entities@^1.0.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7"
@@ -18860,6 +19063,11 @@ tr46@^1.0.1:
dependencies:
punycode "^2.1.0"
+traverse@^0.6.6:
+ version "0.6.6"
+ resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137"
+ integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=
+
tree-node-cli@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/tree-node-cli/-/tree-node-cli-1.2.5.tgz#afd75437976bbf2cc0c52b9949798e7530e8fd8c"
@@ -19003,6 +19211,11 @@ type-is@~1.6.17, type-is@~1.6.18:
media-typer "0.3.0"
mime-types "~2.1.24"
+type-name@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4"
+ integrity sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=
+
type@^1.0.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
@@ -19237,6 +19450,15 @@ unist-util-visit@^1.1.0:
dependencies:
unist-util-visit-parents "^2.0.0"
+universal-deep-strict-equal@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz#0da4ac2f73cff7924c81fa4de018ca562ca2b0a7"
+ integrity sha1-DaSsL3PP95JMgfpN4BjKViyisKc=
+ dependencies:
+ array-filter "^1.0.0"
+ indexof "0.0.1"
+ object-keys "^1.0.0"
+
universal-user-agent@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.0.tgz#27da2ec87e32769619f68a14996465ea1cb9df16"