@@ -1541,7 +1550,7 @@ example).
ref="selectableTable"
selectable
:select-mode="selectMode"
- selected-variant="success"
+ selected-variant="active"
:items="items"
:fields="fields"
@row-selected="onRowSelected"
diff --git a/src/components/table/_table.scss b/src/components/table/_table.scss
index 3b388fd239d..9058fa553cc 100644
--- a/src/components/table/_table.scss
+++ b/src/components/table/_table.scss
@@ -34,6 +34,56 @@
caption-side: top !important;
}
}
+
+ // Re-declare `table-active` class here so that it can take
+ // precedence over row variants when used on selectable rows
+ // Class can only be applied to rows and not individual cells
+ > tbody > .table-active {
+ &,
+ > th,
+ > td {
+ background-color: $table-active-bg;
+ }
+ }
+
+ // Add special hover styling for `table-active` row variant
+ &.table-hover > tbody > tr.table-active:hover {
+ td,
+ th {
+ color: $table-hover-color;
+ // `$table-hover-bg` default is a very transparent black
+ // We overlay it over the background color to achieve the
+ // same color effect while keeping the background solid
+ background-image: linear-gradient($table-hover-bg, $table-hover-bg);
+ background-repeat: no-repeat;
+ }
+ }
+
+ // Add in missing `bg-active` class for table tbody rows
+ // Bootstrap v4.3 is missing this for dark tables
+ // `bg-active` class cannot be applied to individual cells
+ > tbody > .bg-active {
+ &,
+ > th,
+ > td {
+ // Important is needed to override the standard `bg-variants`
+ // as the also use `!important`
+ background-color: $table-dark-active-bg !important;
+ }
+ }
+
+ // Add special hover styling for `bg-active` row variant (dark tables)
+ &.table-hover.table-dark > tbody > tr.bg-active:hover {
+ td,
+ th {
+ color: $table-dark-hover-color;
+ // `$table-dark-hover-bg` default is a very transparent white
+ // We overlay it over the background color to achieve the
+ // same color effect while keeping the background solid
+ background-image: linear-gradient($table-dark-hover-bg, $table-dark-hover-bg);
+ background-repeat: no-repeat;
+ }
+ }
}
// --- Table sticky header styling ---
diff --git a/src/components/toast/README.md b/src/components/toast/README.md
index 1f14fd709c5..05f60f51075 100644
--- a/src/components/toast/README.md
+++ b/src/components/toast/README.md
@@ -482,6 +482,69 @@ for generating more complex toast content:
```
+## Alerts versus toasts
+
+In some cases you may need just a simple alert style message (i.e. cookie usage notifications,
+etc.). In these cases is is usually better to use an fixed position alert instead of a toast, by
+applying a few Bootstrap [utility classes](/docs/reference/utility-classes) and a small bit of
+custom styling on a [`
`](/docs/components/alert) component:
+
+```html
+
+
+
+ {{ showBottom ? 'Hide' : 'Show' }} Fixed bottom Alert
+
+
+ Fixed position (bottom) alert!
+
+
+
+ {{ showTop ? 'Hide' : 'Show' }} Fixed top Alert
+
+
+ Fixed position (top) alert!
+
+
+
+
+
+
+
+```
+
+We use class `position-fixed` to set the positioning to fixed within the user's viewport, and either
+class `fixed-bottom` or `fixed-top` to position the alert on the bottom or top of the viewport.
+Class `m-0` removes the default margins around the alert and `rounded-0` removes the default rounded
+corners. We also set the `z-index` to a large value to ensure the alert appears over any other
+content on the page (the default for `fixed-top` and `fixed-bottom` is `1030`). You may need to
+adjust the `z-index` for your specific layout.
+
+Since the alert markup remains in the DOM where you placed the `` component, it's tab
+sequence (for accessing the dismiss button) is easily accessible to screen reader and keyboard-only
+users.
+
## Accessibility
Toasts are intended to be **small interruptions** to your visitors or users, so to help those with
@@ -493,6 +556,9 @@ announced as a single (atomic) unit, rather than announcing what was changed (wh
problems if you only update part of the toast's content, or if displaying the same toast content at
a later point in time).
+If you just need a single simple message to appear along the bottom or top of the user's window, use
+a [fixed position ``](#alerts-versus-toasts) instead.
+
### Accessibility tips
Typically, toast messages should display one or two-line non-critical messages that **do not**
diff --git a/src/components/tooltip/helpers/bv-tooltip.js b/src/components/tooltip/helpers/bv-tooltip.js
index 88262cbe7f9..1ae4552270d 100644
--- a/src/components/tooltip/helpers/bv-tooltip.js
+++ b/src/components/tooltip/helpers/bv-tooltip.js
@@ -285,11 +285,12 @@ export const BVTooltip = /*#__PURE__*/ Vue.extend({
html: this.html,
placement: this.placement,
fallbackPlacement: this.fallbackPlacement,
- offset: this.offset,
- arrowPadding: this.arrowPadding,
- boundaryPadding: this.boundaryPadding,
+ target: this.getPlacementTarget(),
boundary: this.getBoundary(),
- target: this.getPlacementTarget()
+ // Ensure the following are integers
+ offset: parseInt(this.offset, 10) || 0,
+ arrowPadding: parseInt(this.arrowPadding, 10) || 0,
+ boundaryPadding: parseInt(this.boundaryPadding, 10) || 0
}
}))
// We set the initial reactive data (values that can be changed while open)
@@ -413,6 +414,8 @@ export const BVTooltip = /*#__PURE__*/ Vue.extend({
// Hide the tooltip
const tip = this.getTemplateElement()
if (!tip || !this.localShow) {
+ /* istanbul ignore next */
+ this.restoreTitle()
/* istanbul ignore next */
return
}
@@ -613,7 +616,7 @@ export const BVTooltip = /*#__PURE__*/ Vue.extend({
const target = this.getTarget()
if (target && hasAttr(target, 'data-original-title')) {
setAttr(target, 'title', getAttr(target, 'data-original-title') || '')
- setAttr(target, 'data-original-title', '')
+ removeAttr(target, 'data-original-title')
}
},
//
@@ -886,9 +889,14 @@ export const BVTooltip = /*#__PURE__*/ Vue.extend({
if (!this.computedDelay.show) {
this.show()
} else {
+ // Hide any title attribute while enter delay is active
+ this.fixTitle()
this.hoverTimeout = setTimeout(() => {
+ /* istanbul ignore else */
if (this.$_hoverState === 'in') {
this.show()
+ } else if (!this.localShow) {
+ this.restoreTitle()
}
}, this.computedDelay.show)
}
diff --git a/src/components/tooltip/package.json b/src/components/tooltip/package.json
index b911f1c9a67..964dee1eb0d 100644
--- a/src/components/tooltip/package.json
+++ b/src/components/tooltip/package.json
@@ -165,7 +165,7 @@
"slots": [
{
"name": "default",
- "description": "Slot for tooltip content (HTML supported)"
+ "description": "Slot for tooltip content (HTML/components supported)"
}
]
}
diff --git a/src/components/tooltip/tooltip.js b/src/components/tooltip/tooltip.js
index 660c61d1134..a883dcf723c 100644
--- a/src/components/tooltip/tooltip.js
+++ b/src/components/tooltip/tooltip.js
@@ -66,7 +66,7 @@ export const BTooltip = /*#__PURE__*/ Vue.extend({
default: () => getComponentConfig(NAME, 'boundary')
},
boundaryPadding: {
- type: Number,
+ type: [Number, String],
default: () => getComponentConfig(NAME, 'boundaryPadding')
},
offset: {
@@ -122,6 +122,7 @@ export const BTooltip = /*#__PURE__*/ Vue.extend({
customClass: this.customClass,
container: this.container,
boundary: this.boundary,
+ boundaryPadding: this.boundaryPadding,
delay: this.delay,
offset: this.offset,
noFade: this.noFade,
@@ -244,19 +245,21 @@ export const BTooltip = /*#__PURE__*/ Vue.extend({
// Overridden by BPopover
// Tooltip: Default slot is `title`
// Popover: Default slot is `content`, `title` slot is title
- // We pass a scoped slot function by default (v2.6x)
+ // We pass a scoped slot function reference by default (Vue v2.6x)
// And pass the title prop as a fallback
this.setTitle(this.$scopedSlots.default || this.title)
},
// Helper methods for `updateContent()`
setTitle(val) {
val = isUndefinedOrNull(val) ? '' : val
+ // We only update the value if it has changed
if (this.localTitle !== val) {
this.localTitle = val
}
},
setContent(val) {
val = isUndefinedOrNull(val) ? '' : val
+ // We only update the value if it has changed
if (this.localContent !== val) {
this.localContent = val
}
diff --git a/src/directives/popover/README.md b/src/directives/popover/README.md
index 2d7a788b437..8dacfbfb495 100644
--- a/src/directives/popover/README.md
+++ b/src/directives/popover/README.md
@@ -446,11 +446,11 @@ Where `[mod]` can be (all optional):
- `nofade` to turn off animation.
- `html` to enable rendering raw HTML. by default HTML is escaped and converted to text.
- A delay value in the format of `d###` (where `###` is in ms, defaults to `50`), applied to both
- `hide` and `show` (affects `hover` and `focus` only)
+ `hide` and `show`.
- A show delay value in the format of `ds###` (where `###` is in ms, defaults to `50`), applied to
- `show` trigger only (affects `hover` and `focus` only)
+ `show` trigger only.
- A hide delay value in the format of `dh###` (where `###` is in ms, defaults to `50`), applied to
- `hide` trigger only (affects `hover` and `focus` only)
+ `hide` trigger only.
- An offset value in pixels in the format of `o###` (where `###` is the number of pixels, defaults
to `0`. Negative values are allowed). Note if an offset is supplied, then the alignment positions
will fallback to one of `top`, `bottom`, `left`, or `right`.
diff --git a/src/directives/popover/popover.js b/src/directives/popover/popover.js
index ab6de2e5a26..86e8be83d4e 100644
--- a/src/directives/popover/popover.js
+++ b/src/directives/popover/popover.js
@@ -5,8 +5,8 @@ import { getComponentConfig } from '../../utils/config'
import { isBrowser } from '../../utils/env'
import {
isFunction,
- isObject,
isNumber,
+ isPlainObject,
isString,
isUndefined,
isUndefinedOrNull
@@ -71,7 +71,7 @@ const parseBindings = (bindings, vnode) => /* istanbul ignore next: not easy to
} else if (isFunction(bindings.value)) {
// Content generator function
config.content = bindings.value
- } else if (isObject(bindings.value)) {
+ } else if (isPlainObject(bindings.value)) {
// Value is config object, so merge
config = { ...config, ...bindings.value }
}
@@ -91,10 +91,10 @@ const parseBindings = (bindings, vnode) => /* istanbul ignore next: not easy to
}
// Normalize delay
- if (!isObject(config.delay)) {
+ if (!isPlainObject(config.delay)) {
config.delay = {
- show: config.delay,
- hide: config.delay
+ show: parseInt(config.delay, 10) || 0,
+ hide: parseInt(config.delay, 10) || 0
}
}
diff --git a/src/directives/tooltip/README.md b/src/directives/tooltip/README.md
index bb78153dd1c..4028a5ef2fa 100644
--- a/src/directives/tooltip/README.md
+++ b/src/directives/tooltip/README.md
@@ -309,24 +309,24 @@ Where `[modX]` can be (all optional):
- Positioning: `top`, `bottom`, `left`, `right`, `auto`, `topleft`, `topright`, `bottomleft`,
`bottomright`, `lefttop`, `leftbottom`, `righttop`, or `rightbottom` (last one found wins,
- defaults to `top`)
+ defaults to `top`).
- Event trigger: `click`, `hover`, `focus`, `blur` (if none specified, defaults to `focus` and
`hover`. `blur` is a close handler only, and if specified by itself, will be converted to
`focus`). Use `manual` if you only want to control the visibility manually.
-- `nofade` to turn off animation
+- `nofade` to turn off animation.
- `html` to enable rendering raw HTML. By default HTML is escaped and converted to text
- A delay value in the format of `d###` (where `###` is in ms, defaults to `50`), applied to both
- `hide` and `show` (affects `hover` and `focus` only)
+ `hide` and `show`.
- A show delay value in the format of `ds###` (where `###` is in ms, defaults to `50`), applied to
- `show` trigger only (affects `hover` and `focus` only)
+ `show` trigger only.
- A hide delay value in the format of `dh###` (where `###` is in ms, defaults to `50`), applied to
- `hide` trigger only (affects `hover` and `focus` only)
+ `hide` trigger only.
- An offset value in pixels in the format of `o###` (where `###` is the number of pixels, defaults
- to `0`. Negative values allowed)
+ to `0`. Negative values allowed).
- A boundary setting of `window` or `viewport`. The element to constrain the visual placement of the
tooltip. If not specified, the boundary defaults to the trigger element's scroll parent (in most
- cases this will suffice)
-- A contextual variant in the form of `v-XXX` (where `XXX` is the color variant name)
+ cases this will suffice).
+- A contextual variant in the form of `v-XXX` (where `XXX` is the color variant name).
Where `` can be (optional):
diff --git a/src/directives/tooltip/tooltip.js b/src/directives/tooltip/tooltip.js
index 4e73033b425..ab79df85b18 100644
--- a/src/directives/tooltip/tooltip.js
+++ b/src/directives/tooltip/tooltip.js
@@ -6,7 +6,7 @@ import { isBrowser } from '../../utils/env'
import {
isFunction,
isNumber,
- isObject,
+ isPlainObject,
isString,
isUndefined,
isUndefinedOrNull
@@ -71,7 +71,7 @@ const parseBindings = (bindings, vnode) => /* istanbul ignore next: not easy to
} else if (isFunction(bindings.value)) {
// Title generator function
config.title = bindings.value
- } else if (isObject(bindings.value)) {
+ } else if (isPlainObject(bindings.value)) {
// Value is config object, so merge
config = { ...config, ...bindings.value }
}
@@ -84,10 +84,10 @@ const parseBindings = (bindings, vnode) => /* istanbul ignore next: not easy to
}
// Normalize delay
- if (!isObject(config.delay)) {
+ if (!isPlainObject(config.delay)) {
config.delay = {
- show: config.delay,
- hide: config.delay
+ show: parseInt(config.delay, 10) || 0,
+ hide: parseInt(config.delay, 10) || 0
}
}
diff --git a/yarn.lock b/yarn.lock
index 189882d5d54..83282426797 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1576,10 +1576,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.1.tgz#d5544f6de0aae03eefbb63d5120f6c8be0691946"
integrity sha512-rp7La3m845mSESCgsJePNL/JQyhkOJA6G4vcwvVgkDAwHhGdq5GCumxmPjEk1MZf+8p5ZQAUE7tqgQRQTXN7uQ==
-"@types/node@^12.7.4":
- version "12.7.4"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.4.tgz#64db61e0359eb5a8d99b55e05c729f130a678b04"
- integrity sha512-W0+n1Y+gK/8G2P/piTkBBN38Qc5Q1ZSO6B5H3QmPCUewaiXOo2GCAWZ4ElZCcNhjJuBSUSLGFUJnmlCn5+nxOQ==
+"@types/node@^12.7.5":
+ version "12.7.5"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.5.tgz#e19436e7f8e9b4601005d73673b6dc4784ffcc2f"
+ integrity sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w==
"@types/q@^1.5.1":
version "1.5.2"
@@ -3255,10 +3255,10 @@ code-point-at@^1.0.0:
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-codecov@^3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.5.0.tgz#3d0748932f9cb41e1ad7f21fa346ef1b2b1bed47"
- integrity sha512-/OsWOfIHaQIr7aeZ4pY0UC1PZT6kimoKFOFYFNb6wxo3iw12nRrh+mNGH72rnXxNsq6SGfesVPizm/6Q3XqcFQ==
+codecov@^3.6.1:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.6.1.tgz#f39fc49413445555f81f8e3ca5730992843b4517"
+ integrity sha512-IUJB6WG47nWK7o50etF8jBadxdMw7DmoQg05yIljstXFBGB6clOZsIj6iD4P82T2YaIU3qq+FFu8K9pxgkCJDQ==
dependencies:
argv "^0.0.2"
ignore-walk "^3.0.1"
@@ -3266,10 +3266,10 @@ codecov@^3.5.0:
teeny-request "^3.11.3"
urlgrey "^0.4.4"
-codemirror@^5.48.4:
- version "5.48.4"
- resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.48.4.tgz#4210fbe92be79a88f0eea348fab3ae78da85ce47"
- integrity sha512-pUhZXDQ6qXSpWdwlgAwHEkd4imA0kf83hINmUEzJpmG80T/XLtDDEzZo8f6PQLuRCcUQhmzqqIo3ZPTRaWByRA==
+codemirror@^5.49.0:
+ version "5.49.0"
+ resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.49.0.tgz#adedbffcc81091e4a0334bcb96b1ae3b7ada5e3f"
+ integrity sha512-Hyzr0HToBdZpLBN9dYFO/KlJAsKH37/cXVHPAqa+imml0R92tb9AkmsvjnXL+SluEvjjdfkDgRjc65NG5jnMYA==
codesandbox-import-util-types@^2.1.9:
version "2.1.9"
@@ -3810,12 +3810,12 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-cross-env@^5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.1.tgz#b2c76c1ca7add66dc874d11798466094f551b34d"
- integrity sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==
+cross-env@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-6.0.0.tgz#3c8e71440ea20aa6faaf5aec541235efc565dac6"
+ integrity sha512-G/B6gtkjgthT8AP/xN1wdj5Xe18fVyk58JepK8GxpUbqcz3hyWxegocMbvnZK+KoTslwd0ACZ3woi/DVUdVjyQ==
dependencies:
- cross-spawn "^6.0.5"
+ cross-spawn "^7.0.0"
cross-spawn@^3.0.0:
version "3.0.1"
@@ -3845,6 +3845,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
+cross-spawn@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.0.tgz#21ef9470443262f33dba80b2705a91db959b2e03"
+ integrity sha512-6U/8SMK2FBNnB21oQ4+6Nsodxanw1gTkntYA2zBdkFYFu3ZDx65P2ONEXGSvob/QS6REjVHQ9zxzdOafwFdstw==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
crypto-browserify@^3.11.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@@ -4759,10 +4768,10 @@ eslint-plugin-node@^10.0.0:
resolve "^1.10.1"
semver "^6.1.0"
-eslint-plugin-prettier@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz#8695188f95daa93b0dc54b249347ca3b79c4686d"
- integrity sha512-XWX2yVuwVNLOUhQijAkXz+rMPPoCr7WFiAl8ig6I7Xn+pPVhDhzg4DxHpmbeb0iqjO9UronEA3Tb09ChnFVHHA==
+eslint-plugin-prettier@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz#507b8562410d02a03f0ddc949c616f877852f2ba"
+ integrity sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==
dependencies:
prettier-linter-helpers "^1.0.0"
@@ -4816,10 +4825,10 @@ eslint-visitor-keys@^1.1.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
-eslint@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.3.0.tgz#1f1a902f67bfd4c354e7288b81e40654d927eb6a"
- integrity sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow==
+eslint@^6.4.0:
+ version "6.4.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.4.0.tgz#5aa9227c3fbe921982b2eda94ba0d7fae858611a"
+ integrity sha512-WTVEzK3lSFoXUovDHEbkJqCVPEPwbhCq4trDktNI6ygs7aO41d4cDT0JFAT5MivzZeVLWlg7vHL+bgrQv/t3vA==
dependencies:
"@babel/code-frame" "^7.0.0"
ajv "^6.10.0"
@@ -9018,7 +9027,7 @@ path-key@^2.0.0, path-key@^2.0.1:
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
-path-key@^3.0.0:
+path-key@^3.0.0, path-key@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3"
integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==
@@ -10619,13 +10628,13 @@ rollup-pluginutils@^2.8.1:
dependencies:
estree-walker "^0.6.1"
-rollup@^1.21.2:
- version "1.21.2"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.21.2.tgz#eaabd07d0bd309587ad8bebf731fca6fcb96f4d0"
- integrity sha512-sCAHlcQ/PExU5t/kRwkEWHdhGmQrZ2IgdQzbjPVNfhWbKHMMZGYqkASVTpQqRPLtQKg15xzEscc+BnIK/TE7/Q==
+rollup@^1.21.4:
+ version "1.21.4"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.21.4.tgz#00a41a30f90095db890301b226cbe2918e4cf54d"
+ integrity sha512-Pl512XVCmVzgcBz5h/3Li4oTaoDcmpuFZ+kdhS/wLreALz//WuDAMfomD3QEYl84NkDu6Z6wV9twlcREb4qQsw==
dependencies:
"@types/estree" "0.0.39"
- "@types/node" "^12.7.4"
+ "@types/node" "^12.7.5"
acorn "^7.0.0"
rsvp@^4.8.4: