From 61fe269c07a9fbb8a91185960766c108014d8900 Mon Sep 17 00:00:00 2001 From: Swashata Ghosh Date: Sun, 7 Oct 2018 20:31:17 +0530 Subject: [PATCH] feat: successfully create an example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It works 🎉💥 --- examples/plugin/.gitignore | 1 + examples/plugin/docker-compose.yml | 31 ++ examples/plugin/inc/Enqueue.php | 176 ++++++++++ examples/plugin/package.json | 4 +- examples/plugin/postcss.config.js | 7 + examples/plugin/src/app/image.png | Bin 0 -> 121363 bytes examples/plugin/src/app/index.css | 7 + examples/plugin/src/app/index.js | 24 ++ examples/plugin/src/app/mobile.js | 1 + examples/plugin/src/app/modules/logger.js | 6 + examples/plugin/src/app/publicPathIndex.js | 7 + examples/plugin/wpackio-plugin.php | 29 ++ examples/plugin/wpackio.project.js | 54 +++ examples/plugin/wpackio.server.js | 33 ++ .../config/WebpackConfigHelper.spec.ts | 4 +- .../WebpackConfigHelper.spec.ts.snap | 12 +- packages/scripts/package.json | 3 + .../scripts/src/config/CreateWebpackConfig.ts | 16 +- .../scripts/src/config/WebpackConfigHelper.ts | 49 ++- packages/scripts/src/scripts/Server.ts | 37 ++- tslint.json | 3 +- yarn.lock | 312 +++++++++++++----- 22 files changed, 690 insertions(+), 126 deletions(-) create mode 100644 examples/plugin/.gitignore create mode 100644 examples/plugin/docker-compose.yml create mode 100644 examples/plugin/inc/Enqueue.php create mode 100644 examples/plugin/postcss.config.js create mode 100755 examples/plugin/src/app/image.png create mode 100644 examples/plugin/src/app/index.css create mode 100644 examples/plugin/src/app/index.js create mode 100644 examples/plugin/src/app/mobile.js create mode 100644 examples/plugin/src/app/modules/logger.js create mode 100644 examples/plugin/src/app/publicPathIndex.js create mode 100644 examples/plugin/wpackio-plugin.php create mode 100644 examples/plugin/wpackio.project.js create mode 100644 examples/plugin/wpackio.server.js diff --git a/examples/plugin/.gitignore b/examples/plugin/.gitignore new file mode 100644 index 000000000..1521c8b76 --- /dev/null +++ b/examples/plugin/.gitignore @@ -0,0 +1 @@ +dist diff --git a/examples/plugin/docker-compose.yml b/examples/plugin/docker-compose.yml new file mode 100644 index 000000000..8dd846acb --- /dev/null +++ b/examples/plugin/docker-compose.yml @@ -0,0 +1,31 @@ +version: '3' +services: + wordpress: + cap_add: + - SYS_ADMIN + devices: + - /dev/fuse + image: visiblevc/wordpress:latest + ports: + - 8080:80 + - 443:443 + volumes: + - ./:/app/wp-content/plugins/wpackio-plugin # Plugin development + environment: + DB_HOST: db # must match db service name below + DB_NAME: wordpress + DB_PASS: root # must match below + PLUGINS: >- + academic-bloggers-toolkit, + co-authors-plus, + [WP-API]https://github.com/WP-API/WP-API/archive/master.zip, + URL_REPLACE: localhost:8080 + WP_DEBUG: 'true' + db: + image: mysql:5.7 # or mariadb:10 + volumes: + - data:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: root +volumes: + data: {} diff --git a/examples/plugin/inc/Enqueue.php b/examples/plugin/inc/Enqueue.php new file mode 100644 index 000000000..96759e4e7 --- /dev/null +++ b/examples/plugin/inc/Enqueue.php @@ -0,0 +1,176 @@ +outputPath = $outputPath; + $this->version = $version; + if ( ! in_array( $type, [ 'plugin', 'theme' ] ) ) { + throw new \LogicException( 'You can only enter "plugin" or "theme" as type.' ); + } + $this->type = $type; + $this->pluginPath = $pluginPath; + + // Set the root path and URL + $filepath = \trailingslashit( \get_template_directory() ) . $this->outputPath . '/'; + $url = \trailingslashit( \get_template_directory_uri() ) . $this->outputPath . '/'; + if ( 'plugin' === $this->type ) { + $filepath = \trailingslashit( dirname( $this->pluginPath ) ) . $this->outputPath . '/'; + $url = \trailingslashit( \plugins_url( $this->outputPath, $this->pluginPath) ); + } + $this->rootPath = $filepath; + $this->rootUrl = $url; + } + + /** + * Enqueue all the assets for an entrypoint inside a source. + * + * @param string $dir The name of the source directory. + * @param string $entryPoint Which entrypoint would you like to enqueue. + * @param array $config Additional configuration. + * @return void + */ + public function enqueue( $dir, $entryPoint, $config ) { + $config = wp_parse_args( $config, [ + 'js' => true, + 'css' => true, + 'js_dep' => [], + 'css_dep' => [], + 'identifier' => false, + 'in_footer' => true, + 'media' => 'all', + ] ); + // Get the manifest + $manifest = $this->getManifest( $dir ); + // Get the entrypoint + if ( ! isset( $manifest['wpackioEp'][ $entryPoint ] ) ) { + throw new \LogicException( 'No entry point found in the manifest' ); + } + $enqueue = $manifest['wpackioEp'][ $entryPoint ]; + + // Set the identifier + $identifier = $config['identifier']; + if ( false === $identifier ) { + $identifier = 'wpackIo' . ucfirst( $dir ) . ucfirst( $entryPoint ); + } + + // Enqueue all js + $js_handles = []; + if ( $config['js'] && isset( $enqueue['js'] ) && count( (array) $enqueue['js'] ) ) { + foreach ( $enqueue['js'] as $index => $js ) { + $handle = $identifier . '_' . $index; + wp_enqueue_script( $handle, $this->getUrl( $js ), $config['js_dep'], $this->version, $config['in_footer']); + wp_localize_script( $handle, $identifier, [ + 'publicPath' => $this->getUrl( $dir . '/' ), + ] ); + $js_handles[] = $handle; + } + } + + // Enqueue all CSS + $css_handles = []; + if ( $config['css'] && isset( $enqueue['css'] ) && count( (array) $enqueue['css'] ) ) { + foreach ( $enqueue['css'] as $index => $css ) { + $handle = $identifier . '_' . $index . '_css'; + wp_enqueue_style( $handle, $this->getUrl( $css ), $config['css_dep'], $this->version, $config['media'] ); + $css_handles[] = $handle; + } + } + } + + /** + * Get Url of an asset. + * + * @param string $asset Asset as recovered from manifest.json + * @return string Complete URL. + */ + protected function getUrl( $asset ) { + return $this->rootUrl . $asset; + } + + /** + * Get manifest from cache or from file. + * + * @param string $dir The Source directory. + * @return array wpackio compatible manifest item. + */ + protected function getManifest( $dir ) { + // If already present in the cache, then return it + if ( isset( self::$manifestCache[ $this->outputPath ][ $dir ] ) ) { + return self::$manifestCache[ $this->outputPath ][ $dir ]; + } + // It is not, so get the json file + $filepath = $this->rootPath . $dir . '/manifest.json'; + + // Check if it exists + if ( ! file_exists( $filepath ) ) { + throw new \LogicException( sprintf( 'Manifest %s does not exist.', $filepath ) ); + } + $manifest = json_decode( file_get_contents( $filepath ), true ); + if ( $manifest === null || ! isset( $manifest['wpackioEp'] ) ) { + throw new \LogicException( sprintf( 'Invalid manifest file at %s. Either it is not valid JSON or wpackioEp does not exist.', $filepath ) ); + } + if ( ! isset( self::$manifestCache[ $this->outputPath ] ) ) { + self::$manifestCache[ $this->outputPath ] = []; + } + self::$manifestCache[ $this->outputPath ][ $dir ] = $manifest; + return self::$manifestCache[ $this->outputPath ][ $dir ]; + } +} diff --git a/examples/plugin/package.json b/examples/plugin/package.json index a0ce15267..8cae7bb67 100644 --- a/examples/plugin/package.json +++ b/examples/plugin/package.json @@ -7,7 +7,9 @@ "license": "MIT", "private": true, "devDependencies": { - "@wpackio/scripts": "0.0.1" + "@wpackio/scripts": "0.0.1", + "autoprefixer": "^9.1.5", + "node-sass": "^4.9.3" }, "scripts": { "exstart": "wpackio-scripts start", diff --git a/examples/plugin/postcss.config.js b/examples/plugin/postcss.config.js new file mode 100644 index 000000000..ace898cc0 --- /dev/null +++ b/examples/plugin/postcss.config.js @@ -0,0 +1,7 @@ +module.exports = { + plugins: { + autoprefixer: { + browsers: '> 0.25%, not dead', + }, + }, +}; diff --git a/examples/plugin/src/app/image.png b/examples/plugin/src/app/image.png new file mode 100755 index 0000000000000000000000000000000000000000..140c0b9c5666912c445e6f6429aebad6c72aca18 GIT binary patch literal 121363 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®c8&?3Cg>w2H#%Zl?R*6AI~-nu3}jrD79_ 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 Q4xm4Vx~AAy7y{}40B%;B%m4rY literal 0 HcmV?d00001 diff --git a/examples/plugin/src/app/index.css b/examples/plugin/src/app/index.css new file mode 100644 index 000000000..141dc3ffc --- /dev/null +++ b/examples/plugin/src/app/index.css @@ -0,0 +1,7 @@ +body { + background-color: black !important; +} + +.site-title a { + color: cyan !important; +} diff --git a/examples/plugin/src/app/index.js b/examples/plugin/src/app/index.js new file mode 100644 index 000000000..c3a01d42f --- /dev/null +++ b/examples/plugin/src/app/index.js @@ -0,0 +1,24 @@ +import './publicPathIndex'; +import './index.css'; +import imgURL from './image.png'; +import logger from './modules/logger'; + +console.log(typeof process.env.NODE_ENV); +console.log(typeof process.env.BABEL_ENV); +console.log(process.env.BABEL_ENV); +console.log('Hello World', imgURL); +console.log('Hello World', imgURL); +console.log('Hello World', imgURL); + +console.log('I am through stuff'); +console.log('I am too'); + +logger(); + +if (module.hot) { + module.hot.accept('./modules/logger.js', () => { + /* eslint-disable global-require */ + const newLogger = require('./modules/logger').default; + newLogger(); + }); +} diff --git a/examples/plugin/src/app/mobile.js b/examples/plugin/src/app/mobile.js new file mode 100644 index 000000000..13b996e02 --- /dev/null +++ b/examples/plugin/src/app/mobile.js @@ -0,0 +1 @@ +console.log('Hello Mobile'); diff --git a/examples/plugin/src/app/modules/logger.js b/examples/plugin/src/app/modules/logger.js new file mode 100644 index 000000000..bcb968e5a --- /dev/null +++ b/examples/plugin/src/app/modules/logger.js @@ -0,0 +1,6 @@ +export default function logger() { + console.log('Huh'); + console.log('Huh'); + console.log('Huh'); + console.log('Hot Reloaded'); +} diff --git a/examples/plugin/src/app/publicPathIndex.js b/examples/plugin/src/app/publicPathIndex.js new file mode 100644 index 000000000..03ec7b9f9 --- /dev/null +++ b/examples/plugin/src/app/publicPathIndex.js @@ -0,0 +1,7 @@ +/* eslint-disable camelcase, no-underscore-dangle, no-undef */ +if (process.env.NODE_ENV === 'production') { + // We set dynamic publicPath only for production + // In development, it is always handled by the internals + // As in the webpack config. + __webpack_public_path__ = window.wpackIoAppMain.publicPath; +} diff --git a/examples/plugin/wpackio-plugin.php b/examples/plugin/wpackio-plugin.php new file mode 100644 index 000000000..60e593d5d --- /dev/null +++ b/examples/plugin/wpackio-plugin.php @@ -0,0 +1,29 @@ +enqueue( 'app', 'main', [] ); +} diff --git a/examples/plugin/wpackio.project.js b/examples/plugin/wpackio.project.js new file mode 100644 index 000000000..f650cabbd --- /dev/null +++ b/examples/plugin/wpackio.project.js @@ -0,0 +1,54 @@ +module.exports = { + // Project Identity + type: 'plugin', // Plugin or theme + slug: 'wpackio-plugin', // Plugin or Theme slug, basically the directory name under `wp-content/` + // Used to generate banners on top of compiled stuff + bannerConfig: { + name: 'WordPress WebPack Bundler', + author: 'Swashata Ghosh', + license: 'GPL-3.0', + link: 'https://wpack.io', + version: '1.0.0', + copyrightText: + 'This software is released under the GPL-3.0 License\nhttps://opensource.org/licenses/GPL-3.0', + credit: true, + }, + // Files we need to compile, and where to put + files: [ + // If this has length === 1, then single compiler + { + name: 'app', + entry: { + main: ['./src/app/index.js'], + mobile: ['./src/app/mobile.js'], + }, + filename: '[name].js', + // Extra webpack config to be passed directly + webpackConfig: undefined, + }, + // If has more length, then multi-compiler + ], + // Output path relative to the context directory + // We need relative path here, else, we can not map to publicPath + outputPath: 'dist', + // Project specific config + // Needs react? + hasReact: true, + // Needs sass? + hasSass: true, + // Externals + externals: { + jquery: 'jQuery', + }, + // Webpack Aliases + alias: undefined, + // Show overlay on development + errorOverlay: true, + // Auto optimization by webpack + // Split all common chunks with default config + // + // Won't hurt because we use PHP to automate loading + optimizeSplitChunks: true, + // Usually PHP and other files to watch and reload when changed + watch: 'inc/**/*.php', +}; diff --git a/examples/plugin/wpackio.server.js b/examples/plugin/wpackio.server.js new file mode 100644 index 000000000..ff0755730 --- /dev/null +++ b/examples/plugin/wpackio.server.js @@ -0,0 +1,33 @@ +module.exports = { + // Your LAN IP or host where you would want the live server + // Override this if you know your correct external IP (LAN) + // Otherwise, the system will always use localhost and will not + // work for external IP. + // This will also create some issues with file watching because for + // some reason, service-worker doesn't work on localhost? + // https://github.com/BrowserSync/browser-sync/issues/1295 + // So it is recommended to change this to your LAN IP. + // If you intend to access it from your LAN (probably do?) + host: '192.168.1.144', + // Your WordPress development server address + proxy: 'http://localhost:8080', + // PORT on your localhost where you would want live server to hook + port: 3000, + // UI passed directly to browsersync + ui: { + port: 3001, + weinre: { + port: 8888, + }, + }, + // Whether to show the "BrowserSync Connected" + notify: false, + // Open the local URL, set to false to disable + open: 'external', + // BrowserSync ghostMode, set to false to completely disable + ghostMode: { + clicks: true, + scroll: true, + forms: true, + }, +}; diff --git a/packages/scripts/__tests__/config/WebpackConfigHelper.spec.ts b/packages/scripts/__tests__/config/WebpackConfigHelper.spec.ts index 5ef343025..9bc1ca6dd 100644 --- a/packages/scripts/__tests__/config/WebpackConfigHelper.spec.ts +++ b/packages/scripts/__tests__/config/WebpackConfigHelper.spec.ts @@ -124,7 +124,7 @@ describe('CreateWebPackConfig', () => { true ); const devOutput = devCwc.getOutput(); - expect(devOutput.publicPath).toMatch(/^\/\/(.*)\/config1$/); + expect(devOutput.publicPath).toMatch(/^\/\/(.*)\/config1\/$/); }); test('respects type for constructing publicPath on dev server', () => { const devCwc = new WebpackConfigHelper( @@ -135,7 +135,7 @@ describe('CreateWebPackConfig', () => { ); const devOutput = devCwc.getOutput(); expect(devOutput.publicPath).toMatch( - /^\/\/(.*)\/wp-content\/plugins\/(.*)\/config1$/ + /^\/\/(.*)\/wp-content\/plugins\/(.*)\/config1\/$/ ); }); }); diff --git a/packages/scripts/__tests__/config/__snapshots__/WebpackConfigHelper.spec.ts.snap b/packages/scripts/__tests__/config/__snapshots__/WebpackConfigHelper.spec.ts.snap index c89978305..d4c0de09b 100644 --- a/packages/scripts/__tests__/config/__snapshots__/WebpackConfigHelper.spec.ts.snap +++ b/packages/scripts/__tests__/config/__snapshots__/WebpackConfigHelper.spec.ts.snap @@ -5,6 +5,7 @@ Object { "context": "/foo/bar", "devtool": "source-map", "mode": "production", + "name": "config1", "target": "web", "watch": false, } @@ -15,6 +16,7 @@ Object { "context": "/foo/bar", "devtool": "inline-source-map", "mode": "development", + "name": "config1", "target": "web", "watch": true, } @@ -116,8 +118,8 @@ exports[`CreateWebPackConfig getPlugins has proper plugins for build mode 1`] = Array [ DefinePlugin { "definitions": Object { - "process.env.BABEL_ENV": "production", - "process.env.NODE_ENV": "production", + "process.env.BABEL_ENV": "\\"production\\"", + "process.env.NODE_ENV": "\\"production\\"", }, }, CleanWebpackPlugin { @@ -137,6 +139,7 @@ Array [ "filename": "[name].css", }, }, + Object {}, BannerPlugin { "banner": [Function], "options": Object { @@ -168,8 +171,8 @@ exports[`CreateWebPackConfig getPlugins has proper plugins for dev mode 1`] = ` Array [ DefinePlugin { "definitions": Object { - "process.env.BABEL_ENV": "development", - "process.env.NODE_ENV": "development", + "process.env.BABEL_ENV": "\\"development\\"", + "process.env.NODE_ENV": "\\"development\\"", }, }, CleanWebpackPlugin { @@ -189,6 +192,7 @@ Array [ "filename": "[name].css", }, }, + Object {}, HotModuleReplacementPlugin { "fullBuildTimeout": 200, "multiStep": undefined, diff --git a/packages/scripts/package.json b/packages/scripts/package.json index 69690662e..3ec710d78 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -26,6 +26,7 @@ "@types/node": "^10.11.3", "@types/signale": "^1.2.0", "@types/webpack": "^4.4.13", + "@types/webpack-assets-manifest": "^3.0.0", "@types/webpack-dev-middleware": "^2.0.2", "@types/webpack-hot-middleware": "^2.16.4", "@wpackio/babel-preset-base": "0.0.1", @@ -35,6 +36,7 @@ "clean-webpack-plugin": "^0.1.19", "commander": "^2.18.0", "css-loader": "^1.0.0", + "file-loader": "^2.0.0", "mini-css-extract-plugin": "^0.4.3", "optimize-css-assets-webpack-plugin": "^5.0.1", "postcss-loader": "^3.0.0", @@ -44,6 +46,7 @@ "style-loader": "^0.23.0", "uglifyjs-webpack-plugin": "^2.0.1", "webpack": "^4.20.2", + "webpack-assets-manifest": "^3.1.0", "webpack-dev-middleware": "^3.4.0", "webpack-hot-middleware": "^2.24.0", "webpack-merge": "^4.1.4" diff --git a/packages/scripts/src/config/CreateWebpackConfig.ts b/packages/scripts/src/config/CreateWebpackConfig.ts index 24c317350..e608866c0 100644 --- a/packages/scripts/src/config/CreateWebpackConfig.ts +++ b/packages/scripts/src/config/CreateWebpackConfig.ts @@ -9,6 +9,11 @@ import { import { ServerConfig, serverConfigDefault } from './server.config.default'; import { WebpackConfigHelper } from './WebpackConfigHelper'; +export interface WpackConfig { + config: webpack.Configuration; + hmrPublicPath: string; +} + /** * Create the final webpack config through this class. */ @@ -54,7 +59,7 @@ export class CreateWebpackConfig { * If `projectConfig.files` has length === 1, then it would be a single compiler * otherwise, it would be for multi compiler. */ - public getConfig(): webpack.Configuration | webpack.Configuration[] { + public getConfig(): WpackConfig | WpackConfig[] { // Now it can be a single compiler, or multicompiler // In any case, figure it out, create the compiler options // and return the stuff. @@ -63,7 +68,7 @@ export class CreateWebpackConfig { // Then return an array of config. if (this.projectConfig.files.length > 1) { // Return an array of configuration - const config: webpack.Configuration[] = []; + const config: WpackConfig[] = []; this.projectConfig.files.forEach((file: FileConfig) => { config.push(this.getSingleCompilerConfig(file)); }); @@ -80,7 +85,7 @@ export class CreateWebpackConfig { * * @param file Single file object. */ - private getSingleCompilerConfig(file: FileConfig): webpack.Configuration { + private getSingleCompilerConfig(file: FileConfig): WpackConfig { const { type, slug, @@ -128,6 +133,9 @@ export class CreateWebpackConfig { config = webpackMerge(config, file.webpackConfig); } - return config; + // Get our hmr public path + const hmrPublicPath = helper.getHmrPath(); + + return { config, hmrPublicPath }; } } diff --git a/packages/scripts/src/config/WebpackConfigHelper.ts b/packages/scripts/src/config/WebpackConfigHelper.ts index ace97ce75..708f6f121 100644 --- a/packages/scripts/src/config/WebpackConfigHelper.ts +++ b/packages/scripts/src/config/WebpackConfigHelper.ts @@ -4,6 +4,7 @@ import miniCssExtractPlugin from 'mini-css-extract-plugin'; import path from 'path'; import slugify from 'slugify'; import webpack from 'webpack'; +import WebpackAssetsManifest from 'webpack-assets-manifest'; import { BannerConfig, FileConfig, @@ -34,6 +35,7 @@ interface CommonWebpackConfig { target: webpack.Configuration['target']; watch: webpack.Configuration['watch']; mode: webpack.Configuration['mode']; + name: webpack.Configuration['name']; } /** @@ -55,6 +57,8 @@ export class WebpackConfigHelper { */ private env: 'development' | 'production'; + private hmrPublicPath: string; + /** * Create an instance of GetEntryAndOutput class. */ @@ -75,11 +79,25 @@ export class WebpackConfigHelper { } // Create the outputPath, because we would be needing that - const { outputPath } = this.config; + const { outputPath, slug, type } = this.config; + const contentDir: string = `${type}s`; // and file const { name } = this.file; this.outputInnerDir = slugify(name, { lower: true }); this.outputPath = path.join(this.cwd, outputPath, this.outputInnerDir); + this.hmrPublicPath = `/wp-content/${contentDir}/${slug}/${outputPath}/${ + this.outputInnerDir + }/`; + } + + /** + * Get Hot Module Reload Path, which takes into consideration + * the dynamicPublicPath. + */ + public getHmrPath(): string { + const { name } = this.file; + + return `${this.hmrPublicPath}__wpackio_${name}`; } /** @@ -122,9 +140,9 @@ export class WebpackConfigHelper { // Here we need // 1. dynamicPublicPath - Because we intend to use __webpack_public_path__ // 2. overlay and overlayStypes - To enable overlay on errors, we don't need warnings here - // 3. path - The output path, I am not sure if we need this, so let's skip + // 3. path - The output path, We need to make sure both server and client has the same value. // 4. name - Because it could be multicompiler - const webpackHotClient: string = `webpack-hot-middleware/client?name=${name}&dynamicPublicPath=true&overlay=true&reload=true&overlayStyles=${encodeURIComponent( + const webpackHotClient: string = `webpack-hot-middleware/client?path=__wpackio_${name}&name=${name}&dynamicPublicPath=true&overlay=true&reload=true&overlayStyles=${encodeURIComponent( JSON.stringify(overlayStyles) )}`; // Now add to each of the entries @@ -144,7 +162,7 @@ export class WebpackConfigHelper { public getOutput(): webpack.Output { // Now use the config to create a output // Destucture stuff we need from config - const { type, slug, host, port, outputPath } = this.config; + const { host, port } = this.config; // and file const { filename } = this.file; // Assuming it is production @@ -164,14 +182,16 @@ export class WebpackConfigHelper { }; // Add the publicPath if it is in devMode if (this.isDev) { - const contentDir: string = `${type}s`; // We are proxying stuff here. So I guess, we can safely assume // That URL of the proxied server starts from root? // Maybe we can have a `prefix` in Config, but let's not do that // right now. - output.publicPath = `//${host || - 'localhost'}:${port}/wp-content/${contentDir}/${slug}/${outputPath}/${ - this.outputInnerDir + // tslint:disable: no-http-string + // Here we are hard-coding protocol http + // Maybe we can get an option from user for SSL? + // But this is needed for hot middleware + output.publicPath = `//${host || 'localhost'}:${port}${ + this.hmrPublicPath }`; } @@ -186,8 +206,8 @@ export class WebpackConfigHelper { const plugins: webpack.Plugin[] = [ // Define env new webpack.DefinePlugin({ - 'process.env.NODE_ENV': this.env, - 'process.env.BABEL_ENV': this.env, + 'process.env.NODE_ENV': JSON.stringify(this.env), + 'process.env.BABEL_ENV': JSON.stringify(this.env), }), // Clean dist directory new cleanWebpackPlugin([this.outputPath], { root: this.cwd }), @@ -195,6 +215,14 @@ export class WebpackConfigHelper { new miniCssExtractPlugin({ filename: '[name].css', }), + // Create Manifest for PHP Consumption + new WebpackAssetsManifest({ + writeToDisk: true, + output: `${this.outputPath}/manifest.json`, + publicPath: `${this.outputInnerDir}/`, // We dont put ${this.config.outputPath}/ here because, PHP will pick it up anyway. + entrypoints: true, + entrypointsKey: 'wpackioEp', + }), ]; // Add development specific plugins if (this.isDev) { @@ -370,6 +398,7 @@ ${bannerConfig.credit ? creditNote : ''} target: 'web', watch: this.isDev, mode: this.env, + name: this.file.name, }; } } diff --git a/packages/scripts/src/scripts/Server.ts b/packages/scripts/src/scripts/Server.ts index d1a9cfa84..8fea9edf3 100644 --- a/packages/scripts/src/scripts/Server.ts +++ b/packages/scripts/src/scripts/Server.ts @@ -3,7 +3,10 @@ import webpack from 'webpack'; import webpackDevMiddleware from 'webpack-dev-middleware'; import webpackHotMiddleware from 'webpack-hot-middleware'; -import { CreateWebpackConfig } from '../config/CreateWebpackConfig'; +import { + CreateWebpackConfig, + WpackConfig, +} from '../config/CreateWebpackConfig'; import { ProjectConfig } from '../config/project.config.default'; import { ServerConfig } from '../config/server.config.default'; @@ -68,35 +71,43 @@ export class Server { // Create webpack compiler // Put them together if (Array.isArray(webpackConfig)) { - webpackConfig.forEach((config: webpack.Configuration) => { + webpackConfig.forEach((wpackConfig: WpackConfig) => { + const { config, hmrPublicPath } = wpackConfig; const compiler = webpack(config); // We can not have dashboard plugin for webpack multi // compiler right now. // compiler.apply(new DashboardPlugin()); const devMiddleware = webpackDevMiddleware(compiler, { stats: { colors: true }, + logLevel: 'warn', publicPath: config.output && config.output.publicPath ? config.output.publicPath : '', }); - const hotMiddleware = webpackHotMiddleware(compiler); + const output = config.output as webpack.Output; + const hotMiddleware = webpackHotMiddleware(compiler, { + path: hmrPublicPath, + }); // Push them middlewares.push(devMiddleware); devMiddlewares.push(devMiddleware); middlewares.push(hotMiddleware); }); } else { - const compiler = webpack(webpackConfig); - // compiler.apply(new DashboardPlugin()); + const { config, hmrPublicPath } = webpackConfig; + const compiler = webpack(config); const devMiddleware = webpackDevMiddleware(compiler, { stats: { colors: true }, publicPath: - webpackConfig.output && webpackConfig.output.publicPath - ? webpackConfig.output.publicPath + config.output && config.output.publicPath + ? config.output.publicPath : '', }); - const hotMiddleware = webpackHotMiddleware(compiler); + + const hotMiddleware = webpackHotMiddleware(compiler, { + path: hmrPublicPath, + }); // Push them middlewares.push(devMiddleware); devMiddlewares.push(devMiddleware); @@ -107,7 +118,7 @@ export class Server { bs.init({ // We need to silent browserSync, otherwise might conflict with // webpack-dashboard - logLevel: 'silent', + logLevel: 'warn', port: this.serverConfig.port, ui: this.serverConfig.ui, proxy: { @@ -125,11 +136,9 @@ export class Server { if (this.projectConfig.watch) { bs.watch(this.projectConfig.watch).on('change', bs.reload); } - // Watch for our own manifest file - bs.watch(`${this.projectConfig.outputPath}/manifest.json`).on( - 'change', - bs.reload - ); + // We don't need to watch for manifest, because if user is changing + // Config, then she does need to restart. It won't be picked up + // automatically by node. // Mark server is running this.isServing = true; diff --git a/tslint.json b/tslint.json index 1cf63b3d2..f492cc400 100644 --- a/tslint.json +++ b/tslint.json @@ -28,7 +28,8 @@ "no-var-requires": false, "mocha-no-side-effect-code": false, "no-require-imports": false, - "no-suspicious-comment": false + "no-suspicious-comment": false, + "max-func-body-length": false }, "linterOptions": { "exclude": ["lib/**/*", "**/node_modules/**"] diff --git a/yarn.lock b/yarn.lock index f9d5ef63e..6c0a5f5c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1146,16 +1146,6 @@ npmlog "^4.1.2" write-file-atomic "^2.3.0" -"@most/multicast@^1.2.5": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@most/multicast/-/multicast-1.3.0.tgz#e01574840df634478ac3fabd164c6e830fb3b966" - dependencies: - "@most/prelude" "^1.4.0" - -"@most/prelude@^1.4.0": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@most/prelude/-/prelude-1.7.2.tgz#be4ed406518d4c8c220e45c39fa7251365425b73" - "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -1260,6 +1250,13 @@ dependencies: source-map "^0.6.1" +"@types/webpack-assets-manifest@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/webpack-assets-manifest/-/webpack-assets-manifest-3.0.0.tgz#bb2da3fb7ee0f6f76e6840a39cada486336ba29e" + dependencies: + "@types/tapable" "*" + "@types/webpack" "*" + "@types/webpack-dev-middleware@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@types/webpack-dev-middleware/-/webpack-dev-middleware-2.0.2.tgz#33934f15de582f1a6c21ea21c42f69282e328c76" @@ -1508,7 +1505,7 @@ ajv-keywords@^3.0.0, ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" -ajv@^5.3.0: +ajv@^5.1.0, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -1539,6 +1536,10 @@ alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + ansi-colors@^3.0.0: version "3.0.6" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.0.6.tgz#a0b9e00e8c1cc6685b1c3130dbeb9abed03ca6a4" @@ -1740,6 +1741,10 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" @@ -1777,7 +1782,7 @@ aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" -aws4@^1.8.0: +aws4@^1.6.0, aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" @@ -2019,10 +2024,6 @@ binary-extensions@^1.0.0: version "1.12.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" -blessed@^0.1.81: - version "0.1.81" - resolved "https://registry.yarnpkg.com/blessed/-/blessed-0.1.81.tgz#f962d687ec2c369570ae71af843256e6d0ca1129" - blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" @@ -2408,7 +2409,7 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.0, chalk@^2.4.1: +chalk@^2.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -2633,13 +2634,13 @@ combined-stream@1.0.6: dependencies: delayed-stream "~1.0.0" -combined-stream@~1.0.6: +combined-stream@~1.0.5, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" dependencies: delayed-stream "~1.0.0" -commander@^2.11.0, commander@^2.12.1, commander@^2.15.1, commander@^2.18.0, commander@^2.2.0, commander@^2.8.1: +commander@^2.11.0, commander@^2.12.1, commander@^2.18.0, commander@^2.2.0, commander@^2.8.1: version "2.18.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" @@ -2893,6 +2894,13 @@ cross-env@^5.2.0: cross-spawn "^6.0.5" is-windows "^1.0.0" +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -3917,7 +3925,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.2: +extend@^3.0.0, extend@~3.0.1, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -4014,6 +4022,13 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" +file-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" + dependencies: + loader-utils "^1.0.2" + schema-utils "^1.0.0" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -4025,10 +4040,6 @@ fileset@^2.0.2: glob "^7.0.3" minimatch "^3.0.3" -filesize@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - fill-range@^2.1.0: version "2.2.4" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" @@ -4168,7 +4179,7 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -form-data@~2.3.2: +form-data@~2.3.1, form-data@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" dependencies: @@ -4176,10 +4187,6 @@ form-data@~2.3.2: combined-stream "1.0.6" mime-types "^2.1.12" -fp-ts@^1.0.0, fp-ts@^1.0.1: - version "1.9.0" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.9.0.tgz#52acf85692025b34285ff4014f39af72d1107e0b" - fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -4277,6 +4284,12 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + dependencies: + globule "^1.0.0" + genfun@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/genfun/-/genfun-4.0.1.tgz#ed10041f2e4a7f1b0a38466d17a5c3e27df1dfc1" @@ -4389,7 +4402,7 @@ glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" dependencies: @@ -4459,6 +4472,14 @@ globby@^8.0.0, globby@^8.0.1: pify "^3.0.0" slash "^1.0.0" +globule@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" + dependencies: + glob "~7.1.1" + lodash "~4.17.10" + minimatch "~3.0.2" + graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -4467,7 +4488,7 @@ growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" -handlebars@^4.0.11, handlebars@^4.0.2, handlebars@^4.0.3, handlebars@^4.0.5: +handlebars@^4.0.2, handlebars@^4.0.3, handlebars@^4.0.5: version "4.0.12" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" dependencies: @@ -4481,6 +4502,13 @@ har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + har-validator@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" @@ -4748,6 +4776,10 @@ imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" @@ -4816,16 +4848,6 @@ inquirer@^6.0.0, inquirer@^6.1.0, inquirer@^6.2.0: strip-ansi "^4.0.0" through "^2.3.6" -inspectpack@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/inspectpack/-/inspectpack-3.0.2.tgz#a2b17a1c09c236cc8d453388b814972d2ae8e349" - dependencies: - chalk "^2.4.0" - io-ts "^1.0.5" - io-ts-reporters "^0.0.20" - pify "^3.0.0" - yargs "^11.0.0" - interpret@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" @@ -4844,19 +4866,6 @@ invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" -io-ts-reporters@^0.0.20: - version "0.0.20" - resolved "https://registry.yarnpkg.com/io-ts-reporters/-/io-ts-reporters-0.0.20.tgz#2b8cbb6a2bc4562dae6917a3a413fa2c9851a644" - dependencies: - fp-ts "^1.0.1" - io-ts "^1.0.2" - -io-ts@^1.0.2, io-ts@^1.0.5: - version "1.3.0" - resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.3.0.tgz#72a5e7dbbb650b9c26030bac0c22d9b18c321f54" - dependencies: - fp-ts "^1.0.0" - ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -5558,6 +5567,10 @@ jest@^23.6.0: import-local "^1.0.0" jest-cli "^23.6.0" +js-base64@^2.1.8: + version "2.4.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz#748911fb04f48a60c4771b375cac45a80df11c03" + js-levenshtein@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.3.tgz#3ef627df48ec8cf24bacf05c0f184ff30ef413c5" @@ -5862,7 +5875,7 @@ lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" -lodash.assign@^4.0.3, lodash.assign@^4.0.6: +lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -5870,14 +5883,22 @@ lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" +lodash.clonedeep@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" -lodash.get@^4.4.2: +lodash.get@^4.0, lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" +lodash.has@^4.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" + lodash.isfinite@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" @@ -5886,6 +5907,10 @@ lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" +lodash.mergewith@^4.6.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -5911,7 +5936,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1: +lodash@^4.0.0, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.10: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" @@ -6043,7 +6068,7 @@ memory-fs@^0.4.0, memory-fs@~0.4.1: errno "^0.1.3" readable-stream "^2.0.1" -meow@^3.3.0: +meow@^3.3.0, meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" dependencies: @@ -6167,7 +6192,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -6249,7 +6274,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -6259,14 +6284,6 @@ modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" -most@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/most/-/most-1.7.3.tgz#406c31a66d73aa16957816fdf96965e27df84f1a" - dependencies: - "@most/multicast" "^1.2.5" - "@most/prelude" "^1.4.0" - symbol-observable "^1.0.2" - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -6299,6 +6316,10 @@ mute-stream@0.0.7, mute-stream@~0.0.4: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" +nan@^2.10.0: + version "2.11.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" + nan@^2.9.2: version "2.11.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" @@ -6454,6 +6475,30 @@ node-releases@^1.0.0-alpha.11: dependencies: semver "^5.3.0" +node-sass@^4.9.3: + version "4.9.3" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz#f407cf3d66f78308bb1e346b24fa428703196224" + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + lodash.mergewith "^4.6.0" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.10.0" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "2.87.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + "nopt@2 || 3": version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -6547,7 +6592,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2, npmlog@^4.1.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: @@ -6574,6 +6619,10 @@ nwsapi@^2.0.7: version "2.0.9" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" +oauth-sign@~0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -7574,7 +7623,7 @@ qs@6.2.3: version "6.2.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" -qs@~6.5.2: +qs@~6.5.1, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -7881,6 +7930,31 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" +request@2.87.0: + version "2.87.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + request@^2.87.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -8066,6 +8140,15 @@ sane@^2.0.0: optionalDependencies: fsevents "^1.2.3" +sass-graph@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + sass-loader@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" @@ -8096,6 +8179,13 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" @@ -8320,7 +8410,7 @@ socket.io-client@2.0.4: socket.io-parser "~3.1.1" to-array "0.1.4" -socket.io-client@2.1.1, socket.io-client@^2.1.1: +socket.io-client@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" dependencies: @@ -8356,7 +8446,7 @@ socket.io-parser@~3.2.0: debug "~3.1.0" isarray "2.0.1" -socket.io@2.1.1, socket.io@^2.1.1: +socket.io@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" dependencies: @@ -8418,6 +8508,12 @@ source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -8524,6 +8620,12 @@ statuses@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + dependencies: + readable-stream "^2.0.1" + stealthy-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" @@ -8697,10 +8799,6 @@ swap-case@^1.1.0: lower-case "^1.1.1" upper-case "^1.1.1" -symbol-observable@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" @@ -8867,6 +8965,12 @@ tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" +tough-cookie@~2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -8889,6 +8993,12 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + dependencies: + glob "^7.1.2" + ts-jest@^23.10.3: version "23.10.3" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.10.3.tgz#f42de669888dfd2795b1491016b1813230d553fa" @@ -9177,7 +9287,7 @@ utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" -uuid@^3.0.1, uuid@^3.3.2: +uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -9255,19 +9365,17 @@ webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" -webpack-dashboard@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-dashboard/-/webpack-dashboard-2.0.0.tgz#70db22e7bb5b12b4a7fde82de87ce01eed8d921c" +webpack-assets-manifest@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-3.1.0.tgz#5c540606e061a39e314042059c854a38bc696911" dependencies: - blessed "^0.1.81" - commander "^2.15.1" - cross-spawn "^6.0.5" - filesize "^3.6.1" - handlebars "^4.0.11" - inspectpack "^3.0.1" - most "^1.7.3" - socket.io "^2.1.1" - socket.io-client "^2.1.1" + chalk "^2.0" + lodash.get "^4.0" + lodash.has "^4.0" + mkdirp "^0.5" + schema-utils "^1.0.0" + tapable "^1.0.0" + webpack-sources "^1.0.0" webpack-dev-middleware@^3.4.0: version "3.4.0" @@ -9300,7 +9408,7 @@ webpack-merge@^4.1.4: dependencies: lodash "^4.17.5" -webpack-sources@^1.1.0, webpack-sources@^1.3.0: +webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" dependencies: @@ -9508,6 +9616,12 @@ yargs-parser@^4.1.0, yargs-parser@^4.2.0: dependencies: camelcase "^3.0.0" +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" @@ -9604,6 +9718,24 @@ yargs@^4.8.1: y18n "^3.2.1" yargs-parser "^2.4.1" +yargs@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"