From 86cad0cbcb0d6833fdb4016ef89a75bc488792d0 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli Date: Wed, 21 Apr 2021 13:02:41 -0400 Subject: [PATCH] feat: initial implementation BREAKING CHANGE: initial release prep (actually implement the behavior) --- .github/workflows/ci.yml | 10 +- README.md | 59 +++++--- addon/.gitkeep | 0 addon/index.ts | 184 ++++++++++++++++++++++++ config/ember-try.js | 34 ++--- ember-cli-build.js | 11 ++ package.json | 3 +- tests/dummy/app/router.js | 2 + tests/helpers/.gitkeep | 0 tests/integration/-helpers.ts | 100 ++++++++++++++ tests/integration/.gitkeep | 0 tests/integration/hash-test.ts | 224 ++++++++++++++++++++++++++++++ tests/test-helper.js | 6 +- tests/unit/.gitkeep | 0 types/global.d.ts | 2 + yarn.lock | 246 +++++++++++++++++++++------------ 16 files changed, 740 insertions(+), 141 deletions(-) delete mode 100644 addon/.gitkeep create mode 100644 addon/index.ts delete mode 100644 tests/helpers/.gitkeep create mode 100644 tests/integration/-helpers.ts delete mode 100644 tests/integration/.gitkeep create mode 100644 tests/integration/hash-test.ts delete mode 100644 tests/unit/.gitkeep diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 550ea19..9037b50 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,16 +67,12 @@ jobs: fail-fast: true matrix: ember-try-scenario: - - ember-lts-3.8 - - ember-lts-3.12 - - ember-lts-3.16 - - ember-lts-3.20 - - ember-lts-3.24 + - ember-3.25 + - ember-3.26 - ember-release - ember-beta - ember-canary - # - embroider - # - ember-classic + - embroider steps: - uses: actions/checkout@v2 - uses: volta-cli/action@v1 diff --git a/README.md b/README.md index 013586f..ace3aa2 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,63 @@ ember-url-hash-polyfill ============================================================================== -[Short description of the addon.] +Navigating to URLs with `#hash-targets` in them is not supported by +most single-page-app frameworks due to the async rendering nature of +modern web apps -- the browser can't scroll to a `#hash-target` on +page load / transition because the element hasn't rendered yet. +There is an issue about this for Ember +[here on the RFCs repo](https://github.com/emberjs/rfcs/issues/709). +This addon provides a way to support the behavior that is in normally +native to browsers where an anchor tag with `href="#some-id-or-name"` +would scroll down the page when clicked. -Compatibility ------------------------------------------------------------------------------- +## Installation -* Ember.js v3.16 or above -* Ember CLI v2.13 or above -* Node.js v10 or above +``` +yarn add ember-url-hash-polyfill +# or +npm install ember-url-hash-polyfill +# or +ember install ember-url-hash-polyfill +``` +## Compatibility -Installation ------------------------------------------------------------------------------- +* Ember.js v3.25 or above +* Node.js v12 or above -``` -ember install ember-url-hash-polyfill +## Usage + +To handle `/some-url/#hash-targets` on page load and after normal route transitions, +```diff + // app/router.js + + import { withHashSupport } from 'ember-url-hash-polyfill'; + ++ @withHashSupport + export default class Router extends EmberRouter { + location = config.locationType; + rootURL = config.rootURL; + } ``` +Additionally, there is a `scrollToHash` helper if manual invocation is desired. -Usage ------------------------------------------------------------------------------- +```js +import { scrollToHash } from 'ember-url-hash-polyfill'; -[Longer description of how to use the addon in apps.] +// ... + +scrollToHash('some-element-id-or-name'); +``` -Contributing ------------------------------------------------------------------------------- +## Contributing See the [Contributing](CONTRIBUTING.md) guide for details. -License ------------------------------------------------------------------------------- +## License This project is licensed under the [MIT License](LICENSE.md). diff --git a/addon/.gitkeep b/addon/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/addon/index.ts b/addon/index.ts new file mode 100644 index 0000000..e9d8466 --- /dev/null +++ b/addon/index.ts @@ -0,0 +1,184 @@ +import { getOwner } from '@ember/application'; +import { warn } from '@ember/debug'; +import { isDestroyed, isDestroying, registerDestructor } from '@ember/destroyable'; +import { schedule } from '@ember/runloop'; +import { waitForPromise } from '@ember/test-waiters'; + +import type ApplicationInstance from '@ember/application/instance'; +import type { Route } from '@ember/routing'; +import type EmberRouter from '@ember/routing/router'; +import type RouterService from '@ember/routing/router-service'; + +type Transition = Parameters[0]; +type TransitionWithPrivateAPIs = Transition & { + intent: { + url: string; + }; +}; + +export function withHashSupport(AppRouter: typeof EmberRouter) { + return class RouterWithHashSupport extends AppRouter { + constructor(...args: RouterArgs) { + super(...args); + + setupHashSupport(this); + } + }; +} + +export function scrollToHash(hash: string) { + let selector = `[name="${hash}"]`; + let element = document.getElementById(hash) || document.querySelector(selector); + + if (!element) { + warn(`Tried to scroll to element with id or name "${hash}", but it was not found`, { + id: 'no-hash-target', + }); + + return; + } + + /** + * NOTE: the ember router does not support hashes in the URL + * https://github.com/emberjs/rfcs/issues/709 + * + * this means that when testing hash changes in the URL, + * we have to assert against the window.location, rather than + * the self-container currentURL helper + * + * NOTE: other ways of changing the URL, but without the smoothness: + * - window[.top].location.replace + */ + + element.scrollIntoView({ behavior: 'smooth' }); + + if (hash !== window.location.hash) { + let withoutHash = location.href.split('#')[0]; + let nextUrl = `${withoutHash}#${hash}`; + // most browsers ignore the title param of pushState + let titleWithoutHash = document.title.split(' | #')[0]; + let nextTitle = `${titleWithoutHash} | #${hash}`; + + history.pushState({}, nextTitle, nextUrl); + document.title = nextTitle; + } +} + +async function setupHashSupport(router: EmberRouter) { + let initialURL: string | undefined; + let owner = getOwner(router) as ApplicationInstance; + + await new Promise((resolve) => { + let interval = setInterval(() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let { currentURL } = router as any; /* Private API */ + + if (currentURL) { + clearInterval(interval); + initialURL = currentURL; + resolve(null); + } + }, 100); + }); + + if (isDestroyed(owner) || isDestroying(owner)) { + return; + } + + /** + * This handles the initial Page Load, which is not imperceptible through + * route{Did,Will}Change + * + */ + requestAnimationFrame(() => { + eventuallyTryScrollingTo(owner, initialURL); + }); + + let routerService = owner.lookup('service:router') as RouterService; + + function handleHashIntent(transition: TransitionWithPrivateAPIs) { + let { url } = transition.intent; + + eventuallyTryScrollingTo(owner, url); + } + + routerService.on('routeDidChange', handleHashIntent); + + registerDestructor(router, () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (routerService as any) /* type def missing "off" */ + .off('routeDidChange', handleHashIntent); + }); +} + +const CACHE = new WeakMap(); + +async function eventuallyTryScrollingTo(owner: ApplicationInstance, url?: string) { + // Prevent quick / rapid transitions from continuing to observer beyond their URL-scope + CACHE.get(owner)?.disconnect(); + + if (!url) return; + + let [, hash] = url.split('#'); + + if (!hash) return; + + await waitForPromise(uiSettled(owner)); + + if (isDestroyed(owner) || isDestroying(owner)) { + return; + } + + scrollToHash(hash); +} + +const TIME_SINCE_LAST_MUTATION = 500; // ms +const MAX_TIMEOUT = 2000; // ms + +// exported for testing +export async function uiSettled(owner: ApplicationInstance) { + let timeStarted = new Date().getTime(); + let lastMutationAt = Infinity; + let totalTimeWaited = 0; + + let observer = new MutationObserver(() => { + lastMutationAt = new Date().getTime(); + }); + + CACHE.set(owner, observer); + + observer.observe(document.body, { childList: true, subtree: true }); + + /** + * Wait for DOM mutations to stop until MAX_TIMEOUT + */ + await new Promise((resolve) => { + let frame: number; + + function requestTimeCheck() { + if (frame) cancelAnimationFrame(frame); + + if (isDestroyed(owner) || isDestroying(owner)) { + return; + } + + frame = requestAnimationFrame(() => { + totalTimeWaited = new Date().getTime() - timeStarted; + + let timeSinceLastMutation = new Date().getTime() - lastMutationAt; + + if (totalTimeWaited >= MAX_TIMEOUT) { + return resolve(totalTimeWaited); + } + + if (timeSinceLastMutation >= TIME_SINCE_LAST_MUTATION) { + return resolve(totalTimeWaited); + } + + schedule('afterRender', requestTimeCheck); + }); + } + + schedule('afterRender', requestTimeCheck); + }); +} diff --git a/config/ember-try.js b/config/ember-try.js index e59f91b..bc24f0a 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -6,18 +6,18 @@ module.exports = async function () { return { scenarios: [ { - name: 'ember-lts-3.16', + name: 'ember-3.25', npm: { devDependencies: { - 'ember-source': '~3.16.0', + 'ember-source': '~3.25.0', }, }, }, { - name: 'ember-lts-3.20', + name: 'ember-3.20', npm: { devDependencies: { - 'ember-source': '~3.20.5', + 'ember-source': '~3.26.0', }, }, }, @@ -46,30 +46,12 @@ module.exports = async function () { }, }, { - name: 'ember-default-with-jquery', - env: { - EMBER_OPTIONAL_FEATURES: JSON.stringify({ - 'jquery-integration': true, - }), - }, + name: 'embroider', npm: { devDependencies: { - '@ember/jquery': '^1.1.0', - }, - }, - }, - { - name: 'ember-classic', - env: { - EMBER_OPTIONAL_FEATURES: JSON.stringify({ - 'application-template-wrapper': true, - 'default-async-observers': false, - 'template-only-glimmer-components': false, - }), - }, - npm: { - ember: { - edition: 'classic', + '@embroider/core': '*', + '@embroider/webpack': '*', + '@embroider/compat': '*', }, }, }, diff --git a/ember-cli-build.js b/ember-cli-build.js index ba0649d..0463733 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -14,5 +14,16 @@ module.exports = function (defaults) { behave. You most likely want to be modifying `./index.js` or app's build file */ + if ('@embroider/webpack' in app.dependencies()) { + const { Webpack } = require('@embroider/webpack'); // eslint-disable-line + return require('@embroider/compat') // eslint-disable-line + .compatBuild(app, Webpack, { + staticAddonTestSupportTrees: true, + staticAddonTrees: true, + staticHelpers: true, + staticComponents: true, + }); + } + return app.toTree(); }; diff --git a/package.json b/package.json index 82d09b6..6a75eae 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "dependencies": { "ember-cli-babel": "^7.23.1", "ember-cli-htmlbars": "^5.3.2", - "ember-cli-typescript": "^4.1.0" + "ember-cli-typescript": "^4.1.0", + "ember-test-waiters": "^2.1.3" }, "devDependencies": { "@commitlint/cli": "^11.0.0", diff --git a/tests/dummy/app/router.js b/tests/dummy/app/router.js index d3ad09e..09001aa 100644 --- a/tests/dummy/app/router.js +++ b/tests/dummy/app/router.js @@ -1,7 +1,9 @@ import EmberRouter from '@ember/routing/router'; import config from 'dummy/config/environment'; +import { withHashSupport } from 'ember-url-hash-polyfill'; +@withHashSupport export default class Router extends EmberRouter { location = config.locationType; rootURL = config.rootURL; diff --git a/tests/helpers/.gitkeep b/tests/helpers/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/tests/integration/-helpers.ts b/tests/integration/-helpers.ts new file mode 100644 index 0000000..2ed84ac --- /dev/null +++ b/tests/integration/-helpers.ts @@ -0,0 +1,100 @@ +/* eslint-disable ember/no-private-routing-service */ +import { settled } from '@ember/test-helpers'; + +import type { Router } from '@ember/routing'; +import type { TestContext } from 'ember-test-helpers'; + +type MapFunction = Parameters[0]; + +interface SetupRouterOptions { + active?: string | string[]; + map?: MapFunction; + rootURL?: string; +} + +// eslint-disable-next-line @typescript-eslint/no-empty-function +const noop = () => {}; + +/** + * A test helper to define a new router map in the context of a test. + * + * Useful for when an integration test may need to interact with the router service, + * but since you're only rendering a component, routing isn't enabled (pre Ember 3.25). + * + * Also useful for testing custom link components. + * + * @example + * + * import { setupRouter } from '@crowdstrike/test-helpers'; + * + * module('tests that need a router', function(hooks) { + * setupRouter(hooks, { + * active: ['some-route-path.foo', 2], + * map: function() { + * this.route('some-route-path', function() { + * this.route('hi'); + * this.route('foo', { path: ':dynamic_segment' }); + * }); + * }, + * }); + * }) + * + * + * @param {NestedHooks} hooks + * @param {Object} configuration - router configuration, as it would be defined in router.js + * @param {Array} [configuration.active] - route segments that make up the active route + * @param {Function} configuration.map - the router map + * @param {string} [configuration.rootURL] - the root URL of the application + */ +export function setupRouter( + hooks: NestedHooks, + { active, map = noop, rootURL = '/' }: SetupRouterOptions = {} +) { + let originalMaps: unknown[] = []; + + hooks.beforeEach(async function (this: TestContext) { + let router = this.owner.resolveRegistration('router:main'); + + router.rootURL = rootURL; + originalMaps = router.dslCallbacks; + router.dslCallbacks = []; + + router.map(map); + this.owner.lookup('router:main').setupRouter(); + + if (active) { + let routerService = this.owner.lookup('service:router'); + + routerService.transitionTo(...ensureArray(active)); + await settled(); + } + }); + + hooks.afterEach(function (this: TestContext) { + let router = this.owner.resolveRegistration('router:main'); + + router.dslCallbacks = originalMaps; + }); +} + +/** + * For setting up the currently configured router in your app + * + */ +export function setupAppRouter(hooks: NestedHooks) { + hooks.beforeEach(function (this: TestContext) { + this.owner.lookup('router:main').setupRouter(); + }); +} + +export function ensureArray(maybeArray?: T | T[]): T[] { + if (Array.isArray(maybeArray)) { + return maybeArray; + } + + if (!maybeArray) { + return []; + } + + return [maybeArray]; +} diff --git a/tests/integration/.gitkeep b/tests/integration/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/tests/integration/hash-test.ts b/tests/integration/hash-test.ts new file mode 100644 index 0000000..133bbad --- /dev/null +++ b/tests/integration/hash-test.ts @@ -0,0 +1,224 @@ +import Controller from '@ember/controller'; +import { assert as debugAssert } from '@ember/debug'; +import { click, find, settled, visit } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; +import { module, test } from 'qunit'; +import { setupApplicationTest } from 'ember-qunit'; + +import { scrollToHash, uiSettled } from 'ember-url-hash-polyfill'; + +import { setupRouter } from './-helpers'; + +module('Hash', function (hooks) { + setupApplicationTest(hooks); + + hooks.beforeEach(() => { + location.hash = ''; + }); + hooks.afterEach(() => { + location.hash = ''; + }); + + // TODO: PR this to qunit-dom as assort.dom(element).isInView(); + // assert.dom().isVisible does not check if the element is within the viewport + function isVisible(element: null | Element, parent: Element) { + if (!element) return false; + + let bounds = element.getBoundingClientRect(); + let parentBounds = parent.getBoundingClientRect(); + + return ( + bounds.top >= parentBounds.top && + bounds.left >= parentBounds.left && + bounds.right <= parentBounds.right && + bounds.bottom <= parentBounds.bottom + ); + } + + module('linking with hashes', function (_hooks) { + test('in-page-links can be scrolled to with native anchors', async function (assert) { + this.owner.register( + 'template:application', + hbs` + first + first + +

