From 41e7e559a6f73f105a3f7d12174320d1df8ac3a9 Mon Sep 17 00:00:00 2001 From: alecmerdler Date: Mon, 19 Jun 2017 23:17:42 -0700 Subject: [PATCH] added TSLint for TypeScript code style checking, fixed associated errors --- package.json | 6 +- .../js/decorators/inject/inject.decorator.ts | 2 +- .../quay-require/quay-require.directive.ts | 2 +- .../app-public-view.component.ts | 12 +- .../ui/channel-icon/channel-icon.component.ts | 2 +- .../clipboard-copy.directive.ts | 2 +- .../directives/ui/cor-tabs/cor-tabs.module.ts | 2 +- .../duration-input.component.ts | 12 +- .../linear-workflow.component.ts | 2 +- .../manage-trigger.component.ts | 7 +- .../manage-trigger.view-object.ts | 9 +- .../ui/markdown/markdown-editor.component.ts | 6 +- .../repository-signing-config.component.ts | 6 +- .../ui/search-box/search-box.component.ts | 4 +- .../tag-signing-display.component.ts | 27 +- .../time-machine-settings.component.ts | 6 +- .../ui/typeahead/typeahead.directive.ts | 51 +- .../visibility-indicator.component.ts | 5 +- static/js/quay-config.module.ts | 3 +- static/js/quay-run.ts | 7 +- static/js/quay.module.ts | 5 +- .../js/services/avatar/avatar.service.impl.ts | 2 +- static/js/services/avatar/avatar.service.ts | 2 +- .../js/services/build/build.service.impl.ts | 5 +- static/js/services/build/build.service.ts | 2 +- .../datafile/datafile.service.impl.ts | 8 +- .../js/services/datafile/datafile.service.ts | 2 +- .../dockerfile/dockerfile.service.impl.ts | 6 +- .../services/dockerfile/dockerfile.service.ts | 2 +- static/js/services/page/page.service.impl.ts | 12 +- static/js/services/page/page.service.ts | 23 +- .../route-builder.service.impl.ts | 6 +- .../route-builder/route-builder.service.ts | 2 +- .../services/util/util.service.impl.spec.ts | 40 -- static/js/services/util/util.service.impl.ts | 39 -- static/js/services/util/util.service.ts | 19 - .../js/services/view-array/view-array.impl.ts | 2 +- static/js/services/view-array/view-array.ts | 2 +- tsconfig.json | 7 +- tslint.json | 30 +- typings.json | 6 - webpack.config.js | 2 +- yarn.lock | 586 +++--------------- 43 files changed, 253 insertions(+), 730 deletions(-) delete mode 100644 static/js/services/util/util.service.impl.spec.ts delete mode 100644 static/js/services/util/util.service.impl.ts delete mode 100644 static/js/services/util/util.service.ts delete mode 100644 typings.json diff --git a/package.json b/package.json index 11ffa8c8e..9d36e33a3 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "test:node": "JASMINE_CONFIG_PATH=static/test/jasmine.json ./node_modules/.bin/jasmine-ts './static/js/**/*.spec.ts'", "e2e": "./node_modules/.bin/ts-node ./node_modules/.bin/protractor static/test/protractor.conf.ts", "build": "NODE_ENV=production ./node_modules/.bin/webpack --progress", - "watch": "./node_modules/.bin/webpack --watch" + "watch": "./node_modules/.bin/webpack --watch", + "lint": "./node_modules/.bin/tslint --type-check -p tsconfig.json -e **/*.spec.ts" }, "repository": { "type": "git", @@ -54,7 +55,6 @@ "@types/react-dom": "0.14.17", "@types/showdown": "^1.4.32", "angular-mocks": "1.6.2", - "angular-ts-decorators": "0.0.19", "css-loader": "0.25.0", "html-loader": "^0.4.5", "jasmine-core": "^2.5.2", @@ -73,8 +73,8 @@ "ts-loader": "^0.9.5", "ts-mocks": "^0.2.2", "ts-node": "^3.0.6", + "tslint": "^5.4.3", "typescript": "^2.2.1", - "typings": "1.4.0", "webpack": "^2.2" } } diff --git a/static/js/decorators/inject/inject.decorator.ts b/static/js/decorators/inject/inject.decorator.ts index dadc20a58..bada5f9c5 100644 --- a/static/js/decorators/inject/inject.decorator.ts +++ b/static/js/decorators/inject/inject.decorator.ts @@ -7,5 +7,5 @@ export function Inject(value: string) { return (target: any, propertyKey: string | symbol, parameterIndex: number): void => { target.$inject = target.$inject = []; target.$inject[parameterIndex] = value; - } + }; } diff --git a/static/js/directives/structural/quay-require/quay-require.directive.ts b/static/js/directives/structural/quay-require/quay-require.directive.ts index 32b15341a..4ac1add29 100644 --- a/static/js/directives/structural/quay-require/quay-require.directive.ts +++ b/static/js/directives/structural/quay-require/quay-require.directive.ts @@ -38,4 +38,4 @@ export class QuayRequireDirective implements AfterContentInit { this.$transclude ]); } -} \ No newline at end of file +} diff --git a/static/js/directives/ui/app-public-view/app-public-view.component.ts b/static/js/directives/ui/app-public-view/app-public-view.component.ts index 104249a66..7326e1c21 100644 --- a/static/js/directives/ui/app-public-view/app-public-view.component.ts +++ b/static/js/directives/ui/app-public-view/app-public-view.component.ts @@ -9,7 +9,9 @@ import { Input, Component, Inject } from 'ng-metadata/core'; templateUrl: '/static/js/directives/ui/app-public-view/app-public-view.component.html' }) export class AppPublicViewComponent { + @Input('<') public repository: any; + private settingsShown: number = 0; private logsShown: number = 0; @@ -17,11 +19,6 @@ export class AppPublicViewComponent { this.updateDescription = this.updateDescription.bind(this); } - private updateDescription(content: string) { - this.repository.description = content; - this.repository.put(); - } - public showSettings(): void { this.settingsShown++; } @@ -29,4 +26,9 @@ export class AppPublicViewComponent { public showLogs(): void { this.logsShown++; } + + private updateDescription(content: string) { + this.repository.description = content; + this.repository.put(); + } } diff --git a/static/js/directives/ui/channel-icon/channel-icon.component.ts b/static/js/directives/ui/channel-icon/channel-icon.component.ts index 6474238c8..444c08a4f 100644 --- a/static/js/directives/ui/channel-icon/channel-icon.component.ts +++ b/static/js/directives/ui/channel-icon/channel-icon.component.ts @@ -44,4 +44,4 @@ export class ChannelIconComponent { var num: number = parseInt(hash.substr(0, 4)); return this.colors[num % this.colors.length]; } -} \ No newline at end of file +} diff --git a/static/js/directives/ui/clipboard-copy/clipboard-copy.directive.ts b/static/js/directives/ui/clipboard-copy/clipboard-copy.directive.ts index 0be17118b..f1beea58e 100644 --- a/static/js/directives/ui/clipboard-copy/clipboard-copy.directive.ts +++ b/static/js/directives/ui/clipboard-copy/clipboard-copy.directive.ts @@ -60,4 +60,4 @@ export class ClipboardCopyDirective implements AfterContentInit, OnDestroy { this.clipboard.destroy(); } } -} \ No newline at end of file +} diff --git a/static/js/directives/ui/cor-tabs/cor-tabs.module.ts b/static/js/directives/ui/cor-tabs/cor-tabs.module.ts index 02570a1b0..f8cee4619 100644 --- a/static/js/directives/ui/cor-tabs/cor-tabs.module.ts +++ b/static/js/directives/ui/cor-tabs/cor-tabs.module.ts @@ -1,4 +1,4 @@ -import { NgModule } from 'ng-metadata/core' +import { NgModule } from 'ng-metadata/core'; import { CorTabsComponent } from './cor-tabs.component'; import { CorTabComponent } from './cor-tab/cor-tab.component'; import { CorNavTabsDirective } from './cor-nav-tabs/cor-nav-tabs.directive'; diff --git a/static/js/directives/ui/duration-input/duration-input.component.ts b/static/js/directives/ui/duration-input/duration-input.component.ts index 937a1e456..de4858bd1 100644 --- a/static/js/directives/ui/duration-input/duration-input.component.ts +++ b/static/js/directives/ui/duration-input/duration-input.component.ts @@ -1,6 +1,7 @@ -import { Input, Output, Component, Inject } from 'ng-metadata/core'; +import { Input, Component, Inject } from 'ng-metadata/core'; import * as moment from "moment"; + /** * A component that allows for selecting a time duration. */ @@ -9,6 +10,7 @@ import * as moment from "moment"; templateUrl: '/static/js/directives/ui/duration-input/duration-input.component.html' }) export class DurationInputComponent implements ng.IComponentController { + @Input('<') public min: string; @Input('<') public max: string; @Input('=?') public value: string; @@ -17,7 +19,7 @@ export class DurationInputComponent implements ng.IComponentController { private min_s: number; private max_s: number; - constructor (@Inject('$scope') private $scope: ng.IScope) { + constructor(@Inject('$scope') private $scope: ng.IScope) { } @@ -33,7 +35,7 @@ export class DurationInputComponent implements ng.IComponentController { } private updateValue(): void { - this.value = this.seconds + 's'; + this.value = `${this.seconds}s`; } private refresh(): void { @@ -41,8 +43,8 @@ export class DurationInputComponent implements ng.IComponentController { this.max_s = this.toSeconds(this.max || '1h'); if (this.value) { - this.seconds = this.toSeconds(this.value || '0s') - }; + this.seconds = this.toSeconds(this.value || '0s'); + } } private durationExplanation(durationSeconds: string): string { diff --git a/static/js/directives/ui/linear-workflow/linear-workflow.component.ts b/static/js/directives/ui/linear-workflow/linear-workflow.component.ts index 1cb82aa56..719eddf37 100644 --- a/static/js/directives/ui/linear-workflow/linear-workflow.component.ts +++ b/static/js/directives/ui/linear-workflow/linear-workflow.component.ts @@ -75,4 +75,4 @@ export class LinearWorkflowComponent { export type SectionInfo = { index: number; component: LinearWorkflowSectionComponent; -} +}; diff --git a/static/js/directives/ui/manage-trigger/manage-trigger.component.ts b/static/js/directives/ui/manage-trigger/manage-trigger.component.ts index f478c9968..9b4797533 100644 --- a/static/js/directives/ui/manage-trigger/manage-trigger.component.ts +++ b/static/js/directives/ui/manage-trigger/manage-trigger.component.ts @@ -17,7 +17,9 @@ export class ManageTriggerComponent implements OnChanges { @Input('<') public githost: string = 'custom-git'; @Input('<') public repository: Repository; @Input('<') public trigger: Trigger; + @Output() public activateTrigger: EventEmitter<{config: TriggerConfig, pull_robot?: any}> = new EventEmitter(); + public config: TriggerConfig; public local: Local = { selectedRepository: {name: ''}, @@ -28,6 +30,7 @@ export class ManageTriggerComponent implements OnChanges { repositoryOptions: {filter: '', predicate: 'score', reverse: false, page: 0, hideStale: true}, robotOptions: {filter: '', predicate: 'score', reverse: false, page: 0}, }; + private namespacesPerPage: number = 10; private repositoriesPerPage: number = 10; private robotsPerPage: number = 10; @@ -174,7 +177,7 @@ export class ManageTriggerComponent implements OnChanges { } private setPossibleContexts(path: string) { - if (this.local.dockerfileLocations.contextMap){ + if (this.local.dockerfileLocations.contextMap) { this.local.contexts = this.local.dockerfileLocations.contextMap[path] || []; } else { this.local.contexts = [path.split('/').slice(0, -1).join('/').concat('/')]; @@ -288,7 +291,7 @@ export class ManageTriggerComponent implements OnChanges { const kind = ref.kind == 'branch' ? 'heads' : 'tags'; const icon = ref.kind == 'branch' ? 'fa-code-fork' : 'fa-tag'; return { - 'value': kind + '/' + ref.name, + 'value': `${kind}/${ref.name}`, 'icon': icon, 'title': ref.name }; diff --git a/static/js/directives/ui/manage-trigger/manage-trigger.view-object.ts b/static/js/directives/ui/manage-trigger/manage-trigger.view-object.ts index 3998cfb27..a0ec1b875 100644 --- a/static/js/directives/ui/manage-trigger/manage-trigger.view-object.ts +++ b/static/js/directives/ui/manage-trigger/manage-trigger.view-object.ts @@ -16,10 +16,13 @@ export class ManageTriggerViewObject { private customGitRepoInput: ElementFinder = element(by.model('$ctrl.buildSource')); private dockerfileLocationInput: ElementFinder = this.sections['dockerfilelocation'].$('input'); - private dockerfileLocationDropdownButton: ElementFinder = this.sections['dockerfilelocation'].$('button[data-toggle=dropdown'); + private dockerfileLocationDropdownButton: ElementFinder = this.sections['dockerfilelocation'] + .$('button[data-toggle=dropdown'); private dockerContextInput: ElementFinder = this.sections['contextlocation'].$('input'); - private dockerContextDropdownButton: ElementFinder = this.sections['contextlocation'].$('button[data-toggle=dropdown'); - private robotAccountOptions: ElementFinder = this.sections['robot'].element(by.repeater('$ctrl.orderedData.visibleEntries')); + private dockerContextDropdownButton: ElementFinder = this.sections['contextlocation'] + .$('button[data-toggle=dropdown'); + private robotAccountOptions: ElementFinder = this.sections['robot'] + .element(by.repeater('$ctrl.orderedData.visibleEntries')); public continue(): Promise { return Promise.resolve(element(by.buttonText('Continue')).click()); diff --git a/static/js/directives/ui/markdown/markdown-editor.component.ts b/static/js/directives/ui/markdown/markdown-editor.component.ts index 97833ac17..8cdf50a85 100644 --- a/static/js/directives/ui/markdown/markdown-editor.component.ts +++ b/static/js/directives/ui/markdown/markdown-editor.component.ts @@ -16,8 +16,10 @@ export class MarkdownEditorComponent { @Input('<') public content: string; @Output() public save: EventEmitter<{editedContent: string}> = new EventEmitter(); @Output() public discard: EventEmitter = new EventEmitter(); + // Textarea is public for testability, should not be directly accessed @ViewChild('#markdown-textarea') public textarea: ng.IAugmentedJQuery; + private editMode: EditMode = "write"; constructor(@Inject('$document') private $document: ng.IDocumentService, @@ -115,9 +117,9 @@ export class MarkdownEditorComponent { private insertText(text: string, startPos: number, endPos: number): void { if (this.browserPlatform === 'firefox') { // FIXME: Ctrl-Z highlights previous text - this.textarea.val(this.textarea.val().substr(0, startPos) + + this.textarea.val(this.textarea.val().substr(0, startPos) + text + - this.textarea.val().substr(endPos, this.textarea.val().length)); + this.textarea.val().substr(endPos, this.textarea.val().length)); } else { // TODO: Test other platforms (IE...) diff --git a/static/js/directives/ui/repository-signing-config/repository-signing-config.component.ts b/static/js/directives/ui/repository-signing-config/repository-signing-config.component.ts index fc9b15e22..67bdbd776 100644 --- a/static/js/directives/ui/repository-signing-config/repository-signing-config.component.ts +++ b/static/js/directives/ui/repository-signing-config/repository-signing-config.component.ts @@ -1,6 +1,7 @@ import { Input, Component, Inject } from 'ng-metadata/core'; import { Repository } from '../../../types/common.types'; + /** * A component that displays the configuration and options for repository signing. */ @@ -9,12 +10,13 @@ import { Repository } from '../../../types/common.types'; templateUrl: '/static/js/directives/ui/repository-signing-config/repository-signing-config.component.html', }) export class RepositorySigningConfigComponent { + @Input('<') public repository: Repository; private enableTrustInfo: {[key: string]: string} = null; private disableTrustInfo: {[key: string]: string} = null; - constructor (@Inject("ApiService") private ApiService: any) { + constructor(@Inject("ApiService") private ApiService: any) { } @@ -41,4 +43,4 @@ export class RepositorySigningConfigComponent { callback(true); }, errorDisplay); } -} \ No newline at end of file +} diff --git a/static/js/directives/ui/search-box/search-box.component.ts b/static/js/directives/ui/search-box/search-box.component.ts index 597019d76..a2ea0281e 100644 --- a/static/js/directives/ui/search-box/search-box.component.ts +++ b/static/js/directives/ui/search-box/search-box.component.ts @@ -43,7 +43,7 @@ export class SearchBoxComponent { private onSelected($event): void { this.autocompleteSelected = true; this.$timeout(() => { - this.$location.url($event['result']['href']) + this.$location.url($event['result']['href']); }, 100); } @@ -54,4 +54,4 @@ export class SearchBoxComponent { this.$location.search('q', $event['value']); }, 10); } -} \ No newline at end of file +} diff --git a/static/js/directives/ui/tag-signing-display/tag-signing-display.component.ts b/static/js/directives/ui/tag-signing-display/tag-signing-display.component.ts index f6852e407..04fcf9b78 100644 --- a/static/js/directives/ui/tag-signing-display/tag-signing-display.component.ts +++ b/static/js/directives/ui/tag-signing-display/tag-signing-display.component.ts @@ -2,6 +2,7 @@ import { Input, Component, Inject } from 'ng-metadata/core'; import { ApostilleDelegationsSet, ApostilleSignatureDocument, ApostilleTagDocument } from '../../../types/common.types'; import * as moment from "moment"; + type TagSigningInfo = { delegations: DelegationInfo[]; delegationsByName: {[delegationName: string]: DelegationInfo}; @@ -9,7 +10,8 @@ type TagSigningInfo = { hasExpiringSoon: boolean; hasExpired: boolean; hasInvalid: boolean; -} +}; + type DelegationInfo = { delegationName: string; @@ -20,7 +22,9 @@ type DelegationInfo = { isExpiringSoon: boolean }; -var RELEASES = ['targets/releases', 'targets']; + +const RELEASES = ['targets/releases', 'targets']; + /** * A component that displays the signing status of a tag in the repository view. @@ -30,13 +34,16 @@ var RELEASES = ['targets/releases', 'targets']; templateUrl: '/static/js/directives/ui/tag-signing-display/tag-signing-display.component.html', }) export class TagSigningDisplayComponent { + @Input('<') public compact: boolean; @Input('<') public tag: any; @Input('<') public delegations: ApostilleDelegationsSet; private cachedSigningInfo: TagSigningInfo | null = null; - constructor(@Inject("$sanitize") private $sanitize: ng.sanitize.ISanitizeService) {} + constructor(@Inject("$sanitize") private $sanitize: ng.sanitize.ISanitizeService) { + + } private base64ToHex(base64String: string): string { // Based on: http://stackoverflow.com/questions/39460182/decode-base64-to-hexadecimal-string-with-javascript @@ -49,13 +56,15 @@ export class TagSigningDisplayComponent { var hexString = ''; for (var i = 0; i < raw.length; ++i) { var char = raw.charCodeAt(i); - var hex = char.toString(16) + var hex = char.toString(16); hexString += (hex.length == 2 ? hex : '0' + hex); } return hexString; } - private buildDelegationInfo(tag: any, delegationName: string, delegation: ApostilleSignatureDocument): DelegationInfo { + private buildDelegationInfo(tag: any, + delegationName: string, + delegation: ApostilleSignatureDocument): DelegationInfo { var digest_without_prefix = tag.manifest_digest.substr('sha256:'.length); var hex_signature = this.base64ToHex(delegation.targets[tag.name].hashes['sha256']); @@ -70,7 +79,7 @@ export class TagSigningDisplayComponent { 'delegationHash': hex_signature, 'isExpired': expires.isSameOrBefore(now), 'isExpiringSoon': !expires.isSameOrBefore(now) && expires.isSameOrBefore(withOneWeek), - } + }; } private buildTagSigningInfo(tag: any, delegationSet: ApostilleDelegationsSet): TagSigningInfo { @@ -80,13 +89,13 @@ export class TagSigningDisplayComponent { 'hasExpired': false, 'hasExpiringSoon': false, 'hasInvalid': false, - } + }; // Find all delegations containing the tag as a target. Object.keys(delegationSet.delegations).forEach((delegationName) => { var delegation = delegationSet.delegations[delegationName]; if (delegation.targets[tag.name]) { - var DelegationInfo = this.buildDelegationInfo(tag, delegationName, delegation) + var DelegationInfo = this.buildDelegationInfo(tag, delegationName, delegation); info.delegations.push(DelegationInfo); info.delegationsByName[delegationName] = DelegationInfo; @@ -173,4 +182,4 @@ export class TagSigningDisplayComponent { return 'invalid-signed'; } -} \ No newline at end of file +} diff --git a/static/js/directives/ui/time-machine-settings/time-machine-settings.component.ts b/static/js/directives/ui/time-machine-settings/time-machine-settings.component.ts index 092ec6a16..5dfbaf29d 100644 --- a/static/js/directives/ui/time-machine-settings/time-machine-settings.component.ts +++ b/static/js/directives/ui/time-machine-settings/time-machine-settings.component.ts @@ -1,6 +1,7 @@ import { Input, Component, Inject } from 'ng-metadata/core'; import * as moment from "moment"; + /** * A component that displays settings for a namespace for time machine. */ @@ -9,6 +10,7 @@ import * as moment from "moment"; templateUrl: '/static/js/directives/ui/time-machine-settings/time-machine-settings.component.html' }) export class TimeMachineSettingsComponent implements ng.IComponentController { + @Input('<') public user: any; @Input('<') public organization: any; @@ -16,7 +18,7 @@ export class TimeMachineSettingsComponent implements ng.IComponentController { private current_s: number; private updating: boolean; - constructor (@Inject('Config') private Config: any, @Inject('ApiService') private ApiService: any, + constructor(@Inject('Config') private Config: any, @Inject('ApiService') private ApiService: any, @Inject('Features') private Features: any) { this.current_s = 0; this.initial_s = 0; @@ -51,7 +53,7 @@ export class TimeMachineSettingsComponent implements ng.IComponentController { this.updating = true; var errorDisplay = this.ApiService.errorDisplay('Could not update time machine setting', () => { this.updating = false; - }) + }); var method = (this.user ? this.ApiService.changeUserDetails : this.ApiService.changeOrganizationDetails); diff --git a/static/js/directives/ui/typeahead/typeahead.directive.ts b/static/js/directives/ui/typeahead/typeahead.directive.ts index 8b494636c..487aac8eb 100644 --- a/static/js/directives/ui/typeahead/typeahead.directive.ts +++ b/static/js/directives/ui/typeahead/typeahead.directive.ts @@ -1,6 +1,7 @@ import { Input, Output, Directive, Inject, AfterContentInit, EventEmitter, HostListener } from 'ng-metadata/core'; import * as $ from 'jquery'; + /** * Directive which decorates an with a typeahead autocomplete. */ @@ -8,15 +9,15 @@ import * as $ from 'jquery'; selector: '[typeahead]', }) export class TypeaheadDirective implements AfterContentInit { - @Output('typeahead') typeahead = new EventEmitter(); - @Input('taDisplayKey') displayKey: string = ''; - @Input('taSuggestionTmpl') suggestionTemplate: string = ''; - @Input('taClearOnSelect') clearOnSelect: boolean = false; - @Input('taDebounce') debounce: number = 250; + @Input('taDisplayKey') public displayKey: string = ''; + @Input('taSuggestionTmpl') public suggestionTemplate: string = ''; + @Input('taClearOnSelect') public clearOnSelect: boolean = false; + @Input('taDebounce') public debounce: number = 250; - @Output('taSelected') selected = new EventEmitter(); - @Output('taEntered') entered = new EventEmitter(); + @Output('typeahead') public typeahead = new EventEmitter(); + @Output('taSelected') public selected = new EventEmitter(); + @Output('taEntered') public entered = new EventEmitter(); private itemSelected: boolean = false; private existingTimer: ng.IPromise = null; @@ -28,10 +29,25 @@ export class TypeaheadDirective implements AfterContentInit { @Inject('$timeout') private $timeout: ng.ITimeoutService) { } + @HostListener('keyup', ['$event']) + public onKeyup(event: JQueryKeyEventObject): void { + if (!this.itemSelected && event.keyCode == 13) { + this.entered.emit({ + 'value': $(this.$element).typeahead('val'), + 'callback': (reset: boolean) => { + if (reset) { + this.itemSelected = false; + $(this.$element).typeahead('val', ''); + } + } + }); + } + } + public ngAfterContentInit(): void { var templates = null; if (this.suggestionTemplate) { - templates = {} + templates = {}; if (this.suggestionTemplate) { templates['suggestion'] = this.buildTemplateHandler(this.suggestionTemplate); @@ -42,7 +58,7 @@ export class TypeaheadDirective implements AfterContentInit { if (this.clearOnSelect) { $(this.$element).typeahead('val', ''); } - this.selected.emit({'result': suggestion}) + this.selected.emit({'result': suggestion}); this.itemSelected = true; }); @@ -72,21 +88,6 @@ export class TypeaheadDirective implements AfterContentInit { }, this.debounce); } - @HostListener('keyup', ['$event']) - public onKeyup(event: JQueryKeyEventObject): void { - if (!this.itemSelected && event.keyCode == 13) { - this.entered.emit({ - 'value': $(this.$element).typeahead('val'), - 'callback': (reset: boolean) => { - if (reset) { - this.itemSelected = false; - $(this.$element).typeahead('val', ''); - } - } - }); - } - } - private buildTemplateHandler(templateUrl: string): Function { return (value) => { var resultDiv = document.createElement('div'); @@ -101,4 +102,4 @@ export class TypeaheadDirective implements AfterContentInit { return resultDiv; }; } -} \ No newline at end of file +} diff --git a/static/js/directives/ui/visibility-indicator/visibility-indicator.component.ts b/static/js/directives/ui/visibility-indicator/visibility-indicator.component.ts index b5fb32940..fdcf2d4e4 100644 --- a/static/js/directives/ui/visibility-indicator/visibility-indicator.component.ts +++ b/static/js/directives/ui/visibility-indicator/visibility-indicator.component.ts @@ -10,9 +10,6 @@ import { Input, Component } from 'ng-metadata/core'; templateUrl: '/static/js/directives/ui/visibility-indicator/visibility-indicator.component.html' }) export class VisibilityIndicatorComponent { + @Input('<') public repository: any; - - constructor() { - - } } diff --git a/static/js/quay-config.module.ts b/static/js/quay-config.module.ts index b58334937..171f2e0b9 100644 --- a/static/js/quay-config.module.ts +++ b/static/js/quay-config.module.ts @@ -84,7 +84,8 @@ function provideConfig($provide: ng.auto.IProvideService, var tooltipFactory: any = $tooltipProvider.$get[$tooltipProvider.$get.length - 1]; $tooltipProvider.$get[$tooltipProvider.$get.length - 1] = function($window: ng.IWindowService) { if ('ontouchstart' in $window) { - var existing: any = tooltipFactory.apply(this, arguments); + const existing: any = tooltipFactory.apply(this, arguments); + return function(element) { // Note: We only disable bs-tooltip's themselves. $tooltip is used for other things // (such as the datepicker), so we need to be specific when canceling it. diff --git a/static/js/quay-run.ts b/static/js/quay-run.ts index 3001f97c1..561a2cca9 100644 --- a/static/js/quay-run.ts +++ b/static/js/quay-run.ts @@ -45,7 +45,8 @@ export function provideRun($rootScope: QuayRunScope, return true; } - const invalid_token: boolean = response.data['title'] == 'invalid_token' || response.data['error_type'] == 'invalid_token'; + const invalid_token: boolean = response.data['title'] == 'invalid_token' || + response.data['error_type'] == 'invalid_token'; if (response !== undefined && response.status == 401 && invalid_token && @@ -92,7 +93,7 @@ export function provideRun($rootScope: QuayRunScope, } }); - $rootScope.$on('$routeChangeSuccess', function (event, current, previous) { + $rootScope.$on('$routeChangeSuccess', function(event, current, previous) { $rootScope.current = current.$$route; $rootScope.currentPage = current; $rootScope.pageClass = ''; @@ -126,7 +127,7 @@ interface QuayRunScope extends ng.IRootScopeService { currentPage: any; current: any; title: any; - description: string, + description: string; pageClass: any; newLayout: any; fixFooter: any; diff --git a/static/js/quay.module.ts b/static/js/quay.module.ts index c274af627..45c1837ce 100644 --- a/static/js/quay.module.ts +++ b/static/js/quay.module.ts @@ -13,7 +13,9 @@ import { CorTableComponent } from './directives/ui/cor-table/cor-table.component import { CorTableColumn } from './directives/ui/cor-table/cor-table-col.component'; import { ChannelIconComponent } from './directives/ui/channel-icon/channel-icon.component'; import { TagSigningDisplayComponent } from './directives/ui/tag-signing-display/tag-signing-display.component'; -import { RepositorySigningConfigComponent } from './directives/ui/repository-signing-config/repository-signing-config.component'; +import { + RepositorySigningConfigComponent +} from './directives/ui/repository-signing-config/repository-signing-config.component'; import { TimeMachineSettingsComponent } from './directives/ui/time-machine-settings/time-machine-settings.component'; import { DurationInputComponent } from './directives/ui/duration-input/duration-input.component'; import { SearchBoxComponent } from './directives/ui/search-box/search-box.component'; @@ -22,7 +24,6 @@ import { BuildServiceImpl } from './services/build/build.service.impl'; import { AvatarServiceImpl } from './services/avatar/avatar.service.impl'; import { DockerfileServiceImpl } from './services/dockerfile/dockerfile.service.impl'; import { DataFileServiceImpl } from './services/datafile/datafile.service.impl'; -import { UtilServiceImpl } from './services/util/util.service.impl'; import { QuayRequireDirective } from './directives/structural/quay-require/quay-require.directive'; import { MarkdownInputComponent } from './directives/ui/markdown/markdown-input.component'; import { MarkdownViewComponent } from './directives/ui/markdown/markdown-view.component'; diff --git a/static/js/services/avatar/avatar.service.impl.ts b/static/js/services/avatar/avatar.service.impl.ts index a9eb54d36..8cc66477f 100644 --- a/static/js/services/avatar/avatar.service.impl.ts +++ b/static/js/services/avatar/avatar.service.impl.ts @@ -47,4 +47,4 @@ export class AvatarServiceImpl implements AvatarService { return this.cache[cacheKey] = hash; } -} \ No newline at end of file +} diff --git a/static/js/services/avatar/avatar.service.ts b/static/js/services/avatar/avatar.service.ts index ec817e9fd..7abec8e08 100644 --- a/static/js/services/avatar/avatar.service.ts +++ b/static/js/services/avatar/avatar.service.ts @@ -19,4 +19,4 @@ export abstract class AvatarService { * @return hash The hash for the avatar image. */ public abstract computeHash(email?: string, name?: string): string; -} \ No newline at end of file +} diff --git a/static/js/services/build/build.service.impl.ts b/static/js/services/build/build.service.impl.ts index 6183ea1f7..5648efe28 100644 --- a/static/js/services/build/build.service.impl.ts +++ b/static/js/services/build/build.service.impl.ts @@ -73,7 +73,8 @@ export class BuildServiceImpl implements BuildService { break; case 'internalerror': - message = 'An internal system error occurred while building; the build will be retried in the next few minutes.'; + message = 'An internal system error occurred while building; ' + + 'the build will be retried in the next few minutes.'; break; case 'cancelled': @@ -86,4 +87,4 @@ export class BuildServiceImpl implements BuildService { return message; } -} \ No newline at end of file +} diff --git a/static/js/services/build/build.service.ts b/static/js/services/build/build.service.ts index d07f9d111..8cdabbfae 100644 --- a/static/js/services/build/build.service.ts +++ b/static/js/services/build/build.service.ts @@ -16,4 +16,4 @@ export abstract class BuildService { * @return buildMessage The message associated with the given phase. */ public abstract getBuildMessage(phase: string): string; -} \ No newline at end of file +} diff --git a/static/js/services/datafile/datafile.service.impl.ts b/static/js/services/datafile/datafile.service.impl.ts index f9bc83ed8..e1e9cfc6f 100644 --- a/static/js/services/datafile/datafile.service.impl.ts +++ b/static/js/services/datafile/datafile.service.impl.ts @@ -86,7 +86,7 @@ export class DataFileServiceImpl implements DataFileService { var zip = null; var zipFiles = null; try { - var zip = new JSZip(buf); + zip = new JSZip(buf); zipFiles = zip.files; } catch (e) { failure(); @@ -164,9 +164,9 @@ export class DataFileServiceImpl implements DataFileService { 'name': this.getName(path), 'path': path, 'canRead': true, - 'toBlob': (function(currentFile) { + 'toBlob': (function(file) { return function() { - return new Blob([currentFile.buffer], {type: 'application/octet-binary'}); + return new Blob([file.buffer], {type: 'application/octet-binary'}); }; }(currentFile)) }); @@ -179,4 +179,4 @@ export class DataFileServiceImpl implements DataFileService { failure(); } } -} \ No newline at end of file +} diff --git a/static/js/services/datafile/datafile.service.ts b/static/js/services/datafile/datafile.service.ts index 47c990d83..e79794694 100644 --- a/static/js/services/datafile/datafile.service.ts +++ b/static/js/services/datafile/datafile.service.ts @@ -45,4 +45,4 @@ export abstract class DataFileService { progress: (percent: number) => void, error: () => void, loaded: (uint8array: Uint8Array) => void): void; -} \ No newline at end of file +} diff --git a/static/js/services/dockerfile/dockerfile.service.impl.ts b/static/js/services/dockerfile/dockerfile.service.impl.ts index 37db16b52..9c065b33f 100644 --- a/static/js/services/dockerfile/dockerfile.service.impl.ts +++ b/static/js/services/dockerfile/dockerfile.service.impl.ts @@ -104,11 +104,11 @@ export class DockerfileInfoImpl implements DockerfileInfo { return null; } - if (baseImage.indexOf(this.config.getDomain() + '/') != 0) { + if (baseImage.indexOf(`${this.config.getDomain()}/`) != 0) { return null; } - return baseImage.substring(this.config.getDomain().length + 1); + return baseImage.substring(this.config.getDomain().length + 1); } public getBaseImage(): string | null { @@ -152,4 +152,4 @@ export class DockerfileInfoImpl implements DockerfileInfo { return baseImageAndTag; } -} \ No newline at end of file +} diff --git a/static/js/services/dockerfile/dockerfile.service.ts b/static/js/services/dockerfile/dockerfile.service.ts index 3c5186b6b..9f5648d11 100644 --- a/static/js/services/dockerfile/dockerfile.service.ts +++ b/static/js/services/dockerfile/dockerfile.service.ts @@ -35,4 +35,4 @@ export abstract class DockerfileInfo { * @return baseImageAndTag The base image and tag. */ public abstract getBaseImageAndTag(): string | null; -} \ No newline at end of file +} diff --git a/static/js/services/page/page.service.impl.ts b/static/js/services/page/page.service.impl.ts index a018bf6ed..4bfd77cbf 100644 --- a/static/js/services/page/page.service.impl.ts +++ b/static/js/services/page/page.service.impl.ts @@ -1,15 +1,11 @@ import { Injectable } from 'ng-metadata/core'; -import { PageService } from './page.service'; +import { PageService, QuayPage, QuayPageProfile } from './page.service'; @Injectable(PageService.name) export class PageServiceImpl implements ng.IServiceProvider { - private pages: any = {}; - - constructor() { - - } + private pages: {[pageName: string]: QuayPage} = {}; public create(pageName: string, templateName: string, @@ -26,8 +22,8 @@ export class PageServiceImpl implements ng.IServiceProvider { } } - public get(pageName: string, profiles: any[]): any[] | null { - for (var i = 0; i < profiles.length; ++i) { + public get(pageName: string, profiles: QuayPageProfile[]): [QuayPageProfile, QuayPage] | null { + for (let i = 0; i < profiles.length; ++i) { var current = profiles[i]; var key = current.id + ':' + pageName; var page = this.pages[key]; diff --git a/static/js/services/page/page.service.ts b/static/js/services/page/page.service.ts index 829959d2a..768453a49 100644 --- a/static/js/services/page/page.service.ts +++ b/static/js/services/page/page.service.ts @@ -22,7 +22,7 @@ export abstract class PageService implements ng.IServiceProvider { * @param pageName The name of the page. * @param profiles Available profiles to search. */ - public abstract get(pageName: string, profiles: any[]): any[] | null; + public abstract get(pageName: string, profiles: QuayPageProfile[]): [QuayPageProfile, QuayPage] | null; /** * Provide the service instance. @@ -30,3 +30,24 @@ export abstract class PageService implements ng.IServiceProvider { */ public abstract $get(): PageService; } + + +/** + * A type representing a registered application page. + */ +export type QuayPage = { + name: string; + controller: ng.IController; + templateName: string, + flags: {[key: string]: any}; +}; + + +/** + * Represents a page profile type. + */ +export type QuayPageProfile = { + id: string; + templatePath: string; +}; + diff --git a/static/js/services/route-builder/route-builder.service.impl.ts b/static/js/services/route-builder/route-builder.service.impl.ts index 901dd7c15..014cbce31 100644 --- a/static/js/services/route-builder/route-builder.service.impl.ts +++ b/static/js/services/route-builder/route-builder.service.impl.ts @@ -1,13 +1,13 @@ import { RouteBuilder } from './route-builder.service'; import { Injectable, Inject } from 'ng-metadata/core'; -import { PageService } from '../page/page.service'; +import { PageService, QuayPage, QuayPageProfile } from '../page/page.service'; @Injectable(RouteBuilder.name) export class RouteBuilderImpl implements RouteBuilder { public currentProfile: string = 'layout'; - public profiles: any[] = [ + public profiles: QuayPageProfile[] = [ // Start with the old pages (if we asked for it). {id: 'old-layout', templatePath: '/static/partials/'}, // Fallback back combined new/existing pages. @@ -50,4 +50,4 @@ export class RouteBuilderImpl implements RouteBuilder { return this; } -} \ No newline at end of file +} diff --git a/static/js/services/route-builder/route-builder.service.ts b/static/js/services/route-builder/route-builder.service.ts index 0d99ab075..3b6a43c24 100644 --- a/static/js/services/route-builder/route-builder.service.ts +++ b/static/js/services/route-builder/route-builder.service.ts @@ -15,4 +15,4 @@ export abstract class RouteBuilder { * @param pagename The name of the page to associate with this route. */ public abstract route(path: string, pagename: string): RouteBuilder; -} \ No newline at end of file +} diff --git a/static/js/services/util/util.service.impl.spec.ts b/static/js/services/util/util.service.impl.spec.ts deleted file mode 100644 index 92748be13..000000000 --- a/static/js/services/util/util.service.impl.spec.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { UtilServiceImpl } from './util.service.impl'; - - -describe("UtilServiceImpl", () => { - var utilServiceImpl: UtilServiceImpl; - var $sanitizeMock: ng.sanitize.ISanitizeService; - - beforeEach(() => { - $sanitizeMock = jasmine.createSpy('$sanitizeSpy').and.returnValue(""); - utilServiceImpl = new UtilServiceImpl($sanitizeMock); - }); - - describe("isAdBlockEnabled", () => { - // TODO - }); - - describe("isEmailAddress", () => { - // TODO - }); - - describe("getMarkedDown", () => { - // TODO - }); - - describe("getFirstMarkdownLineAsText", () => { - // TODO - }); - - describe("escapeHtmlString", () => { - // TODO - }); - - describe("getRestUrl", () => { - // TODO - }); - - describe("textToSafeHtml", () => { - // TODO - }); -}); diff --git a/static/js/services/util/util.service.impl.ts b/static/js/services/util/util.service.impl.ts deleted file mode 100644 index 390b5913c..000000000 --- a/static/js/services/util/util.service.impl.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Injectable, Inject } from 'ng-metadata/core'; -import { UtilService } from './util.service'; - - -@Injectable(UtilService.name) -export class UtilServiceImpl implements UtilService { - - constructor(@Inject('$sanitize') private $sanitize: ng.sanitize.ISanitizeService) { - - } - - public isAdBlockEnabled(callback: (isEnabled: boolean) => void): void { - - } - - public isEmailAddress(str: string): boolean { - return null; - } - - public getMarkedDown(str: string): string { - return null; - } - - public getFirstMarkdownLineAsText(commentString: string, placeholderNeeded: boolean): string { - return null; - } - - public escapeHtmlString(text: string): string { - return null; - } - - public getRestUrl(args: any[]): string { - return null; - } - - public textToSafeHtml(text: string): string { - return null; - } -} \ No newline at end of file diff --git a/static/js/services/util/util.service.ts b/static/js/services/util/util.service.ts deleted file mode 100644 index 688421a40..000000000 --- a/static/js/services/util/util.service.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Service which exposes various utility methods. - */ -export abstract class UtilService { - - public abstract isAdBlockEnabled(callback: (isEnabled: boolean) => void): void; - - public abstract isEmailAddress(str: string): boolean; - - public abstract getMarkedDown(str: string): string; - - public abstract getFirstMarkdownLineAsText(commentString: string, placeholderNeeded: boolean): string; - - public abstract escapeHtmlString(text: string): string; - - public abstract getRestUrl(args: any[]): string; - - public abstract textToSafeHtml(text: string): string; -} diff --git a/static/js/services/view-array/view-array.impl.ts b/static/js/services/view-array/view-array.impl.ts index 60032dab4..b03f27bf6 100644 --- a/static/js/services/view-array/view-array.impl.ts +++ b/static/js/services/view-array/view-array.impl.ts @@ -93,4 +93,4 @@ export class ViewArrayImpl implements ViewArray { this.timerRef = null; } } -} \ No newline at end of file +} diff --git a/static/js/services/view-array/view-array.ts b/static/js/services/view-array/view-array.ts index 4b7abbd35..ca30436d7 100644 --- a/static/js/services/view-array/view-array.ts +++ b/static/js/services/view-array/view-array.ts @@ -68,4 +68,4 @@ export abstract class ViewArray { * @return viewArray New ViewArray instance. */ public abstract create(): ViewArrayImpl; -} \ No newline at end of file +} diff --git a/tsconfig.json b/tsconfig.json index 58312dc96..605cfdeed 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,22 +1,17 @@ { "compilerOptions": { "baseUrl": ".", - "jsx": "react", "module": "commonjs", "outDir": "./build/", "target": "es5", "lib": ["es2017", "dom"], "experimentalDecorators": true, - "sourceMap": true, - "paths": { - "sass/*": ["./static/css/directives/components/pages/*"] - } + "sourceMap": true }, "exclude": [ "node_modules" ], "include": [ - "./static/js/**/*.tsx", "./static/js/**/*.ts" ] } diff --git a/tslint.json b/tslint.json index 10a4b36d3..c183826ba 100644 --- a/tslint.json +++ b/tslint.json @@ -1,5 +1,29 @@ { - "rules": { - "no-default-export": true + "rules": { + "no-default-export": true, + "member-access": true, + "member-ordering": [true, {"order": "fields-first"}], + "no-empty-interface": true, + "no-namespace": true, + "no-reference": true, + "curly": true, + "no-conditional-assignment": true, + "no-duplicate-super": true, + "no-empty": true, + "no-invalid-template-strings": true, + "no-misused-new": true, + "no-shadowed-variable": true, + "no-unbound-method": true, + "restrict-plus-operands": true, + "eofline": true, + "indent": [true, "spaces", 2], + "max-line-length": [true, 120], + "class-name": true, + "import-spacing": true, + "align": true, + "new-parens": true, + "semicolon": true, + "space-before-function-paren": [true, "never"], + "whitespace": [true, "check-decl", "check-operator", "check-module", "check-separator", "check-type", "check-preblock"] } -} \ No newline at end of file +} diff --git a/typings.json b/typings.json deleted file mode 100644 index b01c490f5..000000000 --- a/typings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "globalDependencies": { - "react": "registry:dt/react#0.14.0+20160927082313", - "react-dom": "registry:dt/react-dom#0.14.0+20160412154040" - } -} diff --git a/webpack.config.js b/webpack.config.js index 5573f4d04..a179c1ceb 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -21,7 +21,7 @@ var config = { module: { rules: [ { - test: /\.tsx?$/, + test: /\.ts?$/, use: ["ts-loader"], exclude: /node_modules/ }, diff --git a/yarn.lock b/yarn.lock index 61c278bb0..f442cf385 100644 --- a/yarn.lock +++ b/yarn.lock @@ -153,22 +153,10 @@ angular-sanitize@1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/angular-sanitize/-/angular-sanitize-1.6.2.tgz#8a327c1acb2c14f50da5b5cad5ea452750a1a375" -angular-ts-decorators@0.0.19: - version "0.0.19" - resolved "https://registry.yarnpkg.com/angular-ts-decorators/-/angular-ts-decorators-0.0.19.tgz#071f6a4f791fe661a91cf3b1925e02fe593076ef" - dependencies: - reflect-metadata "^0.1.8" - angular@1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.2.tgz#d0b677242ac4bf9ae81424297c6320973af4bb5a" -ansi-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" - dependencies: - string-width "^1.0.1" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -177,7 +165,7 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -any-promise@^1.0.0, any-promise@^1.1.0, any-promise@^1.3.0: +any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -192,10 +180,6 @@ aproba@^1.0.3: version "1.1.1" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - are-we-there-yet@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" @@ -233,7 +217,7 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" -array-uniq@^1.0.1, array-uniq@^1.0.2: +array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -324,7 +308,7 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-code-frame@^6.11.0: +babel-code-frame@^6.11.0, babel-code-frame@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" dependencies: @@ -340,6 +324,10 @@ balanced-match@^0.4.1, balanced-match@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" @@ -388,7 +376,7 @@ blocking-proxy@0.0.5: dependencies: minimist "^1.2.0" -bluebird@^3.1.1, bluebird@^3.3.0: +bluebird@^3.3.0: version "3.4.7" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" @@ -431,20 +419,6 @@ bootstrap@^3.3, bootstrap@^3.3.2: version "3.3.7" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.3.7.tgz#5a389394549f23330875a3b150656574f8a9eb71" -boxen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" - dependencies: - ansi-align "^1.1.0" - camelcase "^2.1.0" - chalk "^1.1.1" - cli-boxes "^1.0.0" - filled-array "^1.0.0" - object-assign "^4.0.1" - repeating "^2.0.0" - string-width "^1.0.1" - widest-line "^1.0.0" - brace-expansion@^1.0.0: version "1.1.6" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" @@ -452,6 +426,13 @@ brace-expansion@^1.0.0: balanced-match "^0.4.1" concat-map "0.0.1" +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + braces@^0.1.2: version "0.1.5" resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" @@ -584,7 +565,7 @@ camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" -camelcase@^2.0.0, camelcase@^2.1.0: +camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -605,10 +586,6 @@ caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624: version "1.0.30000628" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000628.tgz#3d010e2a8e2537a8d135792e90e4f2ce0eb838cc" -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" - caseless@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" @@ -620,7 +597,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -663,10 +640,6 @@ clean-css@4.1.x: dependencies: source-map "0.5.x" -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - clipboard@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-1.6.1.tgz#65c5b654812466b0faab82dc6ba0f1d2f8e4be53" @@ -741,17 +714,10 @@ colormin@^1.0.5: css-color-names "0.0.4" has "^1.0.1" -colors@^1.0.3, colors@^1.1.0, colors@~1.1.2: +colors@^1.0.3, colors@^1.1.0, colors@^1.1.2, colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" -columnify@^1.5.2: - version "1.5.4" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - dependencies: - strip-ansi "^3.0.0" - wcwidth "^1.0.0" - combine-lists@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" @@ -790,28 +756,6 @@ 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.7: - version "1.5.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" - dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" - -configstore@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" - dependencies: - dot-prop "^3.0.0" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - object-assign "^4.0.1" - os-tmpdir "^1.0.0" - osenv "^0.1.0" - uuid "^2.0.1" - write-file-atomic "^1.1.2" - xdg-basedir "^2.0.0" - connect@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.2.tgz#694e8d20681bfe490282c8ab886be98f09f42fe7" @@ -858,12 +802,6 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" -create-error-class@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" - create-hash@^1.1.0, create-hash@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" @@ -1009,7 +947,7 @@ dateformat@^1.0.6: get-stdin "^4.0.1" meow "^3.3.0" -debug@2, debug@2.6.7, debug@^2.2.0: +debug@2, debug@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" dependencies: @@ -1039,12 +977,6 @@ 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" - dependencies: - clone "^1.0.2" - defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" @@ -1084,17 +1016,11 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" -diff@^3.1.0: +diff@^3.1.0, diff@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" @@ -1119,18 +1045,6 @@ domain-browser@^1.1.1: version "1.1.7" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - dependencies: - is-obj "^1.0.0" - -duplexer2@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - dependencies: - readable-stream "^2.0.2" - ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -1381,10 +1295,6 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" -filled-array@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" - finalhandler@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89" @@ -1422,7 +1332,7 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -form-data@^2.0.0, form-data@~2.1.1: +form-data@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" dependencies: @@ -1556,27 +1466,7 @@ good-listener@^1.2.0: dependencies: delegate "^3.1.2" -got@^5.0.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" - dependencies: - create-error-class "^3.0.1" - duplexer2 "^0.1.4" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - node-status-codes "^1.0.0" - object-assign "^4.0.1" - parse-json "^2.1.0" - pinkie-promise "^2.0.0" - read-all-stream "^3.0.0" - readable-stream "^2.0.5" - timed-out "^3.0.0" - unzip-response "^1.0.2" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2: +graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1623,7 +1513,7 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" -has-unicode@^2.0.0, has-unicode@^2.0.1: +has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -1708,14 +1598,6 @@ http-errors@~1.6.1: setprototypeof "1.0.3" statuses ">= 1.3.1 < 2" -http-proxy-agent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz#cc1ce38e453bf984a0f7702d2dd59c73d081284a" - dependencies: - agent-base "2" - debug "2" - extend "3" - http-proxy@^1.13.0: version "1.16.2" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" @@ -1755,10 +1637,6 @@ ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" @@ -1796,12 +1674,6 @@ interpret@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" -invariant@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -1810,13 +1682,6 @@ is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" -is-absolute@^0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" - dependencies: - is-relative "^0.2.1" - is-windows "^0.2.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -1882,10 +1747,6 @@ is-my-json-valid@^2.12.4: jsonpointer "^4.0.0" xtend "^4.0.0" -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - is-number@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" @@ -1896,10 +1757,6 @@ is-number@^2.0.2, is-number@^2.1.0: dependencies: kind-of "^3.0.2" -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - 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" @@ -1932,24 +1789,6 @@ is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - -is-relative@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" - dependencies: - is-unc-path "^0.1.1" - -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - -is-stream@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - is-svg@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" @@ -1960,20 +1799,10 @@ is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" -is-unc-path@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" - dependencies: - unc-path-regex "^0.1.0" - is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" -is-windows@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" - isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -1990,7 +1819,7 @@ isexe@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" -isobject@^2.0.0, isobject@^2.1.0: +isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" dependencies: @@ -2200,20 +2029,10 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.0.2" -latest-version@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" - dependencies: - package-json "^2.0.0" - lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" -lazy-req@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -2227,10 +2046,6 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -listify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/listify/-/listify-1.0.0.tgz#03ca7ba2d150d4267773f74e57558d1053d2bee3" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -2262,10 +2077,6 @@ loader-utils@^1.0.2: emojis-list "^2.0.0" json5 "^0.5.0" -lockfile@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79" - lodash._createcompounder@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz#5dd2cb55372d6e70e0e2392fb2304d6631091075" @@ -2322,12 +2133,6 @@ longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" -loose-envify@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" @@ -2339,10 +2144,6 @@ lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - lru-cache@2.2.x: version "2.2.4" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" @@ -2351,13 +2152,7 @@ macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" -make-error-cause@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/make-error-cause/-/make-error-cause-1.2.2.tgz#df0388fcd0b37816dff0a5fb8108939777dcbc9d" - dependencies: - make-error "^1.2.0" - -make-error@^1.1.1, make-error@^1.2.0: +make-error@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.2.1.tgz#9a6dfb4844423b9f145806728d05c6e935670e75" @@ -2452,6 +2247,12 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.0.0" +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -2460,7 +2261,7 @@ minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -2561,22 +2362,12 @@ node-pre-gyp@^0.6.29: tar "~2.2.1" tar-pack "~3.3.0" -node-status-codes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" - nopt@3.x, nopt@~3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: abbrev "1" -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - dependencies: - abbrev "1" - normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.3.5" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" @@ -2647,12 +2438,6 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -object.pick@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.2.0.tgz#b5392bee9782da6d9fb7d6afaf539779f1234c2b" - dependencies: - isobject "^2.1.0" - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -2697,36 +2482,16 @@ os-browserify@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - os-locale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" dependencies: lcid "^1.0.0" -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" -osenv@^0.1.0: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -package-json@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" - dependencies: - got "^5.0.0" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - pako@~0.2.0: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" @@ -2756,7 +2521,7 @@ parse-glob@^3.0.4: is-extglob "^1.0.0" is-glob "^2.0.0" -parse-json@^2.1.0, parse-json@^2.2.0: +parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" dependencies: @@ -2802,6 +2567,10 @@ path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -2830,41 +2599,6 @@ pinkie@^2.0.0, pinkie@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" -popsicle-proxy-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/popsicle-proxy-agent/-/popsicle-proxy-agent-3.0.0.tgz#b9133c55d945759ab7ee61b7711364620d3aeadc" - dependencies: - http-proxy-agent "^1.0.0" - https-proxy-agent "^1.0.0" - -popsicle-retry@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/popsicle-retry/-/popsicle-retry-3.2.1.tgz#e06e866533b42a7a123eb330cbe63a7cebcba10c" - dependencies: - any-promise "^1.1.0" - xtend "^4.0.1" - -popsicle-rewrite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/popsicle-rewrite/-/popsicle-rewrite-1.0.0.tgz#1dd4e8ea9c3182351fb820f87934d992f7fb9007" - -popsicle-status@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/popsicle-status/-/popsicle-status-2.0.0.tgz#54e12722376efba0a353abdf53cbf1ce0e852efa" - -popsicle@^8.0.2: - version "8.2.0" - resolved "https://registry.yarnpkg.com/popsicle/-/popsicle-8.2.0.tgz#ff4401005cab43a9418a91410611c00197712d21" - dependencies: - any-promise "^1.3.0" - arrify "^1.0.0" - concat-stream "^1.4.7" - form-data "^2.0.0" - make-error-cause "^1.2.1" - throwback "^1.1.0" - tough-cookie "^2.0.0" - xtend "^4.0.0" - postcss-calc@^5.2.0: version "5.3.1" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" @@ -3107,7 +2841,7 @@ 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.0, prepend-http@^1.0.1: +prepend-http@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -3127,12 +2861,6 @@ process@^0.11.0: version "0.11.9" resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" -promise-finally@^2.0.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/promise-finally/-/promise-finally-2.2.1.tgz#22616c4ba902916e988bd46c54d7caa08910cd77" - dependencies: - any-promise "^1.3.0" - protractor@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.1.2.tgz#9b221741709a4c62d5cd53c6aadd54a71137e95f" @@ -3239,7 +2967,7 @@ raw-loader@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" -rc@^1.0.1, rc@^1.1.5, rc@^1.1.6, rc@~1.1.6: +rc@~1.1.6: version "1.1.7" resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea" dependencies: @@ -3248,13 +2976,6 @@ rc@^1.0.1, rc@^1.1.5, rc@^1.1.6, rc@~1.1.6: minimist "^1.2.0" strip-json-comments "~2.0.1" -read-all-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" - dependencies: - pinkie-promise "^2.0.0" - readable-stream "^2.0.0" - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -3270,7 +2991,7 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0: +"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729" dependencies: @@ -3291,17 +3012,6 @@ readable-stream@~1.0.2: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@~2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - readable-stream@~2.1.4: version "2.1.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" @@ -3353,10 +3063,6 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^0.4.2" -reflect-metadata@^0.1.8: - version "0.1.10" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a" - regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" @@ -3376,18 +3082,6 @@ regexpu-core@^1.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -registry-auth-token@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b" - dependencies: - rc "^1.1.6" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - dependencies: - rc "^1.0.1" - regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" @@ -3461,6 +3155,12 @@ resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +resolve@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" + dependencies: + path-parse "^1.0.5" + restangular@^1.2.0: version "1.6.1" resolved "https://registry.yarnpkg.com/restangular/-/restangular-1.6.1.tgz#add1743f27d77b0b8a652e6485a760b6234ed024" @@ -3473,7 +3173,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" dependencies: @@ -3542,13 +3242,7 @@ selenium-webdriver@^2.53.2: ws "^1.0.1" xml2js "0.4.4" -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - dependencies: - semver "^5.0.3" - -"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -3598,10 +3292,6 @@ signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - sntp@1.x.x: version "1.0.9" resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" @@ -3756,10 +3446,6 @@ strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" -string-template@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96" - string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -3863,30 +3549,10 @@ tar@~2.2.1: fstream "^1.0.2" inherits "2" -thenify@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.2.1.tgz#251fd1c80aff6e5cf57cb179ab1fcb724269bd11" - dependencies: - any-promise "^1.0.0" - -throat@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-3.0.0.tgz#e7c64c867cbb3845f10877642f7b60055b8ec0d6" - through@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -throwback@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/throwback/-/throwback-1.1.1.tgz#f007e7c17604a6d16d7a07c41aa0e8fedc6184a4" - dependencies: - any-promise "^1.3.0" - -timed-out@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" - timers-browserify@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" @@ -3921,13 +3587,7 @@ to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" -touch@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-1.0.0.tgz#449cbe2dbae5a8c8038e30d71fa0ff464947c4de" - dependencies: - nopt "~1.0.10" - -tough-cookie@^2.0.0, tough-cookie@~2.3.0: +tough-cookie@~2.3.0: version "2.3.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" dependencies: @@ -4000,6 +3660,29 @@ tsconfig@^6.0.0: strip-bom "^3.0.0" strip-json-comments "^2.0.0" +tslib@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.7.1.tgz#bc8004164691923a79fe8378bbeb3da2017538ec" + +tslint@^5.4.3: + version "5.4.3" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.4.3.tgz#761c8402b80e347b7733a04390a757b253580467" + dependencies: + babel-code-frame "^6.22.0" + colors "^1.1.2" + commander "^2.9.0" + diff "^3.2.0" + glob "^7.1.1" + minimatch "^3.0.4" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.7.1" + tsutils "^2.3.0" + +tsutils@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.4.0.tgz#ad4ce6dba0e5a3edbddf8626b7ca040782189fea" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -4025,68 +3708,10 @@ type-is@~1.6.15: media-typer "0.3.0" mime-types "~2.1.15" -typedarray@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -typescript@>=2.1.4, typescript@^2.0.0, typescript@^2.0.3, typescript@^2.2.1: +typescript@>=2.1.4, typescript@^2.0.0, typescript@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9" -typings-core@^1.5.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/typings-core/-/typings-core-1.6.1.tgz#ce4b2931ea2f19bb8f3dacbec69983ac4e964a37" - dependencies: - any-promise "^1.3.0" - array-uniq "^1.0.2" - configstore "^2.0.0" - debug "^2.2.0" - detect-indent "^4.0.0" - graceful-fs "^4.1.2" - has "^1.0.1" - invariant "^2.2.0" - is-absolute "^0.2.3" - listify "^1.0.0" - lockfile "^1.0.1" - make-error-cause "^1.2.1" - mkdirp "^0.5.1" - object.pick "^1.1.1" - parse-json "^2.2.0" - popsicle "^8.0.2" - popsicle-proxy-agent "^3.0.0" - popsicle-retry "^3.2.0" - popsicle-rewrite "^1.0.0" - popsicle-status "^2.0.0" - promise-finally "^2.0.1" - rc "^1.1.5" - rimraf "^2.4.4" - sort-keys "^1.0.0" - string-template "^1.0.0" - strip-bom "^2.0.0" - thenify "^3.1.0" - throat "^3.0.0" - touch "^1.0.0" - typescript "^2.0.3" - xtend "^4.0.0" - zip-object "^0.1.0" - -typings@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/typings/-/typings-1.4.0.tgz#f699ae68e0ca62b66eb1bd8f4e145809be3c6b8f" - dependencies: - any-promise "^1.0.0" - archy "^1.0.0" - bluebird "^3.1.1" - chalk "^1.0.0" - columnify "^1.5.2" - has-unicode "^2.0.1" - listify "^1.0.0" - minimist "^1.2.0" - typings-core "^1.5.0" - update-notifier "^1.0.0" - wordwrap "^1.0.0" - xtend "^4.0.1" - uglify-js@3.0.x: version "3.0.10" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.10.tgz#e220e7dbc05ce1f9bb08268b221aa0cf152fb4e2" @@ -4115,10 +3740,6 @@ ultron@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" -unc-path-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - underscore@^1.5.2: version "1.8.3" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" @@ -4141,23 +3762,6 @@ unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" -unzip-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" - -update-notifier@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" - dependencies: - boxen "^0.6.0" - chalk "^1.0.0" - configstore "^2.0.0" - is-npm "^1.0.0" - latest-version "^2.0.0" - lazy-req "^1.1.0" - semver-diff "^2.0.0" - xdg-basedir "^2.0.0" - upper-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" @@ -4166,12 +3770,6 @@ urijs@^1.18.10: version "1.18.10" resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.18.10.tgz#b94463eaba59a1a796036a467bb633c667f221ab" -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -4204,10 +3802,6 @@ utils-merge@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" -uuid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" @@ -4253,12 +3847,6 @@ watchpack@^1.2.0: chokidar "^1.4.3" graceful-fs "^4.1.2" -wcwidth@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - dependencies: - defaults "^1.0.3" - webdriver-js-extender@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515" @@ -4343,12 +3931,6 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.1" -widest-line@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" - dependencies: - string-width "^1.0.1" - window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" @@ -4376,14 +3958,6 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^1.1.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - ws@1.1.2, ws@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" @@ -4395,12 +3969,6 @@ wtf-8@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" -xdg-basedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" - dependencies: - os-homedir "^1.0.0" - xml-char-classes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" @@ -4429,7 +3997,7 @@ xmlhttprequest-ssl@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" -xtend@^4.0.0, xtend@^4.0.1: +xtend@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -4485,7 +4053,3 @@ yn@^2.0.0: zeroclipboard@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/zeroclipboard/-/zeroclipboard-2.3.0.tgz#592ebd833a4308688b0739697d3dbf989002c9af" - -zip-object@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/zip-object/-/zip-object-0.1.0.tgz#c1a0da04c88c837756e248680a03ff902ec3f53a"