Merge branch 'master' into update-ts-node

This commit is contained in:
Brendan Forster 2018-03-26 08:45:40 +11:00
commit ecc322483f
11 changed files with 253 additions and 185 deletions

View file

@ -3,7 +3,7 @@
"productName": "GitHub Desktop",
"bundleID": "com.github.GitHubClient",
"companyName": "GitHub, Inc.",
"version": "1.1.1-beta3",
"version": "1.1.1-beta4",
"main": "./main.js",
"repository": {
"type": "git",

View file

@ -1355,6 +1355,10 @@ export class App extends React.Component<IAppProps, IAppState> {
this.props.dispatcher.openShell(repository.path)
}
private openFileInExternalEditor = (path: string) => {
this.props.dispatcher.openInExternalEditor(path)
}
private openInExternalEditor = (
repository: Repository | CloningRepository
) => {
@ -1590,6 +1594,8 @@ export class App extends React.Component<IAppProps, IAppState> {
}
if (selectedState.type === SelectionType.Repository) {
const externalEditorLabel = this.state.selectedExternalEditor
return (
<RepositoryView
repository={selectedState.repository}
@ -1606,6 +1612,8 @@ export class App extends React.Component<IAppProps, IAppState> {
this.state.askForConfirmationOnDiscardChanges
}
accounts={this.state.accounts}
externalEditorLabel={externalEditorLabel}
onOpenInExternalEditor={this.openFileInExternalEditor}
/>
)
} else if (selectedState.type === SelectionType.CloningRepository) {

View file

@ -1,38 +1,24 @@
import * as React from 'react'
import * as Path from 'path'
import { AppFileStatus, mapStatus, iconForStatus } from '../../models/status'
import { PathLabel } from '../lib/path-label'
import { Octicon } from '../octicons'
import { showContextualMenu } from '../main-process-proxy'
import { Checkbox, CheckboxValue } from '../lib/checkbox'
import { IMenuItem } from '../../lib/menu-item'
const GitIgnoreFileName = '.gitignore'
const RestrictedFileExtensions = ['.cmd', '.exe', '.bat', '.sh']
interface IChangedFileProps {
readonly path: string
readonly status: AppFileStatus
readonly oldPath?: string
readonly include: boolean | null
readonly onIncludeChanged: (path: string, include: boolean) => void
readonly onDiscardChanges: (path: string) => void
readonly onDiscardAllChanges: () => void
/**
* Called to reveal a file in the native file manager.
* @param path The path of the file relative to the root of the repository
*/
readonly onRevealInFileManager: (path: string) => void
/**
* Called to open a file it its default application
* @param path The path of the file relative to the root of the repository
*/
readonly onOpenItem: (path: string) => void
readonly availableWidth: number
readonly onIgnore: (pattern: string) => void
readonly onIncludeChanged: (path: string, include: boolean) => void
/** Callback called when user right-clicks on an item */
readonly onContextMenu: (
path: string,
status: AppFileStatus,
event: React.MouseEvent<any>
) => void
}
/** a changed file in the working directory for a given repository */
@ -95,62 +81,7 @@ export class ChangedFile extends React.Component<IChangedFileProps, {}> {
)
}
private onContextMenu = (event: React.MouseEvent<any>) => {
event.preventDefault()
const extension = Path.extname(this.props.path)
const fileName = Path.basename(this.props.path)
const items: IMenuItem[] = [
{
label: __DARWIN__ ? 'Discard Changes…' : 'Discard changes…',
action: () => this.props.onDiscardChanges(this.props.path),
},
{
label: __DARWIN__ ? 'Discard All Changes…' : 'Discard all changes…',
action: () => this.props.onDiscardAllChanges(),
},
{ type: 'separator' },
{
label: 'Ignore',
action: () => this.props.onIgnore(this.props.path),
enabled: fileName !== GitIgnoreFileName,
},
]
if (extension.length) {
items.push({
label: __DARWIN__
? `Ignore All ${extension} Files`
: `Ignore all ${extension} files`,
action: () => this.props.onIgnore(`*${extension}`),
enabled: fileName !== GitIgnoreFileName,
})
}
const isSafeExtension = __WIN32__
? RestrictedFileExtensions.indexOf(extension.toLowerCase()) === -1
: true
const revealInFileManagerLabel = __DARWIN__
? 'Reveal in Finder'
: __WIN32__ ? 'Show in Explorer' : 'Show in your File Manager'
items.push(
{ type: 'separator' },
{
label: revealInFileManagerLabel,
action: () => this.props.onRevealInFileManager(this.props.path),
enabled: this.props.status !== AppFileStatus.Deleted,
},
{
label: __DARWIN__
? 'Open with Default Program'
: 'Open with default program',
action: () => this.props.onOpenItem(this.props.path),
enabled: isSafeExtension && this.props.status !== AppFileStatus.Deleted,
}
)
showContextualMenu(items)
private onContextMenu = (event: React.MouseEvent<HTMLDivElement>) => {
this.props.onContextMenu(this.props.path, this.props.status, event)
}
}

View file

@ -1,11 +1,13 @@
import * as React from 'react'
import * as Path from 'path'
import { CommitMessage } from './commit-message'
import { ChangedFile } from './changed-file'
import { List, ClickSource } from '../lib/list'
import {
WorkingDirectoryStatus,
WorkingDirectoryFileChange,
AppFileStatus,
} from '../../models/status'
import { DiffSelectionType } from '../../models/diff'
import { CommitIdentity } from '../../models/commit-identity'
@ -21,6 +23,11 @@ import { ITrailer } from '../../lib/git/interpret-trailers'
import { IMenuItem } from '../../lib/menu-item'
const RowHeight = 29
const RestrictedFileExtensions = ['.cmd', '.exe', '.bat', '.sh']
const defaultEditorLabel = __DARWIN__
? 'Open in External Editor'
: 'Open in external editor'
const GitIgnoreFileName = '.gitignore'
interface IChangesListProps {
readonly repository: Repository
@ -86,6 +93,15 @@ interface IChangesListProps {
* the user has chosen to do so.
*/
readonly coAuthors: ReadonlyArray<IAuthor>
/** The name of the currently selected external editor */
readonly externalEditorLabel?: string
/**
* Called to open a file using the user's configured applications
* @param path The path of the file relative to the root of the repository
*/
readonly onOpenInExternalEditor: (path: string) => void
}
export class ChangesList extends React.Component<IChangesListProps, {}> {
@ -111,12 +127,8 @@ export class ChangesList extends React.Component<IChangesListProps, {}> {
include={includeAll}
key={file.id}
onIncludeChanged={this.props.onIncludeChanged}
onDiscardChanges={this.onDiscardChanges}
onDiscardAllChanges={this.onDiscardAllChanges}
onRevealInFileManager={this.props.onRevealInFileManager}
onOpenItem={this.props.onOpenItem}
availableWidth={this.props.availableWidth}
onIgnore={this.props.onIgnore}
onContextMenu={this.onItemContextMenu}
/>
)
}
@ -160,6 +172,75 @@ export class ChangesList extends React.Component<IChangesListProps, {}> {
showContextualMenu(items)
}
private onItemContextMenu = (
path: string,
status: AppFileStatus,
event: React.MouseEvent<any>
) => {
event.preventDefault()
const extension = Path.extname(path)
const fileName = Path.basename(path)
const isSafeExtension = __WIN32__
? RestrictedFileExtensions.indexOf(extension.toLowerCase()) === -1
: true
const revealInFileManagerLabel = __DARWIN__
? 'Reveal in Finder'
: __WIN32__ ? 'Show in Explorer' : 'Show in your File Manager'
const openInExternalEditor = this.props.externalEditorLabel
? `Open in ${this.props.externalEditorLabel}`
: defaultEditorLabel
const items: IMenuItem[] = [
{
label: __DARWIN__ ? 'Discard Changes…' : 'Discard changes…',
action: () => this.onDiscardChanges(path),
},
{
label: __DARWIN__ ? 'Discard All Changes…' : 'Discard all changes…',
action: () => this.onDiscardAllChanges(),
},
{ type: 'separator' },
{
label: 'Ignore',
action: () => this.props.onIgnore(path),
enabled: fileName !== GitIgnoreFileName,
},
]
if (extension.length) {
items.push({
label: __DARWIN__
? `Ignore All ${extension} Files`
: `Ignore all ${extension} files`,
action: () => this.props.onIgnore(`*${extension}`),
enabled: fileName !== GitIgnoreFileName,
})
}
items.push(
{ type: 'separator' },
{
label: revealInFileManagerLabel,
action: () => this.props.onRevealInFileManager(path),
enabled: status !== AppFileStatus.Deleted,
},
{
label: openInExternalEditor,
action: () => this.props.onOpenInExternalEditor(path),
enabled: isSafeExtension && status !== AppFileStatus.Deleted,
},
{
label: __DARWIN__
? 'Open with Default Program'
: 'Open with default program',
action: () => this.props.onOpenItem(path),
enabled: isSafeExtension && status !== AppFileStatus.Deleted,
}
)
showContextualMenu(items)
}
public render() {
const fileList = this.props.workingDirectory.files
const selectedRow = fileList.findIndex(

View file

@ -48,6 +48,14 @@ interface IChangesSidebarProps {
readonly gitHubUserStore: GitHubUserStore
readonly askForConfirmationOnDiscardChanges: boolean
readonly accounts: ReadonlyArray<Account>
/** The name of the currently selected external editor */
readonly externalEditorLabel?: string
/**
* Called to open a file using the user's configured applications
* @param path The path of the file relative to the root of the repository
*/
readonly onOpenInExternalEditor: (path: string) => void
}
export class ChangesSidebar extends React.Component<IChangesSidebarProps, {}> {
@ -305,6 +313,8 @@ export class ChangesSidebar extends React.Component<IChangesSidebarProps, {}> {
isCommitting={this.props.isCommitting}
showCoAuthoredBy={this.props.changes.showCoAuthoredBy}
coAuthors={this.props.changes.coAuthors}
externalEditorLabel={this.props.externalEditorLabel}
onOpenInExternalEditor={this.props.onOpenInExternalEditor}
/>
{this.renderMostRecentLocalCommit()}
</div>

View file

@ -35,6 +35,15 @@ interface IRepositoryProps {
readonly imageDiffType: ImageDiffType
readonly askForConfirmationOnDiscardChanges: boolean
readonly accounts: ReadonlyArray<Account>
/** The name of the currently selected external editor */
readonly externalEditorLabel?: string
/**
* Called to open a file using the user's configured applications
* @param path The path of the file relative to the root of the repository
*/
readonly onOpenInExternalEditor: (path: string) => void
}
const enum Tab {
@ -101,6 +110,8 @@ export class RepositoryView extends React.Component<IRepositoryProps, {}> {
this.props.askForConfirmationOnDiscardChanges
}
accounts={this.props.accounts}
externalEditorLabel={this.props.externalEditorLabel}
onOpenInExternalEditor={this.props.onOpenInExternalEditor}
/>
)
}

View file

@ -1,5 +1,8 @@
{
"releases": {
"1.1.1-beta4": [
"[Improved] Context menu in Changes tab now supports opening file in your preferred editor - #4030"
],
"1.1.1-beta3": [
],

View file

@ -62,12 +62,12 @@
"clean-webpack-plugin": "^0.1.16",
"cross-env": "^5.0.5",
"css-loader": "^0.28.5",
"eslint": "^4.15.0",
"eslint": "^4.19.1",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-babel": "^4.1.2",
"eslint-plugin-prettier": "^2.4.0",
"eslint-plugin-react": "^7.5.1",
"eslint-plugin-typescript": "^0.8.1",
"eslint-plugin-prettier": "^2.6.0",
"eslint-plugin-react": "^7.7.0",
"eslint-plugin-typescript": "^0.10.0",
"express": "^4.15.0",
"extract-text-webpack-plugin": "^3.0.0",
"fs-extra": "^2.1.2",
@ -75,12 +75,12 @@
"json-pretty": "^0.0.1",
"klaw-sync": "^3.0.0",
"legal-eagle": "0.15.0",
"mocha": "^4.0.1",
"mocha": "^5.0.4",
"node-native-loader": "^1.1.1",
"node-sass": "^4.7.2",
"octicons": "^7.0.1",
"parallel-webpack": "^2.1.0",
"prettier": "1.11.0",
"prettier": "1.11.1",
"request": "^2.72.0",
"rimraf": "^2.5.2",
"sass-loader": "^6.0.6",
@ -89,10 +89,10 @@
"style-loader": "^0.19.1",
"to-camel-case": "^1.0.0",
"ts-node": "^5.0.1",
"tslint": "^5.8.0",
"tslint-config-prettier": "^1.6.0",
"tslint-microsoft-contrib": "^5.0.1",
"tslint-react": "~3.2.0",
"tslint": "^5.9.1",
"tslint-config-prettier": "^1.10.0",
"tslint-microsoft-contrib": "^5.0.3",
"tslint-react": "^3.5.1",
"typescript": "2.7.2",
"typescript-eslint-parser": "^14.0.0",
"webpack": "^3.10.0",
@ -104,7 +104,7 @@
},
"devDependencies": {
"@types/byline": "^4.2.31",
"@types/chai": "^4.0.5",
"@types/chai": "^4.1.2",
"@types/chai-datetime": "^0.0.31",
"@types/classnames": "^2.2.2",
"@types/codemirror": "0.0.55",
@ -115,7 +115,7 @@
"@types/fs-extra": "2.1.0",
"@types/fuzzaldrin-plus": "^0.0.1",
"@types/keytar": "^4.0.0",
"@types/mocha": "^2.2.29",
"@types/mocha": "^2.2.48",
"@types/mri": "^1.1.0",
"@types/node": "^7.0.18",
"@types/react": "^16.0.40",
@ -134,8 +134,8 @@
"@types/xml2js": "^0.4.0",
"electron": "1.8.3",
"electron-builder": "20.2.0",
"electron-mocha": "^5.0.0",
"electron-mocha": "^6.0.1",
"electron-packager": "^11.0.0",
"electron-winstaller": "2.5.2"
}
}
}

View file

@ -13,5 +13,9 @@ export async function getLogLines(
'--',
])
if (log.length === 0) {
return []
}
return log.split('\0')
}

View file

@ -14,7 +14,7 @@
"static-before-instance",
"variables-before-functions"
],
"no-stateless-class": true,
"no-unnecessary-class": true,
"promise-must-complete": true,
"react-no-unbound-dispatcher-props": true,
"react-proper-lifecycle-methods": true,

188
yarn.lock
View file

@ -38,9 +38,9 @@
version "4.0.4"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.4.tgz#fe86315d9a66827feeb16f73bc954688ec950e18"
"@types/chai@^4.0.5":
version "4.0.5"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.5.tgz#b6e250e281b47e0192e236619e9b1afe62fd345c"
"@types/chai@^4.1.2":
version "4.1.2"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.2.tgz#f1af664769cfb50af805431c407425ed619daa21"
"@types/classnames@^2.2.2":
version "2.2.3"
@ -82,9 +82,9 @@
version "4.0.1"
resolved "https://registry.yarnpkg.com/@types/keytar/-/keytar-4.0.1.tgz#e2cf6405dc33861424e59b67516c66d2cf7bc21b"
"@types/mocha@^2.2.29":
version "2.2.44"
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.44.tgz#1d4a798e53f35212fd5ad4d04050620171cd5b5e"
"@types/mocha@^2.2.48":
version "2.2.48"
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.48.tgz#3523b126a0b049482e1c3c11877460f76622ffab"
"@types/mri@^1.1.0":
version "1.1.0"
@ -209,10 +209,14 @@ acorn@^4.0.3:
version "4.0.13"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
acorn@^5.0.0, acorn@^5.2.1:
acorn@^5.0.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7"
acorn@^5.5.0:
version "5.5.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
ajv-keywords@^1.1.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
@ -1051,9 +1055,9 @@ brorand@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
browser-stdout@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
browser-stdout@1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
version "1.1.1"
@ -1495,10 +1499,14 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
dependencies:
delayed-stream "~1.0.0"
commander@2.11.0, commander@2.11.x, commander@^2.11.0, commander@^2.9.0, commander@~2.11.0:
commander@2.11.0, commander@2.11.x, commander@^2.9.0, commander@~2.11.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
commander@^2.12.1, commander@^2.14.1:
version "2.15.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
compare-version@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080"
@ -1956,9 +1964,9 @@ dezalgo@^1.0.0:
asap "^2.0.0"
wrappy "1"
diff@3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75"
diff@3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
diff@^3.1.0, diff@^3.2.0:
version "3.4.0"
@ -1985,16 +1993,9 @@ dmg-builder@4.1.1:
parse-color "^1.0.0"
sanitize-filename "^1.6.1"
doctrine@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
dependencies:
esutils "^2.0.2"
isarray "^1.0.0"
doctrine@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.2.tgz#68f96ce8efc56cc42651f1faadb4f175273b0075"
doctrine@^2.0.2, 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"
@ -2175,14 +2176,14 @@ electron-download@^4.0.0, electron-download@^4.1.0:
semver "^5.3.0"
sumchecker "^2.0.1"
electron-mocha@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/electron-mocha/-/electron-mocha-5.0.0.tgz#415b86166a6bf80125fc4106ecc2545669c284ac"
electron-mocha@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/electron-mocha/-/electron-mocha-6.0.1.tgz#3bab0fa6e48b106791a6b0564359007741de2c32"
dependencies:
commander "^2.11.0"
commander "^2.14.1"
electron-window "^0.8.0"
fs-extra "^4.0.2"
mocha "^4.0.1"
fs-extra "^5.0.0"
mocha "^5.0.1"
which "^1.3.0"
electron-osx-sign@0.4.8:
@ -2442,25 +2443,25 @@ eslint-plugin-babel@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz#79202a0e35757dd92780919b2336f1fa2fe53c1e"
eslint-plugin-prettier@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.4.0.tgz#85cab0775c6d5e3344ef01e78d960f166fb93aae"
eslint-plugin-prettier@^2.6.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz#33e4e228bdb06142d03c560ce04ec23f6c767dd7"
dependencies:
fast-diff "^1.1.1"
jest-docblock "^21.0.0"
eslint-plugin-react@^7.5.1:
version "7.5.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.5.1.tgz#52e56e8d80c810de158859ef07b880d2f56ee30b"
eslint-plugin-react@^7.7.0:
version "7.7.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.7.0.tgz#f606c719dbd8a1a2b3d25c16299813878cca0160"
dependencies:
doctrine "^2.0.0"
doctrine "^2.0.2"
has "^1.0.1"
jsx-ast-utils "^2.0.0"
jsx-ast-utils "^2.0.1"
prop-types "^15.6.0"
eslint-plugin-typescript@^0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-typescript/-/eslint-plugin-typescript-0.8.1.tgz#e5b2d18e744a04528eac58b099fe1032c4d744ff"
eslint-plugin-typescript@^0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-typescript/-/eslint-plugin-typescript-0.10.0.tgz#009a8fcaf0ec7bf68f6fb71576df0d84ebd0b114"
dependencies:
requireindex "~1.1.0"
@ -2475,9 +2476,9 @@ 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.15.0:
version "4.15.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.15.0.tgz#89ab38c12713eec3d13afac14e4a89e75ef08145"
eslint@^4.19.1:
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"
@ -2485,10 +2486,10 @@ eslint@^4.15.0:
concat-stream "^1.6.0"
cross-spawn "^5.1.0"
debug "^3.1.0"
doctrine "^2.0.2"
doctrine "^2.1.0"
eslint-scope "^3.7.1"
eslint-visitor-keys "^1.0.0"
espree "^3.5.2"
espree "^3.5.4"
esquery "^1.0.0"
esutils "^2.0.2"
file-entry-cache "^2.0.0"
@ -2510,18 +2511,19 @@ eslint@^4.15.0:
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.1"
table "4.0.2"
text-table "~0.2.0"
espree@^3.5.2:
version "3.5.2"
resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca"
espree@^3.5.4:
version "3.5.4"
resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
dependencies:
acorn "^5.2.1"
acorn "^5.5.0"
acorn-jsx "^3.0.0"
esprima@^2.6.0:
@ -2928,7 +2930,7 @@ fs-extra@^4.0.0:
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-extra@^4.0.1, fs-extra@^4.0.2:
fs-extra@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b"
dependencies:
@ -3832,6 +3834,13 @@ js-yaml@^3.10.0, js-yaml@^3.9.1:
argparse "^1.0.7"
esprima "^4.0.0"
js-yaml@^3.7.0:
version "3.11.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef"
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
js-yaml@~3.7.0:
version "3.7.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
@ -3924,7 +3933,7 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
jsx-ast-utils@^2.0.0:
jsx-ast-utils@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f"
dependencies:
@ -4392,14 +4401,14 @@ mksnapshot@^0.3.0:
fs-extra "0.26.7"
request "^2.79.0"
mocha@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.0.1.tgz#0aee5a95cf69a4618820f5e51fa31717117daf1b"
mocha@^5.0.1, mocha@^5.0.4:
version "5.0.4"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.0.4.tgz#6b7aa328472da1088e69d47e75925fd3a3bb63c6"
dependencies:
browser-stdout "1.3.0"
browser-stdout "1.3.1"
commander "2.11.0"
debug "3.1.0"
diff "3.3.1"
diff "3.5.0"
escape-string-regexp "1.0.5"
glob "7.1.2"
growl "1.10.3"
@ -5270,9 +5279,9 @@ preserve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
prettier@1.11.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.0.tgz#c024f70cab158c993f50fc0c25ffe738cb8b0f85"
prettier@1.11.1:
version "1.11.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.1.tgz#61e43fc4cd44e68f2b0dfc2c38cd4bb0fccdcc75"
pretty-bytes@^1.0.2:
version "1.0.4"
@ -5600,6 +5609,10 @@ regex-not@^1.0.0:
dependencies:
extend-shallow "^2.0.1"
regexpp@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.0.1.tgz#d857c3a741dce075c2848dcb019a0a975b190d43"
regexpu-core@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
@ -6361,7 +6374,7 @@ svgo@^0.7.0:
sax "~1.2.1"
whet.extend "~0.9.9"
table@^4.0.1:
table@4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
dependencies:
@ -6587,48 +6600,55 @@ tslib@^1.7.1:
version "1.8.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.0.tgz#dc604ebad64bcbf696d613da6c954aa0e7ea1eb6"
tslint-config-prettier@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.6.0.tgz#fec1ee8fb07e8f033c63fed6b135af997f31962a"
tslib@^1.8.0, tslib@^1.8.1:
version "1.9.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8"
tslint-microsoft-contrib@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.0.1.tgz#328ee9c28d07cdf793293204c96e2ffab9221994"
tslint-config-prettier@^1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.10.0.tgz#5063c413d43de4f6988c73727f65ecfc239054ec"
tslint-microsoft-contrib@^5.0.3:
version "5.0.3"
resolved "https://registry.yarnpkg.com/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.0.3.tgz#6fc3e238179cd72045c2b422e4d655f4183a8d5c"
dependencies:
tsutils "^1.4.0"
tsutils "^2.12.1"
tslint-react@~3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/tslint-react/-/tslint-react-3.2.0.tgz#851fb505201c63d0343c51726e6364f7e9ad2e99"
tslint-react@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/tslint-react/-/tslint-react-3.5.1.tgz#a5ca48034bf583fb63b42763bb89fa23062d5390"
dependencies:
tsutils "^2.8.0"
tsutils "^2.13.1"
tslint@^5.8.0:
version "5.8.0"
resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.8.0.tgz#1f49ad5b2e77c76c3af4ddcae552ae4e3612eb13"
tslint@^5.9.1:
version "5.9.1"
resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.9.1.tgz#1255f87a3ff57eb0b0e1f0e610a8b4748046c9ae"
dependencies:
babel-code-frame "^6.22.0"
builtin-modules "^1.1.1"
chalk "^2.1.0"
commander "^2.9.0"
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.7.1"
tslib "^1.8.0"
tsutils "^2.12.1"
tsutils@^1.4.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.9.1.tgz#b9f9ab44e55af9681831d5f28d0aeeaf5c750cb0"
tsutils@^2.12.1, tsutils@^2.8.0:
tsutils@^2.12.1:
version "2.12.2"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.12.2.tgz#ad58a4865d17ec3ddb6631b6ca53be14a5656ff3"
dependencies:
tslib "^1.7.1"
tsutils@^2.13.1:
version "2.22.2"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.22.2.tgz#0b9f3d87aa3eb95bd32d26ce2b88aa329a657951"
dependencies:
tslib "^1.8.1"
tty-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"