first!

+
+ +

second!

+
+ ` + ); + + await visit('/'); + + let container = document.querySelector('#ember-testing-container'); + let first = find('#first'); + let second = find('#second'); + + debugAssert(`Expected all test elements to exist`, container && first && second); + + assert.true(isVisible(first, container), 'first header is visible'); + assert.false(isVisible(second, container), 'second header is not visible'); + assert.equal(location.hash, '', 'initially, has no hash'); + + await click('#second-link'); + + assert.false(isVisible(first, container), 'first header is not visible'); + assert.true(isVisible(second, container), 'second header is visible'); + assert.equal(location.hash, '#second', 'clicked hash appears in URL'); + + await click('#first-link'); + + assert.true(isVisible(first, container), 'first header is visible'); + assert.false(isVisible(second, container), 'second header is not visible'); + assert.equal(location.hash, '#first', 'clicked hash appears in URL'); + }); + + test('in-page-links can be scrolled to with custom links', async function (assert) { + class TestApplication extends Controller { + handleClick = (event: MouseEvent) => { + event.preventDefault(); + + debugAssert( + `Expected event to be from an anchor tag`, + event.target instanceof HTMLAnchorElement + ); + + let [, hash] = event.target.href.split('#'); + + scrollToHash(hash); + }; + } + this.owner.register('controller:application', TestApplication); + + this.owner.register( + 'template:application', + hbs` + first + first + +

