diff --git a/.travis.yml b/.travis.yml index d393da161b887..1a145253a3c6d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ language: node_js node_js: - '8' script: + - node common/scripts/install-run-rush.js install --bypass-policy - if [ $TRAVIS_BRANCH == "master" ] && [ $TRAVIS_PULL_REQUEST != "false" ]; then npm run checkchange; fi diff --git a/apps/fabric-website/src/pages/GetStarted/GetStartedPage.tsx b/apps/fabric-website/src/pages/GetStarted/GetStartedPage.tsx index 962643e1ee961..e57581504bd41 100644 --- a/apps/fabric-website/src/pages/GetStarted/GetStartedPage.tsx +++ b/apps/fabric-website/src/pages/GetStarted/GetStartedPage.tsx @@ -49,9 +49,7 @@ export class GetStartedPage extends React.Component {
Illustration of Typography and color swatches.
@@ -59,16 +57,14 @@ export class GetStartedPage extends React.Component { Styles
- Fabric gives you access to Segoe, Microsoft’s official typeface, along with the color palette, - type ramp, icons, and responsive grid for Office 365. + Fabric gives you access to Segoe, Microsoft’s official typeface, along with the color palette, type ramp, icons, and + responsive grid for Office 365.
Illustration of Icons
@@ -76,16 +72,14 @@ export class GetStartedPage extends React.Component { Icons
- Fabric includes Office’s official product icons. Fabric also provides a suite of product and - document symbols, so you can use the same metaphors we use. + Fabric includes Office’s official product icons. Fabric also provides a suite of product and document symbols, so + you can use the same metaphors we use.
Illustration of Components
@@ -93,8 +87,8 @@ export class GetStartedPage extends React.Component { Components
- Components are the building blocks of your UI. Fabric has a variety of components, including - navigation, commands, containers, and content. + Components are the building blocks of your UI. Fabric has a variety of components, including navigation, commands, + containers, and content.
@@ -104,8 +98,8 @@ export class GetStartedPage extends React.Component { Design Toolkit - The Fabric design toolkit is built with Adobe XD and provides controls and layout templates that enable - you to create seamless, beautiful Office experiences. + The Fabric design toolkit is built with Adobe XD and provides controls and layout templates that enable you to create + seamless, beautiful Office experiences. @@ -131,9 +125,7 @@ export class GetStartedPage extends React.Component {
Illustrated Diagram of many components {
Fabric React - - Robust, up-to-date components built with the React framework - + Robust, up-to-date components built with the React framework See components @@ -158,9 +148,7 @@ export class GetStartedPage extends React.Component {
Illustrated Diagram of few components {
AngularJS - - Community-driven project to build components for Angular-based apps - + Community-driven project to build components for Angular-based apps Learn more @@ -195,7 +181,8 @@ export class GetStartedPage extends React.Component { and{' '} gulp - . + + .

    @@ -207,9 +194,9 @@ export class GetStartedPage extends React.Component {
  1. - The library includes commonjs entry points under the lib folder. To use a control (like DefaultButton), - import it along with React and use it in your render method. Note that wrapping your application in the - Fabric component is required to support RTL, keyboard focus, and other features. + The library includes commonjs entry points under the lib folder. To use a control (like DefaultButton), import it along with + React and use it in your render method. Note that wrapping your application in the Fabric component is required to support + RTL, keyboard focus, and other features.

    {`import * as React from 'react'; @@ -242,13 +229,14 @@ ReactDOM.render(, document.body.firstChild);`} For more information about using components, check out the{' '} components page - . + + .

  2. - If you are using Fabric React components that have icons, you can make all icons available by calling - the initializeIcons function from the @uifabric/icons package. + If you are using Fabric React components that have icons, you can make all icons available by calling the{' '} + initializeIcons function from the @uifabric/icons package.

    {`import { initializeIcons } from '@uifabric/icons'; @@ -260,11 +248,11 @@ initializeIcons(); initializeIcons('https://my.cdn.com/path/to/icons/');`}

    - This will make ALL icons in the collection available, but will download them on demand when referenced - using the{' '} + This will make ALL icons in the collection available, but will download them on demand when referenced using the{' '} Icon component - . + + .

@@ -272,38 +260,32 @@ initializeIcons('https://my.cdn.com/path/to/icons/');`}

Other ways to get Fabric React

For advanced scenarios or alternatives to NPM see the{' '} - + advanced documentation in the Fabric React repository - . + + .

Need a component Fabric React doesn’t have?

- First, check the  + First, check the + Fabric React issue queue {' '} - or  + or + projects -  to see if your component has already been requested or is being worked on. If you don't see an existing - issue or project for the component you're looking for, please  + +  to see if your component has already been requested or is being worked on. If you don't see an existing issue or project for + the component you're looking for, please + file an issue in the repo - , and we'll respond if it's being built or on our radar. + + , and we'll respond if it's being built or on our radar.

Get started with Fabric Core

-

- With one reference to our CDN, you can access Fabric’s fonts, icons, type styles, colors, grid, and - more. -

+

With one reference to our CDN, you can access Fabric’s fonts, icons, type styles, colors, grid, and more.

  1. @@ -317,8 +299,7 @@ initializeIcons('https://my.cdn.com/path/to/icons/');`}
  2. Reference core Fabric styles. Add the ms-Fabric class to a containing element, such as{' '} - <body>, to set the font-family for all Fabric typography classes used within that - element. + <body>, to set the font-family for all Fabric typography classes used within that element.

    {` @@ -329,14 +310,16 @@ initializeIcons('https://my.cdn.com/path/to/icons/');`} To reference all the assets available in Fabric Core, see the{' '} styles page - . To use components, see{' '} + + . To use components, see{' '} Fabric React {' '} or{' '} ngOfficeUIFabric - . + + .

@@ -348,37 +331,32 @@ initializeIcons('https://my.cdn.com/path/to/icons/');`} download a copy of Fabric for your project {' '} or{' '} - + add it through a package manager - . You can also{' '} - + + . You can also{' '} + build your own copy from the source code - . + + .

Need an icon or feature Fabric Core doesn’t have?

- First, check the  + First, check the + Fabric React issue queue {' '} - or  + or + projects -  to see if your component has already been requested or is being worked on. If you don't see an existing - issue or project for the component you're looking for, please  + +  to see if your component has already been requested or is being worked on. If you don't see an existing issue or project for + the component you're looking for, please + file an issue in the repo - , and we'll respond if it's being built or on our radar. + + , and we'll respond if it's being built or on our radar.

@@ -388,7 +366,8 @@ initializeIcons('https://my.cdn.com/path/to/icons/');`} href="https://static2.sharepointonline.com/files/fabric/assets/microsoft_fabric_assets_license_agreement_10262017.pdf" > assets license agreement - . + + .

diff --git a/common/changes/@uifabric/dashboard/pgonzal-upgrade-to-rush-5_2018-09-07-22-32.json b/common/changes/@uifabric/dashboard/pgonzal-upgrade-to-rush-5_2018-09-07-22-32.json new file mode 100644 index 0000000000000..c17bec7d7f911 --- /dev/null +++ b/common/changes/@uifabric/dashboard/pgonzal-upgrade-to-rush-5_2018-09-07-22-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@uifabric/dashboard", + "comment": "add tslib as a dependency in dashboard", + "type": "patch" + } + ], + "packageName": "@uifabric/dashboard", + "email": "natalie.ethell@microsoft.com" +} \ No newline at end of file diff --git a/common/changes/@uifabric/experiments/pgonzal-upgrade-to-rush-5_2018-09-06-21-14.json b/common/changes/@uifabric/experiments/pgonzal-upgrade-to-rush-5_2018-09-06-21-14.json new file mode 100644 index 0000000000000..7b459ec08d2d3 --- /dev/null +++ b/common/changes/@uifabric/experiments/pgonzal-upgrade-to-rush-5_2018-09-06-21-14.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@uifabric/experiments", + "comment": "react-test-renderer version updated 16.4.2 -> 16.5.0", + "type": "none" + } + ], + "packageName": "@uifabric/experiments", + "email": "natalie.ethell@microsoft.com" +} \ No newline at end of file diff --git a/common/changes/@uifabric/fabric-website/pgonzal-upgrade-to-rush-5_2018-09-12-18-10.json b/common/changes/@uifabric/fabric-website/pgonzal-upgrade-to-rush-5_2018-09-12-18-10.json new file mode 100644 index 0000000000000..69c7f7bbfd4a4 --- /dev/null +++ b/common/changes/@uifabric/fabric-website/pgonzal-upgrade-to-rush-5_2018-09-12-18-10.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@uifabric/fabric-website", + "comment": "prettier fixes", + "type": "patch" + } + ], + "packageName": "@uifabric/fabric-website", + "email": "naethell@microsoft.com" +} \ No newline at end of file diff --git a/common/changes/office-ui-fabric-react/pgonzal-upgrade-to-rush-5_2018-09-06-21-14.json b/common/changes/office-ui-fabric-react/pgonzal-upgrade-to-rush-5_2018-09-06-21-14.json new file mode 100644 index 0000000000000..19cc0f0c5b0e4 --- /dev/null +++ b/common/changes/office-ui-fabric-react/pgonzal-upgrade-to-rush-5_2018-09-06-21-14.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "office-ui-fabric-react", + "comment": "react-test-renderer version updated 16.4.2 -> 16.5.0", + "type": "none" + } + ], + "packageName": "office-ui-fabric-react", + "email": "natalie.ethell@microsoft.com" +} \ No newline at end of file diff --git a/common/config/rush/command-line.json b/common/config/rush/command-line.json index 9f260656ac689..242c342271e05 100644 --- a/common/config/rush/command-line.json +++ b/common/config/rush/command-line.json @@ -1,27 +1,41 @@ { - "customCommands": [ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/command-line.schema.json", + "commands": [ { "name": "code-style", "summary": "Runs prettier and tslint.", - "documentation": "Runs prettier and tslint for each of the packages that have a code-style task.", - "parallelized": true + "commandKind": "bulk", + "description": "Runs prettier and tslint for each of the packages that have a code-style task.", + "enableParallelism": true } ], - "customOptions": { - "--production": { - "optionType": "flag", + "parameters": [ + { + "longName": "--production", + "parameterKind": "flag", "description": "Builds production bits.", - "associatedCommands": ["build", "rebuild"] + "associatedCommands": [ + "build", + "rebuild" + ] }, - "--lint": { - "optionType": "flag", + { + "longName": "--lint", + "parameterKind": "flag", "description": "Builds with linting.", - "associatedCommands": ["build", "rebuild"] + "associatedCommands": [ + "build", + "rebuild" + ] }, - "--npm-install-mode": { - "optionType": "flag", + { + "longName": "--npm-install-mode", + "parameterKind": "flag", "description": "Skips tasks that are irrelevant during npm install", - "associatedCommands": ["build", "rebuild"] + "associatedCommands": [ + "build", + "rebuild" + ] } - } -} + ] +} \ No newline at end of file diff --git a/common/config/rush/common-versions.json b/common/config/rush/common-versions.json new file mode 100644 index 0000000000000..f008651979250 --- /dev/null +++ b/common/config/rush/common-versions.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/common-versions.schema.json", + "preferredVersions": { + "webpack": "3.11.0", + "webpack-dev-server": "2.11.2", + "webpack-cli": "2.0.15" + } +} \ No newline at end of file diff --git a/common/config/rush/npm-shrinkwrap.json b/common/config/rush/npm-shrinkwrap.json index 555d9a6d6c37b..b142ebabb1e37 100644 --- a/common/config/rush/npm-shrinkwrap.json +++ b/common/config/rush/npm-shrinkwrap.json @@ -132,7 +132,7 @@ }, "@rush-temp/build": { "version": "file:projects/build.tgz", - "integrity": "sha1-0ASQgsFoHCOwu7iHfWgWNjonEbc=", + "integrity": "sha1-VTnJavaVivWm+GiW8HKc3YbPkAg=", "requires": { "@microsoft/api-extractor": "4.3.7", "@microsoft/load-themed-styles": "1.8.8", @@ -148,9 +148,11 @@ "github": "7.3.2", "glob": "7.1.3", "gzip-size": "3.0.0", + "husky": "0.14.3", "jest": "23.6.0", "jscodeshift": "0.5.1", "json-loader": "0.5.7", + "lint-staged": "7.2.2", "mustache": "2.3.2", "ngrok": "3.0.1", "node-sass": "4.9.3", @@ -199,6 +201,11 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -445,6 +452,14 @@ } } }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "2.0.1" + } + }, "inquirer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", @@ -522,6 +537,21 @@ } } }, + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "requires": { + "symbol-observable": "0.2.4" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=" + } + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", @@ -537,6 +567,79 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" }, + "listr": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", + "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-observable": "0.2.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.4.0", + "listr-verbose-renderer": "0.4.1", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.2.0", + "rxjs": "5.5.12", + "stream-to-observable": "0.2.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "requires": { + "chalk": "1.1.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, "lodash": { "version": "4.17.10", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", @@ -570,6 +673,14 @@ "is-wsl": "1.1.0" } }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "requires": { + "symbol-observable": "1.0.1" + } + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -578,6 +689,11 @@ "ansi-regex": "3.0.0" } }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + }, "webpack": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.7.0.tgz", @@ -598,7 +714,7 @@ "neo-async": "2.5.2", "node-libs-browser": "2.1.0", "schema-utils": "0.4.7", - "tapable": "1.0.0", + "tapable": "1.1.0", "uglifyjs-webpack-plugin": "1.3.0", "watchpack": "1.6.0", "webpack-sources": "1.2.0" @@ -744,7 +860,7 @@ }, "@rush-temp/charting": { "version": "file:projects/charting.tgz", - "integrity": "sha1-LBnZmw6ly0ZQll13NRDeVs3/Fys=", + "integrity": "sha1-S5odI1iSCGs6+KVO+uGxaO0ucSQ=", "requires": { "@microsoft/load-themed-styles": "1.8.8", "@types/d3-array": "1.2.1", @@ -783,7 +899,7 @@ }, "@rush-temp/dashboard": { "version": "file:projects/dashboard.tgz", - "integrity": "sha1-an1pImwbxs10SA9EQlHL83fnr/s=", + "integrity": "sha1-r/ENVAZGM6axgf42/Nl1SWygSSU=", "requires": { "@microsoft/load-themed-styles": "1.8.8", "@types/enzyme": "3.1.13", @@ -801,7 +917,8 @@ "react-dom": "16.5.0", "react-grid-layout": "github:samiyaakhtar/react-grid-layout#4d8bd197745558643951073149227449675f12ca", "react-test-renderer": "16.5.0", - "style-loader": "0.21.0" + "style-loader": "0.21.0", + "tslib": "1.9.3" }, "dependencies": { "balanced-match": { @@ -1165,7 +1282,7 @@ }, "@rush-temp/example-app-base": { "version": "file:projects/example-app-base.tgz", - "integrity": "sha1-MvQoX3KXwmvI83nlCNG+PWo/u+g=", + "integrity": "sha1-akNa5j9nXK3ku8ZwaGLw1CRgeVE=", "requires": { "@microsoft/load-themed-styles": "1.8.8", "@types/es6-promise": "0.0.32", @@ -1188,7 +1305,7 @@ }, "@rush-temp/experiments": { "version": "file:projects/experiments.tgz", - "integrity": "sha1-SgrZVPw/P1PGlpnos2KOFrU7lzA=", + "integrity": "sha1-vI77fL2hIqV1rokQcS+mwtm/U1o=", "requires": { "@microsoft/load-themed-styles": "1.8.8", "@types/deep-assign": "0.1.1", @@ -1217,7 +1334,7 @@ }, "@rush-temp/fabric-website": { "version": "file:projects/fabric-website.tgz", - "integrity": "sha1-Dyu1NeeK8PUcNO6gsBhDmTphraQ=", + "integrity": "sha1-Uwz70jTPXHcpO10idRqYGQ7eo0U=", "requires": { "@microsoft/load-themed-styles": "1.8.8", "@types/es6-promise": "0.0.32", @@ -1241,7 +1358,7 @@ }, "@rush-temp/fabric-website-resources": { "version": "file:projects/fabric-website-resources.tgz", - "integrity": "sha1-miDHDS4mTQumuwTK3cluSu3m8Z0=", + "integrity": "sha1-HW4gjDDSvdpO9UFCBRknR3MtNyc=", "requires": { "@microsoft/load-themed-styles": "1.8.8", "@types/enzyme": "3.1.13", @@ -1275,7 +1392,7 @@ }, "@rush-temp/file-type-icons": { "version": "file:projects/file-type-icons.tgz", - "integrity": "sha1-c9tCKWJlUFI2L5NGsQF5qxnwMV0=", + "integrity": "sha1-lfxeBl8PYHoO1pe1RWPcywP9Cso=", "requires": { "@types/react": "16.3.16", "@types/react-dom": "16.0.5", @@ -1286,7 +1403,7 @@ }, "@rush-temp/foundation": { "version": "file:projects/foundation.tgz", - "integrity": "sha1-sTxMWuGZcLOg6xFrals7mBPhfFs=", + "integrity": "sha1-hlpH5jmotyBQ+J47W3yHQJ05+/4=", "requires": { "@types/enzyme": "3.1.13", "@types/enzyme-adapter-react-16": "1.0.3", @@ -1306,21 +1423,21 @@ }, "@rush-temp/icons": { "version": "file:projects/icons.tgz", - "integrity": "sha1-8ZYp7+6S1ryszOK47yZWBCA/N+s=", + "integrity": "sha1-TlbAqOmgZ5nSM2H1a9bqo3AniZI=", "requires": { "tslib": "1.9.3" } }, "@rush-temp/jest-serializer-merge-styles": { "version": "file:projects/jest-serializer-merge-styles.tgz", - "integrity": "sha1-mb8GZhde7c3aTMcFP/yWZe3qDCI=", + "integrity": "sha1-7EHxFz/EqBeBfr8WrD0PszvaloI=", "requires": { "@types/jest": "23.0.0" } }, "@rush-temp/merge-styles": { "version": "file:projects/merge-styles.tgz", - "integrity": "sha1-p7kM/0tkISR+4NUZSqi4n2w7siA=", + "integrity": "sha1-ygox+Te5GFIiQwn6h5MCAMOMO2o=", "requires": { "@types/jest": "23.0.0", "tslib": "1.9.3" @@ -1328,7 +1445,7 @@ }, "@rush-temp/office-ui-fabric-react": { "version": "file:projects/office-ui-fabric-react.tgz", - "integrity": "sha1-PkpWHuG0NxrQYTn9oLiQzw4enlQ=", + "integrity": "sha1-WMWX5uHJVMEwqL9t4/bbQ3O83QA=", "requires": { "@microsoft/load-themed-styles": "1.8.8", "@types/enzyme": "3.1.13", @@ -1362,14 +1479,14 @@ }, "@rush-temp/office-ui-fabric-react-tslint": { "version": "file:projects/office-ui-fabric-react-tslint.tgz", - "integrity": "sha1-6pcGMsuWzOeM/YR4CFQTK/+HTLA=", + "integrity": "sha1-wbQYu7z5VkE6PP5VP4bDlw+rXYo=", "requires": { "tslint-react": "3.6.0" } }, "@rush-temp/server-rendered-app": { "version": "file:projects/server-rendered-app.tgz", - "integrity": "sha1-qN78c983OB7aItdm3stibad7S48=", + "integrity": "sha1-p7n0FxUje92XkeWcLcGr/JY6yYA=", "requires": { "@microsoft/load-themed-styles": "1.8.8", "@types/es6-promise": "0.0.32", @@ -1387,7 +1504,7 @@ }, "@rush-temp/ssr-tests": { "version": "file:projects/ssr-tests.tgz", - "integrity": "sha1-rwfXFX77W2Xvf4vpK4iATqDsWJY=", + "integrity": "sha1-VYMDYgSnrIvAVHZ/ZZW6U0xvhQo=", "requires": { "@microsoft/load-themed-styles": "1.8.8", "@types/es6-promise": "0.0.32", @@ -1721,7 +1838,7 @@ "neo-async": "2.5.2", "node-libs-browser": "2.1.0", "schema-utils": "0.4.7", - "tapable": "1.0.0", + "tapable": "1.1.0", "uglifyjs-webpack-plugin": "1.3.0", "watchpack": "1.6.0", "webpack-sources": "1.2.0" @@ -1731,7 +1848,7 @@ }, "@rush-temp/styling": { "version": "file:projects/styling.tgz", - "integrity": "sha1-ZbE9EabO68bDmDL70j9a4xHD9/8=", + "integrity": "sha1-UAh4O7LFp6/FK0QHYhFnCpKLv5w=", "requires": { "@microsoft/load-themed-styles": "1.8.8", "@types/jest": "23.0.0", @@ -1746,7 +1863,7 @@ }, "@rush-temp/test-bundle-button": { "version": "file:projects/test-bundle-button.tgz", - "integrity": "sha1-xv3c1YDVtL5agMwXfSaIKoSpiAE=", + "integrity": "sha1-9QD38xxxc/hsZwdXl/fo4CF5oTQ=", "requires": { "@types/react": "16.3.16", "@types/react-dom": "16.0.5", @@ -1758,7 +1875,7 @@ }, "@rush-temp/todo-app": { "version": "file:projects/todo-app.tgz", - "integrity": "sha1-QFu7vozGBCMUJgCNeZzztVCjwGs=", + "integrity": "sha1-8FOF23oo4KAksLx0z4xn7UA+TmY=", "requires": { "@microsoft/load-themed-styles": "1.8.8", "@types/es6-promise": "0.0.32", @@ -1775,7 +1892,7 @@ }, "@rush-temp/utilities": { "version": "file:projects/utilities.tgz", - "integrity": "sha1-SVGXtV9P38bVRPZ37GByNcQdrSk=", + "integrity": "sha1-N9R7qTvlj7D7k2hatpF+/ICTTFg=", "requires": { "@types/enzyme": "3.1.13", "@types/enzyme-adapter-react-16": "1.0.3", @@ -1797,7 +1914,7 @@ }, "@rush-temp/variants": { "version": "file:projects/variants.tgz", - "integrity": "sha1-8z34d5U2bTBaF7Hbv2NTyc+zY0k=", + "integrity": "sha1-GG0NUAQ1F8Lc4mU0OaoR2kwXkCA=", "requires": { "@types/jest": "23.0.0", "tslib": "1.9.3" @@ -1805,7 +1922,7 @@ }, "@rush-temp/vr-tests": { "version": "file:projects/vr-tests.tgz", - "integrity": "sha1-LhMTlgdAlOAUOxcf/HOp3Owzvuo=", + "integrity": "sha1-98D1RTBCuQlGSTzflvU6hMI5P/8=", "requires": { "@storybook/addon-options": "3.2.3", "@storybook/react": "3.4.10", @@ -1829,7 +1946,7 @@ }, "@rush-temp/webpack-utils": { "version": "file:projects/webpack-utils.tgz", - "integrity": "sha1-fjFrXUcT3zKispzTKW0rVgk1iOY=", + "integrity": "sha1-6u3PeN691q2FqSWD76sROPC5rus=", "requires": { "@types/jest": "23.0.0", "@types/loader-utils": "1.1.3", @@ -2158,7 +2275,7 @@ "neo-async": "2.5.2", "node-libs-browser": "2.1.0", "schema-utils": "0.4.7", - "tapable": "1.0.0", + "tapable": "1.1.0", "uglifyjs-webpack-plugin": "1.3.0", "watchpack": "1.6.0", "webpack-sources": "1.2.0" @@ -2166,6 +2283,14 @@ } } }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", + "requires": { + "any-observable": "0.3.0" + } + }, "@sindresorhus/is": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", @@ -2982,9 +3107,9 @@ } }, "any-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz", - "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=" + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==" }, "anymatch": { "version": "1.3.2", @@ -4035,41 +4160,6 @@ "integrity": "sha512-flIBfrqAdHWn+4l2cS/4jZEyl+m5EaBHVzTb0aOF+eu/zR7E41/MoCFHPhDNL8Wzq1nyelnXeT+vcL2byFLSZw==", "requires": { "cosmiconfig": "5.0.6" - }, - "dependencies": { - "cosmiconfig": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", - "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", - "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.12.0", - "parse-json": "4.0.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", - "requires": { - "argparse": "1.0.10", - "esprima": "4.0.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "requires": { - "error-ex": "1.3.2", - "json-parse-better-errors": "1.0.2" - } - } } }, "babel-plugin-minify-builtins": { @@ -4757,7 +4847,7 @@ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "requires": { "caniuse-lite": "1.0.30000885", - "electron-to-chromium": "1.3.65" + "electron-to-chromium": "1.3.66" } } } @@ -5350,7 +5440,7 @@ "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", "requires": { "caniuse-lite": "1.0.30000885", - "electron-to-chromium": "1.3.65" + "electron-to-chromium": "1.3.66" } }, "bser": { @@ -5614,7 +5704,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { "caniuse-db": "1.0.30000885", - "electron-to-chromium": "1.3.65" + "electron-to-chromium": "1.3.66" } } } @@ -6302,14 +6392,13 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", - "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", + "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", "requires": { "is-directory": "0.3.1", "js-yaml": "3.12.0", - "parse-json": "4.0.0", - "require-from-string": "2.0.2" + "parse-json": "4.0.0" }, "dependencies": { "esprima": { @@ -6706,7 +6795,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { "caniuse-db": "1.0.30000885", - "electron-to-chromium": "1.3.65" + "electron-to-chromium": "1.3.66" } }, "chalk": { @@ -7004,6 +7093,11 @@ } } }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + }, "deep-assign": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz", @@ -7405,9 +7499,9 @@ "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==" }, "electron-to-chromium": { - "version": "1.3.65", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.65.tgz", - "integrity": "sha512-tyGr+wh2c/JYBVMeflKpZ3ricwtBPyVBMtRNxYGObl7TP5bAeupgz4VZnBzQSFleZViXYTws1yZtKKFQYZyiYw==" + "version": "1.3.66", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.66.tgz", + "integrity": "sha512-EXfLtc9JxX2AZxISZ10o6hXEXTtnLtj7il5eye5YMgmDf4HbBbg+QDXpUEspsFrUcUugJZd5QJ4iIkRrmQQqIg==" }, "elegant-spinner": { "version": "1.0.1", @@ -7461,7 +7555,7 @@ "requires": { "graceful-fs": "4.1.11", "memory-fs": "0.4.1", - "tapable": "1.0.0" + "tapable": "1.1.0" } }, "entities": { @@ -8453,6 +8547,11 @@ "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=" }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=" + }, "find-replace": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", @@ -8547,7 +8646,7 @@ "lodash.startswith": "4.2.1", "minimatch": "3.0.4", "resolve": "1.8.1", - "tapable": "1.0.0" + "tapable": "1.1.0" }, "dependencies": { "anymatch": { @@ -9059,6 +9158,11 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" }, + "get-own-enumerable-property-symbols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", + "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==" + }, "get-port": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", @@ -10166,6 +10270,23 @@ } } }, + "husky": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz", + "integrity": "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==", + "requires": { + "is-ci": "1.2.1", + "normalize-path": "1.0.0", + "strip-indent": "2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=" + } + } + }, "hyphenate-style-name": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz", @@ -10256,12 +10377,9 @@ "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" }, "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "2.0.1" - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" }, "indexes-of": { "version": "1.0.1", @@ -10597,7 +10715,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-object": { @@ -10606,18 +10724,11 @@ "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" }, "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", "requires": { - "symbol-observable": "0.2.4" - }, - "dependencies": { - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=" - } + "symbol-observable": "1.2.0" } }, "is-path-cwd": { @@ -10689,6 +10800,11 @@ "has": "1.0.3" } }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, "is-retry-allowed": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", @@ -11621,102 +11737,372 @@ "computed-style": "0.1.4" } }, - "listr": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", - "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", + "lint-staged": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-7.2.2.tgz", + "integrity": "sha512-BWT3kx242hq5oaKJ8QiazPeHwJnEXImvjmgZfjljMI5HX6RrTxI3cTJXywre6GNafMONCD/suFnEiFmC69Gscg==", "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "figures": "1.7.0", - "indent-string": "2.1.0", - "is-observable": "0.2.0", - "is-promise": "2.1.0", - "is-stream": "1.1.0", - "listr-silent-renderer": "1.1.1", - "listr-update-renderer": "0.4.0", - "listr-verbose-renderer": "0.4.1", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "ora": "0.2.3", + "chalk": "2.4.1", + "commander": "2.18.0", + "cosmiconfig": "5.0.6", + "debug": "3.1.0", + "dedent": "0.7.0", + "execa": "0.9.0", + "find-parent-dir": "0.3.0", + "is-glob": "4.0.0", + "is-windows": "1.0.2", + "jest-validate": "23.6.0", + "listr": "0.14.2", + "lodash": "4.17.10", + "log-symbols": "2.2.0", + "micromatch": "3.1.10", + "npm-which": "3.0.1", "p-map": "1.2.0", - "rxjs": "5.5.12", - "stream-to-observable": "0.2.0", - "strip-ansi": "3.0.1" + "path-is-inside": "1.0.2", + "pify": "3.0.0", + "please-upgrade-node": "3.1.1", + "staged-git-files": "1.1.1", + "string-argv": "0.0.2", + "stringify-object": "3.2.2" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } } }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "execa": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", + "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", "requires": { - "chalk": "1.1.3" + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" - }, - "listr-update-renderer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", - "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", - "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "elegant-spinner": "1.0.1", - "figures": "1.7.0", - "indent-string": "3.2.0", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "ansi-styles": "2.2.1", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "listr": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.2.tgz", + "integrity": "sha512-vmaNJ1KlGuGWShHI35X/F8r9xxS0VTHh9GejVXwSN20fG5xpq3Jh4bJbnumoT6q5EDM/8/YP1z3YMtQbFmhuXw==", + "requires": { + "@samverschueren/stream-to-observable": "0.3.0", + "is-observable": "1.1.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.4.0", + "listr-verbose-renderer": "0.4.1", + "p-map": "1.2.0", + "rxjs": "6.3.2" + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" + }, + "listr-update-renderer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", + "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "elegant-spinner": "1.0.1", + "figures": "1.7.0", + "indent-string": "3.2.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", "has-ansi": "2.0.0", "strip-ansi": "3.0.1", @@ -11732,11 +12118,6 @@ "object-assign": "4.1.1" } }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" - }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", @@ -13187,6 +13568,14 @@ "sort-keys": "1.1.2" } }, + "npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "requires": { + "which": "1.3.1" + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -13195,6 +13584,16 @@ "path-key": "2.0.1" } }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "requires": { + "commander": "2.18.0", + "npm-path": "2.0.4", + "which": "1.3.1" + } + }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -13858,6 +14257,14 @@ "find-up": "2.1.0" } }, + "please-upgrade-node": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", + "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==", + "requires": { + "semver-compare": "1.0.0" + } + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -14536,6 +14943,42 @@ "requires": { "cosmiconfig": "4.0.0", "import-cwd": "2.1.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.12.0", + "parse-json": "4.0.0", + "require-from-string": "2.0.2" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "1.3.2", + "json-parse-better-errors": "1.0.2" + } + } } }, "postcss-loader": { @@ -14700,7 +15143,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { "caniuse-db": "1.0.30000885", - "electron-to-chromium": "1.3.65" + "electron-to-chromium": "1.3.66" } }, "chalk": { @@ -16654,6 +17097,24 @@ "requires": { "indent-string": "2.1.0", "strip-indent": "1.0.1" + }, + "dependencies": { + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "2.0.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "4.0.1" + } + } } }, "reduce-css-calc": { @@ -16697,13 +17158,6 @@ "lodash-es": "4.17.10", "loose-envify": "1.4.0", "symbol-observable": "1.2.0" - }, - "dependencies": { - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - } } }, "refractor": { @@ -17131,11 +17585,11 @@ } }, "rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.2.tgz", + "integrity": "sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw==", "requires": { - "symbol-observable": "1.0.1" + "tslib": "1.9.3" } }, "safe-buffer": { @@ -18358,6 +18812,11 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" + }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", @@ -18955,6 +19414,11 @@ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=" }, + "staged-git-files": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.1.tgz", + "integrity": "sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==" + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -19048,6 +19512,13 @@ "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", "requires": { "any-observable": "0.2.0" + }, + "dependencies": { + "any-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz", + "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=" + } } }, "strict-uri-encode": { @@ -19055,6 +19526,11 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, + "string-argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=" + }, "string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", @@ -19168,6 +19644,16 @@ "safe-buffer": "5.1.2" } }, + "stringify-object": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz", + "integrity": "sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg==", + "requires": { + "get-own-enumerable-property-symbols": "2.0.1", + "is-obj": "1.0.1", + "is-regexp": "1.0.0" + } + }, "stringstream": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", @@ -19211,12 +19697,9 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { - "get-stdin": "4.0.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" }, "style-loader": { "version": "0.19.1", @@ -19273,9 +19756,9 @@ } }, "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" }, "symbol-tree": { "version": "3.2.2", @@ -19291,9 +19774,9 @@ } }, "tapable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz", + "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==" }, "tar": { "version": "2.2.1", @@ -21440,6 +21923,11 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -21452,6 +21940,14 @@ "which": "1.3.1" } }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "2.0.1" + } + }, "inquirer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", @@ -21472,11 +21968,107 @@ "through": "2.3.8" } }, + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "requires": { + "symbol-observable": "0.2.4" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=" + } + } + }, + "listr": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", + "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-observable": "0.2.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.4.0", + "listr-verbose-renderer": "0.4.1", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.2.0", + "rxjs": "5.5.12", + "stream-to-observable": "0.2.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "requires": { + "chalk": "1.1.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, "lodash": { "version": "4.17.10", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "requires": { + "symbol-observable": "1.0.1" + } + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -21485,6 +22077,11 @@ "ansi-regex": "3.0.0" } }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + }, "yargs": { "version": "11.1.0", "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", @@ -22493,14 +23090,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" }, - "rxjs": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.2.tgz", - "integrity": "sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw==", - "requires": { - "tslib": "1.9.3" - } - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", diff --git a/common/config/rush/pinned-versions.json b/common/config/rush/pinned-versions.json deleted file mode 100644 index 800abff4f000e..0000000000000 --- a/common/config/rush/pinned-versions.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "webpack": "3.11.0", - "webpack-dev-server": "2.11.2", - "webpack-cli": "2.0.15" -} diff --git a/common/scripts/install-run-rush.js b/common/scripts/install-run-rush.js new file mode 100644 index 0000000000000..51bdbbb2363e3 --- /dev/null +++ b/common/scripts/install-run-rush.js @@ -0,0 +1,51 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See the @microsoft/rush package's LICENSE file for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +// THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED. +// +// This script is intended for usage in an automated build environment where the Rush command may not have +// been preinstalled, or may have an unpredictable version. This script will automatically install the version of Rush +// specified in the rush.json configuration file (if not already installed), and then pass a command-line to it. +// An example usage would be: +// +// node common/scripts/install-run-rush.js install +// +// For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/ +const path = require("path"); +const fs = require("fs"); +const install_run_1 = require("./install-run"); +const PACKAGE_NAME = '@microsoft/rush'; +function getRushVersion() { + const rushJsonFolder = install_run_1.findRushJsonFolder(); + const rushJsonPath = path.join(rushJsonFolder, install_run_1.RUSH_JSON_FILENAME); + try { + const rushJsonContents = fs.readFileSync(rushJsonPath, 'utf-8'); + // Use a regular expression to parse out the rushVersion value because rush.json supports comments, + // but JSON.parse does not and we don't want to pull in more dependencies than we need to in this script. + const rushJsonMatches = rushJsonContents.match(/\"rushVersion\"\s*\:\s*\"([0-9a-zA-Z.+\-]+)\"/); + return rushJsonMatches[1]; + } + catch (e) { + throw new Error(`Unable to determine the required version of Rush from rush.json (${rushJsonFolder}). ` + + 'The \'rushVersion\' field is either not assigned in rush.json or was specified ' + + 'using an unexpected syntax.'); + } +} +function run() { + const [nodePath, /* Ex: /bin/node */ // tslint:disable-line:no-unused-variable + scriptPath, /* /repo/common/scripts/install-run-rush.js */ // tslint:disable-line:no-unused-variable + ...packageBinArgs /* [build, --to, myproject] */] = process.argv; + if (process.argv.length < 3) { + console.log('Usage: install-run-rush.js [args...]'); + console.log('Example: install-run-rush.js build --to myproject'); + process.exit(1); + } + install_run_1.runWithErrorAndStatusCode(() => { + const version = getRushVersion(); + console.log(`The rush.json configuration requests Rush version ${version}`); + return install_run_1.installAndRun(PACKAGE_NAME, version, 'rush', packageBinArgs); + }); +} +run(); +//# sourceMappingURL=install-run-rush.js.map \ No newline at end of file diff --git a/common/scripts/install-run.js b/common/scripts/install-run.js new file mode 100644 index 0000000000000..08539132941a1 --- /dev/null +++ b/common/scripts/install-run.js @@ -0,0 +1,397 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See the @microsoft/rush package's LICENSE file for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +// THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED. +// +// This script is intended for usage in an automated build environment where a Node tool may not have +// been preinstalled, or may have an unpredictable version. This script will automatically install the specified +// version of the specified tool (if not already installed), and then pass a command-line to it. +// An example usage would be: +// +// node common/scripts/install-run.js rimraf@2.6.2 rimraf -f project1/lib +// +// For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/ +const childProcess = require("child_process"); +const fs = require("fs"); +const os = require("os"); +const path = require("path"); +exports.RUSH_JSON_FILENAME = 'rush.json'; +const INSTALLED_FLAG_FILENAME = 'installed.flag'; +const NODE_MODULES_FOLDER_NAME = 'node_modules'; +const PACKAGE_JSON_FILENAME = 'package.json'; +/** + * Parse a package specifier (in the form of name\@version) into name and version parts. + */ +function parsePackageSpecifier(rawPackageSpecifier) { + rawPackageSpecifier = (rawPackageSpecifier || '').trim(); + const separatorIndex = rawPackageSpecifier.lastIndexOf('@'); + let name; + let version = undefined; + if (separatorIndex === 0) { + // The specifier starts with a scope and doesn't have a version specified + name = rawPackageSpecifier; + } + else if (separatorIndex === -1) { + // The specifier doesn't have a version + name = rawPackageSpecifier; + } + else { + name = rawPackageSpecifier.substring(0, separatorIndex); + version = rawPackageSpecifier.substring(separatorIndex + 1); + } + if (!name) { + throw new Error(`Invalid package specifier: ${rawPackageSpecifier}`); + } + return { name, version }; +} +/** + * Resolve a package specifier to a static version + */ +function resolvePackageVersion(rushCommonFolder, { name, version }) { + if (!version) { + version = '*'; // If no version is specified, use the latest version + } + if (version.match(/^[a-zA-Z0-9\-\+\.]+$/)) { + // If the version contains only characters that we recognize to be used in static version specifiers, + // pass the version through + return version; + } + else { + // version resolves to + try { + const rushTempFolder = ensureAndJoinPath(rushCommonFolder, 'temp'); + const sourceNpmrcFolder = path.join(rushCommonFolder, 'config', 'rush'); + syncNpmrc(sourceNpmrcFolder, rushTempFolder); + const npmPath = getNpmPath(); + // This returns something that looks like: + // @microsoft/rush@3.0.0 '3.0.0' + // @microsoft/rush@3.0.1 '3.0.1' + // ... + // @microsoft/rush@3.0.20 '3.0.20' + // + const npmVersionSpawnResult = childProcess.spawnSync(npmPath, ['view', `${name}@${version}`, 'version', '--no-update-notifier'], { + cwd: rushTempFolder, + stdio: [] + }); + if (npmVersionSpawnResult.status !== 0) { + throw new Error(`"npm view" returned error code ${npmVersionSpawnResult.status}`); + } + const npmViewVersionOutput = npmVersionSpawnResult.stdout.toString(); + const versionLines = npmViewVersionOutput.split('\n').filter((line) => !!line); + const latestVersion = versionLines[versionLines.length - 1]; + if (!latestVersion) { + throw new Error('No versions found for the specified version range.'); + } + const versionMatches = latestVersion.match(/^.+\s\'(.+)\'$/); + if (!versionMatches) { + throw new Error(`Invalid npm output ${latestVersion}`); + } + return versionMatches[1]; + } + catch (e) { + throw new Error(`Unable to resolve version ${version} of package ${name}: ${e}`); + } + } +} +let _npmPath = undefined; +/** + * Get the absolute path to the npm executable + */ +function getNpmPath() { + if (!_npmPath) { + try { + if (os.platform() === 'win32') { + // We're on Windows + const whereOutput = childProcess.execSync('where npm', { stdio: [] }).toString(); + const lines = whereOutput.split(os.EOL).filter((line) => !!line); + // take the last result, we are looking for a .cmd command + // see https://github.com/Microsoft/web-build-tools/issues/759 + _npmPath = lines[lines.length - 1]; + } + else { + // We aren't on Windows - assume we're on *NIX or Darwin + _npmPath = childProcess.execSync('which npm', { stdio: [] }).toString(); + } + } + catch (e) { + throw new Error(`Unable to determine the path to the NPM tool: ${e}`); + } + _npmPath = _npmPath.trim(); + if (!fs.existsSync(_npmPath)) { + throw new Error('The NPM executable does not exist'); + } + } + return _npmPath; +} +exports.getNpmPath = getNpmPath; +let _rushJsonFolder; +/** + * Find the absolute path to the folder containing rush.json + */ +function findRushJsonFolder() { + if (!_rushJsonFolder) { + let basePath = __dirname; + let tempPath = __dirname; + do { + const testRushJsonPath = path.join(basePath, exports.RUSH_JSON_FILENAME); + if (fs.existsSync(testRushJsonPath)) { + _rushJsonFolder = basePath; + break; + } + else { + basePath = tempPath; + } + } while (basePath !== (tempPath = path.dirname(basePath))); // Exit the loop when we hit the disk root + if (!_rushJsonFolder) { + throw new Error('Unable to find rush.json.'); + } + } + return _rushJsonFolder; +} +exports.findRushJsonFolder = findRushJsonFolder; +/** + * Create missing directories under the specified base directory, and return the resolved directory. + * + * Does not support "." or ".." path segments. + * Assumes the baseFolder exists. + */ +function ensureAndJoinPath(baseFolder, ...pathSegments) { + let joinedPath = baseFolder; + try { + for (let pathSegment of pathSegments) { + pathSegment = pathSegment.replace(/[\\\/]/g, '+'); + joinedPath = path.join(joinedPath, pathSegment); + if (!fs.existsSync(joinedPath)) { + fs.mkdirSync(joinedPath); + } + } + } + catch (e) { + throw new Error(`Error building local installation folder (${path.join(baseFolder, ...pathSegments)}): ${e}`); + } + return joinedPath; +} +/** + * As a workaround, _syncNpmrc() copies the .npmrc file to the target folder, and also trims + * unusable lines from the .npmrc file. If the source .npmrc file not exist, then _syncNpmrc() + * will delete an .npmrc that is found in the target folder. + * + * Why are we trimming the .npmrc lines? NPM allows environment variables to be specified in + * the .npmrc file to provide different authentication tokens for different registry. + * However, if the environment variable is undefined, it expands to an empty string, which + * produces a valid-looking mapping with an invalid URL that causes an error. Instead, + * we'd prefer to skip that line and continue looking in other places such as the user's + * home directory. + * + * IMPORTANT: THIS CODE SHOULD BE KEPT UP TO DATE WITH Utilities._syncNpmrc() + */ +function syncNpmrc(sourceNpmrcFolder, targetNpmrcFolder) { + const sourceNpmrcPath = path.join(sourceNpmrcFolder, '.npmrc'); + const targetNpmrcPath = path.join(targetNpmrcFolder, '.npmrc'); + try { + if (fs.existsSync(sourceNpmrcPath)) { + let npmrcFileLines = fs.readFileSync(sourceNpmrcPath).toString().split('\n'); + npmrcFileLines = npmrcFileLines.map((line) => (line || '').trim()); + const resultLines = []; + // Trim out lines that reference environment variables that aren't defined + for (const line of npmrcFileLines) { + // This finds environment variable tokens that look like "${VAR_NAME}" + const regex = /\$\{([^\}]+)\}/g; + const environmentVariables = line.match(regex); + let lineShouldBeTrimmed = false; + if (environmentVariables) { + for (const token of environmentVariables) { + // Remove the leading "${" and the trailing "}" from the token + const environmentVariableName = token.substring(2, token.length - 1); + if (!process.env[environmentVariableName]) { + lineShouldBeTrimmed = true; + break; + } + } + } + if (lineShouldBeTrimmed) { + // Example output: + // "; MISSING ENVIRONMENT VARIABLE: //my-registry.com/npm/:_authToken=${MY_AUTH_TOKEN}" + resultLines.push('; MISSING ENVIRONMENT VARIABLE: ' + line); + } + else { + resultLines.push(line); + } + } + fs.writeFileSync(targetNpmrcPath, resultLines.join(os.EOL)); + } + else if (fs.existsSync(targetNpmrcPath)) { + // If the source .npmrc doesn't exist and there is one in the target, delete the one in the target + fs.unlinkSync(targetNpmrcPath); + } + } + catch (e) { + throw new Error(`Error syncing .npmrc file: ${e}`); + } +} +/** + * Detects if the package in the specified directory is installed + */ +function isPackageAlreadyInstalled(packageInstallFolder) { + try { + const flagFilePath = path.join(packageInstallFolder, INSTALLED_FLAG_FILENAME); + if (!fs.existsSync(flagFilePath)) { + return false; + } + const fileContents = fs.readFileSync(flagFilePath).toString(); + return fileContents.trim() === process.version; + } + catch (e) { + return false; + } +} +/** + * Removes the following files and directories under the specified folder path: + * - installed.flag + * - + * - node_modules + */ +function cleanInstallFolder(rushCommonFolder, packageInstallFolder) { + try { + const flagFile = path.resolve(packageInstallFolder, INSTALLED_FLAG_FILENAME); + if (fs.existsSync(flagFile)) { + fs.unlinkSync(flagFile); + } + const packageLockFile = path.resolve(packageInstallFolder, 'package-lock.json'); + if (fs.existsSync(packageLockFile)) { + fs.unlinkSync(packageLockFile); + } + const nodeModulesFolder = path.resolve(packageInstallFolder, NODE_MODULES_FOLDER_NAME); + if (fs.existsSync(nodeModulesFolder)) { + const rushRecyclerFolder = ensureAndJoinPath(rushCommonFolder, 'temp', 'rush-recycler', `install-run-${Date.now().toString()}`); + fs.renameSync(nodeModulesFolder, rushRecyclerFolder); + } + } + catch (e) { + throw new Error(`Error cleaning the package install folder (${packageInstallFolder}): ${e}`); + } +} +function createPackageJson(packageInstallFolder, name, version) { + try { + const packageJsonContents = { + 'name': 'ci-rush', + 'version': '0.0.0', + 'dependencies': { + [name]: version + }, + 'description': 'DON\'T WARN', + 'repository': 'DON\'T WARN', + 'license': 'MIT' + }; + const packageJsonPath = path.join(packageInstallFolder, PACKAGE_JSON_FILENAME); + fs.writeFileSync(packageJsonPath, JSON.stringify(packageJsonContents, undefined, 2)); + } + catch (e) { + throw new Error(`Unable to create package.json: ${e}`); + } +} +/** + * Run "npm install" in the package install folder. + */ +function installPackage(packageInstallFolder, name, version) { + try { + console.log(`Installing ${name}...`); + const npmPath = getNpmPath(); + const result = childProcess.spawnSync(npmPath, ['install'], { + stdio: 'inherit', + cwd: packageInstallFolder, + env: process.env + }); + if (result.status !== 0) { + throw new Error('"npm install" encountered an error'); + } + console.log(`Successfully installed ${name}@${version}`); + } + catch (e) { + throw new Error(`Unable to install package: ${e}`); + } +} +/** + * Get the ".bin" path for the package. + */ +function getBinPath(packageInstallFolder, binName) { + const binFolderPath = path.resolve(packageInstallFolder, NODE_MODULES_FOLDER_NAME, '.bin'); + const resolvedBinName = (os.platform() === 'win32') ? `${binName}.cmd` : binName; + return path.resolve(binFolderPath, resolvedBinName); +} +/** + * Write a flag file to the package's install directory, signifying that the install was successful. + */ +function writeFlagFile(packageInstallFolder) { + try { + const flagFilePath = path.join(packageInstallFolder, INSTALLED_FLAG_FILENAME); + fs.writeFileSync(flagFilePath, process.version); + } + catch (e) { + throw new Error(`Unable to create installed.flag file in ${packageInstallFolder}`); + } +} +function installAndRun(packageName, packageVersion, packageBinName, packageBinArgs) { + const rushJsonFolder = findRushJsonFolder(); + const rushCommonFolder = path.join(rushJsonFolder, 'common'); + const packageInstallFolder = ensureAndJoinPath(rushCommonFolder, 'temp', 'install-run', `${packageName}@${packageVersion}`); + if (!isPackageAlreadyInstalled(packageInstallFolder)) { + // The package isn't already installed + cleanInstallFolder(rushCommonFolder, packageInstallFolder); + const sourceNpmrcFolder = path.join(rushCommonFolder, 'config', 'rush'); + syncNpmrc(sourceNpmrcFolder, packageInstallFolder); + createPackageJson(packageInstallFolder, packageName, packageVersion); + installPackage(packageInstallFolder, packageName, packageVersion); + writeFlagFile(packageInstallFolder); + } + const statusMessage = `Invoking "${packageBinName} ${packageBinArgs.join(' ')}"`; + const statusMessageLine = new Array(statusMessage.length + 1).join('-'); + console.log(os.EOL + statusMessage + os.EOL + statusMessageLine + os.EOL); + const binPath = getBinPath(packageInstallFolder, packageBinName); + const result = childProcess.spawnSync(binPath, packageBinArgs, { + stdio: 'inherit', + cwd: process.cwd(), + env: process.env + }); + return result.status; +} +exports.installAndRun = installAndRun; +function runWithErrorAndStatusCode(fn) { + process.exitCode = 1; + try { + const exitCode = fn(); + process.exitCode = exitCode; + } + catch (e) { + console.error(os.EOL + os.EOL + e.toString() + os.EOL + os.EOL); + } +} +exports.runWithErrorAndStatusCode = runWithErrorAndStatusCode; +function run() { + const [nodePath, /* Ex: /bin/node */ // tslint:disable-line:no-unused-variable + scriptPath, /* /repo/common/scripts/install-run-rush.js */ rawPackageSpecifier, /* rimraf@^2.0.0 */ packageBinName, /* rimraf */ ...packageBinArgs /* [-f, myproject/lib] */] = process.argv; + if (path.basename(scriptPath).toLowerCase() !== 'install-run.js') { + // If install-run.js wasn't directly invoked, don't execute the rest of this function. Return control + // to the script that (presumably) imported this file + return; + } + if (process.argv.length < 4) { + console.log('Usage: install-run.js @ [args...]'); + console.log('Example: install-run.js rimraf@2.6.2 rimraf -f project1/lib'); + process.exit(1); + } + runWithErrorAndStatusCode(() => { + const rushJsonFolder = findRushJsonFolder(); + const rushCommonFolder = ensureAndJoinPath(rushJsonFolder, 'common'); + const packageSpecifier = parsePackageSpecifier(rawPackageSpecifier); + const name = packageSpecifier.name; + const version = resolvePackageVersion(rushCommonFolder, packageSpecifier); + if (packageSpecifier.version !== version) { + console.log(`Resolved to ${name}@${version}`); + } + return installAndRun(name, version, packageBinName, packageBinArgs); + }); +} +run(); +//# sourceMappingURL=install-run.js.map \ No newline at end of file diff --git a/hooks/package.json b/hooks/package.json new file mode 100644 index 0000000000000..00b4648a8d7ba --- /dev/null +++ b/hooks/package.json @@ -0,0 +1,14 @@ +{ + "name": "@uifabric/hooks", + "version": "1.0.0", + "description": "Git hooks for OUFR", + "private": true, + "scripts": { + "precommit": "cd .. && node hooks/node_modules/lint-staged/index.js" + }, + "license": "MIT", + "devDependencies": { + "husky": "^0.14.3", + "lint-staged": "^7.0.5" + } +} \ No newline at end of file diff --git a/package.json b/package.json index 32ab3683de65b..cb3ff98d9810e 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,12 @@ "url": "https://github.com/OfficeDev/office-ui-fabric-react" }, "scripts": { - "_rushInstall": "node node_modules/@microsoft/rush/bin/rush install -c", - "_rushBuild": "node node_modules/@microsoft/rush/bin/rush build", - "_rushBuildToFabric": "node node_modules/@microsoft/rush/bin/rush build --to @uifabric/fabric-website-resources", - "_rushRebuild": "node node_modules/@microsoft/rush/bin/rush rebuild --production --verbose --lint", - "_rushRebuildCi": "node node_modules/@microsoft/rush/bin/rush rebuild --verbose --lint", - "_rushRebuildFast": "node node_modules/@microsoft/rush/bin/rush rebuild", + "_rushInstall": "node common/scripts/install-run-rush.js install --purge", + "_rushBuild": "node common/scripts/install-run-rush.js build", + "_rushBuildToFabric": "node common/scripts/install-run-rush.js build --to @uifabric/fabric-website-resources", + "_rushRebuild": "node common/scripts/install-run-rush.js rebuild --production --verbose --lint", + "_rushRebuildCi": "node common/scripts/install-run-rush.js rebuild --verbose --lint", + "_rushRebuildFast": "node common/scripts/install-run-rush.js rebuild", "postinstall": "npm run _rushInstall && npm run _rushBuildToFabric -- --npm-install-mode", "test": "npm run _rushBuild", "vrtest": "cd apps && cd vr-tests && npm run screener", @@ -22,33 +22,35 @@ "build": "npm run _rushRebuild", "buildci": "npm run _rushRebuildCi", "buildfast": "npm run _rushBuild", - "code-style": "node node_modules/@microsoft/rush/bin/rush code-style", - "change": "node node_modules/@microsoft/rush/bin/rush change", - "generate": "node node_modules/@microsoft/rush/bin/rush generate --force", + "code-style": "node common/scripts/install-run-rush.js code-style", + "change": "node common/scripts/install-run-rush.js change", + "generate": "node common/scripts/install-run-rush.js update --full", + "rush-update": "node common/scripts/install-run-rush.js update", "bundlesize": "cd scripts && npm run bundlesize", "create-component": "node scripts/create-component.js", - "checkchange": "node node_modules/@microsoft/rush/bin/rush change -v", + "checkchange": "node common/scripts/install-run-rush.js change -v", "update-snapshots": "cd packages/office-ui-fabric-react && npm run update-snapshots", - "precommit": "lint-staged", "check-for-changed-files": "node ./scripts/check-for-modified-files.js", "prettier": "node scripts/prettier.js", - "codepen": "cd packages/office-ui-fabric-react && node ../../scripts/local-codepen.js" + "codepen": "cd packages/office-ui-fabric-react && node ../../scripts/local-codepen.js", + "precommit": "node scripts/node_modules/lint-staged/index.js" }, "license": "MIT", - "devDependencies": { - "@microsoft/rush": "4.3.0", - "husky": "^0.14.3", - "lint-staged": "^7.0.5" - }, "lint-staged": { - "!(apps/vr-test)/**/*.{ts,tsx}|*.{ts,tsx}": [ - "node ./scripts/lint-staged/prettier", - "node ./scripts/lint-staged/tslint", - "git add" - ], - "*.js": [ - "node ./scripts/lint-staged/prettier", - "git add" + "linters": { + "*.{ts,tsx}": [ + "node ./scripts/lint-staged/prettier", + "node ./scripts/lint-staged/tslint", + "git add" + ], + "*.js": [ + "node ./scripts/lint-staged/prettier", + "git add" + ] + }, + "ignore": [ + "common/scripts/*.js", + "apps/vr-tests/**/*.{ts,tsx}" ] } } diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index 5b099db91ba05..809881ff3c665 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -10,7 +10,8 @@ "css-loader": "^0.15.1", "office-ui-fabric-react": ">=6.67.3 <7.0.0", "react-grid-layout": "samiyaakhtar/react-grid-layout", - "style-loader": "^0.21.0" + "style-loader": "^0.21.0", + "tslib": "^1.7.1" }, "main": "lib-commonjs/index.js", "module": "lib/index.js", diff --git a/packages/experiments/src/components/Chiclet/__snapshots__/ChicletCard.test.tsx.snap b/packages/experiments/src/components/Chiclet/__snapshots__/ChicletCard.test.tsx.snap index e689c98f394ea..6b2d4fa6e38a0 100644 --- a/packages/experiments/src/components/Chiclet/__snapshots__/ChicletCard.test.tsx.snap +++ b/packages/experiments/src/components/Chiclet/__snapshots__/ChicletCard.test.tsx.snap @@ -61,7 +61,6 @@ exports[`Dialog renders chiclet with title, icon, onClick, and url 1`] = ` } > {undefined}