diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 06d0526d..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,51 +0,0 @@ -module.exports = { - root: true, - parserOptions: { - ecmaVersion: 2017, - sourceType: 'module' - }, - plugins: [ - 'ember' - ], - extends: [ - 'eslint:recommended', - 'plugin:ember/recommended' - ], - env: { - browser: true - }, - rules: { - 'ember/no-jquery': 2 - }, - overrides: [ - // node files - { - files: [ - 'ember-cli-build.js', - 'index.js', - 'testem.js', - 'blueprints/*/index.js', - 'config/**/*.js', - 'tests/dummy/config/**/*.js' - ], - excludedFiles: [ - 'addon/**', - 'addon-test-support/**', - 'app/**', - 'tests/dummy/app/**' - ], - parserOptions: { - sourceType: 'script', - ecmaVersion: 2015 - }, - env: { - browser: false, - node: true - }, - plugins: ['node'], - rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, { - // add your custom rules and overrides for node files here - }) - } - ] -}; diff --git a/.vscode/settings.json b/.vscode/settings.json index 458b80d1..f53e931c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,7 @@ { - "javascript.implicitProjectConfig.checkJs": true -} \ No newline at end of file + "javascript.implicitProjectConfig.checkJs": true, + "eslint.validate": [ + "javascript", + "typescript" + ] +} diff --git a/addon/mixins/resize-aware.js b/addon/mixins/resize-aware.ts similarity index 55% rename from addon/mixins/resize-aware.js rename to addon/mixins/resize-aware.ts index 9ef04ae8..4a4e6063 100644 --- a/addon/mixins/resize-aware.js +++ b/addon/mixins/resize-aware.ts @@ -1,49 +1,55 @@ -import Mixin from '@ember/object/mixin'; import { readOnly } from '@ember/object/computed'; +import Mixin from '@ember/object/mixin'; +import ResizeService from 'dummy/services/resize'; const { floor } = Math; -export default Mixin.create({ - resizeEventsEnabled: true, +// tslint:disable-next-line:variable-name +const ResizeAwareMixin = Mixin.create({ resizeDebouncedEventsEnabled: true, + resizeEventsEnabled: true, - screenWidth: readOnly('resizeService.screenWidth'), screenHeight: readOnly('resizeService.screenHeight'), + screenWidth: readOnly('resizeService.screenWidth'), - _oldViewWidth: null, - _oldViewHeight: null, - _oldViewWidthDebounced: null, - _oldViewHeightDebounced: null, - resizeWidthSensitive: true, + _oldViewHeight: null as number | null, + _oldViewHeightDebounced: null as number | null, + _oldViewWidth: null as number | null, + _oldViewWidthDebounced: null as number | null, resizeHeightSensitive: true, + resizeWidthSensitive: true, didInsertElement() { this._super(...arguments); + const resizeService: ResizeService = (this as any).get('resizeService'); if (this.get('resizeEventsEnabled')) { - this.get('resizeService').on('didResize', this, this._handleResizeEvent); + resizeService.on('didResize', this, this._handleResizeEvent); } if (this.get('resizeDebouncedEventsEnabled')) { - this.get('resizeService').on('debouncedDidResize', this, this._handleDebouncedResizeEvent); + resizeService.on('debouncedDidResize', this, this._handleDebouncedResizeEvent); } }, willDestroyElement() { this._super(...arguments); + const resizeService: ResizeService = (this as any).get('resizeService'); if (this.get('resizeEventsEnabled')) { - this.get('resizeService').off('didResize', this, this._handleResizeEvent); + resizeService.off('didResize', this, this._handleResizeEvent); } if (this.get('resizeDebouncedEventsEnabled')) { - this.get('resizeService').off('debouncedDidResize', this, this._handleDebouncedResizeEvent); + resizeService.off('debouncedDidResize', this, this._handleDebouncedResizeEvent); } }, - didResize(/*width, height, evt*/) {}, // Overridden in subclass - debouncedDidResize(/*width, height, evt*/) {}, // Overridden in subclass + // tslint:disable-next-line:no-empty + didResize(_width: number, _height: number, _evt: UIEvent) {}, // Overridden in subclass + // tslint:disable-next-line:no-empty + debouncedDidResize(_width: number, _height: number, _evt: UIEvent) {}, // Overridden in subclass - _getComponentSize() { + _getComponentSize(this: any) { return this.element.getClientRects()[0]; }, - _handleResizeEvent(evt) { + _handleResizeEvent(evt: UIEvent) { const w = floor(this._getComponentSize().width); const h = floor(this._getComponentSize().height); if ( @@ -52,13 +58,13 @@ export default Mixin.create({ ) { this.didResize(w, h, evt); this.setProperties({ + _oldViewHeight: h, _oldViewWidth: w, - _oldViewHeight: h }); } }, - _handleDebouncedResizeEvent(evt) { + _handleDebouncedResizeEvent(evt: UIEvent) { const w = floor(this._getComponentSize().width); const h = floor(this._getComponentSize().height); if ( @@ -67,9 +73,11 @@ export default Mixin.create({ ) { this.debouncedDidResize(w, h, evt); this.setProperties({ + _oldViewHeightDebounced: h, _oldViewWidthDebounced: w, - _oldViewHeightDebounced: h }); } - } + }, }); + +export default ResizeAwareMixin; diff --git a/addon/services/resize.js b/addon/services/resize.js deleted file mode 100644 index 8ec25145..00000000 --- a/addon/services/resize.js +++ /dev/null @@ -1,98 +0,0 @@ -import { keys as emberKeys } from '@ember/polyfills'; -import Service from '@ember/service'; -import Evented from '@ember/object/evented'; -import { classify } from '@ember/string'; -import { oneWay, readOnly } from '@ember/object/computed'; -import { debounce, cancel } from '@ember/runloop'; -import EmberObject, { set, getWithDefault } from '@ember/object'; - -// jscs:disable disallowDirectPropertyAccess -const Base = Service || EmberObject; -const keys = Object.keys || emberKeys; - -export default Base.extend(Evented, { - _oldWidth: window.innerWidth, - _oldHeight: window.innerHeight, - _oldWidthDebounced: window.innerWidth, - _oldHeightDebounced: window.innerHeight, - debounceTimeout: oneWay('defaultDebounceTimeout'), - widthSensitive: oneWay('defaultWidthSensitive'), - heightSensitive: oneWay('defaultHeightSensitive'), - - screenWidth: readOnly('_oldWidth'), - screenHeight: readOnly('_oldHeight'), - - init() { - this._super(...arguments); - this._setDefaults(); - this._onResizeHandler = evt => { - this._fireResizeNotification(evt); - let scheduledDebounce = debounce(this, this._fireDebouncedResizeNotification, evt, this.get('debounceTimeout')); - this._scheduledDebounce = scheduledDebounce; - }; - if (typeof FastBoot === 'undefined') { - this._installResizeListener(); - } - }, - - destroy() { - this._super(...arguments); - if (typeof FastBoot === 'undefined') { - this._uninstallResizeListener(); - } - this._cancelScheduledDebounce(); - }, - - _setDefaults() { - const defaults = getWithDefault(this, 'resizeServiceDefaults', {}); - - keys(defaults).map(key => { - const classifiedKey = classify(key); - const defaultKey = `default${classifiedKey}`; - return set(this, defaultKey, defaults[key]); - }); - }, - - _hasWindowSizeChanged(w, h, debounced = false) { - return ( - (this.get('widthSensitive') && w !== this.get(`_oldWidth${debounced ? 'Debounced' : ''}`)) || - (this.get('heightSensitive') && h !== this.get(`_oldHeight${debounced ? 'Debounced' : ''}`)) - ); - }, - - _updateCachedWindowSize(w, h, debounced = false) { - const wKey = `_oldWidth${debounced ? 'Debounced' : ''}`; - const hKey = `_oldHeight${debounced ? 'Debounced' : ''}`; - let props = {}; - props[wKey] = w; - props[hKey] = h; - this.setProperties(props); - }, - - _installResizeListener() { - window.addEventListener('resize', this._onResizeHandler); - }, - - _uninstallResizeListener() { - window.removeEventListener('resize', this._onResizeHandler); - }, - - _cancelScheduledDebounce() { - cancel(this._scheduledDebounce); - }, - - _fireResizeNotification(evt) { - const { innerWidth, innerHeight } = window; - if (this._hasWindowSizeChanged(innerWidth, innerHeight)) { - this.trigger('didResize', evt); - this._updateCachedWindowSize(innerWidth, innerHeight); - } - }, - _fireDebouncedResizeNotification(evt) { - const { innerWidth, innerHeight } = window; - if (this._hasWindowSizeChanged(innerWidth, innerHeight, true)) { - this.trigger('debouncedDidResize', evt); - this._updateCachedWindowSize(innerWidth, innerHeight, true); - } - } -}); diff --git a/addon/services/resize.ts b/addon/services/resize.ts new file mode 100644 index 00000000..7feeaa0d --- /dev/null +++ b/addon/services/resize.ts @@ -0,0 +1,115 @@ +import { oneWay, readOnly } from '@ember-decorators/object/computed'; +import { getWithDefault, set } from '@ember/object'; +import Evented from '@ember/object/evented'; +import { cancel, debounce } from '@ember/runloop'; +import Service from '@ember/service'; +import { classify } from '@ember/string'; + +declare global { + // tslint:disable-next-line:variable-name + const FastBoot: {} | undefined; +} + +export interface ResizeDefaults { + widthSensitive?: boolean; + heightSensitive?: boolean; + debounceTimeout?: number ; + injectionFactories?: string[]; +} + +class ResizeService extends Service.extend(Evented) { + public _oldWidth = window.innerWidth; + public _oldHeight = window.innerHeight; + public _oldWidthDebounced = window.innerWidth; + public _oldHeightDebounced = window.innerHeight; + + @oneWay('defaultDebounceTimeout') public debounceTimeout!: number; + @oneWay('defaultWidthSensitive') public widthSensitive!: boolean; + @oneWay('defaultHeightSensitive') public heightSensitive!: boolean; + + public resizeServiceDefaults!: ResizeDefaults; + + @readOnly('_oldWidth') public screenWidth!: number; + @readOnly('_oldHeight') public screenHeight!: number; + public _onResizeHandler?: (this: Window, evt: UIEvent) => void; + public _scheduledDebounce?: ReturnType; + constructor() { + super(...arguments); + this._setDefaults(); + this._onResizeHandler = (evt) => { + this._fireResizeNotification(evt); + const scheduledDebounce = debounce(this, this._fireDebouncedResizeNotification, evt, this.get('debounceTimeout')); + this._scheduledDebounce = scheduledDebounce; + }; + if (typeof FastBoot === 'undefined') { + this._installResizeListener(); + } + } + + public destroy() { + this._super(...arguments); + if (typeof FastBoot === 'undefined') { + this._uninstallResizeListener(); + } + this._cancelScheduledDebounce(); + return this; + } + + public _setDefaults() { + const defaults = getWithDefault(this, 'resizeServiceDefaults', {}); + + Object.keys(defaults).map((key: keyof ResizeDefaults ) => { + const classifiedKey = classify(key); + const defaultKey = `default${classifiedKey}`; + return set(this as any, defaultKey, defaults[key]); + }); + } + + public _hasWindowSizeChanged(w: number, h: number, debounced = false) { + const wKey = debounced ? '_oldWidthDebounced' : '_oldWidth'; + const hKey = debounced ? '_oldHeightDebounced' : '_oldHeight'; + return ( + (this.get('widthSensitive') && w !== this.get(wKey)) || + (this.get('heightSensitive') && h !== this.get(hKey)) + ); + } + + public _updateCachedWindowSize(w: number, h: number, debounced = false) { + const wKey = debounced ? '_oldWidthDebounced' : '_oldWidth'; + const hKey = debounced ? '_oldHeightDebounced' : '_oldHeight'; + this.set(wKey, w); + this.set(hKey, h); + } + + public _installResizeListener() { + if (!this._onResizeHandler) { return; } + window.addEventListener('resize', this._onResizeHandler); + } + + public _uninstallResizeListener() { + if (!this._onResizeHandler) { return; } + window.removeEventListener('resize', this._onResizeHandler); + } + + public _cancelScheduledDebounce() { + if (!this._scheduledDebounce) { return; } + cancel(this._scheduledDebounce); + } + + public _fireResizeNotification(evt: UIEvent) { + const { innerWidth, innerHeight } = window; + if (this._hasWindowSizeChanged(innerWidth, innerHeight)) { + this.trigger('didResize', evt); + this._updateCachedWindowSize(innerWidth, innerHeight); + } + } + public _fireDebouncedResizeNotification(evt: UIEvent) { + const { innerWidth, innerHeight } = window; + if (this._hasWindowSizeChanged(innerWidth, innerHeight, true)) { + this.trigger('debouncedDidResize', evt); + this._updateCachedWindowSize(innerWidth, innerHeight, true); + } + } +} + +export default ResizeService; diff --git a/app/config/environment.d.ts b/app/config/environment.d.ts new file mode 100644 index 00000000..77287ffa --- /dev/null +++ b/app/config/environment.d.ts @@ -0,0 +1,7 @@ +import { ResizeDefaults } from 'ember-resize/services/resize'; + +interface IEnvironment { + resizeServiceDefaults: ResizeDefaults; +} +declare const env: IEnvironment; +export = env; diff --git a/app/initializers/resize.js b/app/initializers/resize.ts similarity index 65% rename from app/initializers/resize.js rename to app/initializers/resize.ts index 1053a119..9c6afcb9 100644 --- a/app/initializers/resize.js +++ b/app/initializers/resize.ts @@ -1,16 +1,20 @@ +// eslint-disable-next-line no-unused-vars +import ApplicationInstance from '@ember/application/instance'; +import { getWithDefault } from '@ember/object'; import ResizeService from 'ember-resize/services/resize'; import config from '../config/environment'; -import { getWithDefault } from '@ember/object'; - -export function initialize() { - let application = arguments[1] || arguments[0]; +export function initialize(application: { + register: ApplicationInstance['register'], + unregister: ApplicationInstance['unregister'], + inject: ApplicationInstance['inject'], +}) { const resizeServiceDefaults = getWithDefault(config, 'resizeServiceDefaults', { - widthSensitive: true, + debounceTimeout: 200, heightSensitive: true, - debounceTimeout: 200 + widthSensitive: true, }); - const injectionFactories = getWithDefault(resizeServiceDefaults, 'injectionFactories', ['view', 'component']) ; + const injectionFactories = getWithDefault(resizeServiceDefaults, 'injectionFactories', ['view', 'component']) || []; application.unregister('config:resize-service'); application.unregister('service:resize'); @@ -19,12 +23,12 @@ export function initialize() { application.register('service:resize', ResizeService); application.inject('service:resize', 'resizeServiceDefaults', 'config:resize-service'); - injectionFactories.forEach(factory => { + injectionFactories.forEach((factory) => { application.inject(factory, 'resizeService', 'service:resize'); }); } export default { + initialize, name: 'resize', - initialize: initialize }; diff --git a/app/mixins/resize-aware.js b/app/mixins/resize-aware.ts similarity index 100% rename from app/mixins/resize-aware.js rename to app/mixins/resize-aware.ts diff --git a/app/services/resize.js b/app/services/resize.js deleted file mode 100644 index 17d3e4de..00000000 --- a/app/services/resize.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from 'ember-resize/services/resize'; \ No newline at end of file diff --git a/app/services/resize.ts b/app/services/resize.ts new file mode 100644 index 00000000..bbcecda2 --- /dev/null +++ b/app/services/resize.ts @@ -0,0 +1 @@ +export { default } from 'ember-resize/services/resize'; diff --git a/package.json b/package.json index af2a2779..aeac3121 100644 --- a/package.json +++ b/package.json @@ -4,46 +4,63 @@ "description": "Idiomatically handle window and view resizes in Ember.js", "scripts": { "build": "ember build", - "lint:js": "eslint .", + "lint:js": "./node_modules/.bin/tslint --project .", "start": "ember serve", "test": "ember test", "test:all": "ember try:each", "semantic-release": "semantic-release", - "travis-deploy-once": "travis-deploy-once" + "travis-deploy-once": "travis-deploy-once", + "prepublishOnly": "ember ts:precompile", + "postpublish": "ember ts:clean" }, "engines": { "node": "6.* || 8.* || >= 10.*" }, "homepage": "https://github.com/mike-north/ember-resize", "devDependencies": { + "@ember-decorators/babel-transforms": "^2.0.0", "@mike-north/js-lib-semantic-release-config": "^0.0.0-development", + "@types/ember": "^2.8.32", + "@types/ember-qunit": "^3.0.3", + "@types/ember-test-helpers": "^0.7.1", + "@types/ember-testing-helpers": "^0.0.3", + "@types/ember__test-helpers": "^0.7.0", + "@types/qunit": "^2.5.2", + "@types/rsvp": "^4.0.2", + "babel-eslint": "^8.0.0", "broccoli-asset-rev": "^2.7.0", "ember-cli": "^3.3.0", "ember-cli-app-version": "^3.1.3", "ember-cli-dependency-checker": "^2.1.0", - "ember-cli-eslint": "^4.2.1", "ember-cli-github-pages": "0.1.3", "ember-cli-htmlbars-inline-precompile": "^1.0.2", "ember-cli-inject-live-reload": "^1.4.0", "ember-cli-qunit": "^4.3.2", "ember-cli-release": "1.0.0-beta.2", "ember-cli-shims": "^1.2.0", + "ember-cli-tslint": "^0.1.4", + "ember-cli-typescript": "^1.4.0", "ember-cli-uglify": "^2.0.0", + "ember-decorators": "^2.3.1", "ember-disable-prototype-extensions": "^1.1.2", "ember-disable-proxy-controllers": "^1.0.1", "ember-export-application-global": "^2.0.0", "ember-load-initializers": "^1.1.0", "ember-maybe-import-regenerator": "^0.1.6", + "ember-qunit-decorators": "^1.2.0", "ember-resolver": "^4.5.0", "ember-source": "~3.3.0", "ember-source-channel-url": "^1.0.1", "ember-try": "^0.2.23", "eslint-plugin-ember": "^5.0.0", "eslint-plugin-node": "^6.0.1", + "eslint-plugin-typescript": "^0.12.0", "loader.js": "^4.2.3", "qunit-dom": "^0.6.2", "semantic-release": "^15.9.9", - "travis-deploy-once": "^5.0.2" + "travis-deploy-once": "^5.0.2", + "typescript": "^3.0.1", + "typescript-eslint-parser": "^18.0.0" }, "keywords": [ "ember-addon", @@ -67,4 +84,4 @@ "release": { "extends": "@mike-north/js-lib-semantic-release-config" } -} \ No newline at end of file +} diff --git a/tests/acceptance/injection-factories-test.js b/tests/acceptance/injection-factories-test.js deleted file mode 100644 index 59826439..00000000 --- a/tests/acceptance/injection-factories-test.js +++ /dev/null @@ -1,21 +0,0 @@ -import { module, test } from 'qunit'; -import { setupApplicationTest } from 'ember-qunit'; -import { currentURL, visit, find } from '@ember/test-helpers'; - -function getViewById(viewId) { - return this.owner.lookup('-view-registry:main')[viewId]; -} - -module('Acceptance | injection factories', function(hooks) { - setupApplicationTest(hooks); - - test('Testing whether service has been injected onto views and components', async function(assert) { - await visit('/injection-factories'); - - assert.equal(currentURL(), '/injection-factories', 'Test page loads'); - let viewId = find('.mike-view').id; - assert.ok(getViewById.call(this, viewId).get('resizeService'), 'resizeService has been injected onto views'); - let componentId = find('.test-component').id; - assert.ok(getViewById.call(this, componentId).get('resizeService'), 'resizeService has been injected onto components'); - }); -}); diff --git a/tests/acceptance/injection-factories-test.ts b/tests/acceptance/injection-factories-test.ts new file mode 100644 index 00000000..ccb073f1 --- /dev/null +++ b/tests/acceptance/injection-factories-test.ts @@ -0,0 +1,30 @@ +import ApplicationInstance from '@ember/application/instance'; +import { currentURL, find, visit } from '@ember/test-helpers'; +import { EmberApplicationTest } from 'ember-qunit-decorators/test-support'; +import { suite, test } from 'qunit-decorators'; + +function getViewById(this: { owner: ApplicationInstance}, viewId: string) { + return this.owner.lookup('-view-registry:main')[viewId]; +} + +@suite('Acceptance | injection factories') +export class InjectionFactoriesAcceptanceTest extends EmberApplicationTest { + + @test public async 'visiting /injection-factories'(assert: Assert) { + await visit('/injection-factories'); + + assert.equal(currentURL(), '/injection-factories', 'Test page loads'); + const view = find('.mike-view'); + assert.ok(view, '.mike-view found'); + if (!view) { throw new Error(''); } + const viewId = view.id; + assert.ok(getViewById.call(this, viewId).get('resizeService'), 'resizeService has been injected onto views'); + const component = find('.test-component'); + assert.ok(component, '.test-component found'); + if (!component) { throw new Error(''); } + const componentId = component.id; + // tslint:disable-next-line:max-line-length + assert.ok(getViewById.call(this, componentId).get('resizeService'), 'resizeService has been injected onto components'); + + } +} diff --git a/tests/dummy/app/config/environment.d.ts b/tests/dummy/app/config/environment.d.ts new file mode 100644 index 00000000..3252cc3d --- /dev/null +++ b/tests/dummy/app/config/environment.d.ts @@ -0,0 +1,16 @@ +export default config; + +/** + * Type declarations for + * import config from './config/environment' + * + * For now these need to be managed by the developer + * since different ember addons can materialize new entries. + */ +declare const config: { + environment: any; + modulePrefix: string; + podModulePrefix: string; + locationType: string; + rootURL: string; +}; diff --git a/tests/helpers/resolver.js b/tests/helpers/resolver.js index b208d38d..319b45fc 100644 --- a/tests/helpers/resolver.js +++ b/tests/helpers/resolver.js @@ -5,7 +5,7 @@ const resolver = Resolver.create(); resolver.namespace = { modulePrefix: config.modulePrefix, - podModulePrefix: config.podModulePrefix + podModulePrefix: config.podModulePrefix, }; export default resolver; diff --git a/tests/unit/initializers/resize-test.js b/tests/unit/initializers/resize-test.js deleted file mode 100644 index 5a235ffc..00000000 --- a/tests/unit/initializers/resize-test.js +++ /dev/null @@ -1,36 +0,0 @@ -import { run } from '@ember/runloop'; -import Application from '@ember/application'; -import { initialize } from '../../../initializers/resize'; -import { module, test } from 'qunit'; - -let container, application; - -module('Unit | Initializer | resize', { - needs: ['service:resize'], - beforeEach() { - run(function() { - application = Application.create(); - container = application.__container__; - application.deferReadiness(); - }); - } -}); - -test('service is registered to the container', function(assert) { - assert.ok(!application.__container__.lookup('service:resize'), 'not registered as service:resize in the container before initializer'); - initialize(container, application); - assert.ok(application.__container__.lookup('service:resize'), 'registered as service:resize in the container after initializer'); -}); - -test('service configuration is registered to the container', function(assert) { - assert.ok(!application.__container__.lookup('config:resize-service'), 'not registered as config:resize-service in the container before initializer'); - initialize(container, application); - assert.ok(application.__container__.lookup('config:resize-service'), 'registered as config:resize-service in the container after initializer'); -}); - -test('service configuration is injected onto the resize service', function(assert) { - initialize(container, application); - let resize = application.__container__.lookup('service:resize'); - assert.deepEqual(resize.get('resizeServiceDefaults'), application.__container__.lookup('config:resize-service'), 'defaults are registered to service as "resizeServiceDefaults"'); -}); - diff --git a/tests/unit/initializers/resize-test.ts b/tests/unit/initializers/resize-test.ts new file mode 100644 index 00000000..aceb97c3 --- /dev/null +++ b/tests/unit/initializers/resize-test.ts @@ -0,0 +1,52 @@ +import Application from '@ember/application'; + +import ApplicationInstance from '@ember/application/instance'; +import { run } from '@ember/runloop'; +import { initialize } from 'dummy/initializers/resize'; +import { EmberTest } from 'ember-qunit-decorators/test-support'; +import { suite, test } from 'qunit-decorators'; + +@suite('Unit | Initializer | resize') +export class ResizeInitializerTest extends EmberTest { + private testApplication!: typeof Application; + private application!: Application; + private instance!: ApplicationInstance; + + public async beforeEach() { + this.testApplication = Application.extend(); + + this.application = this.testApplication.create({ autoboot: false }); + this.instance = (this.application as any).buildInstance(); + initialize(this.instance); + } + public afterEach() { + run(this.application, 'destroy'); + } + + @test + public 'service is registered to the container'(assert: Assert) { + // tslint:disable-next-line:no-debugger + assert.ok( + this.instance.lookup('service:resize'), + 'registered as service:resize in the container after initializer', + ); + } + + @test + public 'service configuration is registered to the container'(assert: Assert) { + assert.ok( + this.instance.lookup('config:resize-service'), + 'registered as config:resize-service in the container after initializer', + ); + } + + @test + public 'service configuration is injected onto the resize service'(assert: Assert) { + const resize = this.instance.lookup('service:resize'); + assert.deepEqual( + resize.get('resizeServiceDefaults'), + this.instance.lookup('config:resize-service'), + 'defaults are registered to service as "resizeServiceDefaults"', + ); + } +} diff --git a/tests/unit/mixins/resize-aware-test.js b/tests/unit/mixins/resize-aware-test.ts similarity index 75% rename from tests/unit/mixins/resize-aware-test.js rename to tests/unit/mixins/resize-aware-test.ts index 1f212b16..855e5e35 100644 --- a/tests/unit/mixins/resize-aware-test.js +++ b/tests/unit/mixins/resize-aware-test.ts @@ -1,15 +1,15 @@ import EObj from '@ember/object'; -import ResizeAwareMixin from '../../../mixins/resize-aware'; +import ResizeAwareMixin from 'ember-resize/mixins/resize-aware'; import { module, test } from 'qunit'; // jscs:enable disallowDirectPropertyAccess module('Unit | Mixin | resize aware'); -test('didResize and debouncedDidResize hooks are on the object', function(assert) { +test('didResize and debouncedDidResize hooks are on the object', (assert: Assert) => { - let ResizeAwareObject = EObj.extend(ResizeAwareMixin); - let subject = ResizeAwareObject.create(); + const resizeAwareObject = EObj.extend(ResizeAwareMixin); + const subject = resizeAwareObject.create(); assert.ok(subject.didResize, 'didResize hook is present on the subject'); assert.equal(typeof subject.didResize, 'function', 'didResize hook is a function'); diff --git a/tests/unit/services/resize-test.js b/tests/unit/services/resize-test.ts similarity index 81% rename from tests/unit/services/resize-test.js rename to tests/unit/services/resize-test.ts index 6ef56714..25e24c95 100644 --- a/tests/unit/services/resize-test.js +++ b/tests/unit/services/resize-test.ts @@ -8,16 +8,16 @@ moduleFor('service:resize', 'Unit | Service | resize', { test('it fires "didResize" when the window is resized', function(assert) { - let service = this.subject({ + const service = this.subject({ + heightSensitive: true, widthSensitive: false, - heightSensitive: true }); let didResizeCallCount = 0; - service.on('didResize', function() { + service.on('didResize', () => { didResizeCallCount++; }); - let evt = new window.Event('resize'); + const evt = new Event('resize'); window.dispatchEvent(evt); assert.equal(didResizeCallCount, 0, 'didResize called 0 time on event firing'); @@ -33,12 +33,12 @@ test('it fires "didResize" when the window is resized', function(assert) { test('screenHeight is bound to the non debounced resize', function(assert) { - let service = this.subject({ + const service = this.subject({ + heightSensitive: true, widthSensitive: false, - heightSensitive: true }); - let evt = new window.Event('resize'); + const evt = new Event('resize'); window.dispatchEvent(evt); assert.equal(service.get('screenHeight'), window.innerHeight); @@ -47,19 +47,19 @@ test('screenHeight is bound to the non debounced resize', function(assert) { test('it fires "debouncedDidResize" when the window is resized', function(assert) { - let done = assert.async(); + const done = assert.async(); - let service = this.subject({ + const service = this.subject({ + heightSensitive: true, widthSensitive: false, - heightSensitive: true }); let debouncedDidResizeCallCount = 0; - service.on('debouncedDidResize', function() { + service.on('debouncedDidResize', () => { debouncedDidResizeCallCount++; }); - let evt = new window.Event('resize'); + const evt = new Event('resize'); function triggerEvent() { window.dispatchEvent(evt); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..9758d03b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,56 @@ +{ + "compilerOptions": { + "target": "es2017", + "allowJs": true, + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "noImplicitAny": true, + "noImplicitThis": true, + "alwaysStrict": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "noFallthroughCasesInSwitch": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noEmitOnError": false, + "noEmit": true, + "inlineSourceMap": true, + "inlineSources": true, + "baseUrl": ".", + "module": "es6", + "paths": { + "dummy/tests/*": [ + "tests/*" + ], + "dummy/*": [ + "tests/dummy/app/*", + "app/*" + ], + "ember-resize": [ + "addon" + ], + "ember-resize/*": [ + "addon/*" + ], + "ember-resize/test-support": [ + "addon-test-support" + ], + "ember-resize/test-support/*": [ + "addon-test-support/*" + ], + "*": [ + "types/*" + ] + }, + "experimentalDecorators": true + }, + "include": [ + "app/**/*", + "addon/**/*", + "tests/**/*", + "types/**/*", + "test-support/**/*", + "addon-test-support/**/*" + ] +} \ No newline at end of file diff --git a/tslint.json b/tslint.json new file mode 100644 index 00000000..e5a00a14 --- /dev/null +++ b/tslint.json @@ -0,0 +1,22 @@ +{ + "defaultSeverity": "error", + "extends": [ + "tslint:recommended" + ], + "linterOptions": { + "exclude": [ + "tests/dummy/**/*", + "node_modules/**/*" + ] + }, + "jsRules": { + "quotemark": [true, "single"], + "variable-name": [true, "allow-leading-underscore"] + }, + "rules": { + "quotemark": [true, "single"], + "variable-name": [true, "allow-leading-underscore"], + "interface-name": false + }, + "rulesDirectory": [] +} diff --git a/types/dummy/index.d.ts b/types/dummy/index.d.ts new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/types/dummy/index.d.ts @@ -0,0 +1 @@ + diff --git a/yarn.lock b/yarn.lock index 1f3c82ad..9997e45b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,134 @@ # yarn lockfile v1 +"@babel/code-frame@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" + dependencies: + "@babel/highlight" "7.0.0-beta.44" + +"@babel/generator@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" + dependencies: + "@babel/types" "7.0.0-beta.44" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd" + dependencies: + "@babel/helper-get-function-arity" "7.0.0-beta.44" + "@babel/template" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-get-function-arity@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15" + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-split-export-declaration@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc" + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/highlight@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +"@babel/template@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + lodash "^4.2.0" + +"@babel/traverse@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966" + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/generator" "7.0.0-beta.44" + "@babel/helper-function-name" "7.0.0-beta.44" + "@babel/helper-split-export-declaration" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + debug "^3.1.0" + globals "^11.1.0" + invariant "^2.2.0" + lodash "^4.2.0" + +"@babel/types@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + +"@ember-decorators/babel-transforms@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@ember-decorators/babel-transforms/-/babel-transforms-2.0.2.tgz#f73b4af32bc9aa2253cc8d2e72b984ab85e432db" + dependencies: + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators-legacy "^1.3.4" + ember-cli-babel "^6.6.0" + ember-cli-version-checker "^2.1.0" + +"@ember-decorators/component@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@ember-decorators/component/-/component-2.3.1.tgz#4e692c78f4ce69ba107759e5f8e2ed59c55dc232" + dependencies: + "@ember-decorators/utils" "^2.3.1" + ember-cli-babel "^6.6.0" + +"@ember-decorators/controller@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@ember-decorators/controller/-/controller-2.3.1.tgz#0b64320b037d413d5a351129fb1269e0b9f955f8" + dependencies: + "@ember-decorators/utils" "^2.3.1" + ember-cli-babel "^6.6.0" + +"@ember-decorators/data@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@ember-decorators/data/-/data-2.3.1.tgz#a2f28a56f0190217b863846808fbee9ec14c2fd9" + dependencies: + "@ember-decorators/utils" "^2.3.1" + ember-cli-babel "^6.6.0" + +"@ember-decorators/object@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@ember-decorators/object/-/object-2.3.1.tgz#1886911154a58e1d5e5bd1be883249d05d52c918" + dependencies: + "@ember-decorators/utils" "^2.3.1" + ember-cli-babel "^6.6.0" + ember-compatibility-helpers "^1.0.0" + +"@ember-decorators/service@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@ember-decorators/service/-/service-2.3.1.tgz#84734f22ba295929ba5d506971535358e9e2a432" + dependencies: + "@ember-decorators/utils" "^2.3.1" + ember-cli-babel "^6.6.0" + +"@ember-decorators/utils@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@ember-decorators/utils/-/utils-2.3.1.tgz#1da06a8f11062b0176dac5b427b27b4eabff3604" + dependencies: + ember-cli-babel "^6.6.0" + ember-compatibility-helpers "^1.0.0" + "@ember/test-helpers@^0.7.18": version "0.7.25" resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-0.7.25.tgz#b4014c108b40ffaf74f3c4d5918800917541541d" @@ -177,6 +305,64 @@ version "0.7.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" +"@types/ember-qunit@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/ember-qunit/-/ember-qunit-3.0.3.tgz#915ff520f7e3e53141bfc41d022f15690830ae9a" + dependencies: + "@types/ember" "*" + "@types/ember-test-helpers" "*" + +"@types/ember-test-helpers@*", "@types/ember-test-helpers@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@types/ember-test-helpers/-/ember-test-helpers-0.7.1.tgz#14b9f132e9c60c2dfaf7a10ace937bfb7157fb26" + dependencies: + "@types/ember" "*" + "@types/htmlbars-inline-precompile" "*" + "@types/jquery" "*" + "@types/rsvp" "*" + +"@types/ember-testing-helpers@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@types/ember-testing-helpers/-/ember-testing-helpers-0.0.3.tgz#1a6cfc484b63d19ddd822c87e4dd710597db17d9" + dependencies: + "@types/jquery" "*" + "@types/rsvp" "*" + +"@types/ember@*", "@types/ember@^2.8.32": + version "2.8.32" + resolved "https://registry.yarnpkg.com/@types/ember/-/ember-2.8.32.tgz#258bac52403b68baabfa3fff422cd2bb73f7d77d" + dependencies: + "@types/handlebars" "*" + "@types/jquery" "*" + "@types/rsvp" "*" + +"@types/ember__test-helpers@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@types/ember__test-helpers/-/ember__test-helpers-0.7.0.tgz#0c0e86cb39dbe5e97bb4f09a898dcde0f5c1966a" + dependencies: + "@types/ember" "*" + "@types/htmlbars-inline-precompile" "*" + +"@types/handlebars@*": + version "4.0.39" + resolved "https://registry.yarnpkg.com/@types/handlebars/-/handlebars-4.0.39.tgz#961fb54db68030890942e6aeffe9f93a957807bd" + +"@types/htmlbars-inline-precompile@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/htmlbars-inline-precompile/-/htmlbars-inline-precompile-1.0.0.tgz#4c283da1a7e303b269de3c6aa953acc8d8736949" + +"@types/jquery@*": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.6.tgz#5932ead926307ca21e5b36808257f7c926b06565" + +"@types/qunit@^2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@types/qunit/-/qunit-2.5.2.tgz#8b1c3fa33017148032c58a6530f66be3239edef9" + +"@types/rsvp@*", "@types/rsvp@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/rsvp/-/rsvp-4.0.2.tgz#bf9f72eaa6771292638a85bb8ce1db97e754b371" + JSONStream@^1.0.4, JSONStream@^1.3.3: version "1.3.4" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.4.tgz#615bb2adb0cd34c8f4c447b5f6512fa1d8f16a2e" @@ -199,17 +385,7 @@ accepts@~1.3.4, accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - dependencies: - acorn "^3.0.4" - -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - -acorn@^5.2.1, acorn@^5.5.0: +acorn@^5.2.1: version "5.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" @@ -236,11 +412,7 @@ aggregate-error@^1.0.0: clean-stack "^1.0.0" indent-string "^3.0.0" -ajv-keywords@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" - -ajv@^5.2.3, ajv@^5.3.0: +ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -283,10 +455,6 @@ ansi-escapes@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" -ansi-escapes@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -437,7 +605,7 @@ arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" -arrify@^1.0.0, arrify@^1.0.1: +arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -491,6 +659,10 @@ async-disk-cache@^1.2.1: rsvp "^3.0.18" username-sync "1.0.1" +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" @@ -625,6 +797,17 @@ babel-core@^6.26.0: slash "^1.0.0" source-map "^0.5.7" +babel-eslint@^8.0.0: + version "8.2.6" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9" + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/traverse" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" @@ -759,7 +942,7 @@ babel-plugin-dead-code-elimination@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz#5f7c451274dcd7cccdbfbb3e0b85dd28121f0f65" -babel-plugin-debug-macros@^0.1.10: +babel-plugin-debug-macros@^0.1.10, babel-plugin-debug-macros@^0.1.11: version "0.1.11" resolved "https://registry.yarnpkg.com/babel-plugin-debug-macros/-/babel-plugin-debug-macros-0.1.11.tgz#6c562bf561fccd406ce14ab04f42c218cf956605" dependencies: @@ -831,6 +1014,14 @@ babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.1.18: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" @@ -851,6 +1042,23 @@ babel-plugin-transform-async-to-generator@^6.22.0: babel-plugin-syntax-async-functions "^6.8.0" babel-runtime "^6.22.0" +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators-legacy@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.5.tgz#0e492dffa0edd70529072887f8aa86d4dd8b40a1" + dependencies: + babel-plugin-syntax-decorators "^6.1.18" + babel-runtime "^6.2.0" + babel-template "^6.3.0" + babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" @@ -1112,14 +1320,14 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.24.1, babel-template@^6.26.0: +babel-template@^6.24.1, babel-template@^6.26.0, babel-template@^6.3.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" dependencies: @@ -1152,6 +1360,10 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" +babylon@7.0.0-beta.44: + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" + babylon@^5.8.38: version "5.8.38" resolved "https://registry.yarnpkg.com/babylon/-/babylon-5.8.38.tgz#ec9b120b11bf6ccd4173a18bf217e60b79859ffd" @@ -1226,6 +1438,10 @@ bin-links@^1.1.2: graceful-fs "^4.1.11" write-file-atomic "^2.3.0" +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + "binaryextensions@1 || 2": version "2.1.1" resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" @@ -1325,7 +1541,7 @@ brace-expansion@^1.0.0, brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1: +braces@^2.3.0, braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" dependencies: @@ -1542,18 +1758,6 @@ broccoli-kitchen-sink-helpers@^0.3.1: glob "^5.0.10" mkdirp "^0.5.1" -broccoli-lint-eslint@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/broccoli-lint-eslint/-/broccoli-lint-eslint-4.2.1.tgz#f780dc083a7357a9746a9cfa8f76feb092777477" - dependencies: - aot-test-generators "^0.1.0" - broccoli-concat "^3.2.2" - broccoli-persistent-filter "^1.4.3" - eslint "^4.0.0" - json-stable-stringify "^1.0.1" - lodash.defaultsdeep "^4.6.0" - md5-hex "^2.0.0" - broccoli-merge-trees@^1.0.0: version "1.2.4" resolved "https://registry.yarnpkg.com/broccoli-merge-trees/-/broccoli-merge-trees-1.2.4.tgz#a001519bb5067f06589d91afa2942445a2d0fdb5" @@ -1602,7 +1806,7 @@ broccoli-node-info@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/broccoli-node-info/-/broccoli-node-info-1.1.0.tgz#3aa2e31e07e5bdb516dd25214f7c45ba1c459412" -broccoli-persistent-filter@^1.1.6, broccoli-persistent-filter@^1.4.2, broccoli-persistent-filter@^1.4.3: +broccoli-persistent-filter@^1.1.6, broccoli-persistent-filter@^1.2.0, broccoli-persistent-filter@^1.4.2, broccoli-persistent-filter@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-1.4.3.tgz#3511bc52fc53740cda51621f58a28152d9911bc1" dependencies: @@ -1639,7 +1843,7 @@ broccoli-source@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/broccoli-source/-/broccoli-source-1.1.0.tgz#54f0e82c8b73f46580cbbc4f578f0b32fca8f809" -broccoli-stew@^1.2.0, broccoli-stew@^1.5.0: +broccoli-stew@^1.2.0, broccoli-stew@^1.4.0, broccoli-stew@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/broccoli-stew/-/broccoli-stew-1.6.0.tgz#01f6d92806ed6679ddbe48d405066a0e164dfbef" dependencies: @@ -1658,6 +1862,15 @@ broccoli-stew@^1.2.0, broccoli-stew@^1.5.0: symlink-or-copy "^1.2.0" walk-sync "^0.3.0" +broccoli-tslinter@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/broccoli-tslinter/-/broccoli-tslinter-3.0.1.tgz#f30b167356cd2b96c604e8a56f1557de1e2048ed" + dependencies: + aot-test-generators "^0.1.0" + broccoli-persistent-filter "^1.2.0" + chalk "^2.0.1" + exists-sync "0.0.4" + broccoli-uglify-sourcemap@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/broccoli-uglify-sourcemap/-/broccoli-uglify-sourcemap-2.2.0.tgz#2ff49389bdf342a550c3596750ba2dde95a8f7d4" @@ -1710,7 +1923,7 @@ buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" -builtin-modules@^1.0.0: +builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -1827,20 +2040,10 @@ call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - dependencies: - callsites "^0.2.0" - callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -1932,16 +2135,31 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3 escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - charm@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/charm/-/charm-1.0.2.tgz#8add367153a6d9a581331052c4090991da995e35" dependencies: inherits "^2.0.1" +chokidar@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.5" + optionalDependencies: + fsevents "^1.2.2" + chownr@^1.0.1, chownr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" @@ -1956,10 +2174,6 @@ cidr-regex@^2.0.8: dependencies: ip-regex "^2.1.0" -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2144,7 +2358,7 @@ commander@2.8.x: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.5.0, commander@^2.6.0, commander@^2.9.0: +commander@^2.12.1, commander@^2.5.0, commander@^2.6.0, commander@^2.9.0: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" @@ -2211,7 +2425,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0: +concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -2242,7 +2456,7 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control- version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" -console-ui@^2.2.2: +console-ui@^2.1.0, console-ui@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/console-ui/-/console-ui-2.2.2.tgz#b294a2934de869dd06789ab4be69555411edef29" dependencies: @@ -2379,7 +2593,7 @@ create-error-class@^3.0.0: dependencies: capture-stack-trace "^1.0.0" -cross-spawn@^5.0.1, cross-spawn@^5.1.0: +cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: @@ -2484,10 +2698,6 @@ deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -2532,18 +2742,6 @@ defs@~1.1.0: tryor "~0.1.2" yargs "~3.27.0" -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -2619,12 +2817,6 @@ dir-glob@^2.0.0: arrify "^1.0.1" path-type "^3.0.0" -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - dependencies: - esutils "^2.0.2" - dot-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" @@ -2700,7 +2892,7 @@ ember-cli-babel@^5.0.0, ember-cli-babel@^5.1.3: ember-cli-version-checker "^1.0.2" resolve "^1.1.2" -ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6.11.0, ember-cli-babel@^6.12.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2: +ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6.11.0, ember-cli-babel@^6.12.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2: version "6.16.0" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.16.0.tgz#623b4a2764ece72b65f1572fc8aeb5714a450228" dependencies: @@ -2738,15 +2930,6 @@ ember-cli-dependency-checker@^2.1.0: resolve "^1.5.0" semver "^5.3.0" -ember-cli-eslint@^4.2.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/ember-cli-eslint/-/ember-cli-eslint-4.2.3.tgz#2844d3f5e8184f19b2d7132ba99eb0b370b55598" - dependencies: - broccoli-lint-eslint "^4.2.1" - ember-cli-version-checker "^2.1.0" - rsvp "^4.6.1" - walk-sync "^0.3.0" - ember-cli-get-component-path-option@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ember-cli-get-component-path-option/-/ember-cli-get-component-path-option-1.0.0.tgz#0d7b595559e2f9050abed804f1d8eff1b08bc771" @@ -2855,12 +3038,63 @@ ember-cli-string-utils@^1.0.0, ember-cli-string-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1" +ember-cli-test-info@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ember-cli-test-info/-/ember-cli-test-info-1.0.0.tgz#ed4e960f249e97523cf891e4aed2072ce84577b4" + dependencies: + ember-cli-string-utils "^1.0.0" + ember-cli-test-loader@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ember-cli-test-loader/-/ember-cli-test-loader-2.2.0.tgz#3fb8d5d1357e4460d3f0a092f5375e71b6f7c243" dependencies: ember-cli-babel "^6.8.1" +ember-cli-tslint@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/ember-cli-tslint/-/ember-cli-tslint-0.1.4.tgz#704980595e90caf8c080845737bc97663cdbe729" + dependencies: + broccoli-funnel "^2.0.1" + broccoli-tslinter "^3.0.1" + rsvp "^4.7.0" + tslint "^5.5.0" + walk-sync "^0.3.2" + +ember-cli-typescript@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-1.4.0.tgz#ae989180b7cd6dfba71b7fc89c619d2c6b2d1987" + dependencies: + broccoli-debug "^0.6.4" + broccoli-funnel "^2.0.1" + broccoli-merge-trees "^2.0.0" + broccoli-plugin "^1.2.1" + broccoli-stew "^1.4.0" + chalk "^2.3.0" + chokidar "^2.0.3" + debug "^3.1.0" + ember-cli "~3.1.4" + ember-cli-get-component-path-option "^1.0.0" + ember-cli-is-package-missing "^1.0.0" + ember-cli-normalize-entity-name "^1.0.0" + ember-cli-path-utils "^1.0.0" + ember-cli-string-utils "^1.1.0" + ember-cli-test-info "^1.0.0" + ember-cli-valid-component-name "^1.0.0" + ember-cli-version-checker "^2.1.0" + ember-router-generator "^1.2.3" + escape-string-regexp "^1.0.5" + execa "^0.9.0" + exists-sync "^0.0.4" + fs-extra "^5.0.0" + glob "^7.1.2" + inflection "^1.12.0" + resolve "^1.5.0" + rimraf "^2.6.2" + rsvp "^4.8.1" + silent-error "^1.1.0" + symlink-or-copy "^1.1.8" + walk-sync "^0.3.2" + ember-cli-uglify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ember-cli-uglify/-/ember-cli-uglify-2.1.0.tgz#4a0641fe4768d7ab7d4807aca9924cc77c544184" @@ -2880,7 +3114,7 @@ ember-cli-version-checker@^1.0.2, ember-cli-version-checker@^1.1.6: dependencies: semver "^5.3.0" -ember-cli-version-checker@^2.0.0, ember-cli-version-checker@^2.1.0, ember-cli-version-checker@^2.1.2: +ember-cli-version-checker@^2.0.0, ember-cli-version-checker@^2.1.0, ember-cli-version-checker@^2.1.1, ember-cli-version-checker@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-2.1.2.tgz#305ce102390c66e4e0f1432dea9dc5c7c19fed98" dependencies: @@ -2978,6 +3212,114 @@ ember-cli@^3.3.0: watch-detector "^0.1.0" yam "^0.0.24" +ember-cli@~3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.1.4.tgz#95f7ff4302d535619b5d5ff1c7040877a67d4468" + dependencies: + amd-name-resolver "^1.2.0" + babel-plugin-transform-es2015-modules-amd "^6.24.0" + bower-config "^1.3.0" + bower-endpoint-parser "0.2.2" + broccoli-babel-transpiler "^6.0.0" + broccoli-builder "^0.18.8" + broccoli-concat "^3.2.2" + broccoli-config-loader "^1.0.0" + broccoli-config-replace "^1.1.2" + broccoli-debug "^0.6.3" + broccoli-funnel "^2.0.0" + broccoli-funnel-reducer "^1.0.0" + broccoli-merge-trees "^2.0.0" + broccoli-middleware "^1.2.1" + broccoli-source "^1.1.0" + broccoli-stew "^1.2.0" + calculate-cache-key-for-tree "^1.0.0" + capture-exit "^1.1.0" + chalk "^2.0.1" + clean-base-url "^1.0.0" + compression "^1.4.4" + configstore "^3.0.0" + console-ui "^2.1.0" + core-object "^3.1.3" + dag-map "^2.0.2" + diff "^3.2.0" + ember-cli-broccoli-sane-watcher "^2.0.4" + ember-cli-is-package-missing "^1.0.0" + ember-cli-lodash-subset "^2.0.1" + ember-cli-normalize-entity-name "^1.0.0" + ember-cli-preprocess-registry "^3.1.0" + ember-cli-string-utils "^1.0.0" + ensure-posix-path "^1.0.2" + execa "^0.9.0" + exists-sync "0.0.4" + exit "^0.1.2" + express "^4.12.3" + filesize "^3.1.3" + find-up "^2.1.0" + find-yarn-workspace-root "^1.0.0" + fs-extra "^5.0.0" + fs-tree-diff "^0.5.2" + get-caller-file "^1.0.0" + git-repo-info "^1.4.1" + glob "^7.1.2" + heimdalljs "^0.2.3" + heimdalljs-fs-monitor "^0.2.0" + heimdalljs-graph "^0.3.1" + heimdalljs-logger "^0.1.7" + http-proxy "^1.9.0" + inflection "^1.7.0" + is-git-url "^1.0.0" + isbinaryfile "^3.0.0" + js-yaml "^3.6.1" + json-stable-stringify "^1.0.1" + leek "0.0.24" + lodash.template "^4.2.5" + markdown-it "^8.3.0" + markdown-it-terminal "0.1.0" + minimatch "^3.0.0" + morgan "^1.8.1" + node-modules-path "^1.0.0" + nopt "^3.0.6" + npm-package-arg "^6.0.0" + portfinder "^1.0.7" + promise-map-series "^0.2.1" + quick-temp "^0.1.8" + resolve "^1.3.0" + rsvp "^4.7.0" + sane "^2.2.0" + semver "^5.1.1" + silent-error "^1.0.0" + sort-package-json "^1.4.0" + symlink-or-copy "^1.1.8" + temp "0.8.3" + testem "^2.0.0" + tiny-lr "^1.0.3" + tree-sync "^1.2.1" + uuid "^3.0.0" + validate-npm-package-name "^3.0.0" + walk-sync "^0.3.0" + watch-detector "^0.1.0" + yam "^0.0.24" + +ember-compatibility-helpers@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.0.2.tgz#a7eb8969747d063720fe44658af5448589b437ba" + dependencies: + babel-plugin-debug-macros "^0.1.11" + ember-cli-version-checker "^2.1.1" + semver "^5.4.1" + +ember-decorators@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/ember-decorators/-/ember-decorators-2.3.1.tgz#aef98f6a3e15666bd414576d07cbfc15d39cfe97" + dependencies: + "@ember-decorators/component" "^2.3.1" + "@ember-decorators/controller" "^2.3.1" + "@ember-decorators/data" "^2.3.1" + "@ember-decorators/object" "^2.3.1" + "@ember-decorators/service" "^2.3.1" + ember-cli-babel "^6.0.0" + semver "^5.5.0" + ember-disable-prototype-extensions@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/ember-disable-prototype-extensions/-/ember-disable-prototype-extensions-1.1.3.tgz#1969135217654b5e278f9fe2d9d4e49b5720329e" @@ -3009,6 +3351,13 @@ ember-maybe-import-regenerator@^0.1.6: ember-cli-babel "^6.0.0-beta.4" regenerator-runtime "^0.9.5" +ember-qunit-decorators@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ember-qunit-decorators/-/ember-qunit-decorators-1.2.0.tgz#c416177e3a591c509b3704a09a20378564e49b2a" + dependencies: + ember-cli-babel "^6.6.0" + qunit-decorators "^1.1.1" + ember-qunit@^3.3.2: version "3.4.1" resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-3.4.1.tgz#204a2d39a5d44d494c56bf17cf3fd12f06210359" @@ -3242,9 +3591,15 @@ eslint-plugin-node@^6.0.1: resolve "^1.3.3" semver "^5.4.1" -eslint-scope@^3.7.1: - version "3.7.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" +eslint-plugin-typescript@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-typescript/-/eslint-plugin-typescript-0.12.0.tgz#e23d58cb27fe28e89fc641a1f20e8d862cb99aef" + dependencies: + requireindex "~1.1.0" + +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" @@ -3253,56 +3608,6 @@ eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" -eslint@^4.0.0: - version "4.19.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" - dependencies: - ajv "^5.3.0" - babel-code-frame "^6.22.0" - chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" - debug "^3.1.0" - doctrine "^2.1.0" - eslint-scope "^3.7.1" - eslint-visitor-keys "^1.0.0" - espree "^3.5.4" - esquery "^1.0.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.0.1" - ignore "^3.3.3" - imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^7.0.0" - progress "^2.0.0" - regexpp "^1.0.1" - require-uncached "^1.0.3" - semver "^5.3.0" - strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "4.0.2" - text-table "~0.2.0" - -espree@^3.5.4: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" - dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" - esprima-fb@~15001.1001.0-dev-harmony-fb: version "15001.1001.0-dev-harmony-fb" resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz#43beb57ec26e8cf237d3dd8b33e42533577f2659" @@ -3323,19 +3628,13 @@ esprima@~3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" -esquery@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - dependencies: - estraverse "^4.0.0" - esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" dependencies: estraverse "^4.1.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -3393,11 +3692,23 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.9.0.tgz#adb7ce62cf985071f60580deb4a88b9e34712d01" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + exists-stat@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/exists-stat/-/exists-stat-1.0.0.tgz#0660e3525a2e89d9e446129440c272edfa24b529" -exists-sync@0.0.4: +exists-sync@0.0.4, exists-sync@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/exists-sync/-/exists-sync-0.0.4.tgz#9744c2c428cc03b01060db454d4b12f0ef3c8879" @@ -3487,14 +3798,6 @@ external-editor@^1.1.0: spawn-sync "^1.0.15" tmp "^0.0.29" -external-editor@^2.0.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -3535,10 +3838,6 @@ fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - fast-ordered-set@^1.0.0, fast-ordered-set@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/fast-ordered-set/-/fast-ordered-set-1.0.3.tgz#3fbb36634f7be79e4f7edbdb4a357dee25d184eb" @@ -3580,13 +3879,6 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - filesize@^3.1.3: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" @@ -3672,15 +3964,6 @@ fireworm@^0.7.0: lodash.flatten "^3.0.2" minimatch "^3.0.2" -flat-cache@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" - dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" - flush-write-stream@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" @@ -3829,7 +4112,7 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.2.3: +fsevents@^1.2.2, fsevents@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" dependencies: @@ -3860,10 +4143,6 @@ fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.8: mkdirp ">=0.5 0" rimraf "2" -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - gauge@~1.2.0, gauge@~1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" @@ -4061,7 +4340,7 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" -globals@^11.0.1: +globals@^11.1.0: version "11.7.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" @@ -4073,17 +4352,6 @@ globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - globby@^8.0.0, globby@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" @@ -4407,7 +4675,7 @@ iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" -iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@^0.4.5, iconv-lite@~0.4.13: +iconv-lite@^0.4.4, iconv-lite@^0.4.5, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" dependencies: @@ -4427,7 +4695,7 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.3, ignore@^3.3.5, ignore@^3.3.6: +ignore@^3.3.5, ignore@^3.3.6: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -4533,25 +4801,6 @@ inquirer@^2: strip-ansi "^3.0.0" through "^2.3.6" -inquirer@^3.0.6: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - into-stream@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" @@ -4559,7 +4808,7 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -invariant@^2.2.2: +invariant@^2.2.0, invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" dependencies: @@ -4597,6 +4846,12 @@ is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -4742,16 +4997,6 @@ is-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - dependencies: - is-path-inside "^1.0.0" - is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" @@ -4780,10 +5025,6 @@ is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" @@ -4902,15 +5143,15 @@ js-tokens@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-1.0.1.tgz#cc435a5c8b94ad15acb7983140fc80182c89aeae" +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.6.1, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.6.1, js-yaml@^3.7.0, js-yaml@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" dependencies: @@ -4925,7 +5166,7 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" -jsesc@^2.5.0: +jsesc@^2.5.0, jsesc@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" @@ -4953,10 +5194,6 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" @@ -5078,13 +5315,6 @@ leven@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/leven/-/leven-1.0.2.tgz#9144b6eebca5f1d0680169f1a6770dcea60b75c3" -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - libcipm@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-2.0.2.tgz#4f38c2b37acf2ec156936cef1cbf74636568fc7b" @@ -5452,6 +5682,10 @@ lodash.debounce@^3.1.1: dependencies: lodash._getnative "^3.0.0" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + lodash.defaults@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.3.0.tgz#a832b001f138f3bb9721c2819a2a7cc5ae21ed25" @@ -5627,6 +5861,10 @@ lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" +lodash.unescape@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + lodash.union@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-3.1.0.tgz#a4a3066fc15d6a7f8151cce9bdfe63dce7f5bcff" @@ -5678,7 +5916,7 @@ lodash@^3.10.0, lodash@^3.10.1, lodash@^3.9.3: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.17.10, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1: +lodash@^4.17.10, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -5834,16 +6072,6 @@ matcher-collection@^1.0.0, matcher-collection@^1.0.5: dependencies: minimatch "^3.0.2" -md5-hex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-2.0.0.tgz#d0588e9f1c74954492ecd24ac0ac6ce997d92e33" - dependencies: - md5-o-matic "^0.1.1" - -md5-o-matic@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" - mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -6125,7 +6353,7 @@ mute-stream@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" -mute-stream@0.0.7, mute-stream@~0.0.4: +mute-stream@~0.0.4: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -6149,10 +6377,6 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - needle@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.2.tgz#1120ca4c41f2fcc6976fd28a8968afe239929418" @@ -6798,17 +7022,6 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - ora@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ora/-/ora-2.1.0.tgz#6caf2830eb924941861ec53a173799e008b51e5b" @@ -6842,7 +7055,7 @@ os-shim@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -7127,10 +7340,6 @@ pkg-conf@^2.1.0: find-up "^2.0.0" load-json-file "^4.0.0" -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - portfinder@^1.0.7: version "1.0.17" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.17.tgz#a8a1691143e46c4735edefcf4fbcccedad26456a" @@ -7143,10 +7352,6 @@ posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -7181,10 +7386,6 @@ process-relative-require@^1.0.0: dependencies: node-modules-path "^1.0.0" -progress@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" - promise-inflight@^1.0.1, promise-inflight@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -7314,6 +7515,10 @@ quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quick-temp@^0.1.8: rimraf "^2.5.4" underscore.string "~3.3.4" +qunit-decorators@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/qunit-decorators/-/qunit-decorators-1.1.2.tgz#4a61bfe8a5ac9d2dd775e9767cb551eadc21303a" + qunit-dom@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/qunit-dom/-/qunit-dom-0.6.3.tgz#f6d7563218179c4f0ef85f940bb79e10631c14ff" @@ -7517,6 +7722,15 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + realize-package-specifier@~3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/realize-package-specifier/-/realize-package-specifier-3.0.3.tgz#d0def882952b8de3f67eba5e91199661271f41f4" @@ -7613,10 +7827,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" - regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -7744,12 +7954,9 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -require-uncached@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" +requireindex@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162" requires-port@^1.0.0: version "1.0.0" @@ -7762,10 +7969,6 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: expand-tilde "^2.0.0" global-modules "^1.0.0" -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -7784,7 +7987,7 @@ resolve@1.5.0: dependencies: path-parse "^1.0.5" -resolve@^1.1.2, resolve@^1.1.6, resolve@^1.3.0, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: +resolve@^1.1.2, resolve@^1.1.6, resolve@^1.3.0, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" dependencies: @@ -7852,7 +8055,7 @@ rsvp@^3.0.14, rsvp@^3.0.17, rsvp@^3.0.18, rsvp@^3.0.21, rsvp@^3.0.6, rsvp@^3.2.1 version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" -rsvp@^4.6.1, rsvp@^4.7.0, rsvp@^4.8.2, rsvp@^4.8.3: +rsvp@^4.7.0, rsvp@^4.8.1, rsvp@^4.8.2, rsvp@^4.8.3: version "4.8.3" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.3.tgz#25d4b9fdd0f95e216eb5884d9b3767d3fbfbe2cd" @@ -7872,16 +8075,6 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - rx@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" @@ -7973,6 +8166,10 @@ semver-regex@^1.0.0: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" +semver@5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + semver@^4.3.1: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" @@ -8016,6 +8213,10 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" @@ -8097,12 +8298,6 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - dependencies: - is-fullwidth-code-point "^2.0.0" - slide@^1.1.3, slide@^1.1.5, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -8490,7 +8685,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: @@ -8591,17 +8786,6 @@ symlink-or-copy@^1.0.0, symlink-or-copy@^1.0.1, symlink-or-copy@^1.1.8, symlink- version "1.2.0" resolved "https://registry.yarnpkg.com/symlink-or-copy/-/symlink-or-copy-1.2.0.tgz#5d49108e2ab824a34069b68974486c290020b393" -table@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" - dependencies: - ajv "^5.2.3" - ajv-keywords "^2.1.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" - tap-parser@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-7.0.0.tgz#54db35302fda2c2ccc21954ad3be22b2cba42721" @@ -8651,7 +8835,7 @@ terser@^3.7.5: source-map "~0.6.1" source-map-support "~0.5.6" -testem@^2.2.0: +testem@^2.0.0, testem@^2.2.0: version "2.9.3" resolved "https://registry.yarnpkg.com/testem/-/testem-2.9.3.tgz#df754edd22a8e30ef8cd110d5a234a28060e143b" dependencies: @@ -8737,12 +8921,6 @@ tmp@^0.0.29: dependencies: os-tmpdir "~1.0.1" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -8755,6 +8933,10 @@ to-fast-properties@^1.0.0, to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -8847,6 +9029,33 @@ tryor@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/tryor/-/tryor-0.1.2.tgz#8145e4ca7caff40acde3ccf946e8b8bb75b4172b" +tslib@^1.8.0, tslib@^1.8.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + +tslint@^5.5.0: + version "5.11.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" + dependencies: + babel-code-frame "^6.22.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^3.2.0" + glob "^7.1.1" + js-yaml "^3.7.0" + minimatch "^3.0.4" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.27.2" + +tsutils@^2.27.2: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + dependencies: + tslib "^1.8.1" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -8861,12 +9070,6 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - type-is@~1.6.15, type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" @@ -8878,6 +9081,17 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +typescript-eslint-parser@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-18.0.0.tgz#3e5055a44980d69e4154350fc5d8b1ab4e2332a8" + dependencies: + lodash.unescape "4.0.1" + semver "5.5.0" + +typescript@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.1.tgz#43738f29585d3a87575520a4b93ab6026ef11fdb" + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376" @@ -8970,6 +9184,10 @@ unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + update-notifier@^2.3.0, update-notifier@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" @@ -9191,10 +9409,6 @@ wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - worker-farm@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" @@ -9234,12 +9448,6 @@ write-file-atomic@~1.1.4: imurmurhash "^0.1.4" slide "^1.1.5" -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - dependencies: - mkdirp "^0.5.1" - ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"