first!

+
+ +

second!

+
+ ` + ); + + await visit('/'); + + let container = document.querySelector('#ember-testing-container'); + let first = find('#first'); + let second = find('#second'); + + debugAssert(`Expected all test elements to exist`, container && first && second); + + assert.true(isVisible(first, container), 'first header is visible'); + assert.false(isVisible(second, container), 'second header is not visible'); + assert.equal(location.hash, '', 'initially, has no hash'); + + await click('#second-link'); + await scrollSettled(); + + assert.false(isVisible(first, container), 'first header is not visible'); + assert.true(isVisible(second, container), 'second header is visible'); + assert.equal(location.hash, '#second', 'clicked hash appears in URL'); + + await click('#first-link'); + await scrollSettled(); + + assert.true(isVisible(first, container), 'first header is visible'); + assert.false(isVisible(second, container), 'second header is not visible'); + assert.equal(location.hash, '#first', 'clicked hash appears in URL'); + }); + }); + + module('with transitions', function (hooks) { + setupRouter(hooks, { + map: function () { + this.route('foo'); + this.route('bar'); + }, + }); + + test('cross-page-Llinks are properly scrolled to', async function (assert) { + this.owner.register( + 'template:foo', + hbs` +

first!

+
+ +

second!

+
+ ` + ); + + this.owner.register( + 'template:bar', + hbs` +

first!

+
+ +

second!

