diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fda5c526..cda9f03c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,16 +50,11 @@ jobs: matrix: ember-version: [ - ember-lts-2.18, - ember-lts-3.4, - ember-lts-3.8, ember-lts-3.12, ember-lts-3.16, ember-lts-3.20, - ember-lts-3.24, ember-lts-3.28, ember-lts-4.4, - ember-4.5, ember-release, ember-beta, ember-canary, diff --git a/CHANGELOG.md b/CHANGELOG.md index 19236580..b360abbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,33 @@ Changelog ========= +## v4.0.0 (2022-09-12) + +* Drops support for Ember < 3.12-LTS. +* Drops support for Ember CLI 2.x. https://github.com/html-next/vertical-collection/pull/379 +* No change in Node support. +* Drop the positional param for `items` on the vertical collection component. +* Drop ember-compatibility-helpers https://github.com/html-next/vertical-collection/pull/375 +* Refactor a bunch of debug code to DEBUG https://github.com/html-next/vertical-collection/pull/388 +* Adopt angle bracket invocation +* Adopt native getters + + +## v4.0.0-beta.2 (2022-09-08) + + +## v4.0.0-beta.1 (2022-09-07) + + +## v4.0.0-beta.0 (2022-08-28) + +* Drop support for Ember versions prior to 3.12 +* Drop support for Ember CLI 2.x +* Adopt native getters +* Adopt angle bracket invocation +* Drop positional param argument for `item` + + ## v3.1.0 (2022-08-04) #### :rocket: Enhancement diff --git a/README.md b/README.md index 2ec8d2e5..d5eb02be 100644 --- a/README.md +++ b/README.md @@ -30,24 +30,24 @@ ember install @html-next/vertical-collection ## Usage ```htmlbars -{{#vertical-collection - items - tagName='ul' - estimateHeight=50 - staticHeight=false - bufferSize=1 - renderAll=false - renderFromLast=false - idForFirstItem=idForFirstItem - firstReached=(action firstReached) - lastReached=(action lastReached) - firstVisibleChanged=(action firstVisibleChanged) - lastVisibleChanged=(action lastVisibleChanged) - as |item i|}} +
  • {{item.number}} {{i}}
  • -{{/vertical-collection}} +
    ``` ### Actions @@ -67,6 +67,7 @@ ember install @html-next/vertical-collection | `^v1.x.x` | `v1.12.0 - v3.8.x` | `?` | | `^v2.x.x` | `v2.8.0 - v3.26.x` | `v12 - ?` | | `^v3.x.x` | `v2.18.0+` | `v14+` | +| `^v4.x.x` | `v3.12.0+` | `v14+` | ## Support, Questions, Collaboration diff --git a/RELEASE.md b/RELEASE.md index 55e91ed6..7ef65e74 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -58,3 +58,17 @@ release process. It will prompt you to to choose the version number after which you will have the chance to hand tweak the changelog to be used (for the `CHANGELOG.md` and GitHub release), then `release-it` continues on to tagging, pushing the tag and commits, etc. + +To start a prerelease branch for a new major use: + +```sh +npx release-it major --preRelease=beta +``` + +On subsequent prerelease run: + +```sh +npx release-it --preRelease +``` + +For more guidance see https://github.com/release-it/release-it/blob/master/docs/pre-releases.md diff --git a/addon/-debug/edge-visualization/debug-mixin.js b/addon/-debug/edge-visualization/debug-mixin.js deleted file mode 100644 index 407595a8..00000000 --- a/addon/-debug/edge-visualization/debug-mixin.js +++ /dev/null @@ -1,93 +0,0 @@ -import { assert } from '@ember/debug'; -import Mixin from '@ember/object/mixin'; -import Visualization from './visualization'; -import { ViewportContainer } from '../../-private'; - -import { - styleIsOneOf, - hasStyleValue, - hasStyleWithNonZeroValue -} from '../utils/validate-style'; - -export default Mixin.create({ - debugVis: false, - debugCSS: false, - - __visualization: null, - - init() { - this._super(...arguments); - - this._radar._debugDidUpdate = () => { - this.updateVisualization(); - this.detectIssuesWithCSS(); - }; - }, - - detectIssuesWithCSS() { - if (this.get('debugCSS') === false) { - return; - } - - let radar = this._radar; - let styles; - - // check telescope - if (radar.scrollContainer !== ViewportContainer) { - styles = window.getComputedStyle(radar.scrollContainer); - } else { - styles = window.getComputedStyle(document.body); - } - - assert(`scrollContainer cannot be inline.`, styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])); - assert(`scrollContainer must define position`, styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute'])); - assert(`scrollContainer must define height or max-height`, hasStyleWithNonZeroValue(styles, 'height') || hasStyleWithNonZeroValue(styles, 'max-height')); - - // conditional perf check for non-body scrolling - if (radar.scrollContainer !== ViewportContainer) { - assert(`scrollContainer must define overflow-y`, hasStyleValue(styles, 'overflow-y', 'scroll') || hasStyleValue(styles, 'overflow', 'scroll')); - } - - // check itemContainer - styles = window.getComputedStyle(radar.itemContainer); - - assert(`itemContainer cannot be inline.`, styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])); - assert(`itemContainer must define position`, styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute'])); - - // check item defaults - assert(`You must supply at least one item to the collection to debug it's CSS.`, this.get('items.length')); - - let element = radar._itemContainer.firstElementChild; - - styles = window.getComputedStyle(element); - - assert(`Item cannot be inline.`, styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])); - assert(`Item must define position`, styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute'])); - }, - - updateVisualization() { - if (this.get('debugVis') === false) { - if (this.__visualization !== null) { - console.info('tearing down existing visualization'); // eslint-disable-line no-console - this.__visualization.destroy(); - this.__visualization = null; - } - return; - } - - if (this.__visualization === null) { - this.__visualization = new Visualization(this._radar); - } - - this.__visualization.render(); - }, - - willDestroy() { - this._super(); - if (this.__visualization) { - console.info('destroying visualization'); // eslint-disable-line no-console - this.__visualization.destroy(); - this.__visualization = null; - } - } -}); diff --git a/addon/-debug/edge-visualization/visualization.js b/addon/-debug/edge-visualization/visualization.js deleted file mode 100644 index 1c780dce..00000000 --- a/addon/-debug/edge-visualization/visualization.js +++ /dev/null @@ -1,134 +0,0 @@ -import { ViewportContainer } from '../../-private'; - -function applyVerticalStyles(element, geography) { - element.style.height = `${geography.height}px`; - element.style.top = `${geography.top}px`; -} - -export default class Visualization { - constructor(radar) { - this.radar = radar; - this.satellites = []; - this.cache = []; - - this.wrapper = document.createElement('div'); - this.wrapper.className = 'vertical-collection-visual-debugger'; - - this.container = document.createElement('div'); - this.container.className = 'vc_visualization-container'; - this.wrapper.appendChild(this.container); - - this.itemContainer = document.createElement('div'); - this.itemContainer.className = 'vc_visualization-item-container'; - this.container.appendChild(this.itemContainer); - - this.scrollContainer = document.createElement('div'); - this.scrollContainer.className = 'vc_visualization-scroll-container'; - this.container.appendChild(this.scrollContainer); - - this.screen = document.createElement('div'); - this.screen.className = 'vc_visualization-screen'; - this.container.appendChild(this.screen); - - document.body.appendChild(this.wrapper); - } - - render() { - this.styleViewport(); - this.updateSatellites(); - } - - styleViewport() { - const { _scrollContainer } = this.radar; - this.container.style.height = `${_scrollContainer.getBoundingClientRect().height}px`; - - applyVerticalStyles(this.scrollContainer, _scrollContainer.getBoundingClientRect()); - applyVerticalStyles(this.screen, ViewportContainer.getBoundingClientRect()); - } - - makeSatellite() { - let satellite; - - if (this.cache.length) { - satellite = this.cache.pop(); - } else { - satellite = document.createElement('div'); - satellite.className = 'vc_visualization-virtual-component'; - } - - this.satellites.push(satellite); - this.itemContainer.append(satellite); - } - - updateSatellites() { - const { satellites: sats } = this; - let { - firstItemIndex, - lastItemIndex, - - totalItems, - - totalBefore, - totalAfter, - skipList, - _calculatedEstimateHeight - } = this.radar; - - const isDynamic = !!skipList; - const itemHeights = isDynamic && skipList.values; - - const firstVisualizedIndex = Math.max(firstItemIndex - 10, 0); - const lastVisualizedIndex = Math.min(lastItemIndex + 10, totalItems - 1); - - const lengthWithBuffer = lastVisualizedIndex - firstVisualizedIndex + 1; - const isShrinking = sats.length > lengthWithBuffer; - - while (sats.length !== lengthWithBuffer) { - if (isShrinking) { - const satellite = sats.pop(); - - satellite.parentNode.removeChild(satellite); - this.cache.push(satellite); - } else { - this.makeSatellite(); - } - } - - for (let itemIndex = firstVisualizedIndex, i = 0; itemIndex <= lastVisualizedIndex; itemIndex++, i++) { - const element = sats[i]; - - const itemHeight = isDynamic ? itemHeights[itemIndex] : _calculatedEstimateHeight; - - element.style.height = `${itemHeight}px`; - element.setAttribute('index', String(itemIndex)); - element.innerText = String(itemIndex); - - if (itemIndex < firstItemIndex) { - element.classList.add('culled'); - totalBefore -= itemHeight; - } else if (itemIndex > lastItemIndex) { - element.classList.add('culled'); - totalAfter -= itemHeight; - } else { - element.classList.remove('culled'); - } - } - - this.itemContainer.style.paddingTop = `${totalBefore}px`; - this.itemContainer.style.paddingBottom = `${totalAfter}px`; - } - - destroy() { - this.wrapper.parentNode.removeChild(this.wrapper); - this.wrapper = null; - this.radar = null; - this.component = null; - this.satellites.forEach((satellite) => { - if (satellite.parentNode) { - satellite.parentNode.removeChild(satellite); - } - }); - this.satellites = null; - this.cache = null; - } -} diff --git a/addon/-debug/index.js b/addon/-debug/index.js deleted file mode 100644 index 4f976531..00000000 --- a/addon/-debug/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import DebugMixin from './edge-visualization/debug-mixin'; -import Collection from '../components/vertical-collection/component'; - -Collection.reopen(DebugMixin); diff --git a/addon/-debug/utils/validate-css.js b/addon/-debug/utils/validate-css.js deleted file mode 100644 index 92a2a134..00000000 --- a/addon/-debug/utils/validate-css.js +++ /dev/null @@ -1,12 +0,0 @@ -export function hasCSSRule(rules, prop, value) { - let styleStr = `${prop}:\\s*${value}`; - let expr = new RegExp(styleStr, ['i']); - - for (let i = 0; i < rules.length; i++) { - if (expr.test(rules[i].cssText)) { - return true; - } - } - - return false; -} diff --git a/addon/-debug/utils/validate-rect.js b/addon/-debug/utils/validate-rect.js deleted file mode 100644 index 6ed4e936..00000000 --- a/addon/-debug/utils/validate-rect.js +++ /dev/null @@ -1,13 +0,0 @@ -import { isNonZero } from './validate-style'; - -export function hasDimension(rect, prop) { - return isNonZero(rect[prop]); -} - -export function hasDimensionAbove(rect, prop, amount) { - return hasDimension(rect, prop) && rect[prop] >= amount; -} - -export function hasDimensionEqual(rect, prop, amount) { - return hasDimension(rect, prop) && rect[prop] === amount; -} diff --git a/addon/-debug/utils/validate-style.js b/addon/-debug/utils/validate-style.js deleted file mode 100644 index c99710b9..00000000 --- a/addon/-debug/utils/validate-style.js +++ /dev/null @@ -1,23 +0,0 @@ - -export function hasStyleValue(styles, key, value) { - return styles[key] === value; -} - -export function isNonZero(value) { - let int = parseInt(value, 10); - let float = parseFloat(value); - - return !isNaN(int) && (int !== 0 || float !== 0); -} - -export function hasStyleWithNonZeroValue(styles, key) { - return isNonZero(styles[key]); -} - -export function styleIsOneOf(styles, key, values) { - return styles[key] && values.indexOf(styles[key]) !== -1; -} - -export function containsStyleValue(styles, key, value) { - return styles[key] && styles[key].indexOf(value) !== -1; -} diff --git a/addon/-private/data-view/elements/occluded-content.js b/addon/-private/data-view/elements/occluded-content.js index 66a71ddf..c77c1062 100644 --- a/addon/-private/data-view/elements/occluded-content.js +++ b/addon/-private/data-view/elements/occluded-content.js @@ -1,6 +1,5 @@ import { set } from '@ember/object'; import { DEBUG } from '@glimmer/env'; -import { IS_GLIMMER_2, gte as emberVersionGTE } from 'ember-compatibility-helpers'; import document from '../../utils/document-shim'; @@ -27,12 +26,6 @@ export default class OccludedContent { this.isOccludedContent = true; this.rendered = false; - if (!emberVersionGTE('3.0.0')) { - // In older versions of Ember, binding anything on an object in the template - // adds observers which creates __ember_meta__ - this.__ember_meta__ = null; // eslint-disable-line camelcase - } - if (DEBUG) { Object.preventExtensions(this); } @@ -57,11 +50,11 @@ export default class OccludedContent { } get realUpperBound() { - return IS_GLIMMER_2 ? this.upperBound : this.upperBound.previousSibling; + return this.upperBound; } get realLowerBound() { - return IS_GLIMMER_2 ? this.lowerBound : this.lowerBound.nextSibling; + return this.lowerBound; } get parentNode() { diff --git a/addon/-private/data-view/elements/virtual-component.js b/addon/-private/data-view/elements/virtual-component.js index b0d5f5cf..878ba3d9 100644 --- a/addon/-private/data-view/elements/virtual-component.js +++ b/addon/-private/data-view/elements/virtual-component.js @@ -1,7 +1,6 @@ import { set } from '@ember/object'; import { assert } from '@ember/debug'; import { DEBUG } from '@glimmer/env'; -import { IS_GLIMMER_2, gte as emberVersionGTE } from 'ember-compatibility-helpers'; import document from '../../utils/document-shim'; @@ -22,23 +21,17 @@ export default class VirtualComponent { this.rendered = false; - if (!emberVersionGTE('3.0.0')) { - // In older versions of Ember, binding anything on an object in the template - // adds observers which creates __ember_meta__ - this.__ember_meta__ = null; // eslint-disable-line camelcase - } - if (DEBUG) { Object.preventExtensions(this); } } get realUpperBound() { - return IS_GLIMMER_2 ? this.upperBound : this.upperBound.previousSibling; + return this.upperBound; } get realLowerBound() { - return IS_GLIMMER_2 ? this.lowerBound : this.lowerBound.nextSibling; + return this.lowerBound; } getBoundingClientRect() { diff --git a/addon/-private/data-view/radar/radar.js b/addon/-private/data-view/radar/radar.js index f7a0e38f..5b1c919e 100644 --- a/addon/-private/data-view/radar/radar.js +++ b/addon/-private/data-view/radar/radar.js @@ -582,7 +582,7 @@ export default class Radar { if (component.rendered === true) { insertRangeBefore(_itemContainer, relativeNode, component.realUpperBound, component.realLowerBound); } else { - virtualComponents.insertAt(virtualComponents.get('length') - 1, component); + virtualComponents.insertAt(virtualComponents.length - 1, component); component.rendered = true; // shouldRecycle=false breaks UI when scrolling the elements fast. @@ -623,7 +623,7 @@ export default class Radar { if (component.rendered === true) { insertRangeBefore(_itemContainer, relativeNode, component.realUpperBound, component.realLowerBound); } else { - virtualComponents.insertAt(virtualComponents.get('length') - 1, component); + virtualComponents.insertAt(virtualComponents.length - 1, component); component.rendered = true; // Components that are both new and prepended still need to be rendered at the end because Glimmer. diff --git a/addon/components/vertical-collection/component.js b/addon/components/vertical-collection/component.js index 42c210b6..c81ac2ed 100644 --- a/addon/components/vertical-collection/component.js +++ b/addon/components/vertical-collection/component.js @@ -1,9 +1,13 @@ +import { DEBUG } from '@glimmer/env'; +import { assert } from '@ember/debug'; + import { empty, readOnly } from '@ember/object/computed'; import Component from '@ember/component'; import { get, computed } from '@ember/object'; import { run } from '@ember/runloop'; import layout from './template'; +import { ViewportContainer } from '../../-private'; import { scheduler, Token } from 'ember-raf-scheduler'; @@ -14,6 +18,166 @@ import { objectAt } from '../../-private'; +/* + * BEGIN DEBUG HELPERS + * + * These methods and the Visualization class are used by DEBUG code paths. + */ +function isNonZero(value) { + let int = parseInt(value, 10); + let float = parseFloat(value); + + return !isNaN(int) && (int !== 0 || float !== 0); +} + +function hasStyleValue(styles, key, value) { + return styles[key] === value; +} + +function hasStyleWithNonZeroValue(styles, key) { + return isNonZero(styles[key]); +} + +function styleIsOneOf(styles, key, values) { + return styles[key] && values.indexOf(styles[key]) !== -1; +} + +function applyVerticalStyles(element, geography) { + element.style.height = `${geography.height}px`; + element.style.top = `${geography.top}px`; +} + +class Visualization { + constructor(radar) { + this.radar = radar; + this.satellites = []; + this.cache = []; + + this.wrapper = document.createElement('div'); + this.wrapper.className = 'vertical-collection-visual-debugger'; + + this.container = document.createElement('div'); + this.container.className = 'vc_visualization-container'; + this.wrapper.appendChild(this.container); + + this.itemContainer = document.createElement('div'); + this.itemContainer.className = 'vc_visualization-item-container'; + this.container.appendChild(this.itemContainer); + + this.scrollContainer = document.createElement('div'); + this.scrollContainer.className = 'vc_visualization-scroll-container'; + this.container.appendChild(this.scrollContainer); + + this.screen = document.createElement('div'); + this.screen.className = 'vc_visualization-screen'; + this.container.appendChild(this.screen); + + document.body.appendChild(this.wrapper); + } + + render() { + this.styleViewport(); + this.updateSatellites(); + } + + styleViewport() { + const { _scrollContainer } = this.radar; + this.container.style.height = `${_scrollContainer.getBoundingClientRect().height}px`; + + applyVerticalStyles(this.scrollContainer, _scrollContainer.getBoundingClientRect()); + applyVerticalStyles(this.screen, ViewportContainer.getBoundingClientRect()); + } + + makeSatellite() { + let satellite; + + if (this.cache.length) { + satellite = this.cache.pop(); + } else { + satellite = document.createElement('div'); + satellite.className = 'vc_visualization-virtual-component'; + } + + this.satellites.push(satellite); + this.itemContainer.append(satellite); + } + + updateSatellites() { + const { satellites: sats } = this; + let { + firstItemIndex, + lastItemIndex, + + totalItems, + + totalBefore, + totalAfter, + skipList, + _calculatedEstimateHeight + } = this.radar; + + const isDynamic = !!skipList; + const itemHeights = isDynamic && skipList.values; + + const firstVisualizedIndex = Math.max(firstItemIndex - 10, 0); + const lastVisualizedIndex = Math.min(lastItemIndex + 10, totalItems - 1); + + const lengthWithBuffer = lastVisualizedIndex - firstVisualizedIndex + 1; + const isShrinking = sats.length > lengthWithBuffer; + + while (sats.length !== lengthWithBuffer) { + if (isShrinking) { + const satellite = sats.pop(); + + satellite.parentNode.removeChild(satellite); + this.cache.push(satellite); + } else { + this.makeSatellite(); + } + } + + for (let itemIndex = firstVisualizedIndex, i = 0; itemIndex <= lastVisualizedIndex; itemIndex++, i++) { + const element = sats[i]; + + const itemHeight = isDynamic ? itemHeights[itemIndex] : _calculatedEstimateHeight; + + element.style.height = `${itemHeight}px`; + element.setAttribute('index', String(itemIndex)); + element.innerText = String(itemIndex); + + if (itemIndex < firstItemIndex) { + element.classList.add('culled'); + totalBefore -= itemHeight; + } else if (itemIndex > lastItemIndex) { + element.classList.add('culled'); + totalAfter -= itemHeight; + } else { + element.classList.remove('culled'); + } + } + + this.itemContainer.style.paddingTop = `${totalBefore}px`; + this.itemContainer.style.paddingBottom = `${totalAfter}px`; + } + + destroy() { + this.wrapper.parentNode.removeChild(this.wrapper); + this.wrapper = null; + this.radar = null; + this.component = null; + this.satellites.forEach((satellite) => { + if (satellite.parentNode) { + satellite.parentNode.removeChild(satellite); + } + }); + this.satellites = null; + this.cache = null; + } +} +/* + * END DEBUG HELPERS + */ + const VerticalCollection = Component.extend({ layout, @@ -43,7 +207,7 @@ const VerticalCollection = Component.extend({ /** * List of objects to svelte-render. - * Can be called like `{{#vertical-collection }}`, since it's the first positional parameter of this component. + * Can be called like ``. * * @property items * @type Array @@ -155,12 +319,12 @@ const VerticalCollection = Component.extend({ virtualComponents: computed('items.[]', 'renderAll', 'estimateHeight', 'bufferSize', function() { const { _radar } = this; - const items = this.get('items'); + const items = this.items; _radar.items = items === null || items === undefined ? [] : items; - _radar.estimateHeight = this.get('estimateHeight'); - _radar.renderAll = this.get('renderAll'); - _radar.bufferSize = this.get('bufferSize'); + _radar.estimateHeight = this.estimateHeight; + _radar.renderAll = this.renderAll; + _radar.bufferSize = this.bufferSize; _radar.scheduleUpdate(true); @@ -179,8 +343,8 @@ const VerticalCollection = Component.extend({ this._nextSendActions = null; run(() => { - const items = this.get('items'); - const keyPath = this.get('key'); + const items = this.items; + const keyPath = this.key; this._scheduledActions.forEach(([action, index]) => { const item = objectAt(items, index); @@ -200,7 +364,7 @@ const VerticalCollection = Component.extend({ } }, - /* Public API Methods + /* Public API Methods @index => number This will return offset height of the indexed item. */ @@ -228,11 +392,19 @@ const VerticalCollection = Component.extend({ willDestroy() { this.token.cancel(); this._radar.destroy(); - let registerAPI = this.get('registerAPI'); + let registerAPI = this.registerAPI; if (registerAPI) { registerAPI(null); } clearTimeout(this._nextSendActions); + + if (DEBUG) { + if (this.__visualization) { + console.info('destroying visualization'); // eslint-disable-line no-console + this.__visualization.destroy(); + this.__visualization = null; + } + } }, init() { @@ -241,19 +413,20 @@ const VerticalCollection = Component.extend({ this.token = new Token(); const RadarClass = this.staticHeight ? StaticRadar : DynamicRadar; - const items = this.get('items') || []; - - const bufferSize = this.get('bufferSize'); - const containerSelector = this.get('containerSelector'); - const estimateHeight = this.get('estimateHeight'); - const initialRenderCount = this.get('initialRenderCount'); - const renderAll = this.get('renderAll'); - const renderFromLast = this.get('renderFromLast'); - const shouldRecycle = this.get('shouldRecycle'); - const occlusionTagName = this.get('occlusionTagName'); - - const idForFirstItem = this.get('idForFirstItem'); - const key = this.get('key'); + const items = this.items || []; + + const { + bufferSize, + containerSelector, + estimateHeight, + initialRenderCount, + renderAll, + renderFromLast, + shouldRecycle, + occlusionTagName, + idForFirstItem, + key + } = this; const startingIndex = calculateStartingIndex(items, idForFirstItem, key, renderFromLast); @@ -303,24 +476,24 @@ const VerticalCollection = Component.extend({ }; } - /* Public methods to Expose to parent + /* Public methods to Expose to parent Usage: Template: - {{vertical-collection registerAPI=(action "registerAPI")}} + Component: - export default Component.extend({ + export default Component.extend({ actions: { registerAPI(api) { this.set('collectionAPI', api); } }, scrollToItem() { - let collectionAPI = this.get('collectionAPI'); + let collectionAPI = this.collectionAPI; collectionAPI.scrollToItem(index); } }); @@ -339,11 +512,77 @@ const VerticalCollection = Component.extend({ }; registerAPI(publicAPI); } - } -}); -VerticalCollection.reopenClass({ - positionalParams: ['items'] + if (DEBUG) { + this.__visualization = null; + this._radar._debugDidUpdate = () => { + + // Update visualization + // + // This debugging mode can be controlled via the argument + // `@debugVis={{true}}` at component invocation. + // + if (this.debugVis !== true) { + if (this.__visualization !== null) { + console.info('tearing down existing visualization'); // eslint-disable-line no-console + this.__visualization.destroy(); + this.__visualization = null; + } + return; + } + + if (this.__visualization === null) { + this.__visualization = new Visualization(this._radar); + } + + this.__visualization.render(); + + // Detect issues with CSS + // + // This debugging mode can be controlled via the argument + // `@debugCSS={{true}}` at component invocation. + // + if (this.debugCSS !== true) { + return; + } + + let radar = this._radar; + let styles; + + // check telescope + if (radar.scrollContainer !== ViewportContainer) { + styles = window.getComputedStyle(radar.scrollContainer); + } else { + styles = window.getComputedStyle(document.body); + } + + assert(`scrollContainer cannot be inline.`, styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])); + assert(`scrollContainer must define position`, styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute'])); + assert(`scrollContainer must define height or max-height`, hasStyleWithNonZeroValue(styles, 'height') || hasStyleWithNonZeroValue(styles, 'max-height')); + + // conditional perf check for non-body scrolling + if (radar.scrollContainer !== ViewportContainer) { + assert(`scrollContainer must define overflow-y`, hasStyleValue(styles, 'overflow-y', 'scroll') || hasStyleValue(styles, 'overflow', 'scroll')); + } + + // check itemContainer + styles = window.getComputedStyle(radar.itemContainer); + + assert(`itemContainer cannot be inline.`, styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])); + assert(`itemContainer must define position`, styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute'])); + + // check item defaults + assert(`You must supply at least one item to the collection to debug it's CSS.`, this.items.length); + + let element = radar._itemContainer.firstElementChild; + + styles = window.getComputedStyle(element); + + assert(`Item cannot be inline.`, styleIsOneOf(styles, 'display', ['block', 'inline-block', 'flex', 'inline-flex'])); + assert(`Item must define position`, styleIsOneOf(styles, 'position', ['static', 'relative', 'absolute'])); + }; + } + } }); function calculateStartingIndex(items, idForFirstItem, key, renderFromLast) { @@ -366,4 +605,4 @@ function calculateStartingIndex(items, idForFirstItem, key, renderFromLast) { return startingIndex; } -export default VerticalCollection; \ No newline at end of file +export default VerticalCollection; diff --git a/app/initializers/debug.js b/app/initializers/debug.js deleted file mode 100644 index 6d06e55d..00000000 --- a/app/initializers/debug.js +++ /dev/null @@ -1,6 +0,0 @@ -import '@html-next/vertical-collection/-debug'; - -export default { - name: 'vertical-collection-debug', - initialize() {} -}; diff --git a/config/ember-try.js b/config/ember-try.js index 60ead11b..b5b75317 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -6,37 +6,6 @@ module.exports = async function() { return { useYarn: true, scenarios: [ - { - name: 'ember-lts-2.18', - npm: { - devDependencies: { - '@ember/jquery': '^1.1.0', - '@ember/test-helpers': '^1.7.0', - 'ember-angle-bracket-invocation-polyfill': '^3.0.1', - 'ember-qunit': '^4.0.0', - 'ember-source': '~2.18.0', - 'qunit': null - }, - }, - }, - { - name: 'ember-lts-3.4', - npm: { - devDependencies: { - 'ember-angle-bracket-invocation-polyfill': '^3.0.1', - 'ember-source': '~3.4.0' - } - } - }, - { - name: 'ember-lts-3.8', - npm: { - devDependencies: { - 'ember-angle-bracket-invocation-polyfill': '^3.0.1', - 'ember-source': '~3.8.0' - } - } - }, { name: 'ember-lts-3.12', npm: { @@ -62,15 +31,6 @@ module.exports = async function() { } } }, - { - name: 'ember-lts-3.24', - npm: { - devDependencies: { - 'ember-data': '~3.24.0', - 'ember-source': '~3.24.0' - } - } - }, { name: 'ember-lts-3.28', npm: { @@ -99,25 +59,6 @@ module.exports = async function() { }) } }, - { - name: 'ember-4.5', - npm: { - devDependencies: { - 'ember-cli-fastboot': '3.2.0-beta.5', - 'ember-data': '~3.28.0', - 'ember-source': '~4.5.0' - }, - ember: { - edition: 'octane' - } - }, - env: { - EMBER_OPTIONAL_FEATURES: JSON.stringify({ - 'application-template-wrapper': false, - 'template-only-glimmer-components': true, - }) - } - }, { name: 'ember-release', npm: { diff --git a/index.js b/index.js index e4e9936e..1b0bb3fd 100644 --- a/index.js +++ b/index.js @@ -6,13 +6,6 @@ const Rollup = require('broccoli-rollup'); const merge = require('broccoli-merge-trees'); const VersionChecker = require('ember-cli-version-checker'); -function isProductionEnv() { - const isProd = /production/.test(process.env.EMBER_ENV); - const isTest = process.env.EMBER_CLI_TEST_COMMAND; - - return isProd && !isTest; -} - module.exports = { name: require('./package').name, @@ -23,13 +16,7 @@ module.exports = { }, getOutputDirForVersion() { - let VersionChecker = require('ember-cli-version-checker'); - let checker = new VersionChecker(this); - let emberCli = checker.for('ember-cli', 'npm'); - - let requiresModulesDir = emberCli.satisfies('< 3.0.0'); - - return requiresModulesDir ? 'modules' : ''; + return ''; }, // Borrowed from ember-cli-babel @@ -49,10 +36,8 @@ module.exports = { let withoutPrivate = new Funnel(tree, { exclude: [ '**/**.hbs', - '-private', - isProductionEnv() ? '-debug' : false - ].filter(Boolean), - + '-private' + ], destDir: '@html-next/vertical-collection' }); @@ -170,34 +155,7 @@ module.exports = { this._setupBabelOptions(app.env); if (!/production/.test(app.env) && !/test/.test(app.env)) { - findImporter(this).import('vendor/debug.css'); + this.import('vendor/debug.css'); } - }, - - treeForApp() { - const tree = this._super.treeForApp.apply(this, arguments); - - const exclude = []; - - if (isProductionEnv()) { - exclude.push('initializers/debug.js'); - } - - return new Funnel(tree, { exclude }); } }; - -function findImporter(addon) { - if (typeof addon.import === 'function') { - // If addon.import() is present (CLI 2.7+) use that - return addon; - } else { - // Otherwise, reuse the _findHost implementation that would power addon.import() - let current = addon; - let app; - do { - app = current.app || app; - } while (current.parent.parent && (current = current.parent)); - return app; - } -} diff --git a/package.json b/package.json index 049587c0..6af097e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@html-next/vertical-collection", - "version": "3.1.0", + "version": "4.0.0", "description": "infinite-scroll, done right. done.", "keywords": [ "occlusion", @@ -52,22 +52,21 @@ }, "dependencies": { "babel6-plugin-strip-class-callcheck": "^6.0.0", - "broccoli-funnel": "^2.0.2", - "broccoli-merge-trees": "^3.0.1", - "broccoli-rollup": "^4.1.1", + "broccoli-funnel": "^3.0.8", + "broccoli-merge-trees": "^4.2.0", + "broccoli-rollup": "^5.0.0", "ember-cli-babel": "^7.12.0", - "ember-cli-htmlbars": "^5.0.0", - "ember-cli-version-checker": "^3.1.3", - "ember-compatibility-helpers": "^1.2.1", + "ember-cli-htmlbars": "^6.0.0", + "ember-cli-version-checker": "^5.1.2", "ember-raf-scheduler": "^0.3.0" }, "devDependencies": { "@ember/optional-features": "^2.0.0", - "@ember/test-helpers": "^2.4.0", + "@ember/test-helpers": "^2.8.1", "babel-eslint": "^10.1.0", "bootstrap": "~3.3.5", "broccoli-asset-rev": "^3.0.0", - "ember-auto-import": "^2.0.0", + "ember-auto-import": "^2.4.2", "ember-cli": "~3.28.0", "ember-cli-dependency-checker": "^3.2.0", "ember-cli-eslint": "^5.1.0", @@ -82,17 +81,17 @@ "ember-export-application-global": "^2.0.1", "ember-load-initializers": "^2.1.2", "ember-perf-timeline": "^2.0.0", - "ember-qunit": "^5.0.0", + "ember-qunit": "^5.1.5", "ember-resolver": "^8.0.2", "ember-source": "~3.12.0", "ember-source-channel-url": "^3.0.0", - "ember-try": "^1.4.0", + "ember-try": "^2.0.0", "eslint": "^7.32.0", "eslint-plugin-ember": "^6.7.1", "eslint-plugin-node": "^9.1.0", "loader.js": "^4.7.0", "npm-run-all": "^4.1.5", - "qunit": "^2.0.0", + "qunit": "^2.19.1", "qunit-dom": "^1.0.0", "release-it": "^14.2.1", "release-it-lerna-changelog": "^3.1.0", diff --git a/tests/dummy/app/models/number-item.js b/tests/dummy/app/models/number-item.js index 083b138a..4181dbe6 100644 --- a/tests/dummy/app/models/number-item.js +++ b/tests/dummy/app/models/number-item.js @@ -9,6 +9,6 @@ const { export default Model.extend({ number: attr('number'), prefixed: computed('number', function() { - return `${this.get('number')}`; + return `${this.number}`; }) }); diff --git a/tests/dummy/app/routes/acceptance-tests/record-array/controller.js b/tests/dummy/app/routes/acceptance-tests/record-array/controller.js index 9c08f8df..3ef5ab31 100644 --- a/tests/dummy/app/routes/acceptance-tests/record-array/controller.js +++ b/tests/dummy/app/routes/acceptance-tests/record-array/controller.js @@ -8,8 +8,8 @@ export default Controller.extend({ actions: { updateItems() { - this.get('store').unloadAll('number-item'); - this.get('store').query('number-item', { length: 5 }); + this.store.unloadAll('number-item'); + this.store.query('number-item', { length: 5 }); }, partialUpdate() { diff --git a/tests/dummy/app/routes/acceptance-tests/record-array/route.js b/tests/dummy/app/routes/acceptance-tests/record-array/route.js index aa2797dd..5e434e44 100644 --- a/tests/dummy/app/routes/acceptance-tests/record-array/route.js +++ b/tests/dummy/app/routes/acceptance-tests/record-array/route.js @@ -5,6 +5,6 @@ export default Route.extend({ store: service(), model() { - return this.get('store').findAll('number-item'); + return this.store.findAll('number-item'); } }); diff --git a/tests/dummy/app/routes/acceptance-tests/record-array/template.hbs b/tests/dummy/app/routes/acceptance-tests/record-array/template.hbs index cc5066b6..61ac9582 100644 --- a/tests/dummy/app/routes/acceptance-tests/record-array/template.hbs +++ b/tests/dummy/app/routes/acceptance-tests/record-array/template.hbs @@ -1,11 +1,11 @@ {{#if this.vcShown}}
    - {{#vertical-collection this.model - estimateHeight=50 - bufferSize=5 - as |item index|}} - {{number-slide item=item itemIndex=index prefixed=this.prefixed}} - {{/vertical-collection}} + + +
    {{/if}} diff --git a/tests/dummy/app/routes/components/number-slide/component.js b/tests/dummy/app/routes/components/number-slide/component.js index 1afb2a7f..5f65f308 100644 --- a/tests/dummy/app/routes/components/number-slide/component.js +++ b/tests/dummy/app/routes/components/number-slide/component.js @@ -23,8 +23,8 @@ export default Component.extend({ isDynamic: false, prefixed: false, style: computed('isDynamic', 'item', function() { - let item = this.get('item'); - let isDynamic = this.get('isDynamic'); + let item = this.item; + let isDynamic = this.isDynamic; let { height, diff --git a/tests/dummy/app/routes/examples/dbmon/components/dbmon-row/component.js b/tests/dummy/app/routes/examples/dbmon/components/dbmon-row/component.js index 3b6d4da0..787e8dea 100644 --- a/tests/dummy/app/routes/examples/dbmon/components/dbmon-row/component.js +++ b/tests/dummy/app/routes/examples/dbmon/components/dbmon-row/component.js @@ -9,7 +9,7 @@ export default Component.extend({ queries: alias('db.queries'), topFiveQueries: computed('queries', function() { - let queries = this.get('queries') || []; + let queries = this.queries || []; let topFiveQueries = queries.slice(0, 5); while (topFiveQueries.length < 5) { @@ -28,7 +28,7 @@ export default Component.extend({ }), countClassName: computed('queries', function() { - let queries = this.get('queries') || []; + let queries = this.queries || []; let countClassName = 'label'; if (queries.length >= 20) { diff --git a/tests/dummy/app/routes/examples/dbmon/template.hbs b/tests/dummy/app/routes/examples/dbmon/template.hbs index 47a14fe7..da397a16 100644 --- a/tests/dummy/app/routes/examples/dbmon/template.hbs +++ b/tests/dummy/app/routes/examples/dbmon/template.hbs @@ -7,17 +7,17 @@
    - {{#vertical-collection - model.databases - containerSelector=".table-wrapper" - key="id" + + +
    @@ -34,7 +34,7 @@ focusing only on what's on screen now.

    Code for Demo

    - {{code-snippet name="dbmon-example.hbs"}} + diff --git a/tests/dummy/app/routes/examples/flexible-layout/template.hbs b/tests/dummy/app/routes/examples/flexible-layout/template.hbs index 49f3d6ed..6f38f33f 100644 --- a/tests/dummy/app/routes/examples/flexible-layout/template.hbs +++ b/tests/dummy/app/routes/examples/flexible-layout/template.hbs @@ -4,15 +4,14 @@

    Demo

    {{!- BEGIN-SNIPPET flexible-layout-example }}
    - {{#vertical-collection - this.model.numbers - estimateHeight=270 - firstReached=(action "loadAbove") - lastReached=(action "loadBelow") - bufferSize=0 as |item index| - }} - {{number-slide isDynamic=true item=item index=index}} - {{/vertical-collection}} + + +
    {{!- END-SNIPPET }} @@ -27,7 +26,7 @@ with integration with the pre-render component.

    Code for Demo

    - {{code-snippet name="flexible-layout-example.hbs"}} + diff --git a/tests/dummy/app/routes/examples/infinite-scroll/controller.js b/tests/dummy/app/routes/examples/infinite-scroll/controller.js index 47a36f33..bdf06a3a 100644 --- a/tests/dummy/app/routes/examples/infinite-scroll/controller.js +++ b/tests/dummy/app/routes/examples/infinite-scroll/controller.js @@ -10,18 +10,18 @@ export default Controller.extend({ actions: { loadAbove() { - let first = this.get('model.first'); + let first = this.model.first; let numbers = getNumbers(first - 20, 20); - let model = this.get('model.numbers'); + let model = this.model.numbers; model.unshiftObjects(numbers); // this.set('model.numbers', newModel); this.set('model.first', first - 20); }, loadBelow() { - let last = this.get('model.last'); + let last = this.model.last; let numbers = getNumbers(last, 20); - let model = this.get('model.numbers'); + let model = this.model.numbers; model.pushObjects(numbers); // this.set('model.numbers', newModel); this.set('model.last', last + 20); diff --git a/tests/dummy/app/routes/examples/infinite-scroll/template.hbs b/tests/dummy/app/routes/examples/infinite-scroll/template.hbs index a200714f..102dd18f 100644 --- a/tests/dummy/app/routes/examples/infinite-scroll/template.hbs +++ b/tests/dummy/app/routes/examples/infinite-scroll/template.hbs @@ -4,16 +4,16 @@

    Demo

    {{!- BEGIN-SNIPPET infinite-scroll-example }}
    - {{#vertical-collection - this.model.numbers - estimateHeight=90 - staticHeight=true - bufferSize=5 - firstReached=(action "loadAbove") - lastReached=(action "loadBelow") as |item index| - }} - {{number-slide item=item index=index}} - {{/vertical-collection}} + + +
    {{!- END-SNIPPET }} diff --git a/tests/dummy/app/routes/examples/reduce-debug/controller.js b/tests/dummy/app/routes/examples/reduce-debug/controller.js index 77b6a8a6..8c567758 100644 --- a/tests/dummy/app/routes/examples/reduce-debug/controller.js +++ b/tests/dummy/app/routes/examples/reduce-debug/controller.js @@ -6,7 +6,7 @@ export default Controller.extend({ actions: { filter() { - let model = this.get('model.numbers'); + let model = this.model.numbers; let isFiltered = this.toggleProperty('isFiltered'); if (!isFiltered) { diff --git a/tests/dummy/app/routes/examples/reduce-debug/template.hbs b/tests/dummy/app/routes/examples/reduce-debug/template.hbs index 8c956bda..7326150f 100644 --- a/tests/dummy/app/routes/examples/reduce-debug/template.hbs +++ b/tests/dummy/app/routes/examples/reduce-debug/template.hbs @@ -3,16 +3,15 @@

    Demo

    - {{#vertical-collection - items=this.model.filtered - defaultHeight=270 - useContentProxy=false - as |item index| - }} +
    - {{examples/infinite-scroll/components/number-slide number=item.number index=index}} +
    - {{/vertical-collection}} +
    diff --git a/tests/dummy/app/routes/examples/scrollable-body/template.hbs b/tests/dummy/app/routes/examples/scrollable-body/template.hbs index cc233844..1319b54c 100644 --- a/tests/dummy/app/routes/examples/scrollable-body/template.hbs +++ b/tests/dummy/app/routes/examples/scrollable-body/template.hbs @@ -2,19 +2,19 @@
    {{!- BEGIN-SNIPPET scrollable-body-example }} - {{#vertical-collection - this.model.numbers - estimateHeight=40 - containerSelector="body" as |item index| - }} - {{number-slide isDynamic=true item=item index=index}} - {{/vertical-collection}} + + + {{!- END-SNIPPET }}

    Scrolling based on the whole page.

    Code for Demo

    - {{code-snippet name="scrollable-body-example.hbs"}} +
    diff --git a/tests/dummy/app/routes/settings/snippets/defaults.js b/tests/dummy/app/routes/settings/snippets/defaults.js index 9b44f41e..d3b1c451 100644 --- a/tests/dummy/app/routes/settings/snippets/defaults.js +++ b/tests/dummy/app/routes/settings/snippets/defaults.js @@ -8,7 +8,7 @@ export default // Positional parameter, e.g. // - // `{{#vertical-collection items as |item|}}` + // `` // // Note: An alias for this property named `content` // exists solely for Ember 1.11 support. The alias diff --git a/tests/dummy/app/routes/settings/template.hbs b/tests/dummy/app/routes/settings/template.hbs index 3e92c515..f1503333 100644 --- a/tests/dummy/app/routes/settings/template.hbs +++ b/tests/dummy/app/routes/settings/template.hbs @@ -2,10 +2,10 @@

    Available Settings (with defaults)

    - {{code-snippet name="vertical-collection-defaults-example.js"}} +

    Vertical Collection

    - \ No newline at end of file + diff --git a/tests/helpers/array.js b/tests/helpers/array.js index 37025a24..80e555d9 100644 --- a/tests/helpers/array.js +++ b/tests/helpers/array.js @@ -3,7 +3,7 @@ import { run } from '@ember/runloop'; import { settled } from '@ember/test-helpers'; export function prepend(context, itemsToPrepend) { - const items = context.get('items'); + const items = context.items; run(() => { if (items.unshiftObjects) { @@ -17,7 +17,7 @@ export function prepend(context, itemsToPrepend) { } export function append(context, itemsToAppend) { - const items = context.get('items'); + const items = context.items; run(() => { if (items.pushObjects) { @@ -31,7 +31,7 @@ export function append(context, itemsToAppend) { } export function emptyArray(context) { - const items = context.get('items'); + const items = context.items; run(() => { if (items.clear) { @@ -45,7 +45,7 @@ export function emptyArray(context) { } export function replaceArray(context, items) { - const oldItems = context.get('items'); + const oldItems = context.items; run(() => { if (EmberArray.detect(oldItems)) { @@ -59,7 +59,7 @@ export function replaceArray(context, items) { } export function move(context, sourceItemIdx, destItemIdx) { - const items = context.get('items'); + const items = context.items; let destItem, sourceItem; run(() => { diff --git a/tests/helpers/test-scenarios.js b/tests/helpers/test-scenarios.js index a6fa8486..89439b25 100644 --- a/tests/helpers/test-scenarios.js +++ b/tests/helpers/test-scenarios.js @@ -4,7 +4,7 @@ import { Promise } from 'rsvp'; import { test } from 'qunit'; import DS from 'ember-data'; import hbs from 'htmlbars-inline-precompile'; -import { settled } from '@ember/test-helpers'; +import { settled, render } from '@ember/test-helpers'; const { PromiseArray @@ -25,7 +25,7 @@ export function testScenarios(description, scenarios, template, testFn, preRende await setValuesBeforeRender.call(this, assert); } - let renderCompletionPromise = this.render(template); + let renderCompletionPromise = render(template); if (preRenderTestFn) { await preRenderTestFn.call(this, assert); @@ -78,32 +78,32 @@ export const scenariosFor = mergeScenarioGenerators( export const standardTemplate = hbs`
    - {{#vertical-collection this.items - estimateHeight=(either-or this.estimateHeight 20) - staticHeight=this.staticHeight - bufferSize=(either-or this.bufferSize 0) - renderAll=this.renderAll - debugVis=(either-or this.debugVis false) - debugCSS=(either-or this.debugCSS false) +
    {{item.number}} {{i}}
    - {{/vertical-collection}} +
    `; diff --git a/tests/integration/basic-test.js b/tests/integration/basic-test.js index 144c924c..3bdd42f5 100644 --- a/tests/integration/basic-test.js +++ b/tests/integration/basic-test.js @@ -4,7 +4,8 @@ import hbs from 'htmlbars-inline-precompile'; import { find, findAll, - settled + settled, + render } from '@ember/test-helpers'; import scrollTo from '../helpers/scroll-to'; @@ -20,34 +21,12 @@ import { standardTemplate } from 'dummy/tests/helpers/test-scenarios'; -import { scheduler } from 'ember-raf-scheduler'; -import { gte as emberVersionGTE } from 'ember-compatibility-helpers'; - -// Assert an odd timing: After initial render but before settledness. Because -// of changes to the `render` helper in test-helpers, this should be done -// differently in ember-test-helpers 1.x and 2.x. -// -// Use ember-compatibility-helpers < 3 as a proxy for identifying -// ember-test-helpers 1.x. -// -// This helpers can be killed off when Ember 2.18 support is dropped. The -// gte Ember 3 version can be inlined where the helper is used. +// Assert an odd timing: After initial render but before settledness. // async function assertAfterInitialRender(renderFn, assertFn) { - if (emberVersionGTE('3.0.0')) { - renderFn(); - await new Promise(resolve => requestAnimationFrame(resolve)); - assertFn(); - } else { - // After ember-raf-schedulers queues have flushed. - // The schedule of sync inside measure starts a second flush. - scheduler.schedule('measure', () => { - scheduler.schedule('sync', () => { - assertFn(); - }); - }); - renderFn(); - } + renderFn(); + await new Promise(resolve => requestAnimationFrame(resolve)); + assertFn(); } module('vertical-collection', 'Integration | Basic Tests', function(hooks) { @@ -118,17 +97,17 @@ module('vertical-collection', 'Integration | Basic Tests', function(hooks) { hbs`
    - {{#vertical-collection this.items - containerSelector=".scrollable" - estimateHeight=20 - staticHeight=true - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `, @@ -146,17 +125,17 @@ module('vertical-collection', 'Integration | Basic Tests', function(hooks) { hbs`
    - {{#vertical-collection this.items - containerSelector=".scrollable" - estimateHeight=20 - staticHeight=true - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `, @@ -179,16 +158,16 @@ module('vertical-collection', 'Integration | Basic Tests', function(hooks) { hbs`
    - {{#vertical-collection this.items - containerSelector=".scrollable" - estimateHeight=20 - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `, @@ -210,11 +189,11 @@ module('vertical-collection', 'Integration | Basic Tests', function(hooks) { hbs`
    - {{#vertical-collection this.items - estimateHeight=10 - containerSelector="body" +
    Content {{#if item.shouldRender}} @@ -223,7 +202,7 @@ module('vertical-collection', 'Integration | Basic Tests', function(hooks) { {{/if}}
    - {{/vertical-collection}} +
    `, @@ -237,17 +216,17 @@ module('vertical-collection', 'Integration | Basic Tests', function(hooks) { this.set('items', getNumbers(0, 10)); assertAfterInitialRender(() => { - this.render(hbs` + render(hbs`
    - {{#vertical-collection this.items - estimateHeight=50 - initialRenderCount=1 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `); }, () => { @@ -267,19 +246,19 @@ module('vertical-collection', 'Integration | Basic Tests', function(hooks) { this.set('items', getNumbers(0, 100)); assertAfterInitialRender(() => { - this.render(hbs` + render(hbs`
    - {{#vertical-collection this.items - estimateHeight=50 - initialRenderCount=1 - idForFirstItem="20" - key="number" + {{item.number}} {{i}} - {{/vertical-collection}} +
    `); }, () => { @@ -299,17 +278,17 @@ module('vertical-collection', 'Integration | Basic Tests', function(hooks) { this.set('items', getNumbers(0, 1)); assertAfterInitialRender(() => { - this.render(hbs` + render(hbs`
    - {{#vertical-collection this.items - estimateHeight=50 - initialRenderCount=5 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `); }, () => { @@ -330,16 +309,16 @@ module('vertical-collection', 'Integration | Basic Tests', function(hooks) { hbs`
    - {{#vertical-collection this.items - containerSelector=".scrollable" - estimateHeight=20 - bufferSize=2 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `, @@ -364,11 +343,11 @@ module('vertical-collection', 'Integration | Basic Tests', function(hooks) {
    {{#if this.renderCollection}} - {{#vertical-collection this.items estimateHeight="20" as |item|}} +
    Content
    - {{/vertical-collection}} +
    {{/if}} `, diff --git a/tests/integration/measure-test.js b/tests/integration/measure-test.js index b3dbeeaf..6209d730 100644 --- a/tests/integration/measure-test.js +++ b/tests/integration/measure-test.js @@ -147,15 +147,15 @@ module('vertical-collection', 'Integration | Measure Tests', function(hooks) { hbs`
    - {{#vertical-collection this.items - estimateHeight=20 - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `, diff --git a/tests/integration/measurement-unit-test.js b/tests/integration/measurement-unit-test.js index 5a5a23b0..58a34bf9 100644 --- a/tests/integration/measurement-unit-test.js +++ b/tests/integration/measurement-unit-test.js @@ -23,16 +23,16 @@ module('vertical-collection', 'Integration | Measurement Unit Tests', function(h hbs`
    - {{#vertical-collection this.items - estimateHeight="2em" - staticHeight=this.staticHeight - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `, @@ -47,16 +47,16 @@ module('vertical-collection', 'Integration | Measurement Unit Tests', function(h hbs`
    - {{#vertical-collection this.items - estimateHeight="2rem" - staticHeight=this.staticHeight - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `, @@ -71,16 +71,16 @@ module('vertical-collection', 'Integration | Measurement Unit Tests', function(h hbs`
    - {{#vertical-collection this.items - estimateHeight="66%" - staticHeight=this.staticHeight - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `, @@ -95,16 +95,16 @@ module('vertical-collection', 'Integration | Measurement Unit Tests', function(h hbs`
    - {{#vertical-collection this.items - estimateHeight="2em" - staticHeight=this.staticHeight - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `, @@ -120,17 +120,17 @@ module('vertical-collection', 'Integration | Measurement Unit Tests', function(h hbs`
    - {{#vertical-collection this.items - containerSelector=".scrollable" - estimateHeight=20 - staticHeight=this.staticHeight - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `, @@ -148,17 +148,17 @@ module('vertical-collection', 'Integration | Measurement Unit Tests', function(h
    - {{#vertical-collection this.items - containerSelector=".scrollable" - estimateHeight=20 - staticHeight=this.staticHeight - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    @@ -177,17 +177,17 @@ module('vertical-collection', 'Integration | Measurement Unit Tests', function(h
    - {{#vertical-collection this.items - containerSelector=".scrollable" - estimateHeight=20 - staticHeight=this.staticHeight - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    @@ -205,17 +205,17 @@ module('vertical-collection', 'Integration | Measurement Unit Tests', function(h hbs`
    - {{#vertical-collection this.items - containerSelector=".scrollable" - estimateHeight=20 - staticHeight=this.staticHeight - bufferSize=0 + {{item.number}} {{i}} - {{/vertical-collection}} +
    `, diff --git a/tests/integration/modern-ember-test.js b/tests/integration/modern-ember-test.js index fbee7888..d4fa985a 100644 --- a/tests/integration/modern-ember-test.js +++ b/tests/integration/modern-ember-test.js @@ -1,7 +1,7 @@ import { module, test } from 'qunit'; import { setupRenderingTest } from 'ember-qunit'; import hbs from 'htmlbars-inline-precompile'; -import { find, settled } from '@ember/test-helpers'; +import { find, settled, render } from '@ember/test-helpers'; module('vertical-collection', 'Integration | Modern Ember Features Tests', function(hooks) { setupRenderingTest(hooks); @@ -10,14 +10,15 @@ module('vertical-collection', 'Integration | Modern Ember Features Tests', funct assert.expect(1); this.set('items', []); - this.render(hbs` + await render(hbs`
    - {{#vertical-collection this.items + {{#vertical-collection + items=this.items estimateHeight=20 staticHeight=true }} - {{else}} - Foobar + {{else}} + Foobar {{/vertical-collection}}
    `); diff --git a/tests/integration/mutation-test.js b/tests/integration/mutation-test.js index 983fd0bf..1450ca92 100644 --- a/tests/integration/mutation-test.js +++ b/tests/integration/mutation-test.js @@ -236,7 +236,7 @@ module('vertical-collection', 'Integration | Mutation Tests', function(hooks) { assert.equal(find('.vertical-item:first-of-type').textContent.trim(), '1 1', 'first item rendered correctly after initial scroll set'); assert.equal(paddingBefore(itemContainer), 40, 'itemContainer padding correct before same items set'); - await replaceArray(this, this.get('items').slice()); + await replaceArray(this, this.items.slice()); assert.equal(find('.vertical-item:first-of-type').textContent.trim(), '1 1', 'first item rendered correctly after same items set'); assert.equal(paddingBefore(itemContainer), 40, 'itemContainer padding correct after same items set'); diff --git a/tests/integration/recycle-test.js b/tests/integration/recycle-test.js index d580ff87..51b0176b 100644 --- a/tests/integration/recycle-test.js +++ b/tests/integration/recycle-test.js @@ -25,18 +25,18 @@ module('vertical-collection', 'Integration | Recycle Tests', function(hooks) { hbs`
    - {{#vertical-collection this.items - containerSelector=".scrollable" - estimateHeight=20 - staticHeight=this.staticHeight - shouldRecycle=false - bufferSize=0 - - as |item i|}} + {{unbound item.number}} {{unbound i}} - {{/vertical-collection}} +
    `, @@ -59,18 +59,18 @@ module('vertical-collection', 'Integration | Recycle Tests', function(hooks) { hbs`
    - {{#vertical-collection this.items - containerSelector=".scrollable" - estimateHeight=20 - staticHeight=this.staticHeight - shouldRecycle=true - bufferSize=0 - - as |item i|}} + {{unbound item.number}} {{unbound i}} - {{/vertical-collection}} +
    `, diff --git a/tests/integration/scroll-test.js b/tests/integration/scroll-test.js index 7d3057f9..edfc23d3 100644 --- a/tests/integration/scroll-test.js +++ b/tests/integration/scroll-test.js @@ -72,6 +72,8 @@ module('vertical-collection', 'Integration | Scroll Tests', function(hooks) { count++; called(); }); + + await settled(); } ); @@ -98,6 +100,8 @@ module('vertical-collection', 'Integration | Scroll Tests', function(hooks) { count++; called(); }); + + await settled(); } ); @@ -309,6 +313,8 @@ module('vertical-collection', 'Integration | Scroll Tests', function(hooks) { assert.equal(index, 49, 'the lastReached item is correct'); called(); }); + + await settled(); } ); @@ -404,18 +410,18 @@ module('vertical-collection', 'Integration | Scroll Tests', function(hooks) {
    - {{#vertical-collection this.items - containerSelector=".scrollable" - estimateHeight=37 - staticHeight=this.staticHeight - bufferSize=0 + - {{/vertical-collection}} +
    {{item.number}} {{i}}
    @@ -440,15 +446,15 @@ module('vertical-collection', 'Integration | Scroll Tests', function(hooks) { hbs`
    - {{#vertical-collection this.items - estimateHeight=20 - bufferSize=0 +
    {{item.number}} {{i}}
    - {{/vertical-collection}} +
    `, @@ -470,15 +476,15 @@ module('vertical-collection', 'Integration | Scroll Tests', function(hooks) { hbs`
    - {{#vertical-collection this.items - estimateHeight=20 - bufferSize=0 - registerAPI=(action this.registerAPI) - as |item i|}} +
    {{item.number}} {{i}}
    - {{/vertical-collection}} +
    `, @@ -490,7 +496,7 @@ module('vertical-collection', 'Integration | Scroll Tests', function(hooks) { }, false, function() { - let registerAPI = function(collection) { + let registerAPI = collection => { this.set('collection', collection); }; this.set('registerAPI', registerAPI); diff --git a/tests/test-helper.js b/tests/test-helper.js index f995812d..5c34a35c 100644 --- a/tests/test-helper.js +++ b/tests/test-helper.js @@ -1,4 +1,3 @@ -import '@html-next/vertical-collection/-debug'; import registerWaiter from 'ember-raf-scheduler/test-support/register-waiter'; import Application from '../app'; import config from '../config/environment'; diff --git a/yarn.lock b/yarn.lock index 129823d1..65915479 100644 --- a/yarn.lock +++ b/yarn.lock @@ -981,6 +981,11 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@ember-data/-build-infra@3.12.6": version "3.12.6" resolved "https://registry.yarnpkg.com/@ember-data/-build-infra/-/-build-infra-3.12.6.tgz#27071ea3a92a546947cf7f9b4cebf0326300fcd1" @@ -1094,7 +1099,7 @@ ember-cli-babel "^6.16.0" ember-compatibility-helpers "^1.1.1" -"@ember/test-helpers@^2.4.0": +"@ember/test-helpers@^2.8.1": version "2.8.1" resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-2.8.1.tgz#20f2e30d48172c2ff713e1db7fbec5352f918d4e" integrity sha512-jbsYwWyAdhL/pdPu7Gb3SG1gvIXY70FWMtC/Us0Kmvk82Y+5YUQ1SOC0io75qmOGYQmH7eQrd/bquEVd+4XtdQ== @@ -1400,11 +1405,6 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@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== - "@szmarczak/http-timer@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" @@ -1430,6 +1430,13 @@ resolved "https://registry.yarnpkg.com/@types/broccoli-plugin/-/broccoli-plugin-1.3.0.tgz#38f8462fecaebc4e09a32e4d4ed1b9808f75bbca" integrity sha512-SLk4/hFc2kGvgwNFrpn2O1juxFOllcHAywvlo7VwxfExLzoz1GGJ0oIZCwj5fwSpvHw4AWpZjJ1fUvb62PDayQ== +"@types/broccoli-plugin@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/broccoli-plugin/-/broccoli-plugin-3.0.0.tgz#290fda2270c47a568edfd0cefab8bb840d8bb7b2" + integrity sha512-f+TcsARR2PovfFRKFdCX0kfH/QoM3ZVD2h1rl2mNvrKO0fq2uBNCBsTU3JanfU4COCt5cXpTfARyUsERlC8vIw== + dependencies: + broccoli-plugin "*" + "@types/chai-as-promised@^7.1.2": version "7.1.5" resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz#6e016811f6c7a64f2eed823191c3a6955094e255" @@ -2532,7 +2539,7 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-import-util@^1.1.0: +babel-import-util@^1.1.0, babel-import-util@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/babel-import-util/-/babel-import-util-1.2.2.tgz#1027560e143a4a68b1758e71d4fadc661614e495" integrity sha512-8HgkHWt5WawRFukO30TuaL9EiDUOdvyKtDwLma4uBNeUSDbOO0/hiPfavrOWxSS6J6TKXfukWHZ3wiqZhJ8ONQ== @@ -2603,6 +2610,16 @@ babel-plugin-ember-modules-api-polyfill@^3.5.0: dependencies: ember-rfc176-data "^0.3.17" +babel-plugin-ember-template-compilation@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-ember-template-compilation/-/babel-plugin-ember-template-compilation-1.0.2.tgz#e0695b8ad5a8fe6b2cbdff1eadb01cf402731ad6" + integrity sha512-4HBMksmlYsWEf/C/n3uW5rkBRbUp4FNaspzdQTAHgLbfCJnkLze8R6i6sUSge48y/Wne7mx+vcImI1o6rlUwXQ== + dependencies: + babel-import-util "^1.2.0" + line-column "^1.0.2" + magic-string "^0.26.0" + string.prototype.matchall "^4.0.5" + babel-plugin-feature-flags@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/babel-plugin-feature-flags/-/babel-plugin-feature-flags-0.3.1.tgz#9c827cf9a4eb9a19f725ccb239e85cab02036fc1" @@ -2616,7 +2633,7 @@ babel-plugin-filter-imports@^3.0.0: "@babel/types" "^7.4.0" lodash "^4.17.11" -babel-plugin-htmlbars-inline-precompile@^5.0.0, babel-plugin-htmlbars-inline-precompile@^5.2.1: +babel-plugin-htmlbars-inline-precompile@^5.0.0, babel-plugin-htmlbars-inline-precompile@^5.2.1, babel-plugin-htmlbars-inline-precompile@^5.3.0: version "5.3.1" resolved "https://registry.yarnpkg.com/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-5.3.1.tgz#5ba272e2e4b6221522401f5f1d98a73b1de38787" integrity sha512-QWjjFgSKtSRIcsBhJmEwS2laIdrA6na8HAlc/pEAhjHgQsah/gMiBFRZvbQTy//hWxR4BMwV7/Mya7q5H8uHeA== @@ -3040,11 +3057,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.2.tgz#024f0f72afa25b75f9c0ee73cd4f55ec1bed9784" - integrity sha512-Pj9L87dCdGcKlSqPVUjD+q96pbIx1zQQLb2CUiWURfjiBELv84YX+0nGnKmyT/9KkC7PQk7UN1w+Al8bBozaxQ== - base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -3176,14 +3188,6 @@ bootstrap@~3.3.5: resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.3.7.tgz#5a389394549f23330875a3b150656574f8a9eb71" integrity sha512-qcFaisBrcBhTFkz1IUnGDYnX6ZWfFzH8zOixUDtHW9Ip+r+7MfMFav2rzy7cIHc7rgIg7xjhWBoo1mS/U26j4g== -bops@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/bops/-/bops-0.0.3.tgz#c5cbf6fea8be7401ca5ea6d1679e6c4e8b407c79" - integrity sha512-1khcWD+1vAEnl1GHqJ2KFeR4qG/WCj9yZZ3K/cwdnRUjy6hFOlUuyboy+cHHiFpx0ZqLcjMYouWv0USQsoQ6HA== - dependencies: - base64-js "0.0.2" - to-utf8 "0.0.1" - bower-config@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/bower-config/-/bower-config-1.4.3.tgz#3454fecdc5f08e7aa9cc6d556e492be0669689ae" @@ -3643,6 +3647,19 @@ broccoli-persistent-filter@^3.1.2: symlink-or-copy "^1.0.1" sync-disk-cache "^2.0.0" +broccoli-plugin@*, broccoli-plugin@^4.0.0, broccoli-plugin@^4.0.2, broccoli-plugin@^4.0.3, broccoli-plugin@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-4.0.7.tgz#dd176a85efe915ed557d913744b181abe05047db" + integrity sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg== + dependencies: + broccoli-node-api "^1.7.0" + broccoli-output-wrapper "^3.2.5" + fs-merger "^3.2.1" + promise-map-series "^0.3.0" + quick-temp "^0.1.8" + rimraf "^3.0.2" + symlink-or-copy "^1.3.1" + broccoli-plugin@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-1.1.0.tgz#73e2cfa05f8ea1e3fc1420c40c3d9e7dc724bf02" @@ -3673,19 +3690,6 @@ broccoli-plugin@^2.0.0, broccoli-plugin@^2.1.0: rimraf "^2.3.4" symlink-or-copy "^1.1.8" -broccoli-plugin@^4.0.0, broccoli-plugin@^4.0.2, broccoli-plugin@^4.0.3, broccoli-plugin@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-4.0.7.tgz#dd176a85efe915ed557d913744b181abe05047db" - integrity sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg== - dependencies: - broccoli-node-api "^1.7.0" - broccoli-output-wrapper "^3.2.5" - fs-merger "^3.2.1" - promise-map-series "^0.3.0" - quick-temp "^0.1.8" - rimraf "^3.0.2" - symlink-or-copy "^1.3.1" - broccoli-rollup@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/broccoli-rollup/-/broccoli-rollup-4.1.1.tgz#7531a24d88ddab9f1bace1c6ee6e6ca74a38d36f" @@ -3701,6 +3705,21 @@ broccoli-rollup@^4.1.1: symlink-or-copy "^1.2.0" walk-sync "^1.1.3" +broccoli-rollup@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/broccoli-rollup/-/broccoli-rollup-5.0.0.tgz#a77b53bcef1b70e988913fee82265c0a4ca530da" + integrity sha512-QdMuXHwsdz/LOS8zu4HP91Sfi4ofimrOXoYP/lrPdRh7lJYD87Lfq4WzzUhGHsxMfzANIEvl/7qVHKD3cFJ4tA== + dependencies: + "@types/broccoli-plugin" "^3.0.0" + broccoli-plugin "^4.0.7" + fs-tree-diff "^2.0.1" + heimdalljs "^0.2.6" + node-modules-path "^1.0.1" + rollup "^2.50.0" + rollup-pluginutils "^2.8.1" + symlink-or-copy "^1.2.0" + walk-sync "^2.2.0" + broccoli-slow-trees@^3.0.1, broccoli-slow-trees@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/broccoli-slow-trees/-/broccoli-slow-trees-3.1.0.tgz#8e48903f59e061bf1213963733b9e61dec2ee5d7" @@ -4044,19 +4063,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -cacheable-request@^2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" - integrity sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ== - dependencies: - clone-response "1.0.2" - get-stream "3.0.0" - http-cache-semantics "3.8.1" - keyv "3.0.0" - lowercase-keys "1.0.0" - normalize-url "2.0.1" - responselike "1.0.2" - cacheable-request@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" @@ -4119,11 +4125,6 @@ capture-exit@^2.0.0: dependencies: rsvp "^4.8.4" -capture-stack-trace@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== - cardinal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-1.0.0.tgz#50e21c1b0aa37729f9377def196b5a9cec932ee9" @@ -4137,7 +4138,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: +chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4342,15 +4343,14 @@ cli-spinners@^2.0.0, cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== -cli-table3@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== +cli-table3@^0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" + integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" + string-width "^4.2.0" optionalDependencies: - colors "^1.1.2" + "@colors/colors" "1.5.0" cli-table@^0.3.1: version "0.3.11" @@ -4387,7 +4387,7 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clone-response@1.0.2, clone-response@^1.0.2: +clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== @@ -4446,11 +4446,6 @@ colors@1.0.3: resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -4703,13 +4698,6 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.5.3" -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw== - dependencies: - capture-stack-trace "^1.0.0" - create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" @@ -4825,7 +4813,7 @@ debug@2.6.9, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3. dependencies: ms "2.0.0" -debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@~4.3.1, debug@~4.3.2: +debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@~4.3.1, debug@~4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -5018,11 +5006,6 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -duplex@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/duplex/-/duplex-1.0.0.tgz#6abc5c16ec17e4c578578727126700590d3a2dda" - integrity sha512-6Urdl3FU6TU6TAbd9b46YsvYhxqWvuuvlDL1VaP4DJb9E1jbU9Y5E6KUIXt7+0CUgKhPveZ495kqVAzm/uynyg== - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -5117,7 +5100,7 @@ ember-auto-import@^1.11.3: walk-sync "^0.3.3" webpack "^4.43.0" -ember-auto-import@^2.0.0: +ember-auto-import@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-2.4.2.tgz#d4d3bc6885a11cf124f606f5c37169bdf76e37ae" integrity sha512-REh+1aJWpTkvN42a/ga41OuRpUsSW7UQfPr2wPtYx56o/xoSNhVBXejy7yV9ObrkN7gogz6fs2xZwih5cOwpYg== @@ -5270,7 +5253,7 @@ ember-cli-github-pages@^0.2.2: ember-cli-version-checker "^2.1.0" rsvp "^4.7.0" -ember-cli-htmlbars@^5.0.0, ember-cli-htmlbars@^5.7.1: +ember-cli-htmlbars@^5.7.1: version "5.7.2" resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-5.7.2.tgz#e0cd2fb3c20d85fe4c3e228e6f0590ee1c645ba8" integrity sha512-Uj6R+3TtBV5RZoJY14oZn/sNPnc+UgmC8nb5rI4P3fR/gYoyTFIZSXiIM7zl++IpMoIrocxOrgt+mhonKphgGg== @@ -5292,6 +5275,26 @@ ember-cli-htmlbars@^5.0.0, ember-cli-htmlbars@^5.7.1: strip-bom "^4.0.0" walk-sync "^2.2.0" +ember-cli-htmlbars@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-6.1.0.tgz#97150c2a6f9a981475599d74817df66f5d816c2b" + integrity sha512-kT+MA2JsNLk10HpxAjpB5HHtR0WCoxZEUwLsy/BBww5lXmsrf34QzmTw7SL6DabZVxs+YCb9RhU9KTmFygGxCg== + dependencies: + "@ember/edition-utils" "^1.2.0" + babel-plugin-ember-template-compilation "^1.0.0" + babel-plugin-htmlbars-inline-precompile "^5.3.0" + broccoli-debug "^0.6.5" + broccoli-persistent-filter "^3.1.2" + broccoli-plugin "^4.0.3" + ember-cli-version-checker "^5.1.2" + fs-tree-diff "^2.0.1" + hash-for-dep "^1.5.1" + heimdalljs-logger "^0.1.10" + js-string-escape "^1.0.1" + semver "^7.3.4" + silent-error "^1.1.1" + walk-sync "^2.2.0" + ember-cli-inject-live-reload@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-2.1.0.tgz#ef63c733c133024d5726405a3c247fa12e88a385" @@ -5600,7 +5603,7 @@ ember-perf-timeline@^2.0.0: ember-cli-babel "^7.11.1" ember-env-macros "^0.3.1" -ember-qunit@^5.0.0: +ember-qunit@^5.1.5: version "5.1.5" resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-5.1.5.tgz#24a7850f052be24189ff597dfc31b923e684c444" integrity sha512-2cFA4oMygh43RtVcMaBrr086Tpdhgbn3fVZ2awLkzF/rnSN0D0PSRpd7hAD7OdBPerC/ZYRwzVyGXLoW/Zes4A== @@ -5646,13 +5649,6 @@ ember-router-generator@^1.2.3: dependencies: recast "^0.11.3" -ember-source-channel-url@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ember-source-channel-url/-/ember-source-channel-url-1.2.0.tgz#77eb9d0889e5f5370e6c70fcb2696c63ff4a34a1" - integrity sha512-CLClcHzVf+8GoFk4176R16nwXoel70bd7DKVAY6D8M0m5fJJhbTrAPYpDA0lY8A60HZo9j/s8A8LWiGh1YmdZg== - dependencies: - got "^8.0.1" - ember-source-channel-url@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ember-source-channel-url/-/ember-source-channel-url-3.0.0.tgz#bcd5be72c63fa0b8c390b3121783b462063e2a1b" @@ -5680,41 +5676,32 @@ ember-source@~3.12.0: jquery "^3.4.1" resolve "^1.11.1" -ember-try-config@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ember-try-config/-/ember-try-config-3.0.0.tgz#012d8c90cae9eb624e2b62040bf7e76a1aa58edc" - integrity sha512-pNwHS29O1ACczkrxBKRtDY0TzTb7uPnA5eHEe+4NF6qpLK5FVnL3EtgZ8+yVYtnm1If5mZ07rIubw45vaSek7w== +ember-try-config@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ember-try-config/-/ember-try-config-4.0.0.tgz#8dbdcc071e7acbcb34750b4ed7faf1ab009766f1" + integrity sha512-jAv7fqYJK7QYYekPc/8Nr7KOqDpv/asqM6F8xcRnbmf9UrD35BkSffY63qUuiD9e0aR5qiMNBIQzH8f65rGDqw== dependencies: - ember-source-channel-url "^1.0.1" - lodash "^4.6.1" - package-json "^4.0.1" - remote-git-tags "^2.0.0" - rsvp "^4.8.1" - semver "^5.5.0" + ember-source-channel-url "^3.0.0" + lodash "^4.17.20" + package-json "^6.5.0" + remote-git-tags "^3.0.0" + semver "^7.3.2" -ember-try@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ember-try/-/ember-try-1.4.0.tgz#be15965bd1727c27a65a78c4c8392f03763cc565" - integrity sha512-o0SoCH4K8umCf8etphla8FDygKfQGkwY+w47wEuYFVKaESrOZaK63ObnAK7DTKkjJU74Fss2abf+r+pAWpX43g== +ember-try@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ember-try/-/ember-try-2.0.0.tgz#2671c221f5a0335fa2c189d00db7146e2e72a1dd" + integrity sha512-2N7Vic45sbAegA5fhdfDjVbEVS4r+ze+tTQs2/wkY+8fC5yAGHfCM5ocyoTfBN5m7EhznC3AyMsOy4hLPzHFSQ== dependencies: - chalk "^2.4.2" - cli-table3 "^0.5.1" + chalk "^4.1.2" + cli-table3 "^0.6.0" core-object "^3.1.5" - debug "^4.1.1" - ember-try-config "^3.0.0" - execa "^1.0.0" - extend "^3.0.0" - fs-extra "^5.0.0" - promise-map-series "^0.2.1" - resolve "^1.10.1" - rimraf "^2.6.3" - rsvp "^4.7.0" - walk-sync "^1.1.3" - -emit-function@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/emit-function/-/emit-function-0.0.2.tgz#e3a50b3d61be1bf8ca88b924bf713157a5bec124" - integrity sha512-WRHUvrW3lcV45D+IQ9F3Wro5jFjnJcX82IQHo0r47gkajeMEKpJPUeQ4BgbyUb1T1dT17XFkgPwwrg4owU0fRw== + debug "^4.3.2" + ember-try-config "^4.0.0" + execa "^4.1.0" + fs-extra "^9.0.1" + resolve "^1.20.0" + rimraf "^3.0.2" + walk-sync "^2.2.0" emoji-regex@^7.0.1: version "7.0.3" @@ -6252,7 +6239,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.0.2, execa@^4.0.3: +execa@^4.0.2, execa@^4.0.3, execa@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -6344,7 +6331,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.2: +extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -6818,7 +6805,7 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -from2@^2.1.0, from2@^2.1.1: +from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== @@ -6890,7 +6877,7 @@ fs-extra@^8.0.1, fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.1.0: +fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -7049,11 +7036,6 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== -get-stream@3.0.0, get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== - get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -7105,53 +7087,16 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -git-fetch-pack@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/git-fetch-pack/-/git-fetch-pack-0.1.1.tgz#7703a32cf0db80f060d2766a34ac00d02cebcdf5" - integrity sha512-B0frGXKWSVuq6e99mzeFkK33CMpsDTQQkC7FXKl5CkUBeCd9g0EUtZIj6zA73KmcUrHCwgo18wneZrJGZF4s4A== - dependencies: - bops "0.0.3" - emit-function "0.0.2" - git-packed-ref-parse "0.0.0" - through "~2.2.7" - git-hooks-list@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/git-hooks-list/-/git-hooks-list-1.0.3.tgz#be5baaf78203ce342f2f844a9d2b03dba1b45156" integrity sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ== -git-packed-ref-parse@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/git-packed-ref-parse/-/git-packed-ref-parse-0.0.0.tgz#b85046931f3e4a65679b5de54af3a5d3df372646" - integrity sha512-wp+YhR4+qVSb8NXv2iFdmSPIh676Tqhuut7saS7CH0oEQA+PAT6Hx0bFvN2ej4PDxK+2aj4mVcvwjcH/sujxTA== - dependencies: - line-stream "0.0.0" - through "~2.2.7" - -git-read-pkt-line@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/git-read-pkt-line/-/git-read-pkt-line-0.0.8.tgz#494037854ed57bd90cd55676540d86ab0cb36caa" - integrity sha512-z4yqjcBcuTHqybHXq2VGOexlLKhqCrDMqgAGeHr84PmFym5OJnAFwmxShCu9yI4EsdeYkk+e9qKmRNLE41CiHw== - dependencies: - bops "0.0.3" - through "~2.2.7" - git-repo-info@^2.0.0, git-repo-info@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/git-repo-info/-/git-repo-info-2.1.1.tgz#220ffed8cbae74ef8a80e3052f2ccb5179aed058" integrity sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg== -git-transport-protocol@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/git-transport-protocol/-/git-transport-protocol-0.1.0.tgz#99f4dd6389b9161eded74a9e617d6ba5ed0a6c2c" - integrity sha512-BiC0nA1C6HtpLDx0QG2TMX5k8WgXB+bIJKHUdDxuNTmcQsk13dKDTz83SlIw2V0PIw2N7PS2aANzpokSCZXZXA== - dependencies: - duplex "~1.0.0" - emit-function "0.0.2" - git-read-pkt-line "0.0.8" - git-write-pkt-line "0.1.0" - through "~2.2.7" - git-up@^4.0.0: version "4.0.5" resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" @@ -7167,14 +7112,6 @@ git-url-parse@11.6.0: dependencies: git-up "^4.0.0" -git-write-pkt-line@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/git-write-pkt-line/-/git-write-pkt-line-0.1.0.tgz#a84c1856c09011908389b2f06f911d91f6394694" - integrity sha512-ECGM+SHCBhF1bwnOwTDxZhlbpWu1RqRJtTSEKyBcdV5ka/aScQPKuYNFhdxvTpVBPfLrdV1igThtP2yGeLDXnw== - dependencies: - bops "0.0.3" - through "~2.2.7" - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -7315,46 +7252,6 @@ got@9.6.0, got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg== - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -got@^8.0.1: - version "8.3.2" - resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" - integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== - dependencies: - "@sindresorhus/is" "^0.7.0" - cacheable-request "^2.1.1" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - into-stream "^3.1.0" - is-retry-allowed "^1.1.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - mimic-response "^1.0.0" - p-cancelable "^0.4.0" - p-timeout "^2.0.1" - pify "^3.0.0" - safe-buffer "^5.1.1" - timed-out "^4.0.1" - url-parse-lax "^3.0.0" - url-to-options "^1.0.1" - graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" @@ -7431,23 +7328,11 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" -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" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== - has-symbols@^1.0.1, 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" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - 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" @@ -7611,11 +7496,6 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" -http-cache-semantics@3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== - http-cache-semantics@^4.0.0, http-cache-semantics@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -7932,14 +7812,6 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -into-stream@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" - integrity sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ== - dependencies: - from2 "^2.1.1" - p-is-promise "^1.1.0" - invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -8229,11 +8101,6 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" - integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== - is-path-inside@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -8244,11 +8111,6 @@ is-plain-obj@2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -8261,11 +8123,6 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw== - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -8274,11 +8131,6 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-retry-allowed@^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.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" @@ -8298,7 +8150,7 @@ is-ssh@^1.3.0: dependencies: protocols "^1.1.0" -is-stream@^1.0.0, is-stream@^1.1.0: +is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== @@ -8428,14 +8280,6 @@ istextorbinary@^2.5.1: editions "^2.2.0" textextensions "^2.5.0" -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== - dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" - iterate-iterator@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.2.tgz#551b804c9eaa15b847ea6a7cdc2f5bf1ec150f91" @@ -8618,13 +8462,6 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" -keyv@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" - integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== - dependencies: - json-buffer "3.0.0" - keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -8710,13 +8547,6 @@ line-column@^1.0.2: isarray "^1.0.0" isobject "^2.0.0" -line-stream@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/line-stream/-/line-stream-0.0.0.tgz#888b7cc7951c6a05ce4d696dd1e6b8262371bb45" - integrity sha512-Sx68INB+sWLEHnpTyMHsqJV8hrnf9ZbyRASek5MInROlvYkZjnWLBMsFgIE57zG3SY1tpJhbJucpbrhNU3FIDg== - dependencies: - through "~2.2.0" - lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -8987,7 +8817,7 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== -lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.6.1: +lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -9019,11 +8849,6 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== -lowercase-keys@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - integrity sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A== - 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" @@ -9060,6 +8885,13 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" +magic-string@^0.26.0: + version "0.26.2" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" + integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== + dependencies: + sourcemap-codec "^1.4.8" + make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -9739,15 +9571,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" - integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== - dependencies: - prepend-http "^2.0.0" - query-string "^5.0.1" - sort-keys "^2.0.0" - normalize-url@^4.1.0: version "4.5.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" @@ -9999,11 +9822,6 @@ osenv@^0.1.3: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-cancelable@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" - integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== - p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" @@ -10019,11 +9837,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== -p-is-promise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" - integrity sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -10080,13 +9893,6 @@ p-map@^3.0.0: dependencies: aggregate-error "^3.0.0" -p-timeout@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" - integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== - dependencies: - p-finally "^1.0.0" - p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -10121,17 +9927,7 @@ pac-resolver@^5.0.0: ip "^1.1.5" netmask "^2.0.2" -package-json@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - integrity sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA== - dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -package-json@^6.3.0: +package-json@^6.3.0, package-json@^6.5.0: version "6.5.0" resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== @@ -10494,11 +10290,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== - prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" @@ -10691,15 +10482,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - query-string@^6.13.8: version "6.14.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" @@ -10744,7 +10526,7 @@ qunit-dom@^1.0.0: ember-cli-babel "^7.23.0" ember-cli-version-checker "^5.1.1" -qunit@^2.0.0: +qunit@^2.19.1: version "2.19.1" resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.19.1.tgz#eb1afd188da9e47f07c13aa70461a1d9c4505490" integrity sha512-gSGuw0vErE/rNjnlBW/JmE7NNubBlGrDPQvsug32ejYhcVFuZec9yoU0+C30+UgeCGwq6Ap89K65dMGo+kDGZQ== @@ -10791,7 +10573,7 @@ raw-body@~1.1.0: bytes "1" string_decoder "0.10" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.8: +rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -10983,14 +10765,6 @@ regexpu-core@^5.0.1: unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.0.0" -registry-auth-token@^3.0.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" - integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - registry-auth-token@^4.0.0: version "4.2.1" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" @@ -10998,13 +10772,6 @@ registry-auth-token@^4.0.0: dependencies: rc "^1.2.8" -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= - dependencies: - rc "^1.0.1" - registry-url@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" @@ -11085,13 +10852,10 @@ release-it@^14.2.1: yaml "1.10.2" yargs-parser "20.2.9" -remote-git-tags@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/remote-git-tags/-/remote-git-tags-2.0.0.tgz#1152f39cf8b5268ae0e4307636ef741ec341664c" - integrity sha1-EVLznPi1Jorg5DB2Nu90HsNBZkw= - dependencies: - git-fetch-pack "^0.1.1" - git-transport-protocol "^0.1.0" +remote-git-tags@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remote-git-tags/-/remote-git-tags-3.0.0.tgz#424f8ec2cdea00bb5af1784a49190f25e16983c3" + integrity sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w== remove-trailing-separator@^1.0.1: version "1.1.0" @@ -11242,7 +11006,7 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.12 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -responselike@1.0.2, responselike@^1.0.2: +responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= @@ -11330,6 +11094,13 @@ rollup@^1.12.0: "@types/node" "*" acorn "^7.1.0" +rollup@^2.50.0: + version "2.77.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.0.tgz#749eaa5ac09b6baa52acc076bc46613eddfd53f4" + integrity sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g== + optionalDependencies: + fsevents "~2.3.2" + rsvp@^3.0.14, rsvp@^3.0.17, rsvp@^3.0.18, rsvp@^3.0.21, rsvp@^3.0.6, rsvp@^3.1.0: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" @@ -11464,7 +11235,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -11778,13 +11549,6 @@ socks@~2.3.2: ip "1.1.5" smart-buffer "^4.1.0" -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= - dependencies: - is-plain-obj "^1.0.0" - sort-object-keys@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" @@ -12032,11 +11796,6 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -12056,7 +11815,7 @@ string-template@~0.2.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^2.1.0, string-width@^2.1.1: +string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -12454,16 +12213,6 @@ through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -through@~2.2.0, through@~2.2.7: - version "2.2.7" - resolved "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz#6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd" - integrity sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0= - -timed-out@^4.0.0, timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - timers-browserify@^2.0.4: version "2.0.12" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" @@ -12576,11 +12325,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -to-utf8@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/to-utf8/-/to-utf8-0.0.1.tgz#d17aea72ff2fba39b9e43601be7b3ff72e089852" - integrity sha1-0Xrqcv8vujm55DYBvns/9y4ImFI= - toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -12841,11 +12585,6 @@ untildify@^2.1.0: dependencies: os-homedir "^1.0.0" -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" @@ -12888,13 +12627,6 @@ url-join@4.0.1: resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - url-parse-lax@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" @@ -12902,11 +12634,6 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"