+
+ ` + ); + + let router = this.owner.lookup('service:router'); + let container = document.querySelector('#ember-testing-container'); + + debugAssert(`Expected all test elements to exist`, container); + + router.transitionTo('/foo'); + await uiSettled(this.owner); + + assert.true(isVisible(find('#foo-first'), container), 'first header is visible'); + assert.false(isVisible(find('#foo-second'), container), 'second header is not visible'); + assert.equal(location.hash, '', 'initially, has no hash'); + + router.transitionTo('/bar#bar-second'); + await uiSettled(this.owner); + await scrollSettled(); + + assert.false(isVisible(find('#bar-first'), container), 'first header is not visible'); + assert.true(isVisible(find('#bar-second'), container), 'second header is visible'); + assert.equal(location.hash, '#bar-second', 'clicked hash appears in URL'); + + router.transitionTo('/foo#foo-second'); + await uiSettled(this.owner); + await scrollSettled(); + + assert.false(isVisible(find('#foo-first'), container), 'first header is not visible'); + assert.true(isVisible(find('#foo-second'), container), 'second header is visible'); + assert.equal(location.hash, '#foo-second', 'clicked hash appears in URL'); + }); + }); +}); + +export async function scrollSettled() { + // wait for previous stuff to finish + await settled(); + + let timeout = 200; // ms; + let start = new Date().getTime(); + + await Promise.race([ + new Promise((resolve) => setTimeout(resolve, 1000)), + // scrollIntoView does not trigger scroll events + new Promise((resolve) => { + let interval = setInterval(() => { + let now = new Date().getTime(); + + if (now - start >= timeout) { + clearInterval(interval); + + return resolve(now); + } + }, 10); + }), + ]); + + await settled(); +} diff --git a/tests/test-helper.js b/tests/test-helper.js index 4311e34..0510a0b 100644 --- a/tests/test-helper.js +++ b/tests/test-helper.js @@ -1,4 +1,5 @@ -import { setApplication } from '@ember/test-helpers'; +import { currentURL, getSettledState, setApplication } from '@ember/test-helpers'; +import { getPendingWaiterState } from '@ember/test-waiters'; import * as QUnit from 'qunit'; import { setup } from 'qunit-dom'; import { start } from 'ember-qunit'; @@ -6,6 +7,9 @@ import { start } from 'ember-qunit'; import Application from 'dummy/app'; import config from 'dummy/config/environment'; +// easy access debugging tools during a paused or stuck test +Object.assign(window, { getSettledState, currentURL, getPendingWaiterState }); + setApplication(Application.create(config.APP)); setup(QUnit.assert); diff --git a/tests/unit/.gitkeep b/tests/unit/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/types/global.d.ts b/types/global.d.ts index bce9638..7dfddd9 100644 --- a/types/global.d.ts +++ b/types/global.d.ts @@ -4,3 +4,5 @@ declare module 'ember-url-hash-polyfill/templates/*' { const tmpl: TemplateFactory; export default tmpl; } + +type RouterArgs = object[]; diff --git a/yarn.lock b/yarn.lock index b6255e1..4308c06 100644 --- a/yarn.lock +++ b/yarn.lock @@ -76,7 +76,7 @@ browserslist "^4.14.5" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.13.11", "@babel/helper-create-class-features-plugin@^7.5.5": +"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.13.11", "@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.8.3": version "7.13.11" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6" integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw== @@ -330,7 +330,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.4.4": version "7.13.8" resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== @@ -365,7 +365,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.13.12": +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.6.0": version "7.13.12" resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866" integrity sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ== @@ -481,7 +481,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-typescript@^7.12.13", "@babel/plugin-syntax-typescript@^7.2.0": +"@babel/plugin-syntax-typescript@^7.12.13", "@babel/plugin-syntax-typescript@^7.2.0", "@babel/plugin-syntax-typescript@^7.8.3": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== @@ -766,6 +766,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.2.0" +"@babel/plugin-transform-typescript@~7.8.0": + version "7.8.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.7.tgz#48bccff331108a7b3a28c3a4adc89e036dc3efda" + integrity sha512-7O0UsPQVNKqpHeHLpfvOG4uXmlw+MOxYvUv6Otc9uH5SYMIxvF6eBdjkWvC3f9G+VXe0RsNExyAQBeTRug/wqQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-typescript" "^7.8.3" + "@babel/plugin-transform-unicode-escapes@^7.12.13": version "7.12.13" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" @@ -1390,9 +1399,9 @@ fastq "^1.6.0" "@npmcli/arborist@^2.0.0", "@npmcli/arborist@^2.3.0": - version "2.3.0" - resolved "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.3.0.tgz#0d3273f85691711b10a85f82dffd235d755a3f57" - integrity sha512-4z8x8jImp/Clwol4sgmR6qdntLQZDxNFabBSbyr9EB11cyWHyqhRvBKip/1sBTcQAScIwuFT64MOu/HI4a5Nkw== + version "2.4.0" + resolved "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.4.0.tgz#34e7d7ead0140268ff7f9418b305993e8f2ce0d7" + integrity sha512-rCoRrUSmXdBDBBgL/O0oehIR53ey99Pds8dId7gztARZmx6/NBoeiUOu9RnvXSe15XZLc3JSz9sHPcbQ9NQ53Q== dependencies: "@npmcli/installed-package-contents" "^1.0.7" "@npmcli/map-workspaces" "^1.0.2" @@ -1410,7 +1419,7 @@ npm-install-checks "^4.0.0" npm-package-arg "^8.1.0" npm-pick-manifest "^6.1.0" - npm-registry-fetch "^9.0.0" + npm-registry-fetch "^10.0.0" pacote "^11.2.6" parse-conflict-json "^1.1.1" promise-all-reject-late "^1.0.0" @@ -1524,7 +1533,7 @@ "@nullvoxpopuli/eslint-configs@^1.2.5": version "1.2.5" - resolved "https://npm.devtest.eyrie.cloud:4873/@nullvoxpopuli%2feslint-configs/-/eslint-configs-1.2.5.tgz#fccfc4c294d09170a14dd7ac7a964e4dbbcbec3f" + resolved "https://registry.npmjs.org/@nullvoxpopuli/eslint-configs/-/eslint-configs-1.2.5.tgz#fccfc4c294d09170a14dd7ac7a964e4dbbcbec3f" integrity sha512-A3zPzENL8vd0g0Cclii+jPg7jV8V6mLb2JZzeZxMto6zobcmT6HOh28CV4YKzkDkqBqUoU4joRm82pUox0BZlg== dependencies: "@typescript-eslint/eslint-plugin" "4.22.0" @@ -1786,7 +1795,7 @@ "@types/ember-qunit@^3.4.13": version "3.4.13" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember-qunit/-/ember-qunit-3.4.13.tgz#58d359b62a6f6e7039d546f4c08b83ad269f7498" + resolved "https://registry.npmjs.org/@types/ember-qunit/-/ember-qunit-3.4.13.tgz#58d359b62a6f6e7039d546f4c08b83ad269f7498" integrity sha512-T7Lq8ppyxueneQgXeo8VsV4OGMeVTMYuzFOc5yUAGZIkUDSi907CdVkCCO4zUqRGl9FkkgCQUxwPiZv+reerGQ== dependencies: "@types/ember" "*" @@ -1795,14 +1804,14 @@ "@types/ember-resolver@^5.0.10": version "5.0.10" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember-resolver/-/ember-resolver-5.0.10.tgz#bb265571a9cea9c4e6b095c8318df4e7f7837d5f" + resolved "https://registry.npmjs.org/@types/ember-resolver/-/ember-resolver-5.0.10.tgz#bb265571a9cea9c4e6b095c8318df4e7f7837d5f" integrity sha512-NTN4blgVUXi0wE6XTsuUjks15cI6em4sdTcgDlE8FvL8gkrxQFLSByyKDTBofHCncM6LwZcHz/eVVm13rwfC2w== dependencies: "@types/ember" "*" "@types/ember-test-helpers@*": version "1.0.9" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember-test-helpers/-/ember-test-helpers-1.0.9.tgz#4279c5f3b390f25fbfb3f9f210785d36a336b8a7" + resolved "https://registry.npmjs.org/@types/ember-test-helpers/-/ember-test-helpers-1.0.9.tgz#4279c5f3b390f25fbfb3f9f210785d36a336b8a7" integrity sha512-IJyyoUxMnK2fGCSSyvuZP9d7+wirJ0elH/joCPHzWQQyAq413oMJdWhxEMdIxLY+0Z0OsfuvTHIEcUSqjs0m0A== dependencies: "@types/ember" "*" @@ -1812,7 +1821,7 @@ "@types/ember@*": version "3.16.5" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember/-/ember-3.16.5.tgz#c2d6b0f178761c0c2fbc6fc39b4b6958c256d0ac" + resolved "https://registry.npmjs.org/@types/ember/-/ember-3.16.5.tgz#c2d6b0f178761c0c2fbc6fc39b4b6958c256d0ac" integrity sha512-8BzT1g8r7xQsN2p7qIUZ0AXWEVpJ5LmaRWP3iT79PLyIQfTAYvHSueUl14lrB8renETjwr4+ZvVPKurn9TKxNA== dependencies: "@types/ember__application" "*" @@ -1838,7 +1847,7 @@ "@types/ember__application@*", "@types/ember__application@^3.16.2": version "3.16.2" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__application/-/ember__application-3.16.2.tgz#32bab774a3da681f454372224aaeeed84b747e1b" + resolved "https://registry.npmjs.org/@types/ember__application/-/ember__application-3.16.2.tgz#32bab774a3da681f454372224aaeeed84b747e1b" integrity sha512-Fu2g0Ja+HKhwHsSWfKxh62NWbieWRxYRMO9YT4LZTw99TRrRYIO7q1PPIUz2ko/2Zo7LiBBUUyQfLau/UblY6g== dependencies: "@types/ember__application" "*" @@ -1848,7 +1857,7 @@ "@types/ember__array@*", "@types/ember__array@^3.16.4": version "3.16.4" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__array/-/ember__array-3.16.4.tgz#d61b5b876e4976de03aa027ea89cb48cd640d49d" + resolved "https://registry.npmjs.org/@types/ember__array/-/ember__array-3.16.4.tgz#d61b5b876e4976de03aa027ea89cb48cd640d49d" integrity sha512-K21LKDNDW3ug0fLsFUTHZPyaFnzUUZEOtsmzmmeXKI6apJcoaz/yF3V0fvM2FUWNLs6rXB3PXegtzik6lq44Yw== dependencies: "@types/ember__array" "*" @@ -1856,7 +1865,7 @@ "@types/ember__component@*", "@types/ember__component@^3.16.4": version "3.16.4" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__component/-/ember__component-3.16.4.tgz#545b35d8aa861eb4753e26b6a2cbde43d8524f89" + resolved "https://registry.npmjs.org/@types/ember__component/-/ember__component-3.16.4.tgz#545b35d8aa861eb4753e26b6a2cbde43d8524f89" integrity sha512-AQKKspusr/28HoRJ7aK+PHx0r5At0LwStCijNlhxPLXAkK8tOBcEoVqMd1TT5xNXKCxzmgbGPf8pjR6Xbc1/Iw== dependencies: "@types/ember__component" "*" @@ -1865,14 +1874,14 @@ "@types/ember__controller@*", "@types/ember__controller@^3.16.4": version "3.16.4" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__controller/-/ember__controller-3.16.4.tgz#2216df95c7466635e8a615e26318cca41e502b53" + resolved "https://registry.npmjs.org/@types/ember__controller/-/ember__controller-3.16.4.tgz#2216df95c7466635e8a615e26318cca41e502b53" integrity sha512-XkRBVmf6YM+s5tli4qnlGcg5VpbrlQ/EsfVdM20V5JfO4DzlmTlTUb/F1i0CTsU9DxFLhZSzGn9nXyOBkHMf1Q== dependencies: "@types/ember__object" "*" "@types/ember__debug@*", "@types/ember__debug@^3.16.3": version "3.16.3" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__debug/-/ember__debug-3.16.3.tgz#f9e7e5dc8d04c7ef979edf3e8570b5fccea14089" + resolved "https://registry.npmjs.org/@types/ember__debug/-/ember__debug-3.16.3.tgz#f9e7e5dc8d04c7ef979edf3e8570b5fccea14089" integrity sha512-/y3EiAV6p1/PQ721B/7hYezYr/s2d0RSh1iHxrB8K2zOF6NK76GAE5wN/DwI7Tld7gvFpVFOgWffpaauq/h56A== dependencies: "@types/ember__debug" "*" @@ -1881,12 +1890,12 @@ "@types/ember__destroyable@*": version "3.22.0" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__destroyable/-/ember__destroyable-3.22.0.tgz#2af2c27f5d8996694c3f0fe906e2536b2e4c5aca" + resolved "https://registry.npmjs.org/@types/ember__destroyable/-/ember__destroyable-3.22.0.tgz#2af2c27f5d8996694c3f0fe906e2536b2e4c5aca" integrity sha512-T5wZGK1MwEelNIv1bbAvRQZPo9zvfjpGyyFPwjz+sakjImKVcQzb/yq1SgGyT0QTAQAT7l0L+kFru9+fSVVo5A== "@types/ember__engine@*", "@types/ember__engine@^3.16.2": version "3.16.2" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__engine/-/ember__engine-3.16.2.tgz#886e916b0bb0d417bfeee1db3a3b3fc4591e24ad" + resolved "https://registry.npmjs.org/@types/ember__engine/-/ember__engine-3.16.2.tgz#886e916b0bb0d417bfeee1db3a3b3fc4591e24ad" integrity sha512-CSGcr+HNRbYGP/XPxnJw4+gytgeyZ4vqQSQ8C/WEoi8kFmlUyAP19MYCr+eznkznHDPu8uoo2oRlSAn76BPLvg== dependencies: "@types/ember__engine" "*" @@ -1894,12 +1903,12 @@ "@types/ember__error@*", "@types/ember__error@^3.16.1": version "3.16.1" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__error/-/ember__error-3.16.1.tgz#752d977f4ee35d4fa66bcfeebae6e85240fc62a6" + resolved "https://registry.npmjs.org/@types/ember__error/-/ember__error-3.16.1.tgz#752d977f4ee35d4fa66bcfeebae6e85240fc62a6" integrity sha512-bnB58krc18B8qgSMsRBbrVbNb4msyb8pMzS9Yo3brw/bRjuPb1ONUrjieAVHeespXlXNJOusvvX/pji641iCPQ== "@types/ember__object@*", "@types/ember__object@^3.12.5": version "3.12.5" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__object/-/ember__object-3.12.5.tgz#f3d5ea5e410d52b3e837267e411d72d7469eb844" + resolved "https://registry.npmjs.org/@types/ember__object/-/ember__object-3.12.5.tgz#f3d5ea5e410d52b3e837267e411d72d7469eb844" integrity sha512-IToStKZ6bNfkiqjhpnpf24NADNIqrSd3pmpc0ktRilrMZPoHyexcXW6zyGENtpFJE7O7dVjtPh/MzUYYH0urww== dependencies: "@types/ember__object" "*" @@ -1907,12 +1916,12 @@ "@types/ember__polyfills@*", "@types/ember__polyfills@^3.12.1": version "3.12.1" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__polyfills/-/ember__polyfills-3.12.1.tgz#aed838e35a3e8670d247333d4c7ea2c2f7b3c43e" + resolved "https://registry.npmjs.org/@types/ember__polyfills/-/ember__polyfills-3.12.1.tgz#aed838e35a3e8670d247333d4c7ea2c2f7b3c43e" integrity sha512-Xw9RxFizB8guT6YGg3VNi5tjbzAjqk+bLtAJ1oVl2I1FylKrRFh0bwobxT2K0BF/i0QFEYlqckHpN/OoCpkvkA== "@types/ember__routing@*", "@types/ember__routing@^3.16.13": version "3.16.13" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__routing/-/ember__routing-3.16.13.tgz#d705101ff3f9071bceb05ba442ba3a4bce3685bb" + resolved "https://registry.npmjs.org/@types/ember__routing/-/ember__routing-3.16.13.tgz#d705101ff3f9071bceb05ba442ba3a4bce3685bb" integrity sha512-OesO+0z8B4fWJI1qJAsM9pOYXB9WueaXCAdtkOrAn4yzzaTjDR/XfZ47wDJpO8gmqNtm9wmrycKfDyQRAqH7YA== dependencies: "@types/ember__component" "*" @@ -1923,33 +1932,33 @@ "@types/ember__runloop@*", "@types/ember__runloop@^3.16.3": version "3.16.3" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__runloop/-/ember__runloop-3.16.3.tgz#c37ed507aed0f642ef19cbc4b5d0b3a167e3ada6" + resolved "https://registry.npmjs.org/@types/ember__runloop/-/ember__runloop-3.16.3.tgz#c37ed507aed0f642ef19cbc4b5d0b3a167e3ada6" integrity sha512-iYT7+9z6lVOi4RSyM9tBwIOidRI0Y5nyaRtIMP1DhP8n2UZjvVG6ao4PkpFnpFWR4R8Ajj2p13SaPGxpEV62jg== dependencies: "@types/ember__runloop" "*" "@types/ember__service@*", "@types/ember__service@^3.16.1": version "3.16.1" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__service/-/ember__service-3.16.1.tgz#e8f941ec50ff4a7531487dc60830b4e6c7da6a47" + resolved "https://registry.npmjs.org/@types/ember__service/-/ember__service-3.16.1.tgz#e8f941ec50ff4a7531487dc60830b4e6c7da6a47" integrity sha512-XYl75IZGE+ZqRiCr9tBLXNYBVM9WX18AQHw/73QSQP/7sfyv5QFP/C/KvJrwP9wJmqh0BS2lVAXP3Nx4/BRNTw== dependencies: "@types/ember__object" "*" "@types/ember__string@*", "@types/ember__string@^3.16.3": version "3.16.3" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__string/-/ember__string-3.16.3.tgz#6c474d422dfae5c382a3c52bd3c994048d04b72e" + resolved "https://registry.npmjs.org/@types/ember__string/-/ember__string-3.16.3.tgz#6c474d422dfae5c382a3c52bd3c994048d04b72e" integrity sha512-0T9ofzm9LL/bSG5u1SxKx/j2h/bHKkl5NKjGCNbFQxEKBw4f2cs6+AMDgWke9z+qrRRIz9vGEtMXnA3yJrO2xA== dependencies: "@types/ember__template" "*" "@types/ember__template@*", "@types/ember__template@^3.16.1": version "3.16.1" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__template/-/ember__template-3.16.1.tgz#30d7f50a49b190934db0f5a56dd76ad86c21efc6" + resolved "https://registry.npmjs.org/@types/ember__template/-/ember__template-3.16.1.tgz#30d7f50a49b190934db0f5a56dd76ad86c21efc6" integrity sha512-APQINizzizl2LHWGMFBCanRjKZQsdzqn7b+us17zbNhnx/R0IZAJq901x/i7eozCRwxsDKmGzNABSCIu6uc1Tg== "@types/ember__test-helpers@^2.0.0": version "2.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__test-helpers/-/ember__test-helpers-2.0.0.tgz#b4b8323693789670720f55a51b1f8e6cd6bfbe29" + resolved "https://registry.npmjs.org/@types/ember__test-helpers/-/ember__test-helpers-2.0.0.tgz#b4b8323693789670720f55a51b1f8e6cd6bfbe29" integrity sha512-2FyfVCb0W2OJ2OeZmg5QxLk0K7n5BCsEU8D481y7XNEVkzyQGR3U64umVf0eME/tpW3papAZ+JwS01HtGOSbgA== dependencies: "@types/ember" "*" @@ -1959,14 +1968,14 @@ "@types/ember__test@*", "@types/ember__test@^3.16.1": version "3.16.1" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__test/-/ember__test-3.16.1.tgz#8407e42b9835a13ef0c6ef7a7ce3aa3d7ebcb7ed" + resolved "https://registry.npmjs.org/@types/ember__test/-/ember__test-3.16.1.tgz#8407e42b9835a13ef0c6ef7a7ce3aa3d7ebcb7ed" integrity sha512-0ICnkM4BDwOKhqmLQRpfvNuZlb6QOqE+FhP5fPaWXWy7bgcL9CY7kMRc7N+wZQbTvbSKqgEdfbvjd0bJsIrz5w== dependencies: "@types/ember__application" "*" "@types/ember__utils@*", "@types/ember__utils@^3.16.2": version "3.16.2" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fember__utils/-/ember__utils-3.16.2.tgz#3fa9a0666a3e8204262e2a2960289aaf01f29467" + resolved "https://registry.npmjs.org/@types/ember__utils/-/ember__utils-3.16.2.tgz#3fa9a0666a3e8204262e2a2960289aaf01f29467" integrity sha512-tBbqewgegiKSpGZvGh3pbcoXwLCMvKVdLRE97vys75nAEz/vBzkGJm+PDz1HVaTkRukWbRhlDiTm2qFH8qRnSw== "@types/express-serve-static-core@^4.17.18": @@ -2012,12 +2021,12 @@ "@types/htmlbars-inline-precompile@*", "@types/htmlbars-inline-precompile@^1.0.1": version "1.0.1" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fhtmlbars-inline-precompile/-/htmlbars-inline-precompile-1.0.1.tgz#de564513fabb165746aecd76369c87bd85e5bbb4" + resolved "https://registry.npmjs.org/@types/htmlbars-inline-precompile/-/htmlbars-inline-precompile-1.0.1.tgz#de564513fabb165746aecd76369c87bd85e5bbb4" integrity sha512-sVD2e6QAAHW0Y6Btse+tTA9k9g0iKm87wjxRsgZRU5EwSooz80tenbV+fA+f2BI2g0G2CqxsS1rIlwQCtPRQow== "@types/jquery@*": version "3.5.5" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fjquery/-/jquery-3.5.5.tgz#2c63f47c9c8d96693d272f5453602afd8338c903" + resolved "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.5.tgz#2c63f47c9c8d96693d272f5453602afd8338c903" integrity sha512-6RXU9Xzpc6vxNrS6FPPapN1SxSHgQ336WC6Jj/N8q30OiaBZ00l1GBgeP7usjVZPivSkGUfL1z/WW6TX989M+w== dependencies: "@types/sizzle" "*" @@ -2029,7 +2038,7 @@ "@types/json5@^0.0.29": version "0.0.29" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fjson5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/mime@^1": @@ -2069,7 +2078,7 @@ "@types/qunit@*", "@types/qunit@^2.11.1": version "2.11.1" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fqunit/-/qunit-2.11.1.tgz#3496d430d2bb0fa4761f00a27511f46020c6b410" + resolved "https://registry.npmjs.org/@types/qunit/-/qunit-2.11.1.tgz#3496d430d2bb0fa4761f00a27511f46020c6b410" integrity sha512-vcM5+9O8LZuu5DYseaV4J7ehkYrhkv+aMIuxnF/OqMYlVEdv+odpCH1/5OVztiqxbCqTpQKWuELkMvG7OPycUQ== "@types/range-parser@*": @@ -2092,7 +2101,7 @@ "@types/rsvp@*", "@types/rsvp@^4.0.3": version "4.0.3" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2frsvp/-/rsvp-4.0.3.tgz#4a1223158453257bce09d42b9eef7cfa6d257482" + resolved "https://registry.npmjs.org/@types/rsvp/-/rsvp-4.0.3.tgz#4a1223158453257bce09d42b9eef7cfa6d257482" integrity sha512-OpRwxbgx16nL/0/7ol0WoLLyLaMXBvtPOHjqLljnzAB/E7Qk1wtjytxgBhOTBMZvuLXnJUqfnjb4W/QclNFvSA== "@types/serve-static@*": @@ -2105,7 +2114,7 @@ "@types/sizzle@*": version "2.3.2" - resolved "https://npm.devtest.eyrie.cloud:4873/@types%2fsizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" + resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== "@types/symlink-or-copy@^1.2.0": @@ -2115,7 +2124,7 @@ "@typescript-eslint/eslint-plugin@4.22.0": version "4.22.0" - resolved "https://npm.devtest.eyrie.cloud:4873/@typescript-eslint%2feslint-plugin/-/eslint-plugin-4.22.0.tgz#3d5f29bb59e61a9dba1513d491b059e536e16dbc" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.0.tgz#3d5f29bb59e61a9dba1513d491b059e536e16dbc" integrity sha512-U8SP9VOs275iDXaL08Ln1Fa/wLXfj5aTr/1c0t0j6CdbOnxh+TruXu1p4I0NAvdPBQgoPjHsgKn28mOi0FzfoA== dependencies: "@typescript-eslint/experimental-utils" "4.22.0" @@ -2129,7 +2138,7 @@ "@typescript-eslint/experimental-utils@4.22.0": version "4.22.0" - resolved "https://npm.devtest.eyrie.cloud:4873/@typescript-eslint%2fexperimental-utils/-/experimental-utils-4.22.0.tgz#68765167cca531178e7b650a53456e6e0bef3b1f" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.0.tgz#68765167cca531178e7b650a53456e6e0bef3b1f" integrity sha512-xJXHHl6TuAxB5AWiVrGhvbGL8/hbiCQ8FiWwObO3r0fnvBdrbWEDy1hlvGQOAWc6qsCWuWMKdVWlLAEMpxnddg== dependencies: "@types/json-schema" "^7.0.3" @@ -2141,7 +2150,7 @@ "@typescript-eslint/parser@4.22.0": version "4.22.0" - resolved "https://npm.devtest.eyrie.cloud:4873/@typescript-eslint%2fparser/-/parser-4.22.0.tgz#e1637327fcf796c641fe55f73530e90b16ac8fe8" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.22.0.tgz#e1637327fcf796c641fe55f73530e90b16ac8fe8" integrity sha512-z/bGdBJJZJN76nvAY9DkJANYgK3nlRstRRi74WHm3jjgf2I8AglrSY+6l7ogxOmn55YJ6oKZCLLy+6PW70z15Q== dependencies: "@typescript-eslint/scope-manager" "4.22.0" @@ -2151,7 +2160,7 @@ "@typescript-eslint/scope-manager@4.22.0": version "4.22.0" - resolved "https://npm.devtest.eyrie.cloud:4873/@typescript-eslint%2fscope-manager/-/scope-manager-4.22.0.tgz#ed411545e61161a8d702e703a4b7d96ec065b09a" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.22.0.tgz#ed411545e61161a8d702e703a4b7d96ec065b09a" integrity sha512-OcCO7LTdk6ukawUM40wo61WdeoA7NM/zaoq1/2cs13M7GyiF+T4rxuA4xM+6LeHWjWbss7hkGXjFDRcKD4O04Q== dependencies: "@typescript-eslint/types" "4.22.0" @@ -2159,12 +2168,12 @@ "@typescript-eslint/types@4.22.0": version "4.22.0" - resolved "https://npm.devtest.eyrie.cloud:4873/@typescript-eslint%2ftypes/-/types-4.22.0.tgz#0ca6fde5b68daf6dba133f30959cc0688c8dd0b6" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.22.0.tgz#0ca6fde5b68daf6dba133f30959cc0688c8dd0b6" integrity sha512-sW/BiXmmyMqDPO2kpOhSy2Py5w6KvRRsKZnV0c4+0nr4GIcedJwXAq+RHNK4lLVEZAJYFltnnk1tJSlbeS9lYA== "@typescript-eslint/typescript-estree@4.22.0": version "4.22.0" - resolved "https://npm.devtest.eyrie.cloud:4873/@typescript-eslint%2ftypescript-estree/-/typescript-estree-4.22.0.tgz#b5d95d6d366ff3b72f5168c75775a3e46250d05c" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.0.tgz#b5d95d6d366ff3b72f5168c75775a3e46250d05c" integrity sha512-TkIFeu5JEeSs5ze/4NID+PIcVjgoU3cUQUIZnH3Sb1cEn1lBo7StSV5bwPuJQuoxKXlzAObjYTilOEKRuhR5yg== dependencies: "@typescript-eslint/types" "4.22.0" @@ -2177,7 +2186,7 @@ "@typescript-eslint/visitor-keys@4.22.0": version "4.22.0" - resolved "https://npm.devtest.eyrie.cloud:4873/@typescript-eslint%2fvisitor-keys/-/visitor-keys-4.22.0.tgz#169dae26d3c122935da7528c839f42a8a42f6e47" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.0.tgz#169dae26d3c122935da7528c839f42a8a42f6e47" integrity sha512-nnMu4F+s4o0sll6cBSsTeVsT4cwxB7zECK3dFxzEjPBii9xLpq4yqqsy/FU5zMfan6G60DKZSCXAa3sHJZrcYw== dependencies: "@typescript-eslint/types" "4.22.0" @@ -2647,7 +2656,7 @@ array-ify@^1.0.0: array-includes@^3.1.1: version "3.1.3" - resolved "https://npm.devtest.eyrie.cloud:4873/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== dependencies: call-bind "^1.0.2" @@ -2680,7 +2689,7 @@ array-unique@^0.3.2: array.prototype.flat@^1.2.3: version "1.2.4" - resolved "https://npm.devtest.eyrie.cloud:4873/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== dependencies: call-bind "^1.0.0" @@ -5035,7 +5044,7 @@ constants-browserify@^1.0.0: contains-path@^0.1.0: version "0.1.0" - resolved "https://npm.devtest.eyrie.cloud:4873/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= content-disposition@0.5.3: @@ -5561,7 +5570,7 @@ dir-glob@^3.0.0, dir-glob@^3.0.1: doctrine@1.5.0: version "1.5.0" - resolved "https://npm.devtest.eyrie.cloud:4873/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= dependencies: esutils "^2.0.2" @@ -5731,7 +5740,7 @@ ember-cli-babel@^6.0.0-beta.4: ember-cli-version-checker "^2.1.2" semver "^5.5.0" -ember-cli-babel@^7.0.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.23.1, ember-cli-babel@^7.26.2, ember-cli-babel@^7.7.3: +ember-cli-babel@^7.0.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.23.1, ember-cli-babel@^7.26.2, ember-cli-babel@^7.7.3: version "7.26.3" resolved "https://registry.npmjs.org/ember-cli-babel/-/ember-cli-babel-7.26.3.tgz#e93ce7ec458208894d10844cf76e41cc06fdbeb6" integrity sha512-ZCs0g99d3kYaHs1+HT33oMY7/K+nLCAAv7dCLxsMzg7cQf55O6Pq4ZKnWEr3IHVs33xbJFnEb9prt1up36QVnw== @@ -5863,7 +5872,7 @@ ember-cli-terser@^4.0.1: ember-cli-test-info@^1.0.0: version "1.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/ember-cli-test-info/-/ember-cli-test-info-1.0.0.tgz#ed4e960f249e97523cf891e4aed2072ce84577b4" + resolved "https://registry.npmjs.org/ember-cli-test-info/-/ember-cli-test-info-1.0.0.tgz#ed4e960f249e97523cf891e4aed2072ce84577b4" integrity sha1-7U6WDySel1I8+JHkrtIHLOhFd7Q= dependencies: ember-cli-string-utils "^1.0.0" @@ -5877,7 +5886,7 @@ ember-cli-test-loader@^3.0.0: ember-cli-typescript-blueprints@^3.0.0: version "3.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/ember-cli-typescript-blueprints/-/ember-cli-typescript-blueprints-3.0.0.tgz#88595df71ddca9a7cb3ef1fb1626a1c2528da1b6" + resolved "https://registry.npmjs.org/ember-cli-typescript-blueprints/-/ember-cli-typescript-blueprints-3.0.0.tgz#88595df71ddca9a7cb3ef1fb1626a1c2528da1b6" integrity sha512-nJScjIjwDY96q9eiIBse9npLht/1FNmDRMpoTLJUrgSTzmx7/S6JhlH4BrMELkLCvtPkWoduDNBGiGBdCqf9FA== dependencies: chalk "^2.4.1" @@ -5931,6 +5940,26 @@ ember-cli-typescript@^2.0.2: stagehand "^1.0.0" walk-sync "^1.0.0" +ember-cli-typescript@^3.1.3: + version "3.1.4" + resolved "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-3.1.4.tgz#21d6ccd670d1f2e34c9cce68c6e32c442f46806b" + integrity sha512-HJ73kL45OGRmIkPhBNFt31I1SGUvdZND+LCH21+qpq3pPlFpJG8GORyXpP+2ze8PbnITNLzwe5AwUrpyuRswdQ== + dependencies: + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.4.4" + "@babel/plugin-proposal-optional-chaining" "^7.6.0" + "@babel/plugin-transform-typescript" "~7.8.0" + ansi-to-html "^0.6.6" + broccoli-stew "^3.0.0" + debug "^4.0.0" + ember-cli-babel-plugin-helpers "^1.0.0" + execa "^3.0.0" + fs-extra "^8.0.0" + resolve "^1.5.0" + rsvp "^4.8.1" + semver "^6.3.0" + stagehand "^1.0.0" + walk-sync "^2.0.0" + ember-cli-typescript@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-4.1.0.tgz#2ff17be2e6d26b58c88b1764cb73887e7176618b" @@ -5949,7 +5978,7 @@ ember-cli-typescript@^4.1.0: ember-cli-valid-component-name@^1.0.0: version "1.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/ember-cli-valid-component-name/-/ember-cli-valid-component-name-1.0.0.tgz#71550ce387e0233065f30b30b1510aa2dfbe87ef" + resolved "https://registry.npmjs.org/ember-cli-valid-component-name/-/ember-cli-valid-component-name-1.0.0.tgz#71550ce387e0233065f30b30b1510aa2dfbe87ef" integrity sha1-cVUM44fgIzBl8wswsVEKot++h+8= dependencies: silent-error "^1.0.0" @@ -6259,6 +6288,16 @@ ember-template-recast@^5.0.1: tmp "^0.2.1" workerpool "^6.0.3" +ember-test-waiters@^2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ember-test-waiters/-/ember-test-waiters-2.1.3.tgz#40fe7b674d5ef1005f665e0e040753f88c5a2175" + integrity sha512-xDjvq8/1C3b9z3NGpez7aslbq5gsLrxsdjD3apyziHkImh/PTeXZr2bxo/YAUgOwGOtpZ1So0fIsppiSN0u1Ng== + dependencies: + ember-cli-babel "^7.21.0" + ember-cli-typescript "^3.1.3" + ember-cli-version-checker "^5.1.1" + semver "^7.1.3" + ember-try-config@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/ember-try-config/-/ember-try-config-3.0.0.tgz#012d8c90cae9eb624e2b62040bf7e76a1aa58edc" @@ -6504,7 +6543,7 @@ escodegen@^2.0.0: eslint-config-prettier@8.2.0: version "8.2.0" - resolved "https://npm.devtest.eyrie.cloud:4873/eslint-config-prettier/-/eslint-config-prettier-8.2.0.tgz#78de77d63bca8e9e59dae75a614b5299925bb7b3" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.2.0.tgz#78de77d63bca8e9e59dae75a614b5299925bb7b3" integrity sha512-dWV9EVeSo2qodOPi1iBYU/x6F6diHv8uujxbxr77xExs3zTAlNXvVZKiyLsQGNz7yPV2K49JY5WjPzNIuDc2Bw== eslint-config-prettier@^7.2.0: @@ -6514,7 +6553,7 @@ eslint-config-prettier@^7.2.0: eslint-import-resolver-node@^0.3.4: version "0.3.4" - resolved "https://npm.devtest.eyrie.cloud:4873/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== dependencies: debug "^2.6.9" @@ -6522,7 +6561,7 @@ eslint-import-resolver-node@^0.3.4: eslint-module-utils@^2.6.0: version "2.6.0" - resolved "https://npm.devtest.eyrie.cloud:4873/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== dependencies: debug "^2.6.9" @@ -6530,7 +6569,7 @@ eslint-module-utils@^2.6.0: eslint-plugin-decorator-position@2.2.23: version "2.2.23" - resolved "https://npm.devtest.eyrie.cloud:4873/eslint-plugin-decorator-position/-/eslint-plugin-decorator-position-2.2.23.tgz#8262cf3f2c99139c1f40baf11c1824829c489082" + resolved "https://registry.npmjs.org/eslint-plugin-decorator-position/-/eslint-plugin-decorator-position-2.2.23.tgz#8262cf3f2c99139c1f40baf11c1824829c489082" integrity sha512-2AudGlJBTRX76KXTrYyydJM/L9mL9J3YWJks6Jg3WgbgtZswhpS1Llqj00cGTqDgPHVtF+Hrrvoklw2rQuTCOw== dependencies: "@ember-data/rfc395-data" "^0.0.4" @@ -6541,7 +6580,7 @@ eslint-plugin-decorator-position@2.2.23: eslint-plugin-ember@10.3.0: version "10.3.0" - resolved "https://npm.devtest.eyrie.cloud:4873/eslint-plugin-ember/-/eslint-plugin-ember-10.3.0.tgz#2e53ad334dc7f7f66f6cba890b9c01a64817d1c1" + resolved "https://registry.npmjs.org/eslint-plugin-ember/-/eslint-plugin-ember-10.3.0.tgz#2e53ad334dc7f7f66f6cba890b9c01a64817d1c1" integrity sha512-qmUQ6OYs8trr+4h3DPJz76fBgXBJEragLCD4RHV4bcnKd4vtgmJvFTF+UDlIsiZZVd03r5aYzpuQvVa+oH6JXg== dependencies: "@ember-data/rfc395-data" "^0.0.4" @@ -6573,7 +6612,7 @@ eslint-plugin-es@^3.0.0: eslint-plugin-import@^2.22.1: version "2.22.1" - resolved "https://npm.devtest.eyrie.cloud:4873/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== dependencies: array-includes "^3.1.1" @@ -6592,7 +6631,7 @@ eslint-plugin-import@^2.22.1: eslint-plugin-json@^2.1.2: version "2.1.2" - resolved "https://npm.devtest.eyrie.cloud:4873/eslint-plugin-json/-/eslint-plugin-json-2.1.2.tgz#5bc1c221984583c0c5ff21c488386e8263a6bbb7" + resolved "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-2.1.2.tgz#5bc1c221984583c0c5ff21c488386e8263a6bbb7" integrity sha512-isM/fsUxS4wN1+nLsWoV5T4gLgBQnsql3nMTr8u+cEls1bL8rRQO5CP5GtxJxaOfbcKqnz401styw+H/P+e78Q== dependencies: lodash "^4.17.19" @@ -6619,7 +6658,7 @@ eslint-plugin-prettier@3.4.0, eslint-plugin-prettier@^3.3.1: eslint-plugin-qunit@6.0.0: version "6.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/eslint-plugin-qunit/-/eslint-plugin-qunit-6.0.0.tgz#50878974fa4ea1a6c13363b4902e017ccf58e751" + resolved "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-6.0.0.tgz#50878974fa4ea1a6c13363b4902e017ccf58e751" integrity sha512-+R8z2umSTIiWcxmTQ9nGoML8DL0VQJg4C+E9OpJ2KF9QL4WL/FoayROeTG5Z9zhlZ2qqa+9WkZ1YD6mx89io8w== dependencies: eslint-utils "^2.1.0" @@ -6627,7 +6666,7 @@ eslint-plugin-qunit@6.0.0: eslint-plugin-simple-import-sort@^7.0.0: version "7.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz#a1dad262f46d2184a90095a60c66fef74727f0f8" + resolved "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz#a1dad262f46d2184a90095a60c66fef74727f0f8" integrity sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw== eslint-scope@^4.0.3: @@ -6820,6 +6859,22 @@ execa@^2.0.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^3.0.0: + version "3.4.0" + resolved "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + execa@^4.0.0, execa@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -6857,7 +6912,7 @@ exists-sync@0.0.4: exists-sync@^0.1.0: version "0.1.0" - resolved "https://npm.devtest.eyrie.cloud:4873/exists-sync/-/exists-sync-0.1.0.tgz#318d545213d2b2a31499e92c35f74c94196a22f7" + resolved "https://registry.npmjs.org/exists-sync/-/exists-sync-0.1.0.tgz#318d545213d2b2a31499e92c35f74c94196a22f7" integrity sha512-qEfFekfBVid4b14FNug/RNY1nv+BADnlzKGHulc+t6ZLqGY4kdHGh1iFha8lnE3sJU/1WzMzKRNxS6EvSakJUg== exit@^0.1.2: @@ -9001,7 +9056,7 @@ json5@^2.1.2: jsonc-parser@^3.0.0: version "3.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== jsonfile@^2.1.0: @@ -9119,14 +9174,14 @@ levn@~0.3.0: type-check "~0.3.2" libnpmaccess@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.1.tgz#17e842e03bef759854adf6eb6c2ede32e782639f" - integrity sha512-ZiAgvfUbvmkHoMTzdwmNWCrQRsDkOC+aM5BDfO0C9aOSwF3R1LdFDBD+Rer1KWtsoQYO35nXgmMR7OUHpDRxyA== + version "4.0.2" + resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.2.tgz#781832fb7ccb867b26343a75a85ad9c43e50406e" + integrity sha512-avXtJibZuGap0/qADDYqb9zdpgzVu/yG5+tl2sTRa7MCkDNv2ZlGwCYI0r6/+tmqXPj0iB9fKexHz426vB326w== dependencies: aproba "^2.0.0" minipass "^3.1.1" - npm-package-arg "^8.0.0" - npm-registry-fetch "^9.0.0" + npm-package-arg "^8.1.2" + npm-registry-fetch "^10.0.0" libnpmdiff@^2.0.4: version "2.0.4" @@ -9252,7 +9307,7 @@ livereload-js@^3.3.1: load-json-file@^2.0.0: version "2.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= dependencies: graceful-fs "^4.1.2" @@ -10404,6 +10459,19 @@ npm-profile@^5.0.2: dependencies: npm-registry-fetch "^9.0.0" +npm-registry-fetch@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-10.0.0.tgz#2ee552ccf08324761e642b266033d0a05815bdf6" + integrity sha512-/uLlH8Toc2ZwxwcKpxciEr8WaJM9eW5OeznBphtob8T0fWRT8IDCRYvXfKvmGVYdRdA9ZPDEwE8AF8C0RMTyew== + dependencies: + lru-cache "^6.0.0" + make-fetch-happen "^8.0.9" + minipass "^3.1.3" + minipass-fetch "^1.3.0" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" + npm-package-arg "^8.0.0" + npm-registry-fetch@^9.0.0: version "9.0.0" resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz#86f3feb4ce00313bc0b8f1f8f69daae6face1661" @@ -10611,7 +10679,7 @@ object.pick@^1.3.0: object.values@^1.1.1: version "1.1.3" - resolved "https://npm.devtest.eyrie.cloud:4873/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== dependencies: call-bind "^1.0.2" @@ -10875,9 +10943,9 @@ package-json@^4.0.1: semver "^5.1.0" pacote@^11.1.11, pacote@^11.2.6, pacote@^11.3.0, pacote@^11.3.1: - version "11.3.1" - resolved "https://registry.npmjs.org/pacote/-/pacote-11.3.1.tgz#6ce95dd230db475cbd8789fd1f986bec51b4bf7c" - integrity sha512-TymtwoAG12cczsJIrwI/euOQKtjrQHlD0k0oyt9QSmZGpqa+KdlxKdWR/YUjYizkixaVyztxt/Wsfo8bL3A6Fg== + version "11.3.2" + resolved "https://registry.npmjs.org/pacote/-/pacote-11.3.2.tgz#2bef04f6ec6bafceb5eb2f5b3965f0d00aee4d7e" + integrity sha512-lMO7V9aMhyE5gfaSFxKfW3OTdXuFBNQJfuNuet3NPzWWhOYIW90t85vHcHLDjdhgmfAdAHyh9q1HAap96ea0XA== dependencies: "@npmcli/git" "^2.0.1" "@npmcli/installed-package-contents" "^1.0.6" @@ -10892,7 +10960,7 @@ pacote@^11.1.11, pacote@^11.2.6, pacote@^11.3.0, pacote@^11.3.1: npm-package-arg "^8.0.1" npm-packlist "^2.1.4" npm-pick-manifest "^6.0.0" - npm-registry-fetch "^9.0.0" + npm-registry-fetch "^10.0.0" promise-retry "^2.0.1" read-package-json-fast "^2.0.1" rimraf "^3.0.2" @@ -10942,7 +11010,7 @@ parse-conflict-json@^1.1.1: parse-json@^2.2.0: version "2.2.0" - resolved "https://npm.devtest.eyrie.cloud:4873/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= dependencies: error-ex "^1.2.0" @@ -11064,7 +11132,7 @@ path-to-regexp@0.1.7: path-type@^2.0.0: version "2.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + resolved "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= dependencies: pify "^2.0.0" @@ -11109,7 +11177,7 @@ pidtree@^0.3.0: pify@^2.0.0: version "2.3.0" - resolved "https://npm.devtest.eyrie.cloud:4873/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^3.0.0: @@ -11144,7 +11212,7 @@ pkg-conf@^2.1.0: pkg-dir@^2.0.0: version "2.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= dependencies: find-up "^2.1.0" @@ -11530,7 +11598,7 @@ read-package-json@^3.0.1: read-pkg-up@^2.0.0: version "2.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= dependencies: find-up "^2.0.0" @@ -11547,7 +11615,7 @@ read-pkg-up@^7.0.0, read-pkg-up@^7.0.1: read-pkg@^2.0.0: version "2.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= dependencies: load-json-file "^2.0.0" @@ -11895,7 +11963,7 @@ require-main-filename@^2.0.0: requireindex@^1.2.0: version "1.2.0" - resolved "https://npm.devtest.eyrie.cloud:4873/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" + resolved "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== requires-port@^1.0.0: @@ -13407,7 +13475,7 @@ trim-right@^1.0.1: tsconfig-paths@^3.9.0: version "3.9.0" - resolved "https://npm.devtest.eyrie.cloud:4873/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== dependencies: "@types/json5" "^0.0.29" @@ -13427,7 +13495,7 @@ tslib@^2.0.3: tsutils@^3.17.1: version "3.21.0" - resolved "https://npm.devtest.eyrie.cloud:4873/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" @@ -13525,7 +13593,7 @@ typescript-memoize@^1.0.0-alpha.3: typescript@^4.2.4: version "4.2.4" - resolved "https://npm.devtest.eyrie.cloud:4873/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== uc.micro@^1.0.1, uc.micro@^1.0.5: @@ -13797,7 +13865,7 @@ vm-browserify@^1.0.1: vscode-json-languageservice@^3.7.0: version "3.11.0" - resolved "https://npm.devtest.eyrie.cloud:4873/vscode-json-languageservice/-/vscode-json-languageservice-3.11.0.tgz#ad574b36c4346bd7830f1d34b5a5213d3af8d232" + resolved "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.11.0.tgz#ad574b36c4346bd7830f1d34b5a5213d3af8d232" integrity sha512-QxI+qV97uD7HHOCjh3MrM1TfbdwmTXrMckri5Tus1/FQiG3baDZb2C9Y0y8QThs7PwHYBIQXcAc59ZveCRZKPA== dependencies: jsonc-parser "^3.0.0" @@ -13808,22 +13876,22 @@ vscode-json-languageservice@^3.7.0: vscode-languageserver-textdocument@^1.0.1: version "1.0.1" - resolved "https://npm.devtest.eyrie.cloud:4873/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz#178168e87efad6171b372add1dea34f53e5d330f" + resolved "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz#178168e87efad6171b372add1dea34f53e5d330f" integrity sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA== vscode-languageserver-types@3.16.0-next.2: version "3.16.0-next.2" - resolved "https://npm.devtest.eyrie.cloud:4873/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz#940bd15c992295a65eae8ab6b8568a1e8daa3083" + resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz#940bd15c992295a65eae8ab6b8568a1e8daa3083" integrity sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q== vscode-nls@^5.0.0: version "5.0.0" - resolved "https://npm.devtest.eyrie.cloud:4873/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" + resolved "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== vscode-uri@^2.1.2: version "2.1.2" - resolved "https://npm.devtest.eyrie.cloud:4873/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c" + resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c" integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A== w3c-hr-time@^1.0.2: