From 5a6a7e4d0fc8d05caed8ba4419ad89cc4fd97629 Mon Sep 17 00:00:00 2001 From: Sam Chen Date: Mon, 21 Sep 2020 22:02:08 +0800 Subject: [PATCH 01/87] fix readme (#1517) `|` needs escape here. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a83a4ef2..bd15c8ac 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ Allowed values are as follows |**`templateContent`**|`{string\|Function\|false}`|false| Can be used instead of `template` to provide an inline template - please read the [Writing Your Own Templates](https://github.com/jantimon/html-webpack-plugin#writing-your-own-templates) section | |**`templateParameters`**|`{Boolean\|Object\|Function}`| `false`| Allows to overwrite the parameters used in the template - see [example](https://github.com/jantimon/html-webpack-plugin/tree/master/examples/template-parameters) | |**`inject`**|`{Boolean\|String}`|`true`|`true \|\| 'head' \|\| 'body' \|\| false` Inject all assets into the given `template` or `templateContent`. When passing `true` or `'body'` all javascript resources will be placed at the bottom of the body element. `'head'` will place the scripts in the head element - see the [inject:false example](https://github.com/jantimon/html-webpack-plugin/tree/master/examples/custom-insertion-position)| -|**`publicPath`**|`{String|'auto'}`|`'auto'`|The publicPath used for script and link tags| +|**`publicPath`**|`{String\|'auto'}`|`'auto'`|The publicPath used for script and link tags| |**`scriptLoading`**|`{'blocking'\|'defer'}`|`'blocking'`| Modern browsers support non blocking javascript loading (`'defer'`) to improve the page startup performance. | |**`favicon`**|`{String}`|``|Adds the given favicon path to the output HTML| |**`meta`**|`{Object}`|`{}`|Allows to inject `meta`-tags. E.g. `meta: {viewport: 'width=device-width, initial-scale=1, shrink-to-fit=no'}`| From 3768bbabb7bfc19487f94841f0e7d4900bca7110 Mon Sep 17 00:00:00 2001 From: Lakshitasaini8 <67197672+Lakshitasaini8@users.noreply.github.com> Date: Thu, 1 Oct 2020 18:01:20 +0530 Subject: [PATCH 02/87] Update README.md (#1521) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bd15c8ac..08b0ea1a 100644 --- a/README.md +++ b/README.md @@ -123,12 +123,12 @@ If you have multiple `webpack` entry points, they will all be included with `scr If you have any CSS assets in webpack's output (for example, CSS extracted with the [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin)) then these will be included with `` tags in the HTML head. -If you have plugins that make use of it, `html-webpack-plugin` should be ordered first before any of the integrated plugins. +If you have plugins that make use of it, `html-webpack-plugin` should be ordered first before any of the integrated Plugins.

Options

You can pass a hash of configuration options to `html-webpack-plugin`. -Allowed values are as follows +Allowed values are as follows: |Name|Type|Default|Description| |:--:|:--:|:-----:|:----------| From 6bff0c139ae8497483cd756ba5bb8386a96a5c88 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Fri, 16 Oct 2020 13:32:39 +0200 Subject: [PATCH 03/87] docs: add installation note for webpack 5 --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 08b0ea1a..8736abdf 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,19 @@

Install

+

Webpack 5

+ +```bash + npm i --save-dev html-webpack-plugin@next +``` + +```bash + yarn add --dev html-webpack-plugin@next +``` + + +

Webpack 4

+ ```bash npm i --save-dev html-webpack-plugin ``` From 86c561c0b3e78e72ec3f24d059be0b492032fdc8 Mon Sep 17 00:00:00 2001 From: Mike Evans Date: Wed, 28 Oct 2020 10:53:51 +0000 Subject: [PATCH 04/87] remove deprecated plugins from readme (#1539) Co-authored-by: Mike Evans --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 8736abdf..4e8d18b1 100644 --- a/README.md +++ b/README.md @@ -78,8 +78,6 @@ The `html-webpack-plugin` provides [hooks](https://github.com/jantimon/html-webp * [html-webpack-inline-svg-plugin](https://github.com/thegc/html-webpack-inline-svg-plugin) to inline SVGs in the resulting HTML file. * [html-webpack-exclude-assets-plugin](https://github.com/jamesjieye/html-webpack-exclude-assets-plugin) for excluding assets using regular expressions * [html-webpack-include-assets-plugin](https://github.com/jharris4/html-webpack-include-assets-plugin) for including lists of js or css file paths (such as those copied by the copy-webpack-plugin). - * [script-ext-html-webpack-plugin](https://github.com/numical/script-ext-html-webpack-plugin) to add `async`, `defer` or `module` attributes to your `'], null, done); + }); + it('should allow to use headTags and bodyTags directly in string literals', done => { testHtmlPlugin({ mode: 'production', From 3cc6fb1060a2261eae9ca3c7be42612a9806d3d3 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Sun, 3 Jan 2021 18:36:18 +0100 Subject: [PATCH 09/87] chore(release): 4.5.1 --- CHANGELOG.md | 9 ++++++++- package.json | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fed239d3..200eb424 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,14 @@ -# Change Log +# Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [4.5.1](https://github.com/jantimon/html-webpack-plugin/compare/v4.5.0...v4.5.1) (2021-01-03) + + +### Bug Fixes + +* inject javascripts in the tag for inject:true and scriptLoading:'defer' ([4f7064e](https://github.com/jantimon/html-webpack-plugin/commit/4f7064ee56fe710e8f416018956647a72c270fb1)) + # [4.5.0](https://github.com/jantimon/html-webpack-plugin/compare/v4.4.1...v4.5.0) (2020-09-21) diff --git a/package.json b/package.json index 29d7dfb9..1ed2a030 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "html-webpack-plugin", - "version": "4.5.0", + "version": "4.5.1", "license": "MIT", "description": "Simplifies creation of HTML files to serve your webpack bundles", "author": "Jan Nicklas (https://github.com/jantimon)", From c9ff9faa06e70609877f4e64626a59d0fc882dae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Sj=C3=B6qvist?= Date: Wed, 6 Jan 2021 18:18:55 +0100 Subject: [PATCH 10/87] docs: align section Minification with the code regarding `keepClosingSlash` fixes #1583 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a9076b54..86531fb7 100644 --- a/README.md +++ b/README.md @@ -366,6 +366,7 @@ and the following options: ```js { collapseWhitespace: true, + keepClosingSlash: true, removeComments: true, removeRedundantAttributes: true, removeScriptTypeAttributes: true, From 13416debbb44f4436540df2baaed353af0352cca Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Wed, 20 Jan 2021 16:51:09 +0100 Subject: [PATCH 11/87] chore: add link to opencollective --- .github/FUNDING.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..b0bf659d --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: html-webpack-plugin +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] From a8ce9b07f82119fd71c6523eee1959f7070c7e2a Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Wed, 20 Jan 2021 17:50:01 +0100 Subject: [PATCH 12/87] chore: migrate from travis & appveyor to github actions --- .github/workflows/main.yml | 34 ++++++++++++++++++++++++++++++++++ .travis.yml | 19 ------------------- README.md | 4 ++-- appveyor.yml | 23 ----------------------- spec/basic.spec.js | 4 +++- 5 files changed, 39 insertions(+), 45 deletions(-) create mode 100644 .github/workflows/main.yml delete mode 100644 .travis.yml delete mode 100644 appveyor.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..302d21de --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,34 @@ +name: CI +on: [push] +jobs: + build: + name: test Node ${{ matrix.node }} Webpack ${{ matrix.webpack }} ${{ matrix.os }} + timeout-minutes: 15 + + runs-on: ${{ matrix.os }} + strategy: + matrix: + node: ['6.x', '12.x', '14.x'] + os: [ubuntu-latest, windows-latest] + webpack: ['4'] + + steps: + - name: LF + run: git config --global core.autocrlf false + + - name: Checkout repo + uses: actions/checkout@v2 + + - name: Use Node ${{ matrix.node }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node }} + + - name: Install Dependencies + run: npm install --ignore-scripts --force --legacy-peer-deps + + - name: Install Webpack ${{ matrix.webpack }} + run: npm install --ignore-scripts --force --legacy-peer-deps webpack@${{ matrix.webpack }} + + - name: Test + run: npm test -- --forceExit || npm test -- --forceExit || npm test -- --forceExit diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e7aa5da5..00000000 --- a/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -language: node_js -node_js: - - stable - - lts/* - - 6.9 -env: - - WEBPACK_CORE=4 - - WEBPACK_CORE=5 -jobs: - exclude: - - node_js: 6.9 - env: WEBPACK_CORE=5 -before_install: - - stty columns 120 -install: - - travis_retry npm install --ignore-scripts --force --legacy-peer-deps - - travis_retry npm install "webpack@$WEBPACK_CORE" --ignore-scripts --force --legacy-peer-deps -script: - - travis_retry npm test diff --git a/README.md b/README.md index 86531fb7..24694980 100644 --- a/README.md +++ b/README.md @@ -666,5 +666,5 @@ This project uses the [semistandard code style](https://github.com/Flet/semistan [deps]: https://david-dm.org/jantimon/html-webpack-plugin.svg [deps-url]: https://david-dm.org/jantimon/html-webpack-plugin -[tests]: http://img.shields.io/travis/jantimon/html-webpack-plugin.svg -[tests-url]: https://travis-ci.org/jantimon/html-webpack-plugin +[tests]: https://github.com/jantimon/html-webpack-plugin/workflows/CI/badge.svg +[tests-url]: https://github.com/jantimon/html-webpack-plugin/actions?query=workflow%3ACI diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 47f137cd..00000000 --- a/appveyor.yml +++ /dev/null @@ -1,23 +0,0 @@ -# appveyor file -# http://www.appveyor.com/docs/appveyor-yml - -environment: - matrix: - - nodejs_version: 0.10 - - nodejs_version: 0.12 - - nodejs_version: 4 - -version: "{build}" -build: off -deploy: off -matrix: - fast_finish: true - -install: - - ps: Install-Product node $env:nodejs_version - - npm install - -test_script: - - node --version - - npm --version - - npm test diff --git a/spec/basic.spec.js b/spec/basic.spec.js index b4e03f40..f9c0b49e 100644 --- a/spec/basic.spec.js +++ b/spec/basic.spec.js @@ -12,6 +12,8 @@ const rimraf = require('rimraf'); const _ = require('lodash'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const webpackMajorVersion = Number(require('webpack/package.json').version.split('.')[0]); +const itUnixOnly = (process.platform === 'win32' || process.platform === 'win64') ? it.skip : it; + if (isNaN(webpackMajorVersion)) { throw new Error('Cannot parse webpack major version'); } @@ -116,7 +118,7 @@ describe('HtmlWebpackPlugin', () => { }, [/[\s]* \ No newline at end of file +Example template \ No newline at end of file diff --git a/examples/appcache/dist/webpack-5/manifest.appcache b/examples/appcache/dist/webpack-5/manifest.appcache index d9dc95c2..61a39638 100644 --- a/examples/appcache/dist/webpack-5/manifest.appcache +++ b/examples/appcache/dist/webpack-5/manifest.appcache @@ -1,5 +1,5 @@ CACHE MANIFEST -# f509954c60c2fd048c91 +# 8bbe00db9cab8f982354 0714810ae3fb211173e2964249507195.png styles.css diff --git a/examples/chunk-optimization/dist/webpack-5/73.js b/examples/chunk-optimization/dist/webpack-5/73.js index 5e01f279..48c758cf 100644 --- a/examples/chunk-optimization/dist/webpack-5/73.js +++ b/examples/chunk-optimization/dist/webpack-5/73.js @@ -1,4 +1,4 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[73],{ +(self["webpackChunk"] = self["webpackChunk"] || []).push([[73],{ /***/ 173: /***/ ((module, exports, __webpack_require__) => { diff --git a/examples/chunk-optimization/dist/webpack-5/805.js b/examples/chunk-optimization/dist/webpack-5/805.js index 66796e1b..cd19b63f 100644 --- a/examples/chunk-optimization/dist/webpack-5/805.js +++ b/examples/chunk-optimization/dist/webpack-5/805.js @@ -1,4 +1,4 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[805],{ +(self["webpackChunk"] = self["webpackChunk"] || []).push([[805],{ /***/ 609: /***/ ((module) => { diff --git a/examples/chunk-optimization/dist/webpack-5/entryA.html b/examples/chunk-optimization/dist/webpack-5/entryA.html index df7ffacd..24ab1c20 100644 --- a/examples/chunk-optimization/dist/webpack-5/entryA.html +++ b/examples/chunk-optimization/dist/webpack-5/entryA.html @@ -1 +1 @@ -Webpack App \ No newline at end of file +Webpack App \ No newline at end of file diff --git a/examples/chunk-optimization/dist/webpack-5/entryA.js b/examples/chunk-optimization/dist/webpack-5/entryA.js index c5be91f7..a94a10c4 100644 --- a/examples/chunk-optimization/dist/webpack-5/entryA.js +++ b/examples/chunk-optimization/dist/webpack-5/entryA.js @@ -50,6 +50,8 @@ document.body.appendChild(h1); /******/ /******/ /* webpack/runtime/jsonp chunk loading */ /******/ (() => { +/******/ // no baseURI +/******/ /******/ // object to store loaded and loading chunks /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched /******/ // Promise = chunk loading, 0 = chunk loaded @@ -100,17 +102,14 @@ document.body.appendChild(h1); /******/ __webpack_require__.x = () => { /******/ /******/ } -/******/ jsonpArray = jsonpArray.slice(); -/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); +/******/ chunkLoadingGlobal = chunkLoadingGlobal.slice(); +/******/ for(var i = 0; i < chunkLoadingGlobal.length; i++) webpackJsonpCallback(chunkLoadingGlobal[i]); /******/ return (checkDeferredModules = checkDeferredModulesImpl)(); /******/ }; /******/ /******/ // install a JSONP callback for chunk loading -/******/ function webpackJsonpCallback(data) { -/******/ var chunkIds = data[0]; -/******/ var moreModules = data[1]; -/******/ var executeModules = data[2]; -/******/ var runtime = data[3]; +/******/ var webpackJsonpCallback = (data) => { +/******/ var [chunkIds, moreModules, runtime, executeModules] = data; /******/ // add "moreModules" to the modules object, /******/ // then flag all "chunkIds" as loaded and fire callback /******/ var moduleId, chunkId, i = 0, resolves = []; @@ -127,7 +126,7 @@ document.body.appendChild(h1); /******/ } /******/ } /******/ if(runtime) runtime(__webpack_require__); -/******/ if(parentJsonpFunction) parentJsonpFunction(data); +/******/ parentChunkLoadingFunction(data); /******/ while(resolves.length) { /******/ resolves.shift()(); /******/ } @@ -137,12 +136,11 @@ document.body.appendChild(h1); /******/ /******/ // run deferred modules when all chunks ready /******/ return checkDeferredModules(); -/******/ }; +/******/ } /******/ -/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; -/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); -/******/ jsonpArray.push = webpackJsonpCallback; -/******/ var parentJsonpFunction = oldJsonpFunction; +/******/ var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || []; +/******/ var parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal); +/******/ chunkLoadingGlobal.push = webpackJsonpCallback; /******/ })(); /******/ /************************************************************************/ diff --git a/examples/chunk-optimization/dist/webpack-5/entryB.html b/examples/chunk-optimization/dist/webpack-5/entryB.html index 6b3b7acc..7a76d984 100644 --- a/examples/chunk-optimization/dist/webpack-5/entryB.html +++ b/examples/chunk-optimization/dist/webpack-5/entryB.html @@ -1 +1 @@ -Webpack App \ No newline at end of file +Webpack App \ No newline at end of file diff --git a/examples/chunk-optimization/dist/webpack-5/entryB.js b/examples/chunk-optimization/dist/webpack-5/entryB.js index 8bd246f6..4cc0eda3 100644 --- a/examples/chunk-optimization/dist/webpack-5/entryB.js +++ b/examples/chunk-optimization/dist/webpack-5/entryB.js @@ -49,6 +49,8 @@ document.body.appendChild(h1); /******/ /******/ /* webpack/runtime/jsonp chunk loading */ /******/ (() => { +/******/ // no baseURI +/******/ /******/ // object to store loaded and loading chunks /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched /******/ // Promise = chunk loading, 0 = chunk loaded @@ -99,17 +101,14 @@ document.body.appendChild(h1); /******/ __webpack_require__.x = () => { /******/ /******/ } -/******/ jsonpArray = jsonpArray.slice(); -/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); +/******/ chunkLoadingGlobal = chunkLoadingGlobal.slice(); +/******/ for(var i = 0; i < chunkLoadingGlobal.length; i++) webpackJsonpCallback(chunkLoadingGlobal[i]); /******/ return (checkDeferredModules = checkDeferredModulesImpl)(); /******/ }; /******/ /******/ // install a JSONP callback for chunk loading -/******/ function webpackJsonpCallback(data) { -/******/ var chunkIds = data[0]; -/******/ var moreModules = data[1]; -/******/ var executeModules = data[2]; -/******/ var runtime = data[3]; +/******/ var webpackJsonpCallback = (data) => { +/******/ var [chunkIds, moreModules, runtime, executeModules] = data; /******/ // add "moreModules" to the modules object, /******/ // then flag all "chunkIds" as loaded and fire callback /******/ var moduleId, chunkId, i = 0, resolves = []; @@ -126,7 +125,7 @@ document.body.appendChild(h1); /******/ } /******/ } /******/ if(runtime) runtime(__webpack_require__); -/******/ if(parentJsonpFunction) parentJsonpFunction(data); +/******/ parentChunkLoadingFunction(data); /******/ while(resolves.length) { /******/ resolves.shift()(); /******/ } @@ -136,12 +135,11 @@ document.body.appendChild(h1); /******/ /******/ // run deferred modules when all chunks ready /******/ return checkDeferredModules(); -/******/ }; +/******/ } /******/ -/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; -/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); -/******/ jsonpArray.push = webpackJsonpCallback; -/******/ var parentJsonpFunction = oldJsonpFunction; +/******/ var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || []; +/******/ var parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal); +/******/ chunkLoadingGlobal.push = webpackJsonpCallback; /******/ })(); /******/ /************************************************************************/ diff --git a/examples/chunk-optimization/dist/webpack-5/entryC.html b/examples/chunk-optimization/dist/webpack-5/entryC.html index 09ff02ab..3d86688e 100644 --- a/examples/chunk-optimization/dist/webpack-5/entryC.html +++ b/examples/chunk-optimization/dist/webpack-5/entryC.html @@ -1 +1 @@ -Webpack App \ No newline at end of file +Webpack App \ No newline at end of file diff --git a/examples/chunk-optimization/dist/webpack-5/libMath.js b/examples/chunk-optimization/dist/webpack-5/libMath.js index 6af571d9..209e9464 100644 --- a/examples/chunk-optimization/dist/webpack-5/libMath.js +++ b/examples/chunk-optimization/dist/webpack-5/libMath.js @@ -1,4 +1,4 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[494],{ +(self["webpackChunk"] = self["webpackChunk"] || []).push([[494],{ /***/ 179: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { diff --git a/examples/chunk-optimization/dist/webpack-5/libText.js b/examples/chunk-optimization/dist/webpack-5/libText.js index 6134ede5..ed9620bd 100644 --- a/examples/chunk-optimization/dist/webpack-5/libText.js +++ b/examples/chunk-optimization/dist/webpack-5/libText.js @@ -1,4 +1,4 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[491],{ +(self["webpackChunk"] = self["webpackChunk"] || []).push([[491],{ /***/ 631: /***/ ((module) => { diff --git a/examples/custom-insertion-position/dist/webpack-5/index.html b/examples/custom-insertion-position/dist/webpack-5/index.html index 394aa87b..24962f57 100644 --- a/examples/custom-insertion-position/dist/webpack-5/index.html +++ b/examples/custom-insertion-position/dist/webpack-5/index.html @@ -1,12 +1,12 @@ - + Custom insertion example All scripts are placed here: - + diff --git a/examples/custom-template/dist/webpack-5/index.html b/examples/custom-template/dist/webpack-5/index.html index 104823b1..c676dff1 100644 --- a/examples/custom-template/dist/webpack-5/index.html +++ b/examples/custom-template/dist/webpack-5/index.html @@ -1 +1 @@ -Webpack App

Partial

\ No newline at end of file +Webpack App

Partial

\ No newline at end of file diff --git a/examples/default/dist/webpack-5/index.html b/examples/default/dist/webpack-5/index.html index b0855186..173a0b38 100644 --- a/examples/default/dist/webpack-5/index.html +++ b/examples/default/dist/webpack-5/index.html @@ -1 +1 @@ -Webpack App \ No newline at end of file +Webpack App \ No newline at end of file diff --git a/examples/favicon/dist/webpack-5/favicon.html b/examples/favicon/dist/webpack-5/favicon.html index 713b4512..fc6e87df 100644 --- a/examples/favicon/dist/webpack-5/favicon.html +++ b/examples/favicon/dist/webpack-5/favicon.html @@ -1 +1 @@ -HtmlWebpackPlugin example \ No newline at end of file +HtmlWebpackPlugin example \ No newline at end of file diff --git a/examples/html-loader/dist/webpack-5/about.html b/examples/html-loader/dist/webpack-5/about.html index 8fe11065..495ce0e6 100644 --- a/examples/html-loader/dist/webpack-5/about.html +++ b/examples/html-loader/dist/webpack-5/about.html @@ -1 +1 @@ -Example template \ No newline at end of file +Example template \ No newline at end of file diff --git a/examples/html-loader/dist/webpack-5/index.html b/examples/html-loader/dist/webpack-5/index.html index 8fe11065..495ce0e6 100644 --- a/examples/html-loader/dist/webpack-5/index.html +++ b/examples/html-loader/dist/webpack-5/index.html @@ -1 +1 @@ -Example template \ No newline at end of file +Example template \ No newline at end of file diff --git a/examples/javascript-advanced/dist/webpack-5/index.html b/examples/javascript-advanced/dist/webpack-5/index.html index 2ec60f39..b58963db 100644 --- a/examples/javascript-advanced/dist/webpack-5/index.html +++ b/examples/javascript-advanced/dist/webpack-5/index.html @@ -1 +1 @@ -Webpack AppHello World from backend -

Partial

\ No newline at end of file +Webpack AppHello World from backend -

Partial

\ No newline at end of file diff --git a/examples/javascript/dist/webpack-5/index.html b/examples/javascript/dist/webpack-5/index.html index 62334917..1e32f3c0 100644 --- a/examples/javascript/dist/webpack-5/index.html +++ b/examples/javascript/dist/webpack-5/index.html @@ -1 +1 @@ -Hello World from backend2020-03-30T16:36:46.399Z

Partial

\ No newline at end of file +Hello World from backend2020-10-14T14:25:45.361Z

Partial

\ No newline at end of file diff --git a/examples/pug-loader/dist/webpack-5/index.html b/examples/pug-loader/dist/webpack-5/index.html index 7f28826f..5f9744d5 100644 --- a/examples/pug-loader/dist/webpack-5/index.html +++ b/examples/pug-loader/dist/webpack-5/index.html @@ -1 +1 @@ -pug demo
Current time

1998-12-31T23:00:00.000Z

\ No newline at end of file +pug demo
Current time

1998-12-31T23:00:00.000Z

\ No newline at end of file diff --git a/examples/sort-manually/dist/webpack-5/first-file.html b/examples/sort-manually/dist/webpack-5/first-file.html index f251a0f8..e3f9c0d7 100644 --- a/examples/sort-manually/dist/webpack-5/first-file.html +++ b/examples/sort-manually/dist/webpack-5/first-file.html @@ -1 +1 @@ -Example template \ No newline at end of file +Example template \ No newline at end of file diff --git a/examples/sort-manually/dist/webpack-5/second-file.html b/examples/sort-manually/dist/webpack-5/second-file.html index ba8f8673..7b428811 100644 --- a/examples/sort-manually/dist/webpack-5/second-file.html +++ b/examples/sort-manually/dist/webpack-5/second-file.html @@ -1 +1 @@ -Example template \ No newline at end of file +Example template \ No newline at end of file diff --git a/examples/template-parameters/dist/webpack-5/index.html b/examples/template-parameters/dist/webpack-5/index.html index 2ac7ecd2..4f432476 100644 --- a/examples/template-parameters/dist/webpack-5/index.html +++ b/examples/template-parameters/dist/webpack-5/index.html @@ -1 +1 @@ -bar \ No newline at end of file +bar \ No newline at end of file diff --git a/index.js b/index.js index 94d44054..6ef1d79c 100644 --- a/index.js +++ b/index.js @@ -51,8 +51,8 @@ class HtmlWebpackPlugin { filename: 'index.html', publicPath: userOptions.publicPath === undefined ? 'auto' : userOptions.publicPath, hash: false, - inject: userOptions.scriptLoading !== 'defer' ? 'body' : 'head', - scriptLoading: 'blocking', + inject: userOptions.scriptLoading === 'blocking' ? 'body' : 'head', + scriptLoading: 'defer', compile: true, favicon: false, minify: 'auto', @@ -251,7 +251,8 @@ function hookIntoCompiler (compiler, options, plugin) { })) .then(({ assetTags }) => { // Inject scripts to body unless it set explicitly to head - const scriptTarget = options.inject === 'head' ? 'head' : 'body'; + const scriptTarget = options.inject === 'head' || + (options.inject === false && options.scriptLoading !== 'blocking') ? 'head' : 'body'; // Group assets to `head` and `body` tag arrays const assetGroups = generateAssetGroups(assetTags, scriptTarget); // Allow third-party-plugin authors to reorder and change the assetTags once they are grouped diff --git a/spec/basic.spec.js b/spec/basic.spec.js index f9c0b49e..14837c5c 100644 --- a/spec/basic.spec.js +++ b/spec/basic.spec.js @@ -103,7 +103,7 @@ describe('HtmlWebpackPlugin', () => { filename: 'index_bundle.js' }, plugins: [new HtmlWebpackPlugin()] - }, [/[\s]*'], null, done); }); + + it('should allow to use headTags and bodyTags directly in string literals', done => { + testHtmlPlugin({ + mode: 'production', + entry: path.join(__dirname, 'fixtures/theme.js'), + output: { + path: OUTPUT_DIR, + filename: 'index_bundle.js' + }, + module: { + rules: [ + { test: /\.css$/, use: [MiniCssExtractPlugin.loader, 'css-loader'] } + ] + }, + plugins: [ + new MiniCssExtractPlugin({ filename: 'styles.css' }), + new HtmlWebpackPlugin({ + inject: false, + templateContent: ({ htmlWebpackPlugin }) => ` + + ${htmlWebpackPlugin.tags.headTags} + ${htmlWebpackPlugin.tags.bodyTags} + + ` + }) + ] + }, [''], null, done); + }); }); From 52d7b54045d4aa8d05b79b041e35e7754578259f Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Wed, 14 Oct 2020 16:39:27 +0200 Subject: [PATCH 26/87] feat: add [name] for file names --- examples/multi-page/dist/webpack-5/first.html | 1 + examples/multi-page/dist/webpack-5/first.js | 669 ++++++++++++++++++ .../multi-page/dist/webpack-5/second.html | 1 + examples/multi-page/dist/webpack-5/second.js | 669 ++++++++++++++++++ examples/multi-page/first.js | 4 + examples/multi-page/main.css | 3 + examples/multi-page/readme.md | 3 + examples/multi-page/second.js | 4 + examples/multi-page/webpack.config.js | 27 + index.js | 13 +- spec/example.spec.js | 4 + 11 files changed, 1397 insertions(+), 1 deletion(-) create mode 100644 examples/multi-page/dist/webpack-5/first.html create mode 100644 examples/multi-page/dist/webpack-5/first.js create mode 100644 examples/multi-page/dist/webpack-5/second.html create mode 100644 examples/multi-page/dist/webpack-5/second.js create mode 100755 examples/multi-page/first.js create mode 100644 examples/multi-page/main.css create mode 100644 examples/multi-page/readme.md create mode 100755 examples/multi-page/second.js create mode 100755 examples/multi-page/webpack.config.js diff --git a/examples/multi-page/dist/webpack-5/first.html b/examples/multi-page/dist/webpack-5/first.html new file mode 100644 index 00000000..930ee6eb --- /dev/null +++ b/examples/multi-page/dist/webpack-5/first.html @@ -0,0 +1 @@ +Webpack App \ No newline at end of file diff --git a/examples/multi-page/dist/webpack-5/first.js b/examples/multi-page/dist/webpack-5/first.js new file mode 100644 index 00000000..fe5242fb --- /dev/null +++ b/examples/multi-page/dist/webpack-5/first.js @@ -0,0 +1,669 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 173: +/***/ ((module, exports, __webpack_require__) => { + +exports = module.exports = __webpack_require__(609)(false); +// Module +exports.push([module.id, "body {\n background: snow;\n}", ""]); + + + +/***/ }), + +/***/ 609: +/***/ ((module) => { + +"use strict"; + + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +// css base code, injected by the css-loader +module.exports = function (useSourceMap) { + var list = []; // return the list of modules as css string + + list.toString = function toString() { + return this.map(function (item) { + var content = cssWithMappingToString(item, useSourceMap); + + if (item[2]) { + return '@media ' + item[2] + '{' + content + '}'; + } else { + return content; + } + }).join(''); + }; // import a list of modules into the list + + + list.i = function (modules, mediaQuery) { + if (typeof modules === 'string') { + modules = [[null, modules, '']]; + } + + var alreadyImportedModules = {}; + + for (var i = 0; i < this.length; i++) { + var id = this[i][0]; + + if (id != null) { + alreadyImportedModules[id] = true; + } + } + + for (i = 0; i < modules.length; i++) { + var item = modules[i]; // skip already imported module + // this implementation is not 100% perfect for weird media query combinations + // when a module is imported multiple times with different media queries. + // I hope this will never occur (Hey this way we have smaller bundles) + + if (item[0] == null || !alreadyImportedModules[item[0]]) { + if (mediaQuery && !item[2]) { + item[2] = mediaQuery; + } else if (mediaQuery) { + item[2] = '(' + item[2] + ') and (' + mediaQuery + ')'; + } + + list.push(item); + } + } + }; + + return list; +}; + +function cssWithMappingToString(item, useSourceMap) { + var content = item[1] || ''; + var cssMapping = item[3]; + + if (!cssMapping) { + return content; + } + + if (useSourceMap && typeof btoa === 'function') { + var sourceMapping = toComment(cssMapping); + var sourceURLs = cssMapping.sources.map(function (source) { + return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'; + }); + return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); + } + + return [content].join('\n'); +} // Adapted from convert-source-map (MIT) + + +function toComment(sourceMap) { + // eslint-disable-next-line no-undef + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); + var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; + return '/*# ' + data + ' */'; +} + +/***/ }), + +/***/ 73: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + +var content = __webpack_require__(173); + +if(typeof content === 'string') content = [[module.id, content, '']]; + +var transform; +var insertInto; + + + +var options = {"hmr":true} + +options.transform = transform +options.insertInto = undefined; + +var update = __webpack_require__(379)(content, options); + +if(content.locals) module.exports = content.locals; + +if(false) {} + +/***/ }), + +/***/ 379: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +var stylesInDom = {}; + +var memoize = function (fn) { + var memo; + + return function () { + if (typeof memo === "undefined") memo = fn.apply(this, arguments); + return memo; + }; +}; + +var isOldIE = memoize(function () { + // Test for IE <= 9 as proposed by Browserhacks + // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 + // Tests for existence of standard globals is to allow style-loader + // to operate correctly into non-standard environments + // @see https://github.com/webpack-contrib/style-loader/issues/177 + return window && document && document.all && !window.atob; +}); + +var getTarget = function (target, parent) { + if (parent){ + return parent.querySelector(target); + } + return document.querySelector(target); +}; + +var getElement = (function (fn) { + var memo = {}; + + return function(target, parent) { + // If passing function in options, then use it for resolve "head" element. + // Useful for Shadow Root style i.e + // { + // insertInto: function () { return document.querySelector("#foo").shadowRoot } + // } + if (typeof target === 'function') { + return target(); + } + if (typeof memo[target] === "undefined") { + var styleTarget = getTarget.call(this, target, parent); + // Special case to return head of iframe instead of iframe itself + if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { + try { + // This will throw an exception if access to iframe is blocked + // due to cross-origin restrictions + styleTarget = styleTarget.contentDocument.head; + } catch(e) { + styleTarget = null; + } + } + memo[target] = styleTarget; + } + return memo[target] + }; +})(); + +var singleton = null; +var singletonCounter = 0; +var stylesInsertedAtTop = []; + +var fixUrls = __webpack_require__(657); + +module.exports = function(list, options) { + if (typeof DEBUG !== "undefined" && DEBUG) { + if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment"); + } + + options = options || {}; + + options.attrs = typeof options.attrs === "object" ? options.attrs : {}; + + // Force single-tag solution on IE6-9, which has a hard limit on the # of \ No newline at end of file diff --git a/examples/inline/dist/webpack-4/styles.css b/examples/inline/dist/webpack-4/styles.css deleted file mode 100644 index e86486ba..00000000 --- a/examples/inline/dist/webpack-4/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -body { - background: snow; -} diff --git a/examples/javascript-advanced/dist/webpack-4/0714810ae3fb211173e2964249507195.png b/examples/javascript-advanced/dist/webpack-4/0714810ae3fb211173e2964249507195.png deleted file mode 100644 index d71b3d789f45d8f124a1fde57a36e55855a6dcb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54055 zcmX_n1yCGa)AiyI+}#4f-CaV01Pvs(ySuwXa0{-%LU4CjTo;$c-C5lA=Skl0udS)A zncAJH+tc0Wbf3OIloX^;-x0k7005{m(w~$80I2h~0}T=W?Mm7WOZD3ql#{a5M?l3G z$-&zRyrHbrC&24}pWOE1#J4L*_R<E^0n}7BnbqYlN*dr?J&Xol-xcqnkFbob$Ut zvzs#}i(`JX(`U%3SEt?TTJ79}PWboI4vg#aH6Q36MyThk+$ThR(V*Mcmk}2O)pE`H z!}*FPmaaeJt*d7%m7(h{Y;B0aP#FH?L7M|-U8fHvE&>1j$}-^Yj~R)3=N5l%2Pse% z>g3*{=FT|{c#LoGz~X&&E84*V{`0+5l^H|t+IgP1bC2Esl|;YNWl;5%D_SHIX$wHX zhS3{laHn+#Jbk=t@h|=Fu43M^)6naFFB#%(M1iRADE_A22`Gp9XyCi_G#Ej^Qr;82 z_j;?ZzRuv=t;;njIu0Yh+PM$V_v*s+9El4d^q#ag1i+3Wh8PH5t=m+c_;L8t0>}`~ zdH^DU=-vZ;Ex`YKOr^};vyUFy;e6K_#eNQf6-JhqJu&G$$||2&OY|x2v)0?csN7%O zp4wgV)c&_#)=xgqui`>`T~c{ZG#H(jKocL`nWETes9dPImzZ*>*h-1TaRMZ z2^;wGZtNcEX?D%(2vxn_a`q40W~oSu=cOQ7$nX)=qq3A{mI$k9OgH4z(@pnPpVo-PCS0wWt0tl zRl*(PUbj!#$YL+#ZLbh=4ZHvE80Du=Sb$ELH}}!jwy8mb2Kd;?PUc*1-i_BbXj$UwN0^;~bIJn_BY$`0RJ!0jOtL_qEgepVy)P z-RM7e_G{nK84tK96@O#^?D5siB0A-gS#t?;ZIhaT{$Lj`@FByxKk_{fhU7bV=Rhav z*L^m#r6`T$t=*muDO#@ZHXYZ$*#d9dZLZj9Wgq{~K{eFZp4y9>TrOPLo@fB*{zY)T zbmZJkPsr`q=@WHJH<)}fbf{dfNEwrN z;P!!dpw{`5>QU}W$AVb63tgj!yyEG;16v9^bQA2kT9ut>^lhh0T3^{eGZ1UqdCc1d zY%oH#!HPK-!_75E#VGJf?*Al@$j@zk>33PL-cnWgEj9leO@G0%=HIDqz0w zD{=nr*cnGwAiI-9)J5u{7jsG@C~{~Hp&v=&P$exFDqM3VpCU$ouI85XI4TNr7{wiH zkxE3P==kWLL3+il#FFn*+Xw)vpveR-Ij|sizxkXU6D|$u}~M17_q?I z5Zz4-%h}|95kcakekK(?7CR2?wjR!`EL<`RW9ohn%BShcC}ur7O+OZO2UwQHH2`Qfh7T z2jiXv*MOyl`l7>U7*nZN<36(#5MUK6dyyN7Js3$5N4+}#zO`-6`p}oOuyDWE`M{xXK;MIGMc=-|Qcalad z!RQh&o$~CN!sxzQ#Rq-=(;T1vy%H4XNIIzh!#fkn_)}H4l$ou{`yV@GLNr%%PvD*m zoyB5CT}9u+eX$kM(8=mY{tX(*WO+4N-Xv@m=l-YR~$>y*4Zaj{qW)!Q3xQ@y`{^nJmj z6V_A@`K)gT*%qD>s+vRzK|)Yy#39!MRjeVw^A^+fXmf8J!wK%Li+2UgwFh}D)=!WO zoKAB!<%hQGIW#R67~Gtf-7Jgl!G+(jel=xFYAEMEBgzc$4E+w8$tU>OfaWI`9o?xtqe<(B(`4%hS_3Fdk)u>h^7NRH^02_6ST4fT=; z&QK6?=sPR-ajj&H(Z7-M+VY3D?GjHxq2nFU4$cD^i00CZ6MGwsB1S4;6GpFEEI2)& zBH+*Y*DAiwo@Rgv|gKP!lY}t95X&L5OU*LWO2yyry~2hf(Fc6Ev$EhI77G zj)&?Lzi3!TR?`%4gnI@(Ul~-^?yCSxa#k)+L&T1LK(;sP*;q`f?EUeX0(;BL5ayT+ z#}D05H0HMLdi6oS@-Oz)wy!=^R0d~1p-rH89Vs0oFeoFi*(OUeWT<;4Vn?4tsH^Yp z1L7B%M%$clNr5vqat9O(*fP%)xhIRJW2(d!#svPmh85t9*qAh%iIr^=a|!#&w@_+c zPewo-K}gz$zDxN;U2&Ou7?wfOK285@iUtHpiF9l4PyX3W zjNgB;Ax9vH{vLL^F{?mv?~AY`DgpZa3XbYQMKMTYORo=$j8 zw+;+-$uT&{Vc-=f59!Ye<2#L5r&h+|A;IzMrX-&vYRM=Rb{}&EMUC$=mez# zWF6(zw_BlZh;!0<-p@r97Cf2(ObGnEXKUTRH%F}v*O!+;mVZGoq}F%>erLiN@gwMC zCZVC;i4Jpl%LR3B-t$R~wN-NgZXHM8&lchgG)EDfa-_zF`B<_1UhS39 z#UpXZ2o>Lllzs#*5HKcp?@Lh&NcevtQ&eUM^%zvR2|z#{tkiFCVgdPDSQVci(dzg!m+)s z29U4fhL);}8Py^vLh7TQ-PqcxKA0%nIBLv^bv=<}-mQh09N@)LqJoVmec2q46mOjk zB3at|3gFY^Ka^>?pb1-$4}jceS|7l=@3X9(2l(@=6p|&#u$)iloaMJYICTwb&bj@wvolRG7vPtutbDvzuEHFwUfEtY8!LV8|JqvA=#cr;n;BRM zxbyb+^6=wC`Q}XX%Vok9Llm)g1R|GyEL+y`xh&ej$LvJFekw>tdCdln#<1MTR+ark zT*SY$$<%bGTvu>+bvF4C8I@Cuq;Fb?c#vCBs?dyle57-Y2lzsW;)ihh z+<;#BYX6t-JROwrwqL?wbP$FjXxEs)A)>7l=``Az$Uy%>`cqJd60zEa9UPIYEEgAJ zX$T)(-2z?1zah^D7m0G8IOnb@*=nQU*`umscN`1j{;B+<5?e<1ahVV2Ps;qUX94M` zJecXK5Q>@5D`wqDLdsvwIVsL=RIZmtX6!|c?|2XraHL7SE&*rKibjK+ zTlP-*!9#6P7UG#qo9tXox9}=5NV@*7;FMU*E^y<(sebe$x6pZ+%+iVep4WLm zy2W2Q(fND*`I$9vU#;toVIs3`cb6{cy{#I6&#ANUL4Qd27T{||c7QU+v!u}S7#_y{ z#oD@$W-9q=0ODX!?Kh^|><68$ja+z$g%by{ks^8A-WN0K&HP#*qgkrc$h(i8`K?MIm$Yf%0tYEI}MW^HWp^oJ874D`)RlKuyjWS_IHvTij`1gk_9IT%|6 zAE)&~(m|Ir2ip=_@+tOC5e6e+gRA*bS33QZSI*Tsmj|LSqRY<4gd)nUW5n-4N|pw> zkT~%WFe@}Zd9PQ8Q(yMK8W_K>Bn&m@hYX`xI_h0EUT@n%k3K(HthUQq`4Ytt+y>kBeJCaUNMv-iS}eBAr<^(B;C`Otr+~b~ z>E|%Y3(U6DCA`#saE=cEb`q^yiHSf9SjcDoHjR$M%fC3TYdFNAhicg>&G^*HC)sDj zMF!8h0e1q=v=K80WQvle<6#n)NnNV%F0{nkdOViH4n$sf1a}hmst?uEP}uo5JR)l1 z$mC{3ss0lDxj3>HunXASATP~3qW$? zG8$~p{1Cn2HU{FzHCi$qXv}1hvPT;6(uro#kx0z_?msYjUbp9z&tJGhK6$gwWW!~? zF4D4LFhZ2lC+Ki_q6zOGnK2uDCAWB#_Wt{&$0JTY-jzr0;6wt6-{VV*+ztm|EGhA7 zR0wVir=Ec=r6%5FzuVC`^0}eUt6($^Z}$ChNQ^G0qOkUA+^1$TBhG{=YQ3P3Pi`wP z*TQVRDCBqTvdIm9xlB&;lADHyp87KPFqp2}e95S>TM?sgg$E$kNX|B$wzU4wC_wT71m9Cp z-PeGB(c^LrTJu6CUV{aXz!O;SlGeMm;5A-}f2x7!Sqg2VCq@wTaiXcYGxv&W=9b!; zbm8n@+YEzJTwUZ#Xw>J?sE$b573f-7PpIQ@9bdUi^`Pzb7|1zoe&0H^$p1KLoU+`m z7*p*#Oi*exU%{AX(Dz5;LeiutK179dJr`{qc7vlhk@a!#tq}P%HT;~$UFk8>=eLw& zRXt`wfa1Dq=?!wCzAE#p}pvJ4zt#gx%L-wNC0O=ZbB$KR)97%=#SN2W@Rj|3{&&_ zgY}~yp%)DsQAiamqDAB<4FzR+h3KKvf0!WrsUS=d%QJQ)=ApMu3XW}QDb!3Y3FkfT z#!H9Q2)fL<@ZE2sAlGV zfcrT0Bo%FoRl5M_zIt#KbB?~dyGHJ5)A&xT`faruK^S?Z6|Y)^l| zYbqsLkdATE3V@{g;obponsJ-)P78fn5 zZ*+fH(aPu#e~YR$^_NMXQ~z{onl2m4nj`&a(9)7#S{p0`{BeQw6??>EjU z?oCP&yP2 z6~WMR&&P1~HZ59%%Wxp-LNhi7w0Mb3(;Dmg!Ngj)xxjf-c-y#v*hUBt;nv#0*f13t z7OJI0(Q$vNMDME`ewiM>e3zA>OL&i-rdvGCI|2p^(*6(@0-+X&NkH$bz=@NGX<0Ux z%DPe!L`}97jh1mP9Qk7p*=;^v0$eV&@elc$>6WqP7bw)yMG9<{9hK$Otkw!Vo+6WjC`BQoY zdVV{YYwi5_MS<%cx_1y%0T0&B<`y%qbdvc}@vZ+fUq%lzYg1-&3=FFU?dVH zP>Y~jTQhBd&N^yKhl;EepHqgD#NAT!Q%eo>=Cjg_#wq0*LK{`6(MxB72MhOh~32N#uK>2an1z%6v-HBXF-iOd}q&8Rn*8PUtxt*tpUS9_yqsEv^=!)i5S*fA4| z+OodT?V&|=dX{WGw3OJCI|&bw1~{gH1qbB@?MBvNuQMk}sA%Sbt(eh1-~V=R^N zC*}3UNZKR9^fLNHF^|dyHtoSSxK}uR(bO}V*^4)vkGmLVC7VKHKW}r}_B1BxUzP#s z(TjsWTnJ|w%Jxiar(ubrj?D4IATnwIsNk5<2t*ptds445V^7uy&myFatTZo-bzxOH z`!A>rY^67P(@qjjqY)(7EJo=@ik>2Gx)!Mwy3bFM<*PqsWV4>8xfzN+d7V%D#NN$4N9APMqr)Ba(K+S`*0 zFJ1b*Htlym^)35a2H@NR-!{4zZ@bIc_YzGf%P%B(Hcz1cp^VfXwvbKmBY>EQSfqc&rfm6Y>_BwYp9>5*M01!%wg*P0 zP8pXF)0}0;IA)T+&u`1nZIjAd*ie?I4ZX1={NX80b>tVqvlHv{aK$Bfv4Q}+%v)$V zkrODL=R!l2{w%IWsqU4N5%grO;^qFdoTfO(eeLn(JvkaBH{^0a0&Gckr`g6>PM%-J zF^@i3vt^Mfp`ZtCTdCF9^q;o57MIe6D&)b^WaIy7#tbGJ5YvFK;Nw^;SYL(c0{A0Y z*HX*A(vTedop*X82NK&?0}aP*_u!B_h|oiV&ald(V&xb|w+v*ZGcm}-oyx_5F-z$-V>~szC=XnufB=~){?`r z?ApKvoFCPz({`HN?RcCey1x6UexImoT*BMxpD)Uoqio61fPn+Vko6tz)V z+%ZGZq?PfB1O{XkMxZ9zAA$Tg1YsEbL75^P1P=}U2c@dQBS+f{=NupH_uC3||8Ew+ z8gNIk{SB%WVd)ea>`0RJvYe1vYk3g`X;`x>s-`^=I~*~kKfU_0&d}~&5Nx4d`Yyvtr@E2ZLEaRm`pf$fbCo)PHwwoZc({1a-EJ8GFivzyh9taD4n&X8l#A8wZxHVNljp z@RV}i&~`||&PD|T;Vab4sFP%r402nf?5PWL-ay|Pe(=RrgCEH`W61FX71I(E12HH>BzPwfZa z)E+OqMQ0SXZQ3e-e``YVu1@Gf8aZ7dYGw;JlJ=Sr0a;{*tuAPpG~B94pmz`LYe2Rx z-w$bYu2##&Z7SF8dth|sTOpwFd=7lO&u3B_B3nqx@WL{!m+jKgxx4+6fX@Cp67e zBFIHo(3PJ*;2dQ;&CZGoWc)r}eva==Mts8@=x)-w8d=a}!2{|QPMnJM65P!*5&~9d z`MZo$zD1?BK1WTqv^^I2GJi$to;qdCOtCFb$GXXO4gQv&Ls2^gz=8ssfY^iVP}9CN z9>^8(?M5LV27?svi~FC_)y_u|h1-QO(pDrE7To|@A(Cc&1)$Xv^o+Q%Y`25O0 zfGwbV?$}G$X_#yZK{>`*CWE)fU;pfBqE)YzeGVEL{wCz(=v+4%!}d+~y;B%onfVWR zmQB{aejPt64xW;r0Pdx;ZP(AK{U;Bnc(4gZ-ma)k50rT{4Mc(t@!GgoOyy*Jjv>}3 z_64q?BhO#8!I7b#Km*OkE4F4fg5}R4DHkggFA`1RS*GG*$F0}E+<&}lQk4>MLYMm@e zv=RP6rzyqVff0ZmbfN?M6#zOT6Nm4=RjSccJz0y}7JS&^4y3 z|BtGJ>@2yRF`EcPMf%gr;Q^KlEpqvBqw7+jhG=P%+qt3kW(b>APKr#JEoV&corqZf z=3^N0a!5N)$|JHvckIU80Y#_F>&+7`<C}t{ZlNCGS-w)oK$Na)g#-OgmJ- z67_r6eXzz#<@I*mFy(11d&ZCpy?P??qJbZfKQsw-a3e>?x)Eyi&rtWOZ$%nl2W_Q$ z-fv~&zbPVLm@iU%bwT0Dc5aq^R0f#>VGPzDk6EpdrX zMUS}uARrCdhhXn4r8s&xuai^kgXL`)70KJ zsncs*4r!2>b0hoN4YP_azvxE~WjHXVrR4L0~TN}VPZM1UUnk3D zoW{qn7Bq~45|gX*?u9E>IK2RFw`v)W%g!+4clZMc+l3S3EeN=g3fe0EV@i3z>*3gBUdL-R<<3P=-wbmUu=LkwXUPT^G z(v^Ae4}^T5R4^=*Y`Qj+fZ1gHv(0KnEQwQJ$6ELOi{bHuHvx}5!LPl0}BA zH^Z%$6;9@jYG%RczdZ8H`I1K)6Jkf$BDDR@ZoG&fW|eXVjyfpKL4U_Jotr-Z9S*!f zNBBW{6h+`ww_9{{0Cha4JkY6p6*Ri?{26>c6~Lth!)w7>Z-d^F7u6ZZUQLlv z=}p*j_4zKI%WUN%cjcpdbp-zA*bcJ&uwRtQ{U`XJy}`@D3KA4ISAiB5hRqM=x}K^~ ztP?!kY$YXip*PFusFe8A>lq$=GAdXFSU|!Z_WtqnW*6Y~4{>jr22KLo!qE1MJ{=W> z>4{6B9fv zT0a|wWDX+N^8E=<6C*i4#hh4KANDA8e{dGEQu6Qf<>2gC(sAaQJL}fv-4B-A%dk8d zGot{z3Uk*pLq#iXza+04$2V#NMDj%{UZQ10``&X_k9k}Nt3#z(hiG)@=z^=pLQiWc zUl7O6Ie-cV91{%2?sAcH4&UKG^FBn^T08pWFoqL}EkwY#Rugw955zKK%<>*;$-o_e zf2aJm@-CYfk_L!Fs>;uciOpA{B)uuGB!h~u-PqyKm!2o0S*ZRPXb$)sx(P(4&fP&na+!d z72!z|uUQNV{|tU(#^z}q1N0c+VXHtF7JR4k$^1e;+^h~~pu1?Jy)T>Vts9_Md;bYp zc1ZLhH~N;49bKgMCul{CUkbc+rf)H@xbU!&$8@dX!8XjB;$YqsLVNt3ubJTSBHAtN zQRBy<)Gdi1;4`Uvod{Kb$E{?{^oBl};Y&4w;&@~FtCsTvd-l9@(lk#wVsh(*{`+-T z;wnzqp4H`QW|src@bw=sKSwS7tJXo2&0SO$Jq@<%$c*^)|5%(srma(f`SMd=t5Z!_ zg8s#kv9w<|_2=QDe76ySxWyouF@48(!~EuM{lAHYA4;`64Brh)Gp6ouX0$F>__|{- z!Z&e6d&t3iBV_3`bKiIYa#7B9eIr^QIOxb^I8@(XLNS(W-mj|UFAEVfiij1Z9n9?e z7S;R=U3SD3cl;tZa)5yDT9&!uXdX&BKCm((MR8NwLmR9h)&7#?zuXTt_dW zFp9D=syb^jKB?h$Otmkc72gJt0`8(MdRL%8f;`nTLSey-9QCu_-p44e4oV3$#F6VL=dhTl zVxtblf&%8@gx+wB zpRUmY&C#>CVX{hRDEke6R$Rt$nlV|YH0h9(#+)haJ>kz>Iqt-1Q4T3{;g}s~KUfjP z7x^;xhU-|nLPy1D51aC$lb!efQ)W2H`+BmS07d|dB7GS*e8yT7i>~ZJ3}m_UoJpjC z@!k_*fyr}L^p6Ux2Ch)Yw-_JabM~MK^fbB2(|L`9oup_}OxX+oM)mW!jj8qT#F+!L zV|9M=&Ep$3NcNQXzPlEV*5fDFR{i}*SUZ^qsOOXMO?N(0^EE^)%Wwz z%JB2umU6Zhurqb5-_Evq{HLEtg5AW_uM$93IuB$WlKA}SY$HL1bhOB7NBP&T>Y0~- zzZ%U`ny!ItgzW_ff2x@oy^U`M)!{zQXUaST+9@FQ^YDUH&q8E#5(IV~$=(xrLNP$F zUw(PU#1`t8#We1@ngt|XKjB8N;_H}gH6+erf(wRJud~e^@%GFyPOIj;uuj2-WVNNC z&NCV*5I1*6y@@}fI^c8U)3LaH|0;W<^dy03Ya6qS7uv8xG(r#AfoifOow!2e>80@X zeyH8XvM z6#DMz@h(T^94^z+3?JVYlixkU8}!LMRl+J{4E&yrH~hRDl_~r1E6}FbCsgpp()vaw^DM<7P!XM`RVw~V zpvOpNK;7V1nzLP}nZ>=*`Yf)@d{72?SrG=R|op`fzO%}3Z@5UwAe$>as&~vuLPexJAO@nIF z&a*eR76rB8Jl-&(N+Rvv4nK8vBT!2 z@9byZ@Tb|Se1C?@5bM%i=)Kl=oA=cpaA+CRIi-zx*U(|)^fRf=vx-f9P^?R$$=<|L z$nn0K9pT~_P5nEM+)b?Uz6$g$Xg7OgQO-MrlYTtXQ^ZK|(6H?~7!Y6oa1pKB_2C5% zyBHZsVk`ktAMc+XD5&T`UU$r`J>1j}uEN8!*DqTb{z=5?nxZ~4g>rSLMW2q)8vj#r zGW^$+iA>Yy1{b<(M`}9>d7Gv_Dn6LKro&Z_x)oq8tkm^GYD|X%4H+99EMgXRzJ?2- zt*};|=1=3DTDlQ53A!Vxz~NgvIYqkwvEBN{RJ1R?YA?!a{*K^T|3HJDtj$}slT=F> zq>ed@lH2OkQ*$lhHm<4~Qg!bTPGN<&c=^sLm-p)Q|*OXll3Q9N%z7?q3qIsK)!F zOFamEqwF^zPQlqJY*9|0+`YHvtxVYkH<9d&cM?pKOa9JB6!5^OXOj1izV{0G_~Vo_ zDK1DwmS1k;?#L(J1*;I0dKCzkg`_TTV)&bKFSf{I$^XJJx*_dH2(Ssu%#>g~F$fa_ z7pPWEnz*#LJSJ(4+_#0LpiL1eTyQ6^SbNFG>zd9MnylH(aV@?aqg#~E9)qavl8!^d zykoMFAF>#_gP(NVW|-s+%PO>%Gwuj7|*a{chyAV z2up4J_kHiEq)jk!5TL=fP|j279@3*5>pbY;ME-l?SPH))OM-NU;KxBqDV=>Ct1epy zFze&rUGDyr%7U7fb^me|DglQiV|uAB61i(_s>ED3-UOpv=oEX$qXIrx;}P3G8qor| zBT25H^SxE1+WH^v03l%*h{L`}pe)1C7Y0`jX=eq%(zSTz(TIT~w8LJ)jCj6mZ{XMR zp$RmKYFLA0?y{RUX9W(&ON*`oofvOO!#K}qb%q0o`kPw6g>|-7q`FaVTH0vMS@NV# zvh!B`m)L99Zmmbc^00SoT!MWcbOUwBdzfFC%x~c{gnZ|2cg0mBzqa^SMf(f!Rn#y< zX&Qe{KFkYA&kHxFWR4tH<8LY)V=^@Nd8!~dunycrGzMhswYZ9yfmcqHcu6&+m`BnNoEYP;e4~EDKqlmNS@4Ro%9b)eCDeMo*{l3 zGvEtbfE#VVEa6{BIcb{M+X!R@oGA%_aDO8Ac`GtI9#yczTx^fwDbu)OWc@Inu6vIr zkrxu<;~+D|uGQ1Q!FW`E@41uNlx82peF$uXH8inXxpPG`ROeRhqX+m+6H@dez5URfY#E zWLB|*HTa^&Nkz-3Y75r(tr@Ey&;PD8c({%Q1@&gow<0%YK^|45!Z;ywK~9l76S5n$6YUiKAc?Er#PUF+>-;;$ieDR=nYXPFp1q4`~L|jA$xH#5cPt z%?BZh+Gb%F)n@f~xeEl^b{ysyN&BQ2e7k2bV03_yvUNuA^-%>`P=Tg?u|*|%se;Uq zzIBI5$xB1^+riZn3?`AOJUlJ`@EwyR}7s`z9=rflm1w4AfeeK*asSZTdn=Awz=Rl1s=X^y>dz_3-cfcD@o zMod~Rb?j^CytPT~E>#DvdF-n5c-izmZP6OCwl>j~m-_-A^$gAQxO71)Km0_cxYq}=cpYk_QjL>F-h8Sf_CJg9Ly{K6ON4QAv~RNPbmc&}5Cieu$~5peUGi$#N>` zS;~r@TowGR{FJT%)fWAGZf2Gom>EVX9^KQLo*R6}Er;0oXn5IUMtfjlhWaU^`~cu4 zdOTzkR}2$}%h&mcl__-P;GcqVu6-@>PIyfOGY z0T1GgUVx2nc}8HKVDlA$x=qU~$DxMXKdH`t*tYdr4GAqUnKK3@gf5I%&*7GZZ2*j0 z)}1|Ovb#c8{NrVLRx{?je68kj>|0o+Yiba{f0Y;kx!DA~jYC7rwq)=CTO_BV|BjT< zLhCm>Gg!cv(PN6;a0bm{-SbRSiWH#S5}JG!q9N%5yBk-Vw-k4Aw)**PR^jsjB}xU1 zyEHt)eVJeicRXpUYx_u(tUx~m3Q<_cns=W+0-D9<1C>iiS-Cj$x625v){~VB-WFRP zs=iJxBP9Yh%)+k(!xEtJef7fiSj%u`d}N z7zvxg{JbAAxa*n^*WZi#P9Wl3&#~DO zO&@RbEWXT?yF^AtpM4YCzqOqyqNKuR5rgsr{nJvL;C#&uE`h74{vQQQPWvO^IU|qT z^9Vwt<>V=fv!a1E2a#Qj4w8cs4qCs#^~wZ8Y^4*$cMCr2TQ>S;+CmCYeHC zgtBA4k@0&;F|L%sEIjYfCHX_3TdmgN&*ZuwJfmZhn(3=nn0eELh7n`bW`wHph2=X% zPRX+J@mrky))zYs9AB#QmE_#3WK5`RaoZfzqiXfWcuZL((kTkRJ~;7_{Hp0;KAPEx ze;drF4@YfaJWiO9o!hFPX^>%M`AMo!x<^-5EdiemHb}s*g7@<_jnX`>8fg^f#a9hO zNU)t6ifn) z$H$^(Uy}0Xtc?RHKvpZc9_DO5irKm=dGs+97;d=Jv;cmUvm^>TC|Wb{HBz{4410@U zE1?avF~nBy<&@~&Ou$&-=S8Ta>vY{_1*xNR%$PTsp!)&dexH|J$3bF^j*(iW64oz} zlh4*n*Pni>FX`tKZa8T`Q&s=fmTNg*PGD2O1%LpP3;&&P%GHDve1$Vx-9>fdVNh69 zHT%dTSb&Bk!c*ZnsYbT2N#nTgS(@NaNUFZN;1l*;S6E z+M<|v^en=zZ1Q41ypFxOoY0xVkHwnL3_DhPJ;ra%vv@)MusspwRf%yZL(93KL7;`_ z#~wJ!OfJ%;Vh>uIXnPchEw;_irVH(gHXWIVJ127TSpn|hB#F+9W40lYE%s?9%{hz* zpqM+uSC#~;@W{2yS6vP|e8>^yhjFIJUc8!Jwc_!49q0hxv|H7;!S{BHc7ula2D#9jQ%x-Tu+VX6r{Gyu& zugXnd#VDg2zitA5wk`hFe;0G>^Btp3iRU@CAht7%Nc%45`?OUrO~zu}Q#ahS$v6LM zc#*~1DLLhRtf3NDrEBvTVY|a1#UUB4Hbor4sKH9@qIN9Ppq4w+V9<({9QJ7^o zINSF@P4#P(+c>~9@oiW>FBZAekJr$K3Ptabc@lq6#+n|aC09qsn^-&&ax^$vkA#$Z zK&!`9f*}$|YDv{YeBWeZm{WxUZ8MNvEN=41$N3atC=wnwU_G(6>6=z==GUVxWgUd- zoeL8iKGKB=mm9Osv52(oADyWhi-SjbI#0aQD%+jd{jG-?q`OCa2OKUtb@7`}gc2TeWI|_)VFphof1@Z^-mMA3JlKZrov`I$TAq1xxs!-IE*` zWV0YkMMqb%rYT_S`i?9P7LixpyK^|XY;S5a-+|kXVUn_yIk|0?;UmQ^2jr5t+=1=X zz!SoF3p_c4T|P00Y-UMPv!;GSkj+}q3&>1^OFwYyPHW}z+Ra&lr5;>@=qiKdWn@nX z^==#aJ9vomjPKpq&2y}}aT34=o<0Ck&oRF+T%OY%+)C>m&xI0M=$zLm@Ck?3ibFQH z*zbod(Xbk5z|SiOwqq;K42yB+H@{$JwIWE{*@%&K8`o5g<%(f2=fpXj=$-}5l2w-N z>Z(->#BWY3-e%dHN9pCP)mlFAiX(?X8nicpT(w}R3AbTCC*%^qsX;aX+e3g|xGe1glO)bNO|&s}cbE%@v9gwB zW8jbPlZswxndD^#)Aedplu3#p6)?*?29#(kx^AW4W* zws!k0q;a0LgM@>95(E2t?a#GY>cDt^4w<#X4SLr-yTaG=iub|IfXv4oLxb*zD~Znt zYZRZpv(q?Z)v8qs#BV?sF3qy@5HJxt(CC~f>YZ+l8;w@PwB})*5~Ku?lBaPJC|@%> z2PRE+dT6tCaluUPq&unA_>d~qUO3q6+VZ>U%TKc+%P9z+6FUuZs=&5EaEg7q1TXJk zp14|Cr)G!Go`W9D@&br%29qi~JFwTm)>+nTFl~F=wuc^HEAyDqz%z5fJ8=-(gAkrT zO>=af?|chB*^Xf_4!{#Jk4%qv3X{Cn0XJ73&iprO8KZ$$R0;h6l3SeE@cWb_6$CzM zp|;aN8n`g|9PygcQkX&Fd58LuR2o4^dm0 zx=uTUl?W{4Vi-25c0uTl>`XJ}L@d+fj(ck{ro(*yCP>R;^kf{><;hr*R~kJ6rR= z?(vxxHX7a#NsZ2}v6G`k9^IYGi~6Gpt_Z{J+8cPyRioP+H|F`60X8{X0OX`4zY3^q ziDK39miUc;li$2gyA6P6Fx&#SyWoCa>1AkKC{H3whIwPLO(XAV8c}~AHmXv&C3QHM zcHfqJeGmn(EpAlh48~iCc74BxtIPS$_|BYd%c+87oGZ{x)l;vJIR!2UI^lt@Eks7H zAHeW_?|*U!teorO{nz^ZRnBO=HkKU>!mh}iyazcR5d3iHE^x9s@f%Wq0KnS;{6+vj z3*i3-@a}b4z9@AH;Hv?AmE+-G0r24k;!j6q=P1*?eCkF-f^9v;lw?zG(ZOf;YjyK& z4E4Ov9<#I~n)J|=8CtfpJF8I(*o5wr?cXa>K^v9z?PwU?qV?VtdBe}&7b9CXFK;FE z@nIGtCkEg)RL(%Vi{Xya#>bk5Xy}^cBGi>ue$s=dq^+6CB(kaN$m76Z>7|z@DMZsu zZ&107&75(5Vc0L2d+YLK54O0!e$kYqVX|XqP{ZdbP4|t@@w83pZ$?&_PXD|e0Grd? z2eq#b(%>EqIY(ZZ2*hnzwMYdCOTbVxQ|-C62R*K z{1kwHxGv4FdHt&Z{uqEu|MMRM@HPM+y-9=UXF(_4JFy--aa|{3Q$l!kZb3F{I`VE{ z%I3drnIrC973-!?&VQb5Ra?aA=7)xU=rHddCt$JMEmN+x_eGp`z@{DB|8gdCfY5Vd zzf0(4Sb9DP$b(Q0k{Fy!r#`li;FGRTW-Q9{``BNpc@ z$o$@e?eFqEZLzTazW22HbOH3ZR>SOTkRK8@LSlC82Wc55$^WWnbUo%LyATvAfC~Vx zS(oOEQeW=Z`_lhW0N=7Y@h?7z7a=Sh*x)3#=!j%uD_auFa+xVb?n*ZLVN}kEQLL>i z3zL(&gC-DfV}}_;Ii?3V(*Pz9BJrQGs_#wxMlUromo11IZ9wr?nHmA$PC){QYy+rFmMezXEu{ z0`V{UC_Sd6D5iR1bTcA}aqAB6rlh*~X_AZP&)vJ5$Qh5_w3hM4L|m&CWgE4J{K+3s z8ZF5R^N4mBn0EQrblTPq4px%~D}Q$rXPawbM_84z?Vt$`cDEShL?Lnlm4{&5f&Fe; zw;5XUr!^y*$TaU#r#2l)=d&Q(X}Qq(PG+TT=O0Eq_10I4ooTHv64u#1KNCly?Ha&loM#!jlYRrRX7kGY>}qqhgA8Kh z#(vf)ccXZ3a%!_0@f!{-kF3k^wAJYX@h?7#7g%?;@3^UH%6!Zh(bBrdxM_z3D2!gl zs8kbVvlC}Yz>+`(EAm!!$A?giplqe_Nz3YHx^}eTK#Yh3^_m!&vj9DTiV}yJ(vF8l z*@6|F3Or8wcvV2}4Q4k_L+A7m6zAZ6uRPstUQP7FKwkrlZdhF=#k3NQeRy`qyamXu z@%IYog^%W8jT_(xFt$B&cTh_+pPEeYII0e9w^W-P(*wHidrd{gA&<>lK6mUeDC;`p z>tff0`*Zf`OaP#H`Rlm# zj4B22iUs0N%fWSGp=$ym$xMlwWI$U@Q`4(DyCKZ^p>v^4*GS0MuzzbAiM>WQ<$9t zc99v^R_oseG)&MO&r>Fb{p2}sr+}P6M4{m^QQIc&uy)KcRt|YgBGmf(X;5#`>Bawi--tQqHjYCM?#^GaYajji{UY)wN9PnlogCcP)IqF*Mx4p!RNAq-0?|1{A4D+F;9YI=;=pi?e?h3DfmRq@^IEobAs!@ z#y7~dhfi*pB+NN{XZXLbTk*~B24A)=!>V6LARg{ky;I_>1D|}iv#YU5wiVwiJ$cHe zVR$8hrBjzxkciDA?@nUQ$ju~9jYv+TU3LFzd*(EM(UyXSvPNaZj7oLiHHzizPcEa= z?jS_89eZzArAEt8!Y+JBvF+I81ST6)6^1)QlP;|rW~k2`$axzg+xQi_kFmKmz_#uM z-`+7{y&hWQpjkSrmA8Az#p*CoGwwO(-KOi^Wr@5p8n^ULP4D&oLfx6hPz%i7izbQ2o(smx&#V0LB3wCdOV9(t>Ny6#~}mOkHluD2ix;9>vgG1UI; z697I1;E6BrYl+$4<>&eNdBm^FnLqEaAN&;ncl>$Z`2s%ovo;1d0Owzz_hEtf7i|JE znYOe&b>E$$0YF-M#!XLL3*~YxW08)q5%l&ZnadKiIo5r?k6*jdNWXbI+t^w{6~tLf zC=<=evpdOmV;vxFwj$o`nH$K6jPRBK>mJrZY9@DO1Zt1A)Vda7@!47Os(?_S7bD$m zJ8{cYJ_PU_&E_v{2qwYi0XzYwbV#k&BC5{P(VLtN@0K5yp z&wLio`;7qJ1mMg3x;%RL`VQdZ0Dcj`PXPFH0Dk^+yhgtn!0!g|6@JKhE-DG=lK_4i z!1n<7$Y+>(d@gm%U)x>(T?@oN|LN1ThwdVv14+!T>CA#5EH{?adr< z4Qu<*?M94 zliA!riT$2;-=_e13&yi?^3}V8an4hSTjZ&GSx`7x$5w|~F{7L&8f*#RWmbch3YNyL z4tOId#a~~nPhvox9fd2@76AVafIk7?FMW<6@h_wPgH#8Me((M= z0RIt&!`q*DlE?Z^|9WG7;@<=C_W}H80Dh~3>+!XG1Aspa;GF>e6Q45NuTBB{H-3FC z+uz^4PnZ6%A1ZzifPc#mJx{eB^4I;l{k2?240#2Ho$9{?;JyBO&#!r`$39CSe>s3Z z1>m=#40=A`@AcEN$9k4Hwqa)E+C%^{G~AlB#Aao{VRn%B`na3DtMe{Qt%0{xryRM} zN-dyZxNnVTqSRqzQm!f3Q2Y4M1c!ku-A6r^^%GM*N5DRAmb%MlH|M+h011&c@jc98 zZ5nP^GdW??(-*5ooSR4&<8sTdU>8^L}hmuCl^bMf+`!7g6p}%`BQyls1lu$v88_9TY zE5s(iHdZzo8TG>SBM@*3K#_Ck3Pv`eQ7&z#69o70`MNczWaTCkNHUYI{^Gocya@pukpjv#b@#Q;=2C# z0RDxi_;X+9&-+{MbMQDm{vDq({FnE^yX`6dT^!*4H=mNk+Qb0-z|#fb&mIt;QbC)h zm-qWOJdUEL9J6Ea5L*ew+MyX*t+6Yl%gn&MgB{mSE{{LX>;BwG9K%?EEnIl%r zX~U=wJ)BjvnnVBb4OHyqu#e@%+sHksojqNrt_Ily5&VuW1?_In145x$O2 z-7Y1&-7&tdG!(MUP5LAwNO5wEi{E$Nl!f6ftmJ1!}$CBSv&`BlRoBky}lXY;bJ$G++RVgC*P z|4>8x7oXw#zt(T8Jz)K7o&*G658y@ZXFi3oYrd}jO#t5x;8zc0Soc)Oe~#Kn^-l8} zK8MyM?$IahpY598zXSMJ06gzLk98fu-1U*XKFMo{$G_uX|EHeh`96Sh;OIaq{+RLH zu=U9qYJ+GMtyPG{H3WU*J8S=hR^y=7w!`)1s4;&l%(&Jwmci~~v7>ZGLTlrw0g z8F~H{Kb5F(9c7PQ zot^%QeCB_146-o;Mcku)u=mA)-SffeK`5e3D^)ejne5Xxh4UQ$@ZZJFt{?P~a(G%l z-$%%Q|32f~FF%ZY%|ZGr0DS10pZT4KoA#$Lh*#Hv{U5^E6UV!~VeDG}PXK?-f$kw6 z|Nj98q&OVh^FzQ7A4bhjRvUmH@-Fo!4&(nnj*)uS35>S^{JTEZ{cPr!e;Z?O{2{-_ zrvSbQz`y9%Zg0QiYcO`}*R3@^kHTkBgrYXE}*GLW$&)}DXe zqEI_oPZ|J5uWpzbQ`N{cf4Y=gfC~sZGY@p@+n!fu_vC_{x(IeLhC)s zLsiPd+^gP=eR5sWrYC78qczis^tf=HW7@eg_5OP%k&R!XT^F8S1qSY{n9^Jk4VaH8 zy`)9x)gkQ7H+%Ux43gOG)^UE*eL(!1aBVg)?qQJ7K6DM}zxFV5yB~=E`wu>^@;>#)xC`JLF?a*F4u_^oe;=Oqlk&63Ey#`& z(kYf>0)R=Xh32o`339IIRYjDmFnO_x17rG1(n8BE5^IKj%>%!oVf3^!vtgrxge zC7#8Tw$?p%-|T~qZdxU%@akS5mk8DImcA-pf7z%~P;xInZLp2@y9vp06;bo@er?-7 zQ&-UJMz1+kbuE`o(-zKyFq^Mua1UaX5YvGA6hthl9n5KPy^%`F3$Izp38o~muHo)H zhDpnYql%#pSNGkNT7Qhbk1*Uo!;1UV6NmA(Vvv=t+gZM`b-ukW0sQm#8UMce0L*{u zn(zB+6vMiA3V--Xy6R5>_`eSC+5;Gw)lan(d>5Wvg7qiwa~;0%DgKT#e+~BowqNiA zN&ghaA?kkhxF3S||3kM*b@z`ovB2)7RJ{~3V)xgACph=1NSDPoWQ;%qW2U?O?-8>zX)m32)odw1K@ zp$MZVW_ee&NrAiU0#VdIyMLbovJ0pJQ5Nxv{iAGCXbYxXbZeQ`5ffVX@YJH)oCQvH zplva#PMQ;8et+)v6R23=ho(_Bo6wZb0VsJNCnvaZ2gV27!2k|0EZzM3{k!hJExFNuBAWj8*@o zv?79Ls=Oaue>|^;m72}3^+v5W$0+ah1YkTVRg|`#i#i@A2^7Xa{JA)2!};esRJ-r* zjz^T%-}Soums{@hpx&o+&+(ESub6LB(A~6tXQWcP3bi+VuItpu2lU2?`(A;n3hzcW z@Pm)h=k9U<-;XMWJJB8I62Px&o8y957tfqHrV0`1`@}|9=J_5p9_5kBCD9`m3CvfO zw-Kf}RKpKJs5uT-3QKkYv#MAixiZg%F>BU!p{N#$KqCGN*6Z51u)cAKAOR28;)$$OovrZH?)bAEmV>j7gJIP7dGQP+iX=!>0mN-A!N zOm&HX6(UM`>v{}aoz0{%*@?gsd(Ng!V-P7}o!fr|bGEs6V%U1!5u9Uf70Gt46n^ZD zjw0_4LbR(!-hd|@;(~U^4)?o7Ul(^(miO@+z?Tbhl5&n{cfA8=)MZ6~lEgUx1F%|ShG?)FJ$ za1)lI#rpfw7Lk;Va6lu}Gc^iuBxN|2Fi2rF=_xiwxQOr?NYLj^geT{?@0iyo9Q>Tg zNJq!pC!!`kLk?{L3QAR_bL!tC9QZsBT`PCD0FrJh4q0O$DdSyQivDrE-VERi6Hp0& z&js+#be|U`YMGRVU!ryJ`nV3nKRs2-1=ZN(%mj${@A79VFy#x&F@2n43f4~>p}QA{ z0P#n5xZl_~*9yDQFuSU|Z`aq7tE9^}+<%4IH~%C6&q5f!Pn$4@-y{;(@ znQfr^6M!3NP{&xgooZ_Ax*8tvV36Fum86KyUN9~Lu@cY~?`po1En0IK=ws~JgSMsp z^F_?hM;WRRuIbt82Euy%sh7;sZn}h!Jk%+yaV7n%>nEd`0tn{8+X2=pC@F!gb7slF z=^K^i{ECya=psL`wo?bnt1_=jERyK;R02nena zcCF`Q-LL0v*x|mP58$7s=ePG{S8G_&O;8Ww*Nt3N&tP|@|M|qrKfBPrAQwkZyq`P_ zGnBTk=(e5t`kl?dQs0{p%HYybs-B$XjxV+Pw3+J+=C%nCtLmg$h!(HxsNFP30;(L2 zk;mGc_LUf0qK=WEpnlzA#qgBnKntRkd7*jSY%ynQe-sXIDuS{afHJ6Bou-mIbnCjPqjTPTF(Z8|@ho7b2h()j^2A zmm&gA@2kz@`}?bG19c(ul)P7|h-b^^JF| zXQvD63(^~V&MT-D001BWNkl@N8isLOx)TQ_ z96fdc7p~85lr5{!iIZ|YQT7h}oGL=9bIRg?Q^JvrDJXjiV;AqItDw)7^9!zC<&yg7 zJ|8aNr2s?BSrgb*{!PX?H^>?LF#A!VW^-0u*qjKDU5jnPN)q5v1ee%*q*y#&_NNF}_7f<}j z9|HJdg!=rnQtUsV)b)!Jh5jr0J3kHJf6&`Wf&X#^loxep=fkMuY*WdC=j=fM|0AktPcKS)Ie_ol z5raO`l#;gn zbbobsf3cHlZG-|TKv}S#gE~h}{_kd1n*>-Iw@=lVJQ>`CVNRm5byHAEuG%AB)#E(% z{Vk>YB$&w!;#mBqYOWrtd34l&7Pi@Qln|~ZOZnDcrKdtDXqe=?SGPmdHYM7<0Cm%6 zN&k={_e?I3FE2ja{!zR5Jyz>iQ2VU=38?_n`^9TXk3e~dnbqeTt z-Hz%0>gfrf{0-C|`#Vro^yeEyj_&~CSL0x#?p)Ky`gH@^-gOz-@O;zAv7Q0&4^RbY zW9trm-*&;EvDy90&S9go3!3~G>b(5_j%sUb=U|DdT>pIRHjh8k>4ySv*o9Z%<6D01 zl~g2hS2f{aU$b%K$~|}Y6tBW08MKPd!69}GlJHN$ltUQcL0mMIDfPe~a_Zdd=puBZ zn%NkA%x2n>I|w4dP)HuX3Q<(g`^Q}*nex5)W*v=&>_*MfIp_q4Pip`IC+1vRgNrT@O5wENX zQ~kU!3uMsLF%BRXNosLZ@^gBhB`Rh2y;p1f%KC(=&o_t7oOm{em*!kcqwgRO-l0B0 z?{U9wMysYKRJHQc0Q{qLA%9<2?fw*^m%gun{_$v4;-a85HIseI$Y$t$s0JW!I1d0m z)oZ?Vhu{6!u1Y3l6?Osfy&dk84NmM_tpL2SqdsryUdIx3M*GeqRM$MwQt7ekN=&QS z&vo6Q8^?XrdHi=H(%mc?_D3$1FULg^fHERRla5oA+%ilmZLcspD!l%VG@Pb`Uui$r z8JtCPzpa|}3q9A*xv<10;sCXNP*v>Jse~Hd{_W~?O9#u@<(lY49_-Pw0GV!WFw|$u zx&E;cs3M>hR|mJ8dZwETR%N<5%`qaC%;vPKn66glRM-`Q)UcceFZyUMo ziu3r|o<9QQjOm%_eC__!5fI`b?)UN$;JsH{1R2D~KzWk+z$b6KY+D*rsf_?7x^V;l#4-@af5@$(Ag%@sHzsBZq;POV^iH1en2S-$U@*Ez_QW}q}6OmIoXuvo6RSkC3%ul{_QknBTodjRDPE+nKJiEZFS4_0AE>_89X+fPY z-?qN2`}YFXjEY}e4u--wNl;Zx*i(Yfb^q#XHmV=bM$OM z4Ypa$Ab!38+^R8YMs7+HXSHhMa3P}uDQKP@?g?Ds`qsqxNlD{I0W2ozw&(JyyOeG; zO1zILM*p)`hidY|ey9ZE(tU5J8%aX~>Q0$Xjl5iek^HeOwAF=li&}Y?#gGQKscuZr zWXm*^gh*71nNRNxQoI^o3`)^URL36Gn%W9Ye5^E)vEj%^aUML}1mSPqv^*;1&N9uYm+H_?h#%wtvP?`)_Fi_*`VEIHpaQU#tt4IB9~RK#xx()Y#6?Prqw4_iM2G7+XR0{@%1n_>}IL)&PEO1n|y|Y`U&T z&GOzGdEV!v3f{)R^V3F-pqArp1a=DkTe;1T7< zC;d(%iN!=hHSJ~|h5W+YJX8@|dV;Nh`9eNI*#(t^Hw2bncRC73Zyj z;Cu@Q1?(CFitO%2rCyS)DrM7{W+tFolNPPCUHoQWR0>AI-Wwl(qj+p;M$)}+?PfV* zW;8iTjv71Kq8l4-`Y+@$v^n_3Rqa{Cm~G6v=-BvNQkeX3Wi5S^jz~w+WQbYX zngI}Z@+QGWV!N8xdr^DW&+cBB8LfQV#P2<#;PwS*9olRr`TyPWyjF$%$OxtSO{jvq zwSku4H2!Dn1|+ic!`GpX2`=X1n{^ktg z=LX_oiJ5!548el30y^R^OZJ==YQrS-8eT)OaY9C)X6CqzfYS#njLBWeruZrYU7uFiMfsn>EF{R=ajPw}v%_j2a?V zY4y^Ak-~AaS)e>-Wgh88fsyO6mSQEcnWEI4a6zZI7j192i3$Y`?_f(wOF*#!QPyQZ zn70vf!vjp*F z69C+A1b%P>_*^n^)na}8mrZP5@^Kx03LX#?<}+b~m+|>GYB7qZ~*;k&z4t zryg6k?WR8t%VBn^)I5Zy%OvyS??1Ri6C-S{A0K zh$)Ys`DTyOWt*ZO-pbV55TA=`{TAwcu9>IU9PbZfvyAT%0NZskX9_6C6fwIZLF!w1)e`v$w z{S&m>gQ>Nbm=zjf3O4=jom%nViOBZe1>=rswf+|)KfgsED}OHjc*EoUi82qDq}Tdf z-C%rF*5ac0YCq>IpAW&65ufRip)p=&@2Ag-8^v10t8)*~KpF|A5N}ykMvWjiQM9Aq zl{^nrbYoz%(zf9sfEPG>=9>0+Gd7yxh-8N@0{T|HRb@z^=uCoD)y2(AXvuy|&}22D zplnr|Uj5}g;Kc{NK*>WjT=B$R$+Cs2A2sFCI`KSq%0fhYc_n3b7plfG$zzmkBSbMa zNZCHsgfb9vWBDrtX>gh0` z_gej(k3*fGmJOg&6pa4>z<)mhAhzD96#4b20d; zHMTx&q#7=$qf|CB)z4@w^?CjPz}IZ3PHlY%z#pM{(m$~~H|AU?s1pU>j2hMYTBV{b zFaC0+&EK)%dG62+%RZ{<%A%v@je9guev6*}e>3r3y;I+(llr{h0^qG%J_mn-YUuMR z`gtM%AA{*E^v9Tpz8Kcu{r|oQOwZK5B`b&vXi+Q2qJUY5>jktVVv`u=qd_D-Pux(v z6u?tVf=ymOkJ|W;0(m2l3IHbvc-X@uC!g=)vMl5(UZ9c&j)XItV>qYE)cWM2plp3) z1rw`u9d0Ba4^r>gD%0Yzr-EFuCZ{uL1329KT~*~?4eRk6$8R9*NKL^~5JdMqLFY%8 z-`vlND%{i7LfAuUvY)vN8uJ*JQTs^Itthzk32#H8HKdSFCNwP-p^>jq`*Z2F1N!o# z=T1J~?v=hIzkD;svCW^c09+OFg$Tn?pM;g+@s_*~bO06tl(KSmYez4Z{k|4LLbTwcdeo$G)qpnJJ)7>Y6%Z$ed~A0_PL z<+{(BRu{sTBT+I6nQ+q=`h-+<`=n4_#e!{LHL-gw04*+&)S{ozOX zvvB64`Q#S|h!;VlI(COjicD=!8$%MnrK@CC6jQ34t+I7-l=S({Xpu~s>v&MZf~N8| zFeh_cGmsaZrlywGHs>$b&Pz)3DwJlGD_Yp`4P2+sX@NR}ZT)nKENe-<){@Iq6$i%L za%)p+G`MY+GMnB+l~MK#*R!Jj^UR`I;mMoas%%xf7kiUI5MgClf+Z*=^5UyqtGI1y zNvU5BX9t2I2%j+f38LolxkU|l5M>DiU7(^goeN{c*)n`Gw zl0)I%X|amErmP}o>jP^z3Oc`a=^XJ4sW=Jg>@_vLEVmRCjRwuVR`**c0tV zSgHWYF7t)ddr6YLs)@1`RRnolEXvCQ_SV2K5Xw>&-F>2!|8imi^xPS6kS2`E=k$ib^?$go($u3WfD*P}!0KY63~c=iepb=%~d`Z+{fl`Eq~$CScbW0P6Uccc;483Q9JYh1i1Z`tJ(#z6WS z+q9eXU!gP~J~zeZwTV)n*9_tp5SuP+RWrvJnTxOjNX6!MTsWqU(19Qe_OU3iU;tHm z9nsqs&co2uS!$vcf02%38R)Tukq8xs_(2XjbG0mO9yhWFs0!@dpI`0`eq7m8T^z6_ zJh-WjE;Vj%`8lQP?>Xh2`-Y~3I8d^doP4~?z*^Ey%uH;8skfNoTt#WNY2w&ngb%$p4E&sNdanuq8I(OKF&Q8f8i&vZNaMd> z-;x-gbCticFf7SD#vBEc79tG*=yR0T&md9iRUlG*)#sl0yr$QK^C_4?{K8p9x~q8t z0AlTXBa*MsDbFpLOauuH2qfJ8j%2D?!pNi-IJuI$UU^MemnNw-Iy6dJ?{DWE?k3bE z`oscJM>J&&ie9lfHWNm{lhW~$Vp1J9QB3Pupx2J|_m`Xv2#3a+lVFBN0`$$tb zD5Y=tW+-han$)iJT&@w|Z2caFI|Q2_muQW+%N&O%y*j^1LPTkt&SW&bj2Nzk@VRyO zx|d*9C}+(}`t-#nlcbJ;kw}_$$P*0YEJSzPQ?~ zdC=p7ZZ5K&r#UQJKfg%a-}~ccsw#wG07xS}S*S4(Bhm|glXB*|^vL&0y>H?GBk!>W zZ2*$mWA#l&8jg3Bw1jZY`_)LXuT3mAHGbzg4X&_Rv6B0wqwy~9+|1YlX4q{=%@3Ux z`g+zS+8e@3)x-P8Kn+9*mBsD2*VK6gA{;pPR@8SUfgD)3%ZAMtt3AbtU1csD$o#?8n@ zRK2swx?q>t(OY-+3!5eaxDLxOKK_TUIj_??sAQkTIWo_CIf?c{S90H4mGIb zN>mT>2j){UgZPEDsML$3um*3qh$-wf3&lm>E3H9W(}h3-#~7J{J*n{sv(%~#lE%rx zX-pD=HEwH^ecUU!7waig1b-B0ubq(|r}poQ&oCE|_Ux_fZsb#G-q|klEMaMiRKMCh zv;&-le_H=qq=_`m0V2jSkX4kWR-(mv{ESpB$9Dvfezzda=R@N8 zbVFh71&*oirkc$bsFh;Zma)#`7h&C_aEd$C_rZmD+73xUI_AO8*!`f5(0snM$-ZL+ZF3QrZ}aC#XqMHhU#W$%IA{Kua4m=!$iN z7Y;C{LQPffx$4Zisj^hA7#}mX!mDd)JyNZgY(_EAF};!<+!JV8ba+?#ihUSm_w(dMTiPN$kd zix9P9B#AzEu7t^L!L0fw_r4|-sfqS^i&>3In7l}DW|K#jGEjJIX!@b#?Cu}jL9{LtBLl{!b0ZkG)HM$K9*#S(cW`MGf5@A1Ca zMx#))4P*dNINlS9_ej(`zi2jjo|Q-5IFP`D<{EW+rQi#f13B`(-Q-ZoyU~#A5!#>= zQfA0oBoyOi5p_y4oj$L5%^?0bsl=H=&?cq+m$Hp#nhkfsnO32N17u2yxU_MlfdUW* z!k|EI8Yrfe_ic2!P;yTe2PFGnrT$wRuR;Tsdv{^jzY5GNlqI8-A=K9HomPTwH-ek9 zjcicQ08k|Pbcf}-)3L_0n)vlCdw2M-RC&#YF`p-q1$&D8sF=$EPp#ZXv)v*ujNe#UP>t@fA z*Rtdl!Vz?X>LwzX^J}B(h%ahwD)KqE72_3a|W!Nt1K#1;4Hc^i8M2b2w6%! zWvj-~TIuec_z?D14}f`q@XE*YJduqPrEe~7DbbDvh^<;|WPHR>Hz`PJa|iMv+90II zZkq#pk&<5niksV%^x2T6Z$Gb#d%YAjj`M2Nc-DUp;IF#-6aX(n&Ah%u|9wAd1n28V z9`g#+{`u*VpRG_MP2ZGm`>#;rVei~$mBxLoN}P-Kpc#whKFXqi zrdJY6&o(#jwAs=Y~t2Sg@cOO*E@kb(UpbbOXZC-zJI{ zMc$<_+BtPL_JlkFma~&vYR|wdT~n(enG1wVUYUF17ykNT05<{n+=-uG1>iSO^Q-^2 z?q}Z*;6GB3xLZN$9|8DH0N;_o=Qx0WhN?`z8#S8qdHVAY0Qm3F#&v!>fcpS^+sN_U z1mNd&Q($H>|5T6jpKo}b|BJrHg#srj0RG9A^Yat{U$3C~HU-Wn1Nd?PUj*Q50h~(r z{XGDm3gDrUV)a{4Ltnl{Z~IID--DV*KQ?an^#EQB;J?;?e<^@h=qBQQdOmN^=l>o6 z|2F;Z<>`5Tdcy|cTXhq*f{*Fo76oTp&(>o+rW>#O^?mp1UI;f}QDlyQK+~XWj7L2kODvfGK z!vvxMmt6Kf?4P+D`}@~m7%mTb-l^}l66aintX*B{kaNMKTFtSeK&aZC zrskMsClyr{s?nv$It66AQE|$@9zuk$_`J8?KScl1_?langjkSU_r&Q8WrLe0P)&Ti zZ?QOuy}f&}+IvXP6NOBn2$p+i!9#%z3$PT8jixD6&|Crd2>_R(W{KzZg{WEP z{}RCem2UqI0AHaMc8)GR2H=kXd_%hJ9|QP01)#4&%iDay#PMFERptsU6?n~-aVNzu z001BWNklanX}&7m_TTDbJqN&>5xui306c$$VJHBu)5<^JwgT`Y zx{>*d?ss0Im3_YdC8*iwwsCj?fbZ3f%zMxp=m>yow^aEz=qBrHFdf~x()aI|^}Vw7 zJplew06$qSimyURv$7E+kwiYMRkU6_hjby$Qs#jPQP^bTkDAe4-MV|HX7^m~Sfc2N9(RQ_FGbDbVY=c*@j}s@}hhxWXLn)6yxYR$^ir`wxiV6#t$M&&U z?rT!C_M?a5J%0n^BBjpdbJZk>4itn2Lf>DeXeA`p#y_(@6CY=qRIHY5fs@fKe4wrn z<{|ONQ#*42@Yzat=k=*tg^5zBdHpv4{zC`g&}#kGk*b|WDBqt1@LNg|=S{*xBgbOv zO8xK2L%z<1Qoz4^l&d>{4|TV_TIuJj(`_g9Tz>q-V_b^XYW88h{UHF|Kq9{Y->m?h z-O5w)UoHW+c zjWgU0jhbXE%W@Vj^>H}Hsz93S%muP8(U0ZgbZwpK)%jhkyaobsQTARyw2#%^KFX?A z-j)+xt9R{LD?khbynkEDDV#X*ZmgE~R4`|qbLTpzP7GiWNdA)*&qmowsP^mTMt^2j zq6T!iO#sr3iB|18lRqQ_7?v((+mbY;-cQ)XTlPBzmTN9B;0#foxx(3V#U?<)DbF@3 z3Yr+i|Jd)*V4Jvtf;IM*cjLr~_n^>eXHSMfH*G@!GyJ_E-*nYT*VW!x&15%Q)>7F6 zeJ=9{wAVr?!A3~^oH9oMOl(Hg&AkJf64DR`7dY zcifwfebN21`>RvL2(z^MJvkeco7eHhI5WB=?`Sg)^ZTw=2vxtX1JewP~BnG!+o%5H{_(pgV7 z3&P^QXej+Wm+anlNeYk#`Mu(AdhDhuSD*9bRT?c{Nw2X>k@FS@y3B3^!_^&Ftsbn3 zf5dElDM5An=fXczX{4~!9m#UFhJY~a7ceht=6c!`38h{}6Cavu;}{1cj?V~XwYf4B zjWFH&;?~~j^2JkrfMBy^XI>Y=S}5)PegOZEg6gfPz3nFh_-d{6GQItBt!m#l@tAj_ zW+J{oDPF;J?C2c|uFoC0ppLC8a5TB(rAjUT7=U+a)qJPE_F>EKGJuZ*@DH{6{&-~$ zeh$EGBlo{#g1SE5-F94Wzf~#m9|iE00De~Amz9FMt+N}B@!hC`zh?n>%OTFoF;sEe z4{6nZ5>9aQge5sEiWjs$Qs=lcSi&3o{yHFRWe32qv4Nxdq(He`u@Ym%VgydLPmHgyR zb%TbxP$Y`zIYE<;UG;R5h4}z9O^hwEi(+KXHf1RQhG+oMqd30zp_*hS8dF-#DNVo? z(`!;1!fCB>s6(yjQFJViYGRxW1J>&m27P}>q%s&JDO+66qp9rOZB9RX(%^c8yok<% zH|F;d3L~awHxKwM-qXGc4b$J5d406kC8?5ohyM8v1@5l~@Hz#lhr8Cu^?I>CyQQkR zH2wYThWnk?4MTtXSS5PJ5nt=|3dWzHAS}8O`D6X>whHYA1z6jfo<$YsUD*MxXoWq7 z7bhkjo0ZOfjXuY#Q>C8I`>74bcv>IpxzQ=NU`}M_fX3-U3mULo z4z9ko(J}{P*u`2e*!pkl@3Vy1OjukkZ(zV&`z0s#ZpV5!j`jM982Adc>x?MWU}n|i z#ZOt9^-h-WB~uznEtdrHzDa4|A<#5@%l-Tr^&Sa8CHEQ%q)ZVVGdp3MVo;q>+w$IbmT4{bWs>1vceV#KrUhm(jmAI{s z(dzY|qmH=QRpz0IW7$LW^K)w;SMsj{@Y|>&wO8rSA07D)O`XGnsx062ycFFOy$w~R zeoD{FT@!4?jSA-1p$Z9qNjD#Oy!6Bgo#AJDf|!!vDr_@d*(~tfW-?!FMirDf6-hA; zHUvdk``ksxdQ_aIz3_tCL$#iA4I`Zzt9;R-@6^hRv!TI+I{4sFJ5P;$(`2VAsbdrn*huz@PVQtCmls= zfI*Tkc?JzL!4YW;ZQKkcwXgC>o1UJeC6usqP40JW{R0!=bwV=YvpBZ;K&`&%jE-v6 z{yTF$f21|NNIkzG)c~+M$H7c;NPFb<{T8(}h4$(prM|y~vE17SEzSnDZB9UJ&sFqT zR9}E(Gl$kb)$|%71g50eA1GAl9N{VM(59^z7X$Ld_ht0^G_Q~Bx>Tz!o5%iT{Y*R? zRfJ|Dut&OT^UbIuOjC+*o2lM~)_t}z0`Ew--JgJO42;Ks>G+1{IIh3*PE;}8yHLl= z&g^)eif&}`dM|)qK^=9wGJU=unKMQpQ7p}J_}WS|5^D2JzgsBDPRv!u}a5Ny7EOXS2dnBu72G_ zNts+i`CNI{CN(RBXz*|fw;?V2pygSVWhkdhniCdD0xku)Lbky$svJ5CUa8(fl&E$6 zsr9Zo=zit`&?y|>yBVv+-2k1f!Y8Zpgqno2T$CB}AdHAlRbg4to6Lzcj8i0;;iNG! zq~0~P!Ua^tpnkD%s2GEU4@!L7SdeHn481?YJ$(Z!X}Yw1F`V zhPEjhD%~a~Qu17@37G=yS;hX*TbC*5?5B$RKcE_;e0#cIF9>_1R)}9T@wlI%zjNCT z$ME$EZoimryF))0pEz>=7b?Afw)+fSd59M1QIM! za2LgDv7i2L?nc+7P1u5O4zds|Jjva(h0sK)+D477<-rB3au@cNx1yAjZgL~aT8N$} z0x2`$kz)1dYA#bWhr2Qxp)BXb1~l)Tv_T}X%K;WkMme^wyK1eDxiNN+EOQ8@&6_eB z+2&O;+hp;o5%42iLco_=7$p6*kGdYl*!OE*AGvj-R@{%I+x}%wt*HI!-$y%2^)9UlU)5ET->bm!nh~n^d0Sp9PizWyS&V9A zlh?JVhA%fG9MSes)%;He@b}YwZ$cFZo<=)6KL+9q;2S3Z*1k8Fr`tYWY5fP$&TvBk z{e@dz+gjO#U2rgePTmIKUjz6D0Is+Yd*Yia2I?yFG)L>>u_3SKac15_ zEy@-scWS`r)uPRcFYd>J9>V@`4F^Mdxz)!jQq5Kn{d;0YS)9bG+yg2@wKO%hMW+tTxz4KAx{0&2 zHSttC=IU=>P=S0HRD5TTVa{&m-<}@RMi0$pts1gb!QNsufSJK(mk=x(O$2myddEJI;rJApM zKa8q`{)q&_pMh$A@=K`m-}!pFL^X%`1qG^`ly?4e1@ruV--_Co|0=C6->txSgVMe~ zFam^E=wrQGAAhOO`wghQ@6!r?uSfLw7y5d?7SrN3tN1?_z|ZJop8)VFS}}h^_nG~d zx}o?MR3X?|R59J1sOtZ_I{~YmH2OPGRreq4HUnq$ zy#0~V?5yYfVF0hxR?5C^Nd8Qp*KAimgzD0ER$teiZdmgAPTf#_5nX@)E;y*9rIDZ8 ze;J?io38-Tv($>ya6;=%8y71k2C@uqtzL^oVN#fnC}@eQ)r(Wa<_5M8TCGuv);=U{ zwzs*nnTX0&?ro*a8ZciT7Ou(f z+(DevbLa6W8)u@{xD`xklq*unqADcFf&?l!|6k1eJ6G66NpqxYP!o;h9@V9Pw{->b2pIwP67<<2hTHh!B zWUZ8++kKYqQJVf?tw>*{i~=dUaEIRK-)}eu(%1OO3S^?c_cq-yjG4|{s+*K&>Aydy zpnLbo{RWJC#1pE3?A~-PuUG2)c?#(7*K_?|925~Q^!46=D#FX>h}<&-u+)fXcHx8(d0NXp3ip>qWDO z=RMn~5QR~A3azjjQOAy8V^M;#+(%h(RCS2ROq)-)9%as|LZa1+y0+zi*J`$H6$oeB zQ|+5e^v%VAwWIEl0bWw?l`-&TSPxHx$eugP*`~)?gmgSMq83ps)W&&M;RAWuU zZng2O*F?Yi_xI!Xzu=cfdWT~h;u*~6HLu6v`e@VXV|1Tvsk{$@zSHGYfyzgNOdQ1U zi!FB^+_3aAyO5^7Vi;!(C}myaLG^i}$C(6lL&R%>Vr(g_H0%8aF|~HgXN&uV+U9_~ zN6mKp5~4OXA(qXQr|O+3X3Ry*mR0~-px{yLEly+LOEB;?fb9A6rR_#adTZY=@m)^x zH%(PAXZ zUU>3+Z+4dgX%bMA32m|u=9F?5Gv@vG2NU0`zI8RWv7Xnw<~4)(A*X zT9Fup0tPqzKuL*KHt$_Xfp73EkE%3A2%!rBDErtu<}o2@%t}Cu0$Br0Trb>30YlmQ zWGki=u9z-xYrscofTW zE7rIY17GC{XF%$uY9NT8{=wd!R4P)5gfXiGk%WT%drftWtE9I)_s*M8m%>=!UMv?U zL)Gn1t0J;u%6`Ehm5R4d1`k@WYrDYC9~Bj{5n~t#ivldPqP4zuaS>$Xt-E_3ksJHe zqMITM#q!Yy{T#qX2gNsB0${Ne(Bf?Em&;Q7^l-tRrM`)SdU2+r+5$_oFA@_{{QW4g zG3>rCn>W;+aC3<7?Y!nSufIVcP8+K5GC`eh8Z!%0)cnD#@Jk~wy()vNv~7O8(zW%1 zRj++9&x~>wR0fn4fPo?{E2otWRw$`|*q@*oO52%>f49LJ@EI$L|&rH~WC!(bIRd9OOO_F3$vT!(G0 zG{MeTb=LWDDv^pufLG@1DP!8Y(D6L~JCO7Vajxw2GOG9ba&N$}X2`Grc$IR~DP_J_ zo+2lhMIT&g^`xk8tYZ(fpQf0w4ANsgbee&DUi12!3*u9>cz=QD0o*PoQxu<7g(bOZ zA!UV=s=-BogECzLl6KTUL{BjGYNNeVNRzSmP zUDArwHXBrGNQziBZp!IFY26x@tz%E(?qhZ48SbyXP=45Fp()2+2B&R8xZ1}Zu*3t9 z#e*1zYq91_z4}BNsmg9|1todP2ey-s32;#7251%o6Z@PtDGr1Moy4--3o3QzAgG|t zMOz+<{>-e3^L#!kGcYh?7@z{VdOItnZlbwr)WX$_rPR+F3)k0BD8SmB-bw_pP>wcj zM(|2F;pH%~=w#Nhuu6-P`;Aj_OEZugl*V7EGuM#D#momhhoHpB z8Bj{yw73Hqk*ci8DSA^g^Pn3AiavU5K*$AJb@Rbkl)FGUfq}1t;6wzI`0r_Ym%c6( zX?4yXXQseFF#|4AD_@ev^4T3?H>kEDCVQnh(q95C+;7hWhm7xNDwnP;j<%5wpD#jh4 z`hh}#ZaVnbKCsV_^%5+LRAncZJ&LNI)t}yy`OF^y67i?)X1GjjlKTzw*!OaiUS(eM zn%6}J;xzGhjO_5I==1(D#%>RT46-yV7QNsq7`nhI%tNg2E5azNGgvG{J-kzxhjX8y z05$}&3o}uO!rV&KeAjJED2bztAt)wt zUt&}WQJd?rodzxLg2-{~%e4?$RnTT?UBGg+o@m};I`Gal%oYDGY%3s~t+U=Zqvz71 zRU`yqxliopHL1f>X>2p!7N%lWwW6b8(d(AfdI&LG73aa*4c5}2l-5=^XVLr5F}IX9 z1=eS*HqLJ zwO%2udWHn3G!(sEh*3pNlxA`}}_M7BFs3)s>)#HtPOLf!EYpHQV2MH3bMZk z@WMYQW8;9t;h+~$vt{JFwGGIDgN87`xY5$=^fs?~UBn>1ZEOq^7YEv*x^F9VVuCEK zat_NcqhTpkKlSRmU&qCkN+X(aheVZLABo&MTo|=gImAA~Q>M7Rtr~9Fta9yrvR}Xz zC@C()QF)U)e>uFGPrB2<2L*C|J0(+ci9YHe;Thf((%g@~>E^=P4FCiSEXso@@-POu z6oRYKgo*cK#(<}lh1J1I_DI#a%|#cA>Yj3@ zxN8TJnU8)BtN2a4rw$45&-vnR+5lW=Wp=ilW~ zj#dRU3Ep=RBTG26S!e{C>B|6G?W>SUv!!h|oQjLX$olI_!-`U@ri=57wmFR{ zCNpc5KSZzGMw5iCkP`JYZwk}D%)=a94rZiQ^tCWzND3_5a%`U}k3Q@0nd zZ4g@2{O6c1&mtO^*z^{*=OV~J9;<442iE6Ut_BRl09n_{T$DMWZ1^Gx#+{uR z>v#7X?!E#~Ike61k8QN4gm3ej*SsD_AbuF-`8Jc6F;8d0RG+=LvsY*6?F!v}&|;0n zGP$ZDjXEhndoMeXG&!(^>zb#e5p*s(^~Z+{_!O#l5~VrGD=cOYF^_~a{i#Kc609fN z`m49}blA6=*SfpAF&PWnjekY|K2zY{R#?P&3T1SyLYH(GKqs)4%OP?(k{8;63w!Oo zKa6EL3CL-`Ez{!^`-Bi@WigkdA9>q2yPZ|wO|hsV4urWf57t6WT=e!~s2U1)T-BLv z7vE`)yIKiVg?aV>FdAEhgruNOZVD41-^|ZbdM*wFBG)NU9y3$JnnEb6eGJ0@te5^B zE=G88wuRlMOBs95rhpk+D0#uO!{WT=HLnX4#5aAZH>u6XE-VF;31yQ;6}8H+wT380fOle$8dP+*!?bEG zPJIG7HnmWIwdYzxP)czmbMc-D=+a|FKv_2BMkH>f9>4perMr6CRu+~iGg0U)mgQau z9>hLh2f`{6(OmJqk0srWLhGuIS5-S}z=u)g*7nGvEqB{fdt3`@FmJItWV4b4%hEqDt3ijcXO=?OKuK|4D0#Og^PJ2+h;Y@sQEX^zERR&&P@3^G{rr%Qzqw;gN=&mY z+fW+s_sk5KVNCsRiH$*eFY<4$8WRlYBf?hi?U*`2FZgt zlrrWNC2slPlu$NbI7?8-!r7lJ`kLZgaEOaisG zxCIlfu5F`f+st2f`JT^fUi11Wf%v8`a>00CZ5LXdjtt@!=~tF#K#S;Wx;DwGA&z7- zp=2>B0$FQ#2c>E|Q=uw6E1e>{coAz6r-;<4bg0Djxw6TLCxz+l@w~+gR~}LhNs0nB z0dqADQNT*7WXVcx=!ly%NZ_h)WQDu~N@cEziVB*91Rcu>b%d07*na zRCD6q=p~N5_u2_yYh4{-vZ^Zj1)eqhD7^=D)*cu%rTnG`rL+Y>ZyB6KV zELLks8NlmfiAp~g5Z#4Fmx=b*uJ@nUyykVpRn9{dE?a_xtI0x)6gpCa+pfVHA)2a(SE*ZOGZ~5h+2Q+KJnCaowoOgv#SKFw62x52MH!-{E4)+M zcvh1Wnm}=(ak|#6#v7TJbRVgtxKAQ9P}sH>q2w_h1};YUlbYJp_di-FzIh<>Ko;w% z7mrr8_eKA1fBbzb?!0F2Bhu%@!*nEj1GvSyTd-Ea8o3n?SaduQ@p&E)#n+#nxT`>AY zrh`=Br~lYXaLH3%TrXmF@k9u-T-b#0!iJ6@vtNz%88p!(eLCeCM#jmA$_2fv;;0$G^O|9jfzc`H7Ve9;i|5%r{r8>r6Jq6Qz+KmIZo%M zJx|;f^=6BjT;U9ZwNj2C7o*mt%h`~Wpr+NkiODF(mq_zB-(Uzq7E#k1ct-V~K1w#$ zrJENbGhL~l0~^7!_rrSLVEfF7kH>j|OhJvuMkN%2ge2l4ctV-~E_W=xvo2^_4pqRJ zrxK)@G^nkYeVn@Muka^d{pRjFX%EcZZG!P!@oxD4Ko49-==3qVUba;D^P1PZ&S5Ri z0l=r|@m&C%HdF>v)i*Z$Uad54{jEE2>ccnVvZo4GS6r*P(}@zM80|SA_mPnq*}`-J9-n$ku< zD>&`@#_{EjFSXfLlr3G;eWcy+P#TjWJNHB*To8Ht-!>0!iCf5fz?3#E)P2r~BE!4x z%EF?y5hB{bxfn2vfV^@~Uiai4{FF>%P5Y493xq14BQ(Yo`1XEMgMoxbBbh$)BslOn zwPSCcZp~<>CaRpeVxKK+J1i^EzTBzHPpA zY;0u{%`OU{fu@sXjF=kZE z6b8~L(}ip3hMR;mTCp@Lr9vj6)?&qap*6%K>_)9;Y+)mkDDFCwo?}k)Ogh3xK3A;z zxJEUL_QTx|eoY81RGNkN%xpNoRbf^L(@ZcZ)Uq2=;(U?5?Zo1l*(J|nC+9UQ!m&v6 z;>_VMk92;zkENX>ub|WHx1g5WB&{foit;cL=fg~Z^0~~_uMl}kTXs+L<1jWSeJX8a z98!WopqOd5L^W1#b{A(FLsFt~B5q7raQeYp@P=3Z86Lf39n{T%idqg)k@E<+=ij4| zpXGDJ6B~qWW;64e*StPLAdV4W-WFuCtB?(76VB)m6?y+>zze?SskruUeJqY$d3{55 zGbNkKbl6VGQjXOOb+J{#P2zG>aVOfD+5|2EPTZ>DCm1rds8~E+2AJA-dU{=pZkYze2}+CX%0WPP$C~DjRYnn z&!49>zZc_Vd5}TEw;k!R&pdD^?s?r`~HC3$QUwZ4m>Z4HF)|Lz6|BqrGN|xc#~8*>9VW$ zN9d8w{39O*9q0$zI9N3q5w8DjfSX$(osU+f>K(=iAdQ#xHtzjiOy53e^=+`EAJSVi6gHzs~YJN_LL75fb4 z^P1OV1me5eDq=&WE!aLL)>rJi(&d}}j6H_kHsF)~*^6++bDxdn@k@2&Ovk?(prByP zDPlp*(v!?aH66NB&grU4BGv6HF_hV|)hl$OR2e#HtE>SXxXwlPM%%qc{#|iIh{yGI zFvY%N2q9gJaZ%97Lda>ZUg;}~VYBTbG5hV=-#X@{$?Gw*UFWajJXqhjut#W8et9LB z0(eD^#*l`ng^709u@#x6Jy5E?;aTg}EEhRw&XZXbXzL}k5T?A3_Dl1f5IHc5CT&V? zV*u#qTQlW{vk&8ecfJ>I{MNT2^enugqCQGR-qYq|RrpkeP8%w9>;UkyATQaSld`Kh$ zEE>hMBu<>-Vr^8u)7Tyt8vRkq4b%g1oGp-=V9v+MdPbnj`}PXlT-?~eBdTyBNoi-) zhLJFV7HR>jOa#jgAa4D60Tu-wG}HK|OH#92Z`{VkIv|f00d;JMB)T~>Amg88V>(;_!$Mm{Pp?yhF?eM-@+!r?j}gaW1awz{L;^OtYIEx-Cf zJn)WF=~eI{LHj7cK1Hp|$XOlheIKSGp8~N)x_60rI(>Q!BH?rHOhi((m)O);pFH=QBTz*SXsxsQ+u0LpZmp~W`qoAk z)dvG$j6%@s$&D`0%7^+dwE@x*`R(F?DE{7x;L*G8#2dc(jo5#1JyC7+;Sf~& zF4X$AzBo?+@~+kR4CeEi*ExbXZP+1i3L%j#mG`byH?UciK1G#pqSVXQ4Zu@B?}>Qo z-+2};fBI7)9w&un>?|icva}ORKsOhhD0N9eE0mnwLY*e<6O`=GmMS~z9cM9DE0oVR zYEgL`klIEHx*t1~yfYgohmcd^=~(QlR#xCA|UdxL#YWyXXxO zB~Hmjw$VP=?@_@cw|)?}{m%RF!QZ`a2O#DxR61_}>?xHxj!>Or0^DVyC}3>1fSuR8 z=5+)R#||`l26jw?9Z zJUCOsF6>Hnt4V$zk)Gsv?OruXJwK(H=1wL!#%@UXo>LlmGbMW@$a1s@^mUeOWm^o) z^M*#FW{4n~7$eCEnEG(@JP~H&c1d;Sigrpm1&NRvi<+gPn;B|{zAJrRJ?mk>ZzFoj z+$@MNP`J%eA*>%gg?IkM8*%5KKBTjbG6J|6w1+L=jV;wW?*Qz;!CraaGoR{-qx(JV zK&#Ky_`K$Ip6T@d_QNR94@;w;OYi$!ZVxHc3%>Rlxb~$tVs+IOko6F>ZmN1694%PG zRM?&oEzQW7r&Vd+TXOLw)Cso|_1?SDq|#E*Wr}z24|UgJ;WVL66xOEH8IK4hb#+cT zuN1pc%~kkCF&_>=p`x_CxH*ZvjvW6=h`D?5ia%{kGQ(kteQCvijaN~oygOr_HrXcM zzYVM*hDXv$iZr$3Fg3r0;!xUHMax4{C`w8$OMjQFycd9$3+&&25_kXQ2k?#`y(N7n zc}qoo)Z35R8{bB&k5%B?#B7)Wd|vZJu&wU=K6c;6Bs+x@ma)>vyCXTq9oW!FC%Q85Hq#W_JmmhgZm8TASE?wll&ZHkT0Mo= zrA+}V^^U0Kvk8nq#}FB}{mwgZ%dgyp{gdkrV4SPwTq*BDpKqhvcdf*y0Gvmt@Tore zu41+s$mcb$LxT8WsB~caO!$;58;xuL#=v?TRlZBby(_>^J%`}f)yMGSS3VDy-gq?@ zs})$-ja-l@Z>Pgc%Je2l<7ei~Monh9XNIE#AQy&7TTvSW06OS!+tb9z^XU4!l+w!( zec|lVCJM5|)L5mm=d4Ruyg~(Tx{*uC;7&;!c$ai6g(Ot?5Qx(A#S^|_&fBYCf9)Hc0+7?@yuZeyx7~|3 zeb>8i=Dsr{)buv>`7TxZE|vH$y>T9)z_Ed9-&Bobrqt&(ua7Kc!2B1Eyq026+ z^s&l%45+vD%Qsc``S%1@zxXmd>x*y1RUi9Q@H!c6(VT-g zwW|F3QaO6l#^!6ViusOvY^Md&XdIkpjyE~!5+i3ufy+eA*KKCnPkAeZOK(940gE^& zLxI?oY9g7Li2QGIYt{70S}k$^Uw;rc|MIQ4@68XVH*Bg$y$ewH_vMNE>;mlA0_;7I z1G_o99ai8rgZRAWbqEmOC zcHH}xhtc|sV+**B(dnCnZHIkKU|I+_MwyRQ-7-O`qq|m&0XAcHahun?KH?w_Y)&Z~ ztF|#weIEwIfx{`$r+Vm{X2>@kL;d?RzvNmx zy$M=r)4q(Nj|8^%y_&qd3EI#O-$11Pc{Yvd`sSfnkMI-Y^i723sbQ||qV~G3AntLj z)*wzF5o)YhIp*aPVCKDt+o$^MKDCN*8bR>Bvd-P|w0ZIkjpXTpF!iy`Q#R0JV=Fk) z%6wehn1V&Y>3bf+?SF6^-v7%V-T;i7D)CJqzALcH7N9;1h>y*QZv%1K0N68#&udkpc@8}&Z6szvtPUr^{!rlF)mArNF>-1_R9@t&W%bEJwL1MFRZcT?Y+5BYoBKztL8e%MNU z2Jv~#>v0C+y9Ax=(*HgToxV-bh8^kjO&f_3@!M4^JpZe2#FZa=4VEYNz-!jnO*Q|p zWG_TD=w9Nc(9S7oeaK>sjGy=#=<&-u=tt-#SIg!@Rw5{%=)#2wx z8}oJcoZ>W4IP*oANz0U!MZs|DEbja3d+_$3xDERc>|?Iqn0qPbST$Y)Bhs6zb5xH#^UYoW6L~oJq92?1>}cOr*BiC zAJ(aD+nhLU0rX8kJtltJW)8DWMIRTbYd+x$-1HBhflF?<%oWq3z*(|~y19;V$}USi zSkKV*C{Y8H?#w4z+h*1C*p(nzw4$T1l`=1#X-w`RvruCxE8XXTx+u{6`Kf(s4!}%7 zFRnx%c`X(D)pI?p+!~ew>2&~TK>dKFh{UXU_As{@bnbfS&UomAfuzXQFy5j19*W@9 zoe$yNKXVK2{i}z%P3~c=PRA-}V6$j#3g8c`PRAC2-!@J*Ri*d9KDO1I)#>w^*JB9c zyUdAW2fzl#N6!ue-sfuevWYU^R*7$;{M*0Nl5pLpT#jdd+0$|2hRY%QLsL6i!WR*| z_f1KFCMJxcNZM*Hg>ujryct`Q6mw~Sr=}%E(s-E#uB1v+QpN8EFWJ}y(JwAS?I>CP z^cZfsk&0HVSs_mC_!ts3Ez%-uHoD0fGw3|i^NErUL<&(dT(RV}cxOm82~zAE5LxW) zMgSpX+_rk~N4YJH3{$HZ-iq0_g`hwoZ>A6D!(bu625(CbC$W4`=)JoR&L#9~!{hee{& zwwY=|Gs7J=-WfbQ)j{sjX1+a2%3;%_S+x8dw>4!Zd1D{mwT5={ICMI!}iO8?ZUPx3)XypY@phws%$wVP|qMfuX!B; z#5V!?rfl&Z#QXbB*{)7e(&xi=bsNn-2K?I$U=CM__c`l(SFP}@S6qiDefpEJJif#* zNUA*Hf-g$8rq;(M>2Oid_R^6H*6ck_4L?qu7AsHOrm&#D*66uiVN zbprZajT5SEDHUqQzUt2`OP$(iaB5>!BTY@vgu#(CRJf&{NfNDteZI5+S+tsmZ93#NqSJz`MZo2^W z4B+#c*AYN`8({ahjnU|1l=-$8(oLW}MY(UQy8EB)szBf7;|qrseS?rfJZkD1REdr-a53W* z08o{Blbelh9F9^9iA3dWv*tvt?W|YUIlwz@R?MbV1fii%%J~57^f@$zyhIMT_1CG{ z0hD@sPN?Jbu4oqf18@H@-u#`nfcM7|y)XfG+r(mL9Jms#*##BAH*NP7UE zqSd!i=`(=OYhLHE65kX>N|?4?l?`CNN#J%aDQ3XY=fZb++-(#)ZP>(6bD_WH6R*HC z|K5{v`At`ak_?pbs}Wy?CM&AL()GJD{Z0;+p+t9)TzYS$5r9d+x(6zj_Bg{Kk{r22D1A*ftOs?AE6~>fHFY$30An8Fr}1`@XmA2-b5yd|vZ9 z&mcbaW!puiKKA=P)jly-scsakaYzashp4i5o%h}q-uXMIlC3T9S_DZ}5 z(0G^tHg1AZ+GsOL0yuG6KK;=9-%;fYwLS0*%!F_*gT=7gJUg|tySup&YZY!WrPKz! zASv_>kd1LDh#1uLn3U4PKp}_&lCVwSu64Nsk#`jP51ht_{_qaG?-%dJK~dHwzy>yF za3AImpX1LD1LnZ?nQ&mbA5Q0qMxQJ2dClvi1meBIiZ)dGo4}opNUfg_5Z|RoepE_* z6MzRu9J^|Tr+m&;c={JU9c8ruGl!E~V+v!xnMbRniQ|l{?}L^w4!jAxvmL248-koy z-VJq!6KqWs&A%bZQEsHz5|XxEkH{_0E&gB*q~U$aSdx0q21TBYm!?0FkH>;tXi>oX z13vKUx8Q@n{{YV3zrO{*w*mGpRQgeR;70-RqfqFw1*~NPe5Jb<$PD81n%74j#HXnB zDcXDtkf-iT*ly9f4ajkhpnH_6dlL(=i#Tr=AdhqX@vnL&u6n`Mpw+@fXp4k!LgU6J zi39haNdy&TTxn{WaRpvLuAs~_YtzVy%d1Y4!Hjv_u@_8amxfK?OKU%t7Z?=3qLAw z?>bJlD}awx*s>#a-jA1U0`-|fpVz#OuogRjd=J2~VFN%TyYMkkpHi(Kg()~#(eA!M z*|uppUmK!L_aFc7ov*zgC*SiR_MSkvfzO3Z;)36m2v1xDK%w#;tEWJ?womA%gJU!WY zpmvLB;WTF9N`z8?d*5_7-t|+r;Ff=L&mk)BT|oR?sq`t}-v#6`!3-P)z^A@1vVle) zyH3miKCgLwge&oLq1LxmEzGLp zk;t`td?f@=qIu>lX`f)nY>sY8+}6BqPQZ`k#g6bfKXczHyyg4egOl$)JyK=%Vl8X{ z$W0Y)|9fNOUE6+klnn5(=N_xjfrI05QxrNz&e2o_K2zxPn%4zViSJSk(}vwTCP2Oa z;%=(QM>D$4apQ83`fWENhh4k;p6tLnj8`dV?px!wSKk3%pTY5KkKx!8j{CLOz}qvs zlUWL>S&KbvkrKA2=`g5}Czz2Nyd2yN|*LVHeuG^)wbo1!Yq$#w|wu-ICI~yL*>1x>fTn7AGRlbR4V+a zqhp)?4Q!{-`}<6NA7qE?$-L$@ug91I-sajy8*cBb?WrF5)aGDYfBam;Zinf87mSa+ zZ4=^QLxsM}If%b6E-85O-@XzzeZ{juOM(mseO>bCS*s9B_N=fmFj7@o>mQD>jB-5= zb8f4uc5(VX8@7j4YF3#?YMP`x@#Z-wnZGn4Fyo&@GkOUl8>BpQeRl|u0eH{Py$2uq zcMoDXHDwbDY&JI8ma{ztm^^XY6lH#t`R>E^ySI(XVFQ5oRr*xFds82LuE6Itua6Rl z_g_*>fb%vwU9eg71?+BZx^1p}6J}Bc&XNdn$yKvuW|tVj5*(bnc1N@f;Mq}4I^G(AoPOxi^rIWUbfEQ=?L639 zzw*8Y>^^H9K|=s!0r2TH9(e0Lc=Pw%hRp#Tz~M|zc5yn}7BxC$u_`-0#uV`Hva#6J zg>9RNZHi8(?wB`SKjt;Bd3^*xe2VrR6TTf4$TtDmVJq`peb3MLA8e`IH}%R7t7Zo- zy>SoE{Ng9!`j&ttmJ~RPu|NRVJ|IJ&teENn$*f5Zs zrodhI{M)Sx9H z`$-d)fEIn{vw+w}gr>>d`==^9_N>@?+3#rE>ClBi)Sxr08FoVp1MAstA`k{1?qL{) z4*{`lasAz^c8u%i^=hm8ZRD{rT|3e9@_n&W-djvrc zn~=m&P}wD=o~sl05V%Hu9sQ33u>$O8i*kPU}-ES*8 zZ*UT3%LMaOzTO#IS;D20@8R?x&*IFVEAAIrN1SmTJs|8Ne}NBCt>!c*>I{m1wZMo76!>^z0&bvCVGss z1h%d>c$aY=`@PgL50{6jDa@QM=KI^;SjX{S9><$6T)@Wmmw;X`jf4bqL|l4JBk)>M zmh4bVYv=)T=doP*SZSp4T8E|>~V%JDs zQr#BwmocGrTW7S~Bxu*ZWqj;AhjH-JhY{CXpq&zP69xp`xu^|p|6R+`K_{>6|1tLz(VM5P`JWk0wBt_k` zJov7aX}@Q8uW1ST>*_sq-zj#WZ|OSpL+|>bhoykH*5dM+i+JVdCvfTHHKX!Q2@Ao0Z6ODqK_JDM@Q2oD#UT z|G7u4TNS#W(C>R{H;#Vu5$t(*-=v3m?Ay2Y`DI?-HT#5taZG=WxMr#aaPs$W;Pmt7F}Deh2G!{4_w7-_mPEC71d)3)&w<6PgO?P!w)PEh{hJ`RC5cO) zUm|iSt22m&QkOt;_uuB?6}kCx~rK;?no@OUJaj@?7~@gw3L~ zlt5>xF}IY1jSZV?j&oW`9Fp-#%kk1OK4izE+123V-+LJMKmEYO%mqzvgr_BG{r)5| z%=(Xq(AAs+P1~StCVj!1S!2^KEI%QRxkr0P_;J?mEHnY<|8W-o{^=>iwH!$yQKlhL z$)Tr~)7JodIasYznzvIK3eQ=|JokEuz;hw;7JA)xe>;*lLF_;h2g=^bxiESxsBb8$ zyY!sL%GI)#ZY@_^q;s6tH{KeN=>Okh?_;Yt@{I>^;EDUYH1VnD`Md>azl&HW!eULBaPjyR467QfY8&wThcD78%~}>_UE3a$ zyrw;ef-2Ab4kPG&P7phu#F4p4Kp^aBAZhKfq{1!a)+i)j8#XT~??t%HjkR(G&;;y0 zw1Q7O^BDFV-jC3>hyiHZuJtDdWE?XD5vN8j18dc(6I;L54@@bXWN;qtkg zQ&%`(F&3#3k@i)xM9Q^^YF=kGOClZ&Y8(dQE|Gi?h#lbCH$iMVEZxEH&RMXQLgb}> z;-$ylo0s%hQZEp`8yV$NdMyg?vD`4@0*=4;cZ|4saUEw~cnj@~tGMUzDwghEK@)l< zU!4tGZ}%JUXw?n!==RIIh;e2iMpsdk`T z0%vV~YB9&jkMHt5OE~no{dn~2N3p#7F2uEVV}p|EIqE|19f{AnkxsV?%MI49T*JxV z9>b@B|CkT>w^}a~qbW2H^ z^Yi;IH)_vv|J1U zSiio8cV0S&mw$Y+Kn^vQshSe6DF;gv&c>{dd%B?k^`&AZg&vH=E&T=wf*^^z_Q{+4 zmXf#T1_#(O*T<-Ht9gs1X1vCD#!BEGGM}7}eUGo=p)Y*|2cLdu@=TnXx?r9F7p5K1 zLel^dIRDR6c;os1;^MI@*q9|h*6+NwJ*Y&|IR#&1$2vxJd)K_R@-b`D8p)d=Na73G zuiOo$)MTL%6h*FET9bKSBanJd@d9@1RBQJ$OLLY|37lnLwBroWTgOhYa$p&s`oR;} zeP}u&OT8JIcyRAu+8!6N%CAHe_-@ ziMzJWyR!fhOp3s1Yu z+HPOgHlHnSjZJE8XR+K^Y2{*CXq@Ct5Zee#TX3JX8}`C0Z?8=q+WPH#5)B3p)ftXHiO0?Tn}1Re}TYz>{0zzKpRz9}OKIZx=6 z^sH-%HH7Br3N?m&HA2=ttCn0X#;FN!7kP z_jgU5w>18_q_t8@UnZ>)#128&hR0%Yf0N!Lk$&m5v~yU0n_MDWs+2tI-`)S(I=H3G zE!{q5_7j=o9CO{I-NkYwpLQeD65Xs8r(Ojwsq9q2hs^uZ;|v11m+HH<^=;{zCwUVD zmH3t<^E8PqN7}iYTuFgj*0%$6k9CiVt-S$T!|k3>Is}#J*{_uRBog(i<}r4u-mG_^ z-mnD~(V5aU%r$RBn)Pi9xm%(Ji%43N64fN9wSauaISHH~ zh#l7>cueclh+EV0R8qy7D$l)^`l)N5Z}C&NL?Wz8+#0Gc5wNDjyT{%(r5*w=5xG}| zTRV&~X^kL=9j(MQWv;DPYUEXG=?a4qwcbl1bGsBNpVM}hbOU)H%bvVj7b=O#>2=sfTz zN)QB6TV{tr4~XY@OPq<1CF~jXRtti4LgGD)%O+X`yp# zt5?mlfT44OAV}i3kkEsmtWfc|hR8ihaW!Rbxqa1Ik=8~Q0ND_w*1sJ_rN0OQw?58Y zQzUMJAVy)CLr^3gEp%=ndGB|YzE9e>wxIfR%LCGDu|VkYHjp@s%6Kf9Ybrc9si?Vb zf`O#9Ym6WWf=c`rj8V)e*c=f`s#|J(T2jB35WA+jQ{`@r1_0xl!B`30s)9?ltzOcO zj;KJ1h)a_cOKZ^5B!?gff+T(m#>rY=4#-JzrN@@%EW}+y{D5yAyyn{RCevw39PqEF zTgX~_u0-rnxE@&VO%Mc0e3On@DU&#-%+vBSEi1nNI4$)m*`s4sRu8Uh4wq3AqOch{CkTQhzJh zlaS^m>@f2Bv1X``A$H5Q7DXO~^8+w+P7nl1e8-J*PN_A5ifaV2NIQt-x{FyGu;jM) z5O!^enU&Z}C0!*l&UF&&?`tbeu390Q(h89jf*=Tz_zoj-?L0^ca9VkqMB3J}F>Aw< z-2RsS)`;BO@7zM_D3Gp}u%=BkNZE=-6ngY(1rj>|SGmO#5cC3;f^Zwj+ zZRYPF5WAIN`@Oq0r!^{Yf*`2GiE2WZdY5Zz-J`y(3S9d95>ac!7Y*uHdaSAJ+f*>|6xF){&h}_%DTuO4YeAbu=UJ%rFP5D(c zd`~Qpxz>OtEftG~V;~5Epb{slh#ZQ71U8n3Srg@QXkbeQ8%uC0iAvkG4zkzQvs>es zlE4XqAc+&VMWyG=VREFNbBhD)A$GvFwj7K~HWkNB zd(ssQ>RTc!DKV_J!AXO1moE)1?B#Ez2}&u{ZXFYXAP6dP;*OoSoQ11If}Y7iT+lTW zmG7|bXMdY$+((i(K@cQyV$+;It%H`<4%I@GV@c8b{?h(vZ9uJKLJ$N&5+^q8`P8z* zgHv6{k=M|e_e;htQZ_nCn;;01II-o=t3>D))xC)Dv?cs+Rp;9Nk-Q0lAc+$@@?1y9 zdpv98HEwNV6+S@_#J0yWhhWDb7lziXSfk@JE!)+G)fpxy2!fyzCxr9w$vls@;hJNZ zoFE8-Bu*^&+8A4AMz3;$APAB;v4yW0k~KjP!~*bt<|szm3y(Q&00000NkvXXu0mjf Duf!qe diff --git a/examples/javascript-advanced/dist/webpack-4/bundle.js b/examples/javascript-advanced/dist/webpack-4/bundle.js deleted file mode 100644 index a82aa75b..00000000 --- a/examples/javascript-advanced/dist/webpack-4/bundle.js +++ /dev/null @@ -1,107 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -eval("__webpack_require__(1);\n\nvar universal = __webpack_require__(2);\nvar h1 = document.createElement('h1');\nh1.innerHTML = universal();\n\ndocument.body.appendChild(h1);\n\n\n//# sourceURL=webpack:///./example.js?"); - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./main.css?"); - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("// This file is used for frontend and backend\n\n\n// If compiled by the html-webpack-plugin\n// HTML_WEBPACK_PLUGIN is set to true:\nvar backend = typeof HTML_WEBPACK_PLUGIN !== 'undefined';\n\nmodule.exports = function () {\n return 'Hello World from ' + (backend ? 'backend' : 'frontend');\n};\n\n\n//# sourceURL=webpack:///./universial.js?"); - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/examples/javascript-advanced/dist/webpack-4/index.html b/examples/javascript-advanced/dist/webpack-4/index.html deleted file mode 100644 index 2ec60f39..00000000 --- a/examples/javascript-advanced/dist/webpack-4/index.html +++ /dev/null @@ -1 +0,0 @@ -Webpack AppHello World from backend -

Partial

\ No newline at end of file diff --git a/examples/javascript-advanced/dist/webpack-4/styles.css b/examples/javascript-advanced/dist/webpack-4/styles.css deleted file mode 100644 index e86486ba..00000000 --- a/examples/javascript-advanced/dist/webpack-4/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -body { - background: snow; -} diff --git a/examples/javascript/dist/webpack-4/0714810ae3fb211173e2964249507195.png b/examples/javascript/dist/webpack-4/0714810ae3fb211173e2964249507195.png deleted file mode 100644 index d71b3d789f45d8f124a1fde57a36e55855a6dcb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54055 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 Duf!qe diff --git a/examples/javascript/dist/webpack-4/bundle.js b/examples/javascript/dist/webpack-4/bundle.js deleted file mode 100644 index a82aa75b..00000000 --- a/examples/javascript/dist/webpack-4/bundle.js +++ /dev/null @@ -1,107 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -eval("__webpack_require__(1);\n\nvar universal = __webpack_require__(2);\nvar h1 = document.createElement('h1');\nh1.innerHTML = universal();\n\ndocument.body.appendChild(h1);\n\n\n//# sourceURL=webpack:///./example.js?"); - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./main.css?"); - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("// This file is used for frontend and backend\n\n\n// If compiled by the html-webpack-plugin\n// HTML_WEBPACK_PLUGIN is set to true:\nvar backend = typeof HTML_WEBPACK_PLUGIN !== 'undefined';\n\nmodule.exports = function () {\n return 'Hello World from ' + (backend ? 'backend' : 'frontend');\n};\n\n\n//# sourceURL=webpack:///./universial.js?"); - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/examples/javascript/dist/webpack-4/index.html b/examples/javascript/dist/webpack-4/index.html deleted file mode 100644 index 0538840e..00000000 --- a/examples/javascript/dist/webpack-4/index.html +++ /dev/null @@ -1 +0,0 @@ -Hello World from backend2019-07-22T06:55:15.576Z

Partial

\ No newline at end of file diff --git a/examples/javascript/dist/webpack-4/styles.css b/examples/javascript/dist/webpack-4/styles.css deleted file mode 100644 index e86486ba..00000000 --- a/examples/javascript/dist/webpack-4/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -body { - background: snow; -} diff --git a/examples/pug-loader/dist/webpack-4/bundle.js b/examples/pug-loader/dist/webpack-4/bundle.js deleted file mode 100644 index bddd4d2e..00000000 --- a/examples/pug-loader/dist/webpack-4/bundle.js +++ /dev/null @@ -1,387 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -__webpack_require__(1); -// Use the same template for the frontend code -var template = __webpack_require__(2); - -setInterval(function () { - var div = document.getElementById('main'); - div.innerHTML = template({ time: new Date() }); - div.style.color = 'navy'; -}, 1000); - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -// extracted by mini-css-extract-plugin - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -var pug = __webpack_require__(3); - -function template(locals) {var pug_html = "", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (time) {pug_html = pug_html + "\u003C!-- this partial is used for frontend and backend--\u003E\u003Cdiv class=\"time\"\u003E \u003Cb\u003ECurrent time\u003C\u002Fb\u003E\u003Cp\u003E" + (pug.escape(null == (pug_interp = time.toISOString()) ? "" : pug_interp)) + "\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cimg src=\"#{require('.\u002Flogo.png')}\"\u003E";}.call(this,"time" in locals_for_with?locals_for_with.time:typeof time!=="undefined"?time:undefined));;return pug_html;}; -module.exports = template; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var pug_has_own_property = Object.prototype.hasOwnProperty; - -/** - * Merge two attribute objects giving precedence - * to values in object `b`. Classes are special-cased - * allowing for arrays and merging/joining appropriately - * resulting in a string. - * - * @param {Object} a - * @param {Object} b - * @return {Object} a - * @api private - */ - -exports.merge = pug_merge; -function pug_merge(a, b) { - if (arguments.length === 1) { - var attrs = a[0]; - for (var i = 1; i < a.length; i++) { - attrs = pug_merge(attrs, a[i]); - } - return attrs; - } - - for (var key in b) { - if (key === 'class') { - var valA = a[key] || []; - a[key] = (Array.isArray(valA) ? valA : [valA]).concat(b[key] || []); - } else if (key === 'style') { - var valA = pug_style(a[key]); - valA = valA && valA[valA.length - 1] !== ';' ? valA + ';' : valA; - var valB = pug_style(b[key]); - valB = valB && valB[valB.length - 1] !== ';' ? valB + ';' : valB; - a[key] = valA + valB; - } else { - a[key] = b[key]; - } - } - - return a; -}; - -/** - * Process array, object, or string as a string of classes delimited by a space. - * - * If `val` is an array, all members of it and its subarrays are counted as - * classes. If `escaping` is an array, then whether or not the item in `val` is - * escaped depends on the corresponding item in `escaping`. If `escaping` is - * not an array, no escaping is done. - * - * If `val` is an object, all the keys whose value is truthy are counted as - * classes. No escaping is done. - * - * If `val` is a string, it is counted as a class. No escaping is done. - * - * @param {(Array.|Object.|string)} val - * @param {?Array.} escaping - * @return {String} - */ -exports.classes = pug_classes; -function pug_classes_array(val, escaping) { - var classString = '', className, padding = '', escapeEnabled = Array.isArray(escaping); - for (var i = 0; i < val.length; i++) { - className = pug_classes(val[i]); - if (!className) continue; - escapeEnabled && escaping[i] && (className = pug_escape(className)); - classString = classString + padding + className; - padding = ' '; - } - return classString; -} -function pug_classes_object(val) { - var classString = '', padding = ''; - for (var key in val) { - if (key && val[key] && pug_has_own_property.call(val, key)) { - classString = classString + padding + key; - padding = ' '; - } - } - return classString; -} -function pug_classes(val, escaping) { - if (Array.isArray(val)) { - return pug_classes_array(val, escaping); - } else if (val && typeof val === 'object') { - return pug_classes_object(val); - } else { - return val || ''; - } -} - -/** - * Convert object or string to a string of CSS styles delimited by a semicolon. - * - * @param {(Object.|string)} val - * @return {String} - */ - -exports.style = pug_style; -function pug_style(val) { - if (!val) return ''; - if (typeof val === 'object') { - var out = ''; - for (var style in val) { - /* istanbul ignore else */ - if (pug_has_own_property.call(val, style)) { - out = out + style + ':' + val[style] + ';'; - } - } - return out; - } else { - return val + ''; - } -}; - -/** - * Render the given attribute. - * - * @param {String} key - * @param {String} val - * @param {Boolean} escaped - * @param {Boolean} terse - * @return {String} - */ -exports.attr = pug_attr; -function pug_attr(key, val, escaped, terse) { - if (val === false || val == null || !val && (key === 'class' || key === 'style')) { - return ''; - } - if (val === true) { - return ' ' + (terse ? key : key + '="' + key + '"'); - } - var type = typeof val; - if ((type === 'object' || type === 'function') && typeof val.toJSON === 'function') { - val = val.toJSON(); - } - if (typeof val !== 'string') { - val = JSON.stringify(val); - if (!escaped && val.indexOf('"') !== -1) { - return ' ' + key + '=\'' + val.replace(/'/g, ''') + '\''; - } - } - if (escaped) val = pug_escape(val); - return ' ' + key + '="' + val + '"'; -}; - -/** - * Render the given attributes object. - * - * @param {Object} obj - * @param {Object} terse whether to use HTML5 terse boolean attributes - * @return {String} - */ -exports.attrs = pug_attrs; -function pug_attrs(obj, terse){ - var attrs = ''; - - for (var key in obj) { - if (pug_has_own_property.call(obj, key)) { - var val = obj[key]; - - if ('class' === key) { - val = pug_classes(val); - attrs = pug_attr(key, val, false, terse) + attrs; - continue; - } - if ('style' === key) { - val = pug_style(val); - } - attrs += pug_attr(key, val, false, terse); - } - } - - return attrs; -}; - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -var pug_match_html = /["&<>]/; -exports.escape = pug_escape; -function pug_escape(_html){ - var html = '' + _html; - var regexResult = pug_match_html.exec(html); - if (!regexResult) return _html; - - var result = ''; - var i, lastIndex, escape; - for (i = regexResult.index, lastIndex = 0; i < html.length; i++) { - switch (html.charCodeAt(i)) { - case 34: escape = '"'; break; - case 38: escape = '&'; break; - case 60: escape = '<'; break; - case 62: escape = '>'; break; - default: continue; - } - if (lastIndex !== i) result += html.substring(lastIndex, i); - lastIndex = i + 1; - result += escape; - } - if (lastIndex !== i) return result + html.substring(lastIndex, i); - else return result; -}; - -/** - * Re-throw the given `err` in context to the - * the pug in `filename` at the given `lineno`. - * - * @param {Error} err - * @param {String} filename - * @param {String} lineno - * @param {String} str original source - * @api private - */ - -exports.rethrow = pug_rethrow; -function pug_rethrow(err, filename, lineno, str){ - if (!(err instanceof Error)) throw err; - if ((typeof window != 'undefined' || !filename) && !str) { - err.message += ' on line ' + lineno; - throw err; - } - try { - str = str || __webpack_require__(4).readFileSync(filename, 'utf8') - } catch (ex) { - pug_rethrow(err, null, lineno) - } - var context = 3 - , lines = str.split('\n') - , start = Math.max(lineno - context, 0) - , end = Math.min(lines.length, lineno + context); - - // Error context - var context = lines.slice(start, end).map(function(line, i){ - var curr = i + start + 1; - return (curr == lineno ? ' > ' : ' ') - + curr - + '| ' - + line; - }).join('\n'); - - // Alter exception message - err.path = filename; - err.message = (filename || 'Pug') + ':' + lineno - + '\n' + context + '\n\n' + err.message; - throw err; -}; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - -/* (ignored) */ - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/examples/pug-loader/dist/webpack-4/favicon.ico b/examples/pug-loader/dist/webpack-4/favicon.ico deleted file mode 100644 index be74abd69ad6a32de7375df13cab9354798e328f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmc(dze~eV5XUd2fg&jH87YDYDQKxq1{4b-_ydP-wqS9vgGh17QXQQAwOE{VaBvi* zmu^z9t({y-&1ey8Y_x;?x+`BviV9;aRjMgZ8M*!jgkRrFqSI9;F zHyfX@Az|AvVmn~YWWZP`0&JWEY~BFm?*Vq}VD7&_%x%MP$p`D`4JMC!K|B7pt?Mmp zUJAB7rxMXS6=!P+AtLU9V)J#61WPxwipRXCHO{BJ`l{m53#=t97a!znv~vfmr|AaP zRGIT7#0FyJy3Z*hL{GQp-0TRhX8UzZ)+>%?mK0^goaX4Q;xpug demo
Current time

1998-12-31T23:00:00.000Z

\ No newline at end of file diff --git a/examples/pug-loader/dist/webpack-4/styles.css b/examples/pug-loader/dist/webpack-4/styles.css deleted file mode 100644 index e86486ba..00000000 --- a/examples/pug-loader/dist/webpack-4/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -body { - background: snow; -} diff --git a/examples/sort-manually/dist/webpack-4/0714810ae3fb211173e2964249507195.png b/examples/sort-manually/dist/webpack-4/0714810ae3fb211173e2964249507195.png deleted file mode 100644 index d71b3d789f45d8f124a1fde57a36e55855a6dcb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54055 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 Duf!qe diff --git a/examples/sort-manually/dist/webpack-4/a.js b/examples/sort-manually/dist/webpack-4/a.js deleted file mode 100644 index 45d5bc6c..00000000 --- a/examples/sort-manually/dist/webpack-4/a.js +++ /dev/null @@ -1,106 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 2); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */, -/* 1 */, -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(3); -var h1 = document.createElement('h1'); -h1.innerHTML = 'a!'; -document.body.appendChild(h1); - - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -// extracted by mini-css-extract-plugin - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/examples/sort-manually/dist/webpack-4/b.js b/examples/sort-manually/dist/webpack-4/b.js deleted file mode 100644 index ff84b5e4..00000000 --- a/examples/sort-manually/dist/webpack-4/b.js +++ /dev/null @@ -1,97 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -var h1 = document.createElement('h1'); -h1.innerHTML = 'b!'; -document.body.appendChild(h1); - - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/examples/sort-manually/dist/webpack-4/c.js b/examples/sort-manually/dist/webpack-4/c.js deleted file mode 100644 index 79d1c5b5..00000000 --- a/examples/sort-manually/dist/webpack-4/c.js +++ /dev/null @@ -1,99 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 4); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 4: -/***/ (function(module, exports) { - -var h1 = document.createElement('h1'); -h1.innerHTML = 'c!'; -document.body.appendChild(h1); - - -/***/ }) - -/******/ }); \ No newline at end of file diff --git a/examples/sort-manually/dist/webpack-4/d.js b/examples/sort-manually/dist/webpack-4/d.js deleted file mode 100644 index fcb4c43c..00000000 --- a/examples/sort-manually/dist/webpack-4/d.js +++ /dev/null @@ -1,98 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 1); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */, -/* 1 */ -/***/ (function(module, exports) { - -var h1 = document.createElement('h1'); -h1.innerHTML = 'd!'; -document.body.appendChild(h1); - - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/examples/sort-manually/dist/webpack-4/e.js b/examples/sort-manually/dist/webpack-4/e.js deleted file mode 100644 index 7324a293..00000000 --- a/examples/sort-manually/dist/webpack-4/e.js +++ /dev/null @@ -1,99 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 5); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 5: -/***/ (function(module, exports) { - -var h1 = document.createElement('h1'); -h1.innerHTML = 'e!'; -document.body.appendChild(h1); - - -/***/ }) - -/******/ }); \ No newline at end of file diff --git a/examples/sort-manually/dist/webpack-4/first-file.html b/examples/sort-manually/dist/webpack-4/first-file.html deleted file mode 100644 index f251a0f8..00000000 --- a/examples/sort-manually/dist/webpack-4/first-file.html +++ /dev/null @@ -1 +0,0 @@ -Example template \ No newline at end of file diff --git a/examples/sort-manually/dist/webpack-4/second-file.html b/examples/sort-manually/dist/webpack-4/second-file.html deleted file mode 100644 index ba8f8673..00000000 --- a/examples/sort-manually/dist/webpack-4/second-file.html +++ /dev/null @@ -1 +0,0 @@ -Example template \ No newline at end of file diff --git a/examples/sort-manually/dist/webpack-4/styles.css b/examples/sort-manually/dist/webpack-4/styles.css deleted file mode 100644 index e86486ba..00000000 --- a/examples/sort-manually/dist/webpack-4/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -body { - background: snow; -} diff --git a/examples/template-parameters/dist/webpack-4/bundle.js b/examples/template-parameters/dist/webpack-4/bundle.js deleted file mode 100644 index 04b5d781..00000000 --- a/examples/template-parameters/dist/webpack-4/bundle.js +++ /dev/null @@ -1,97 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -var h1 = document.createElement('h1'); -h1.innerHTML = 'Hello world!'; -document.body.appendChild(h1); - - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/examples/template-parameters/dist/webpack-4/index.html b/examples/template-parameters/dist/webpack-4/index.html deleted file mode 100644 index 2ac7ecd2..00000000 --- a/examples/template-parameters/dist/webpack-4/index.html +++ /dev/null @@ -1 +0,0 @@ -bar \ No newline at end of file From 701acee001dc56c90169f5edbb8b2450110403b8 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Wed, 14 Oct 2020 17:12:16 +0200 Subject: [PATCH 28/87] fix: use new webpack 5 api to extract assets from child compilation --- examples/javascript/dist/webpack-5/index.html | 2 +- lib/child-compiler.js | 56 ++++++++----------- 2 files changed, 25 insertions(+), 33 deletions(-) diff --git a/examples/javascript/dist/webpack-5/index.html b/examples/javascript/dist/webpack-5/index.html index 1e32f3c0..9930f856 100644 --- a/examples/javascript/dist/webpack-5/index.html +++ b/examples/javascript/dist/webpack-5/index.html @@ -1 +1 @@ -Hello World from backend2020-10-14T14:25:45.361Z

Partial

\ No newline at end of file +Hello World from backend2020-10-14T15:07:03.011Z

Partial

\ No newline at end of file diff --git a/lib/child-compiler.js b/lib/child-compiler.js index f9189b93..7cdb0773 100644 --- a/lib/child-compiler.js +++ b/lib/child-compiler.js @@ -16,6 +16,7 @@ const NodeTargetPlugin = require('webpack/lib/node/NodeTargetPlugin'); const LoaderTargetPlugin = require('webpack/lib/LoaderTargetPlugin'); const LibraryTemplatePlugin = require('webpack/lib/LibraryTemplatePlugin'); const SingleEntryPlugin = require('webpack/lib/SingleEntryPlugin'); +const Compilation = require('webpack').Compilation; /** * The HtmlWebpackChildCompiler is a helper to allow reusing one childCompiler @@ -100,17 +101,38 @@ class HtmlWebpackChildCompiler { new LibraryTemplatePlugin('HTML_WEBPACK_PLUGIN_RESULT', 'var').apply(childCompiler); new LoaderTargetPlugin('node').apply(childCompiler); + // Generate output file names + const temporaryTemplateNames = this.templates.map((template, index) => `__child-HtmlWebpackPlugin_${index}-${template}`); + // Add all templates this.templates.forEach((template, index) => { - new SingleEntryPlugin(childCompiler.context, template, `HtmlWebpackPlugin_${index}`).apply(childCompiler); + new SingleEntryPlugin(childCompiler.context, template, `HtmlWebpackPlugin_${index}-${template}`).apply(childCompiler); }); this.compilationStartedTimestamp = new Date().getTime(); this.compilationPromise = new Promise((resolve, reject) => { + const extractedAssets = []; + childCompiler.hooks.compilation.tap('HtmlWebpackPlugin', (compilation) => { + compilation.hooks.processAssets.tap( + { + name: 'HtmlWebpackPlugin', + stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONS + }, + (assets) => { + temporaryTemplateNames.forEach((temporaryTemplateName) => { + if (assets[temporaryTemplateName]) { + extractedAssets.push(assets[temporaryTemplateName]); + compilation.deleteAsset(temporaryTemplateName); + } + }); + } + ); + }); + childCompiler.runAsChild((err, entries, childCompilation) => { // Extract templates const compiledTemplates = entries - ? extractHelperFilesFromCompilation(mainCompilation, childCompilation, outputOptions.filename, entries) + ? extractedAssets.map((asset) => asset.source()) : []; // Extract file dependencies if (entries) { @@ -159,36 +181,6 @@ class HtmlWebpackChildCompiler { } } -/** - * The webpack child compilation will create files as a side effect. - * This function will extract them and clean them up so they won't be written to disk. - * - * Returns the source code of the compiled templates as string - * - * @returns Array - */ -function extractHelperFilesFromCompilation (mainCompilation, childCompilation, filename, childEntryChunks) { - const helperAssetNames = childEntryChunks.map((entryChunk, index) => { - const entryConfig = { - hash: childCompilation.hash, - chunk: entryChunk, - name: `HtmlWebpackPlugin_${index}` - }; - - return mainCompilation.getAssetPath(filename, entryConfig); - }); - - helperAssetNames.forEach((helperFileName) => { - delete mainCompilation.assets[helperFileName]; - }); - - const helperContents = helperAssetNames.map((helperFileName) => { - return childCompilation.assets[helperFileName].source(); - }); - - return helperContents; -} - module.exports = { HtmlWebpackChildCompiler }; From 6786e3ef130698cc0faf22d8f70674d054b31958 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Wed, 14 Oct 2020 17:14:28 +0200 Subject: [PATCH 29/87] feat: use webpack 5 typings --- package.json | 1 - typings.d.ts | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index eb57aff2..9791eb0a 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,6 @@ "dependencies": { "@types/html-minifier-terser": "^5.0.0", "@types/tapable": "^1.0.5", - "@types/webpack": "^4.41.22", "html-minifier-terser": "^5.0.1", "loader-utils": "2.0.0", "lodash": "^4.17.20", diff --git a/typings.d.ts b/typings.d.ts index 4b6d5dbc..b0a191da 100644 --- a/typings.d.ts +++ b/typings.d.ts @@ -1,5 +1,5 @@ import { AsyncSeriesWaterfallHook } from "tapable"; -import { Compiler, compilation } from 'webpack'; +import { Compiler, Compilation } from 'webpack'; import { Options as HtmlMinifierOptions } from "html-minifier-terser"; export = HtmlWebpackPlugin; @@ -9,7 +9,7 @@ declare class HtmlWebpackPlugin { apply(compiler: Compiler): void; - static getHooks(compilation: compilation.Compilation): HtmlWebpackPlugin.Hooks; + static getHooks(compilation: Compilation): HtmlWebpackPlugin.Hooks; /** * Static helper to create a tag object to be get injected into the dom From dd9db7f394ed3063927e07d0bc1055f42ca245da Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Fri, 4 Dec 2020 22:06:48 +0100 Subject: [PATCH 30/87] fix: use types included in tapable --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 9791eb0a..a44df929 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,6 @@ }, "dependencies": { "@types/html-minifier-terser": "^5.0.0", - "@types/tapable": "^1.0.5", "html-minifier-terser": "^5.0.1", "loader-utils": "2.0.0", "lodash": "^4.17.20", From 1f8d1afce0abe16c9888dafe73010e65271cf34d Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Thu, 15 Oct 2020 09:28:39 +0200 Subject: [PATCH 31/87] feat: use webpack 5 api to add assets --- index.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 7d04c256..2c9e6154 100644 --- a/index.js +++ b/index.js @@ -15,6 +15,7 @@ const fs = require('fs'); const _ = require('lodash'); const path = require('path'); const loaderUtils = require('loader-utils'); +const webpack = require('webpack'); const { CachedChildCompilation } = require('./lib/cached-child-compiler'); const { createHtmlTagObject, htmlTagObjectToString, HtmlTagArray } = require('./lib/html-tags'); @@ -329,10 +330,7 @@ function hookIntoCompiler (compiler, options, plugin) { return loaderUtils.getHashDigest(Buffer.from(html, 'utf8'), hashType, digestType, parseInt(maxLength, 10)); }); // Add the evaluated html code to the webpack assets - compilation.assets[finalOutputName] = { - source: () => html, - size: () => html.length - }; + compilation.emitAsset(finalOutputName, new webpack.sources.RawSource(html, false)); return finalOutputName; }) .then((finalOutputName) => getHtmlWebpackPluginHooks(compilation).afterEmit.promise({ From 1c1fdb98771de33606172b9caf635195501b02ce Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Thu, 15 Oct 2020 14:40:32 +0200 Subject: [PATCH 32/87] feat: drop support for appcache to be able to migrate to PROCESS_ASSETS_STAGE_ADDITIONAL BREAKING CHANGE: Drop support for appcache-webpack-plugin --- .../0714810ae3fb211173e2964249507195.png | Bin 54055 -> 0 bytes examples/appcache/dist/webpack-5/bundle.js | 47 ------------------ examples/appcache/dist/webpack-5/index.html | 1 - .../appcache/dist/webpack-5/manifest.appcache | 9 ---- examples/appcache/dist/webpack-5/styles.css | 3 -- examples/appcache/example.js | 4 -- examples/appcache/logo.png | Bin 54055 -> 0 bytes examples/appcache/main.css | 3 -- examples/appcache/template.html | 11 ---- examples/appcache/webpack.config.js | 34 ------------- spec/basic.spec.js | 16 ------ spec/example.spec.js | 4 -- 12 files changed, 132 deletions(-) delete mode 100644 examples/appcache/dist/webpack-5/0714810ae3fb211173e2964249507195.png delete mode 100644 examples/appcache/dist/webpack-5/bundle.js delete mode 100644 examples/appcache/dist/webpack-5/index.html delete mode 100644 examples/appcache/dist/webpack-5/manifest.appcache delete mode 100644 examples/appcache/dist/webpack-5/styles.css delete mode 100755 examples/appcache/example.js delete mode 100644 examples/appcache/logo.png delete mode 100644 examples/appcache/main.css delete mode 100644 examples/appcache/template.html delete mode 100755 examples/appcache/webpack.config.js diff --git a/examples/appcache/dist/webpack-5/0714810ae3fb211173e2964249507195.png b/examples/appcache/dist/webpack-5/0714810ae3fb211173e2964249507195.png deleted file mode 100644 index d71b3d789f45d8f124a1fde57a36e55855a6dcb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54055 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 Duf!qe diff --git a/examples/appcache/dist/webpack-5/bundle.js b/examples/appcache/dist/webpack-5/bundle.js deleted file mode 100644 index 9ae17651..00000000 --- a/examples/appcache/dist/webpack-5/bundle.js +++ /dev/null @@ -1,47 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ 636: -/***/ (() => { - -// extracted by mini-css-extract-plugin - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ if(__webpack_module_cache__[moduleId]) { -/******/ return __webpack_module_cache__[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /************************************************************************/ -(() => { -__webpack_require__(636); -var h1 = document.createElement('h1'); -h1.innerHTML = 'Hello world!'; -document.body.appendChild(h1); - -})(); - -/******/ })() -; \ No newline at end of file diff --git a/examples/appcache/dist/webpack-5/index.html b/examples/appcache/dist/webpack-5/index.html deleted file mode 100644 index 05ab8df0..00000000 --- a/examples/appcache/dist/webpack-5/index.html +++ /dev/null @@ -1 +0,0 @@ -Example template \ No newline at end of file diff --git a/examples/appcache/dist/webpack-5/manifest.appcache b/examples/appcache/dist/webpack-5/manifest.appcache deleted file mode 100644 index 61a39638..00000000 --- a/examples/appcache/dist/webpack-5/manifest.appcache +++ /dev/null @@ -1,9 +0,0 @@ -CACHE MANIFEST -# 8bbe00db9cab8f982354 - -0714810ae3fb211173e2964249507195.png -styles.css -bundle.js - -NETWORK: -* diff --git a/examples/appcache/dist/webpack-5/styles.css b/examples/appcache/dist/webpack-5/styles.css deleted file mode 100644 index e86486ba..00000000 --- a/examples/appcache/dist/webpack-5/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -body { - background: snow; -} diff --git a/examples/appcache/example.js b/examples/appcache/example.js deleted file mode 100755 index d62766b0..00000000 --- a/examples/appcache/example.js +++ /dev/null @@ -1,4 +0,0 @@ -require('./main.css'); -var h1 = document.createElement('h1'); -h1.innerHTML = 'Hello world!'; -document.body.appendChild(h1); diff --git a/examples/appcache/logo.png b/examples/appcache/logo.png deleted file mode 100644 index d71b3d789f45d8f124a1fde57a36e55855a6dcb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54055 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 Duf!qe diff --git a/examples/appcache/main.css b/examples/appcache/main.css deleted file mode 100644 index 232a2cdb..00000000 --- a/examples/appcache/main.css +++ /dev/null @@ -1,3 +0,0 @@ -body { - background: snow; -} \ No newline at end of file diff --git a/examples/appcache/template.html b/examples/appcache/template.html deleted file mode 100644 index b7b4f973..00000000 --- a/examples/appcache/template.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Example template - - - - - - \ No newline at end of file diff --git a/examples/appcache/webpack.config.js b/examples/appcache/webpack.config.js deleted file mode 100755 index 449a6cf9..00000000 --- a/examples/appcache/webpack.config.js +++ /dev/null @@ -1,34 +0,0 @@ -var path = require('path'); -var AppCachePlugin = require('appcache-webpack-plugin'); -var HtmlWebpackPlugin = require('../..'); -var MiniCssExtractPlugin = require('mini-css-extract-plugin'); -var webpackMajorVersion = require('webpack/package.json').version.split('.')[0]; - -module.exports = { - context: __dirname, - entry: './example.js', - output: { - path: path.join(__dirname, 'dist/webpack-' + webpackMajorVersion), - publicPath: '', - filename: 'bundle.js' - }, - module: { - rules: [ - { test: /\.css$/, use: [MiniCssExtractPlugin.loader, 'css-loader'] }, - { test: /\.png$/, loader: 'file-loader' }, - { test: /\.html$/, loader: 'html-loader', options: { removeOptionalTags: false } } - ] - }, - plugins: [ - new AppCachePlugin(), - new HtmlWebpackPlugin({ - filename: 'index.html', - template: 'template.html', - minify: { - removeComments: true, - collapseWhitespace: true - } - }), - new MiniCssExtractPlugin({ filename: 'styles.css' }) - ] -}; diff --git a/spec/basic.spec.js b/spec/basic.spec.js index 14837c5c..9e805f72 100644 --- a/spec/basic.spec.js +++ b/spec/basic.spec.js @@ -1909,22 +1909,6 @@ describe('HtmlWebpackPlugin', () => { }, ['Error: HtmlWebpackPlugin: could not load file'], null, done, true); }); - it('adds a manifest', done => { - const AppCachePlugin = require('appcache-webpack-plugin'); - testHtmlPlugin({ - mode: 'production', - entry: path.join(__dirname, 'fixtures/index.js'), - output: { - path: OUTPUT_DIR, - filename: 'index_bundle.js' - }, - plugins: [ - new AppCachePlugin({ settings: ['prefer-online'] }), - new HtmlWebpackPlugin() - ] - }, [''], null, done); - }); - it('does not add a manifest if already present', done => { const AppCachePlugin = require('appcache-webpack-plugin'); testHtmlPlugin({ diff --git a/spec/example.spec.js b/spec/example.spec.js index 09b08df4..8f721488 100644 --- a/spec/example.spec.js +++ b/spec/example.spec.js @@ -60,10 +60,6 @@ function runExample (exampleName, done) { } describe('HtmlWebpackPlugin Examples', () => { - it('appcache example', done => { - runExample('appcache', done); - }); - it('custom-template example', done => { runExample('custom-template', done); }); From aa64b824606896ed01daf7e6da80429785ecd7bc Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Thu, 15 Oct 2020 14:41:39 +0200 Subject: [PATCH 33/87] refactor: use compilation ids instead of template paths --- lib/child-compiler.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/child-compiler.js b/lib/child-compiler.js index 7cdb0773..72590925 100644 --- a/lib/child-compiler.js +++ b/lib/child-compiler.js @@ -18,6 +18,7 @@ const LibraryTemplatePlugin = require('webpack/lib/LibraryTemplatePlugin'); const SingleEntryPlugin = require('webpack/lib/SingleEntryPlugin'); const Compilation = require('webpack').Compilation; +let instanceId = 0; /** * The HtmlWebpackChildCompiler is a helper to allow reusing one childCompiler * for multiple HtmlWebpackPlugin instances to improve the compilation performance. @@ -28,6 +29,8 @@ class HtmlWebpackChildCompiler { * @param {string[]} templates */ constructor (templates) { + /** Id for this ChildCompiler */ + this.id = instanceId++; /** * @type {string[]} templateIds * The template array will allow us to keep track which input generated which output @@ -102,11 +105,11 @@ class HtmlWebpackChildCompiler { new LoaderTargetPlugin('node').apply(childCompiler); // Generate output file names - const temporaryTemplateNames = this.templates.map((template, index) => `__child-HtmlWebpackPlugin_${index}-${template}`); + const temporaryTemplateNames = this.templates.map((template, index) => `__child-HtmlWebpackPlugin_${index}-${this.id}`); // Add all templates this.templates.forEach((template, index) => { - new SingleEntryPlugin(childCompiler.context, template, `HtmlWebpackPlugin_${index}-${template}`).apply(childCompiler); + new SingleEntryPlugin(childCompiler.context, template, `HtmlWebpackPlugin_${index}-${this.id}`).apply(childCompiler); }); this.compilationStartedTimestamp = new Date().getTime(); From 3a9f3999112a4ee3fb14994737152655c3c5baa7 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Thu, 15 Oct 2020 14:43:50 +0200 Subject: [PATCH 34/87] feat: use thisCompilation in child compiler for faster builds see also https://github.com/webpack/webpack/pull/11704 --- lib/child-compiler.js | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/child-compiler.js b/lib/child-compiler.js index 72590925..365db42a 100644 --- a/lib/child-compiler.js +++ b/lib/child-compiler.js @@ -115,7 +115,7 @@ class HtmlWebpackChildCompiler { this.compilationStartedTimestamp = new Date().getTime(); this.compilationPromise = new Promise((resolve, reject) => { const extractedAssets = []; - childCompiler.hooks.compilation.tap('HtmlWebpackPlugin', (compilation) => { + childCompiler.hooks.thisCompilation.tap('HtmlWebpackPlugin', (compilation) => { compilation.hooks.processAssets.tap( { name: 'HtmlWebpackPlugin', diff --git a/package.json b/package.json index a44df929..cdbd05bb 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "standard-version": "9.0.0", "style-loader": "0.23.1", "typescript": "4.0.3", - "webpack": "5.1.0", + "webpack": "5.1.2", "webpack-recompilation-simulator": "3.2.0" }, "dependencies": { @@ -58,7 +58,7 @@ "tapable": "2.0.0" }, "peerDependencies": { - "webpack": "^5.1.0" + "webpack": "^5.1.2" }, "keywords": [ "webpack", From ef867fd7233f8deae3bc75753b03cbdfbb17ee0c Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Fri, 16 Oct 2020 11:21:03 +0200 Subject: [PATCH 35/87] feat: use webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS to add assets --- index.js | 299 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 155 insertions(+), 144 deletions(-) diff --git a/index.js b/index.js index 2c9e6154..e74f4622 100644 --- a/index.js +++ b/index.js @@ -188,164 +188,175 @@ function hookIntoCompiler (compiler, options, plugin) { }; } - compiler.hooks.emit.tapAsync('HtmlWebpackPlugin', + compiler.hooks.thisCompilation.tap('HtmlWebpackPlugin', /** - * Hook into the webpack emit phase + * Hook into the webpack compilation * @param {WebpackCompilation} compilation + */ + (compilation) => { + compilation.hooks.processAssets.tapAsync( + { + name: 'HtmlWebpackPlugin', + stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS + }, + /** + * Hook into the PROCESS_ASSETS_STAGE_ADDITIONS hook + * @param {WebpackCompilation} compilationAssets * @param {(err?: Error) => void} callback */ - (compilation, callback) => { - // Get all entry point names for this html file - const entryNames = Array.from(compilation.entrypoints.keys()); - const filteredEntryNames = filterChunks(entryNames, options.chunks, options.excludeChunks); - const sortedEntryNames = sortEntryChunks(filteredEntryNames, options.chunksSortMode, compilation); - - const templateResult = options.templateContent - ? { mainCompilationHash: compilation.hash } - : childCompilerPlugin.getCompilationEntryResult(options.template); - - if ('error' in templateResult) { - compilation.errors.push(prettyError(templateResult.error, compiler.context).toString()); - } + (compilationAssets, callback) => { + // Get all entry point names for this html file + const entryNames = Array.from(compilation.entrypoints.keys()); + const filteredEntryNames = filterChunks(entryNames, options.chunks, options.excludeChunks); + const sortedEntryNames = sortEntryChunks(filteredEntryNames, options.chunksSortMode, compilation); - const compiledEntries = 'compiledEntry' in templateResult ? { - hash: templateResult.compiledEntry.hash, - chunk: templateResult.compiledEntry.entry - } : { - hash: templateResult.mainCompilationHash - }; + const templateResult = options.templateContent + ? { mainCompilationHash: compilation.hash } + : childCompilerPlugin.getCompilationEntryResult(options.template); - const childCompilationOutputName = compilation.getAssetPath(options.filename, compiledEntries); - - // If the child compilation was not executed during a previous main compile run - // it is a cached result - const isCompilationCached = templateResult.mainCompilationHash !== compilation.hash; + if ('error' in templateResult) { + compilation.errors.push(prettyError(templateResult.error, compiler.context).toString()); + } - // Turn the entry point names into file paths - const assets = htmlWebpackPluginAssets(compilation, childCompilationOutputName, sortedEntryNames, options.publicPath); + const compiledEntries = 'compiledEntry' in templateResult ? { + hash: templateResult.compiledEntry.hash, + chunk: templateResult.compiledEntry.entry + } : { + hash: templateResult.mainCompilationHash + }; - // If the template and the assets did not change we don't have to emit the html - const newAssetJson = JSON.stringify(getAssetFiles(assets)); - if (isCompilationCached && options.cache && assetJson === newAssetJson) { - return callback(); - } else { - assetJson = newAssetJson; - } + const childCompilationOutputName = compilation.getAssetPath(options.filename, compiledEntries); - // The html-webpack plugin uses a object representation for the html-tags which will be injected - // to allow altering them more easily - // Just before they are converted a third-party-plugin author might change the order and content - const assetsPromise = getFaviconPublicPath(options.favicon, compilation, assets.publicPath) - .then((faviconPath) => { - assets.favicon = faviconPath; - return getHtmlWebpackPluginHooks(compilation).beforeAssetTagGeneration.promise({ - assets: assets, - outputName: childCompilationOutputName, - plugin: plugin - }); - }); + // If the child compilation was not executed during a previous main compile run + // it is a cached result + const isCompilationCached = templateResult.mainCompilationHash !== compilation.hash; - // Turn the js and css paths into grouped HtmlTagObjects - const assetTagGroupsPromise = assetsPromise - // And allow third-party-plugin authors to reorder and change the assetTags before they are grouped - .then(({ assets }) => getHtmlWebpackPluginHooks(compilation).alterAssetTags.promise({ - assetTags: { - scripts: generatedScriptTags(assets.js), - styles: generateStyleTags(assets.css), - meta: [ - ...generateBaseTag(options.base), - ...generatedMetaTags(options.meta), - ...generateFaviconTags(assets.favicon) - ] - }, - outputName: childCompilationOutputName, - plugin: plugin - })) - .then(({ assetTags }) => { - // Inject scripts to body unless it set explicitly to head - const scriptTarget = options.inject === 'head' || - (options.inject === false && options.scriptLoading !== 'blocking') ? 'head' : 'body'; - // Group assets to `head` and `body` tag arrays - const assetGroups = generateAssetGroups(assetTags, scriptTarget); - // Allow third-party-plugin authors to reorder and change the assetTags once they are grouped - return getHtmlWebpackPluginHooks(compilation).alterAssetTagGroups.promise({ - headTags: assetGroups.headTags, - bodyTags: assetGroups.bodyTags, - outputName: childCompilationOutputName, - plugin: plugin - }); - }); + // Turn the entry point names into file paths + const assets = htmlWebpackPluginAssets(compilation, childCompilationOutputName, sortedEntryNames, options.publicPath); - // Turn the compiled template into a nodejs function or into a nodejs string - const templateEvaluationPromise = Promise.resolve() - .then(() => { - if ('error' in templateResult) { - return options.showErrors ? prettyError(templateResult.error, compiler.context).toHtml() : 'ERROR'; - } - // Allow to use a custom function / string instead - if (options.templateContent !== false) { - return options.templateContent; + // If the template and the assets did not change we don't have to emit the html + const newAssetJson = JSON.stringify(getAssetFiles(assets)); + if (isCompilationCached && options.cache && assetJson === newAssetJson) { + return callback(); + } else { + assetJson = newAssetJson; } - // Once everything is compiled evaluate the html factory - // and replace it with its content - return ('compiledEntry' in templateResult) - ? plugin.evaluateCompilationResult(templateResult.compiledEntry.content, options.template) - : Promise.reject(new Error('Child compilation contained no compiledEntry')); - }); - - const templateExectutionPromise = Promise.all([assetsPromise, assetTagGroupsPromise, templateEvaluationPromise]) - // Execute the template - .then(([assetsHookResult, assetTags, compilationResult]) => typeof compilationResult !== 'function' - ? compilationResult - : executeTemplate(compilationResult, assetsHookResult.assets, { headTags: assetTags.headTags, bodyTags: assetTags.bodyTags }, compilation)); - - const injectedHtmlPromise = Promise.all([assetTagGroupsPromise, templateExectutionPromise]) - // Allow plugins to change the html before assets are injected - .then(([assetTags, html]) => { - const pluginArgs = { html, headTags: assetTags.headTags, bodyTags: assetTags.bodyTags, plugin: plugin, outputName: childCompilationOutputName }; - return getHtmlWebpackPluginHooks(compilation).afterTemplateExecution.promise(pluginArgs); - }) - .then(({ html, headTags, bodyTags }) => { - return postProcessHtml(html, assets, { headTags, bodyTags }); - }); - const emitHtmlPromise = injectedHtmlPromise - // Allow plugins to change the html after assets are injected - .then((html) => { - const pluginArgs = { html, plugin: plugin, outputName: childCompilationOutputName }; - return getHtmlWebpackPluginHooks(compilation).beforeEmit.promise(pluginArgs) - .then(result => result.html); - }) - .catch(err => { - // In case anything went wrong the promise is resolved - // with the error message and an error is logged - compilation.errors.push(prettyError(err, compiler.context).toString()); - return options.showErrors ? prettyError(err, compiler.context).toHtml() : 'ERROR'; - }) - .then(html => { - // Allow to use [templatehash] as placeholder for the html-webpack-plugin name - // See also https://survivejs.com/webpack/optimizing/adding-hashes-to-filenames/ - // From https://github.com/webpack-contrib/extract-text-webpack-plugin/blob/8de6558e33487e7606e7cd7cb2adc2cccafef272/src/index.js#L212-L214 - const finalOutputName = childCompilationOutputName.replace(/\[(?:(\w+):)?templatehash(?::([a-z]+\d*))?(?::(\d+))?\]/ig, (_, hashType, digestType, maxLength) => { - return loaderUtils.getHashDigest(Buffer.from(html, 'utf8'), hashType, digestType, parseInt(maxLength, 10)); + // The html-webpack plugin uses a object representation for the html-tags which will be injected + // to allow altering them more easily + // Just before they are converted a third-party-plugin author might change the order and content + const assetsPromise = getFaviconPublicPath(options.favicon, compilation, assets.publicPath) + .then((faviconPath) => { + assets.favicon = faviconPath; + return getHtmlWebpackPluginHooks(compilation).beforeAssetTagGeneration.promise({ + assets: assets, + outputName: childCompilationOutputName, + plugin: plugin + }); + }); + + // Turn the js and css paths into grouped HtmlTagObjects + const assetTagGroupsPromise = assetsPromise + // And allow third-party-plugin authors to reorder and change the assetTags before they are grouped + .then(({ assets }) => getHtmlWebpackPluginHooks(compilation).alterAssetTags.promise({ + assetTags: { + scripts: generatedScriptTags(assets.js), + styles: generateStyleTags(assets.css), + meta: [ + ...generateBaseTag(options.base), + ...generatedMetaTags(options.meta), + ...generateFaviconTags(assets.favicon) + ] + }, + outputName: childCompilationOutputName, + plugin: plugin + })) + .then(({ assetTags }) => { + // Inject scripts to body unless it set explicitly to head + const scriptTarget = options.inject === 'head' || + (options.inject === false && options.scriptLoading !== 'blocking') ? 'head' : 'body'; + // Group assets to `head` and `body` tag arrays + const assetGroups = generateAssetGroups(assetTags, scriptTarget); + // Allow third-party-plugin authors to reorder and change the assetTags once they are grouped + return getHtmlWebpackPluginHooks(compilation).alterAssetTagGroups.promise({ + headTags: assetGroups.headTags, + bodyTags: assetGroups.bodyTags, + outputName: childCompilationOutputName, + plugin: plugin + }); + }); + + // Turn the compiled template into a nodejs function or into a nodejs string + const templateEvaluationPromise = Promise.resolve() + .then(() => { + if ('error' in templateResult) { + return options.showErrors ? prettyError(templateResult.error, compiler.context).toHtml() : 'ERROR'; + } + // Allow to use a custom function / string instead + if (options.templateContent !== false) { + return options.templateContent; + } + // Once everything is compiled evaluate the html factory + // and replace it with its content + return ('compiledEntry' in templateResult) + ? plugin.evaluateCompilationResult(templateResult.compiledEntry.content, options.template) + : Promise.reject(new Error('Child compilation contained no compiledEntry')); + }); + + const templateExectutionPromise = Promise.all([assetsPromise, assetTagGroupsPromise, templateEvaluationPromise]) + // Execute the template + .then(([assetsHookResult, assetTags, compilationResult]) => typeof compilationResult !== 'function' + ? compilationResult + : executeTemplate(compilationResult, assetsHookResult.assets, { headTags: assetTags.headTags, bodyTags: assetTags.bodyTags }, compilation)); + + const injectedHtmlPromise = Promise.all([assetTagGroupsPromise, templateExectutionPromise]) + // Allow plugins to change the html before assets are injected + .then(([assetTags, html]) => { + const pluginArgs = { html, headTags: assetTags.headTags, bodyTags: assetTags.bodyTags, plugin: plugin, outputName: childCompilationOutputName }; + return getHtmlWebpackPluginHooks(compilation).afterTemplateExecution.promise(pluginArgs); + }) + .then(({ html, headTags, bodyTags }) => { + return postProcessHtml(html, assets, { headTags, bodyTags }); + }); + + const emitHtmlPromise = injectedHtmlPromise + // Allow plugins to change the html after assets are injected + .then((html) => { + const pluginArgs = { html, plugin: plugin, outputName: childCompilationOutputName }; + return getHtmlWebpackPluginHooks(compilation).beforeEmit.promise(pluginArgs) + .then(result => result.html); + }) + .catch(err => { + // In case anything went wrong the promise is resolved + // with the error message and an error is logged + compilation.errors.push(prettyError(err, compiler.context).toString()); + return options.showErrors ? prettyError(err, compiler.context).toHtml() : 'ERROR'; + }) + .then(html => { + // Allow to use [templatehash] as placeholder for the html-webpack-plugin name + // See also https://survivejs.com/webpack/optimizing/adding-hashes-to-filenames/ + // From https://github.com/webpack-contrib/extract-text-webpack-plugin/blob/8de6558e33487e7606e7cd7cb2adc2cccafef272/src/index.js#L212-L214 + const finalOutputName = childCompilationOutputName.replace(/\[(?:(\w+):)?templatehash(?::([a-z]+\d*))?(?::(\d+))?\]/ig, (_, hashType, digestType, maxLength) => { + return loaderUtils.getHashDigest(Buffer.from(html, 'utf8'), hashType, digestType, parseInt(maxLength, 10)); + }); + // Add the evaluated html code to the webpack assets + compilation.emitAsset(finalOutputName, new webpack.sources.RawSource(html, false)); + return finalOutputName; + }) + .then((finalOutputName) => getHtmlWebpackPluginHooks(compilation).afterEmit.promise({ + outputName: finalOutputName, + plugin: plugin + }).catch(err => { + console.error(err); + return null; + }).then(() => null)); + + // Once all files are added to the webpack compilation + // let the webpack compiler continue + emitHtmlPromise.then(() => { + callback(); }); - // Add the evaluated html code to the webpack assets - compilation.emitAsset(finalOutputName, new webpack.sources.RawSource(html, false)); - return finalOutputName; - }) - .then((finalOutputName) => getHtmlWebpackPluginHooks(compilation).afterEmit.promise({ - outputName: finalOutputName, - plugin: plugin - }).catch(err => { - console.error(err); - return null; - }).then(() => null)); - - // Once all files are added to the webpack compilation - // let the webpack compiler continue - emitHtmlPromise.then(() => { - callback(); - }); + }); }); /** From 71030b8c65e4a6b95dd20bb15c8b77dacbb70db6 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Fri, 16 Oct 2020 11:30:02 +0200 Subject: [PATCH 36/87] chore: upgrade mini-css-extract-plugin dev dependency --- .../custom-template/dist/webpack-5/bundle.js | 18 ++++++++++++++++-- examples/favicon/dist/webpack-5/bundle.js | 18 ++++++++++++++++-- examples/html-loader/dist/webpack-5/bundle.js | 18 ++++++++++++++++-- examples/inline/dist/webpack-5/bundle.js | 19 ++++++++++++++++--- examples/inline/dist/webpack-5/index.html | 19 ++++++++++++++++--- .../dist/webpack-5/bundle.js | 18 +++++++++++++++--- examples/javascript/dist/webpack-5/bundle.js | 18 +++++++++++++++--- examples/javascript/dist/webpack-5/index.html | 2 +- examples/pug-loader/dist/webpack-5/bundle.js | 18 ++++++++++++++++-- examples/sort-manually/dist/webpack-5/a.js | 18 ++++++++++++++++-- examples/sort-manually/dist/webpack-5/b.js | 1 - examples/sort-manually/dist/webpack-5/c.js | 1 - examples/sort-manually/dist/webpack-5/d.js | 1 - examples/sort-manually/dist/webpack-5/e.js | 1 - package.json | 2 +- 15 files changed, 144 insertions(+), 28 deletions(-) diff --git a/examples/custom-template/dist/webpack-5/bundle.js b/examples/custom-template/dist/webpack-5/bundle.js index 9ae17651..635cfad1 100644 --- a/examples/custom-template/dist/webpack-5/bundle.js +++ b/examples/custom-template/dist/webpack-5/bundle.js @@ -2,10 +2,13 @@ /******/ var __webpack_modules__ = ({ /***/ 636: -/***/ (() => { +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; +__webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin + /***/ }) /******/ }); @@ -34,7 +37,18 @@ /******/ } /******/ /************************************************************************/ -/******/ /************************************************************************/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ (() => { __webpack_require__(636); var h1 = document.createElement('h1'); diff --git a/examples/favicon/dist/webpack-5/bundle.js b/examples/favicon/dist/webpack-5/bundle.js index 9ae17651..635cfad1 100644 --- a/examples/favicon/dist/webpack-5/bundle.js +++ b/examples/favicon/dist/webpack-5/bundle.js @@ -2,10 +2,13 @@ /******/ var __webpack_modules__ = ({ /***/ 636: -/***/ (() => { +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; +__webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin + /***/ }) /******/ }); @@ -34,7 +37,18 @@ /******/ } /******/ /************************************************************************/ -/******/ /************************************************************************/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ (() => { __webpack_require__(636); var h1 = document.createElement('h1'); diff --git a/examples/html-loader/dist/webpack-5/bundle.js b/examples/html-loader/dist/webpack-5/bundle.js index 9ae17651..635cfad1 100644 --- a/examples/html-loader/dist/webpack-5/bundle.js +++ b/examples/html-loader/dist/webpack-5/bundle.js @@ -2,10 +2,13 @@ /******/ var __webpack_modules__ = ({ /***/ 636: -/***/ (() => { +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; +__webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin + /***/ }) /******/ }); @@ -34,7 +37,18 @@ /******/ } /******/ /************************************************************************/ -/******/ /************************************************************************/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ (() => { __webpack_require__(636); var h1 = document.createElement('h1'); diff --git a/examples/inline/dist/webpack-5/bundle.js b/examples/inline/dist/webpack-5/bundle.js index a995ab3d..c071dcd6 100644 --- a/examples/inline/dist/webpack-5/bundle.js +++ b/examples/inline/dist/webpack-5/bundle.js @@ -1,11 +1,14 @@ /******/ (() => { // webpackBootstrap +/******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ 636: -/***/ (() => { +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +__webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin + /***/ }) /******/ }); @@ -34,9 +37,19 @@ /******/ } /******/ /************************************************************************/ -/******/ /************************************************************************/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ (() => { -"use strict"; __webpack_require__(636); diff --git a/examples/inline/dist/webpack-5/index.html b/examples/inline/dist/webpack-5/index.html index 2583fe90..1cdce1c3 100644 --- a/examples/inline/dist/webpack-5/index.html +++ b/examples/inline/dist/webpack-5/index.html @@ -1,13 +1,16 @@ pug demoHello World from backend2020-10-14T15:07:03.011Z

Partial

\ No newline at end of file +Hello World from backend2020-10-16T09:28:24.192Z

Partial

\ No newline at end of file diff --git a/examples/pug-loader/dist/webpack-5/bundle.js b/examples/pug-loader/dist/webpack-5/bundle.js index 11ae57a6..9f33d64a 100644 --- a/examples/pug-loader/dist/webpack-5/bundle.js +++ b/examples/pug-loader/dist/webpack-5/bundle.js @@ -2,10 +2,13 @@ /******/ var __webpack_modules__ = ({ /***/ 636: -/***/ (() => { +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; +__webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin + /***/ }), /***/ 656: @@ -313,7 +316,18 @@ function pug_rethrow(err, filename, lineno, str){ /******/ } /******/ /************************************************************************/ -/******/ /************************************************************************/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ (() => { "use strict"; diff --git a/examples/sort-manually/dist/webpack-5/a.js b/examples/sort-manually/dist/webpack-5/a.js index dbfd0573..0165c13f 100644 --- a/examples/sort-manually/dist/webpack-5/a.js +++ b/examples/sort-manually/dist/webpack-5/a.js @@ -2,10 +2,13 @@ /******/ var __webpack_modules__ = ({ /***/ 636: -/***/ (() => { +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; +__webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin + /***/ }) /******/ }); @@ -34,7 +37,18 @@ /******/ } /******/ /************************************************************************/ -/******/ /************************************************************************/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ (() => { __webpack_require__(636); var h1 = document.createElement('h1'); diff --git a/examples/sort-manually/dist/webpack-5/b.js b/examples/sort-manually/dist/webpack-5/b.js index 7bf528af..c850d4ad 100644 --- a/examples/sort-manually/dist/webpack-5/b.js +++ b/examples/sort-manually/dist/webpack-5/b.js @@ -1,5 +1,4 @@ /******/ (() => { // webpackBootstrap -/******/ /************************************************************************/ var h1 = document.createElement('h1'); h1.innerHTML = 'b!'; document.body.appendChild(h1); diff --git a/examples/sort-manually/dist/webpack-5/c.js b/examples/sort-manually/dist/webpack-5/c.js index 82852a6f..e3031f95 100644 --- a/examples/sort-manually/dist/webpack-5/c.js +++ b/examples/sort-manually/dist/webpack-5/c.js @@ -1,5 +1,4 @@ /******/ (() => { // webpackBootstrap -/******/ /************************************************************************/ var h1 = document.createElement('h1'); h1.innerHTML = 'c!'; document.body.appendChild(h1); diff --git a/examples/sort-manually/dist/webpack-5/d.js b/examples/sort-manually/dist/webpack-5/d.js index cfd11c66..46e0e975 100644 --- a/examples/sort-manually/dist/webpack-5/d.js +++ b/examples/sort-manually/dist/webpack-5/d.js @@ -1,5 +1,4 @@ /******/ (() => { // webpackBootstrap -/******/ /************************************************************************/ var h1 = document.createElement('h1'); h1.innerHTML = 'd!'; document.body.appendChild(h1); diff --git a/examples/sort-manually/dist/webpack-5/e.js b/examples/sort-manually/dist/webpack-5/e.js index 01886f02..b017cb51 100644 --- a/examples/sort-manually/dist/webpack-5/e.js +++ b/examples/sort-manually/dist/webpack-5/e.js @@ -1,5 +1,4 @@ /******/ (() => { // webpackBootstrap -/******/ /************************************************************************/ var h1 = document.createElement('h1'); h1.innerHTML = 'e!'; document.body.appendChild(h1); diff --git a/package.json b/package.json index cdbd05bb..24fc2050 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "file-loader": "3.0.1", "html-loader": "0.5.5", "jest": "26.5.3", - "mini-css-extract-plugin": "0.6.0", + "mini-css-extract-plugin": "1.0.0", "pug": "2.0.3", "pug-loader": "2.4.0", "rimraf": "2.6.3", From b518ab1448fbc191f0526dee583a88e0f91f24f5 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Fri, 16 Oct 2020 13:00:04 +0200 Subject: [PATCH 37/87] fix: add options back for events --- index.js | 1 + spec/basic.spec.js | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/index.js b/index.js index e74f4622..f7627151 100644 --- a/index.js +++ b/index.js @@ -70,6 +70,7 @@ class HtmlWebpackPlugin { /** @type {ProcessedHtmlWebpackOptions} */ const options = Object.assign(defaultOptions, userOptions); + this.options = options; // Assert correct option spelling assert(options.scriptLoading === 'defer' || options.scriptLoading === 'blocking', 'scriptLoading needs to be set to "defer" or "blocking'); diff --git a/spec/basic.spec.js b/spec/basic.spec.js index 9e805f72..f693f32a 100644 --- a/spec/basic.spec.js +++ b/spec/basic.spec.js @@ -1145,6 +1145,74 @@ describe('HtmlWebpackPlugin', () => { null, done, false, false); }); + it('provides the options to the afterEmit event', done => { + let eventArgs; + const examplePlugin = { + apply: function (compiler) { + compiler.hooks.compilation.tap('HtmlWebpackPlugin', compilation => { + HtmlWebpackPlugin.getHooks(compilation).afterEmit.tapAsync('HtmlWebpackPluginTest', (pluginArgs, callback) => { + eventArgs = pluginArgs; + callback(null, pluginArgs); + }); + }); + } + }; + testHtmlPlugin({ + mode: 'production', + entry: { + app: path.join(__dirname, 'fixtures/index.js') + }, + output: { + path: OUTPUT_DIR, + filename: '[name]_bundle.js' + }, + plugins: [ + new HtmlWebpackPlugin({ + foo: 'bar' + }), + examplePlugin + ] + }, + [/ @@ -100,13 +86,11 @@ declare namespace HtmlWebpackPlugin { * * @default 'blocking' */ - scriptLoading: - | "blocking" - | "defer" + scriptLoading?: "blocking" | "defer"; /** * Inject meta tags */ - meta: + meta?: | false // Disable injection | { [name: string]: @@ -121,28 +105,30 @@ declare namespace HtmlWebpackPlugin { * - Set to custom minification according to * {@link https://github.com/kangax/html-minifier#options-quick-reference} */ - minify: 'auto' | boolean | MinifyOptions; + minify?: "auto" | boolean | MinifyOptions; /** * Render errors into the HTML page */ - showErrors: boolean; + showErrors?: boolean; /** * The `webpack` require path to the template. * @see https://github.com/jantimon/html-webpack-plugin/blob/master/docs/template-option.md */ - template: string; + template?: string; /** * Allow to use a html string instead of reading from a file */ - templateContent: + templateContent?: | false // Use the template option instead to load a file | string - | ((templateParameters: { [option: string]: any }) => (string | Promise)) + | ((templateParameters: { + [option: string]: any; + }) => string | Promise) | Promise; /** * Allows to overwrite the parameters used in the template */ - templateParameters: + templateParameters?: | false // Pass an empty object to the template function | (( compilation: any, @@ -163,11 +149,11 @@ declare namespace HtmlWebpackPlugin { /** * The title to use for the generated HTML document */ - title: string; + title?: string; /** * Enforce self closing tags e.g. */ - xhtml: boolean; + xhtml?: boolean; /** * In addition to the options actually used by this plugin, you can use this hash to pass arbitrary data through * to your template. @@ -175,6 +161,13 @@ declare namespace HtmlWebpackPlugin { [option: string]: any; } + /** + * The plugin options after adding default values + */ + interface ProcessedOptions extends Required { + filename: string; + } + /** * The values which are available during template execution * @@ -268,7 +261,7 @@ declare namespace HtmlWebpackPlugin { * The inner HTML */ innerHTML?: string; - /** + /** * Whether this html must not contain innerHTML * @see https://www.w3.org/TR/html5/syntax.html#void-elements */ From ff9d7704673348b3ba30884b6254542026f7d9db Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Sat, 7 Nov 2020 11:35:31 +0100 Subject: [PATCH 47/87] chore: upgrade dev dependencies --- package.json | 6 +++--- tsconfig.json | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 24fc2050..9a82be89 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ ] }, "devDependencies": { - "@types/loader-utils": "1.1.3", + "@types/loader-utils": "2.0.1", "@types/node": "11.13.9", "appcache-webpack-plugin": "1.4.0", "commitizen": "4.2.1", @@ -45,8 +45,8 @@ "semistandard": "^13.0.1", "standard-version": "9.0.0", "style-loader": "0.23.1", - "typescript": "4.0.3", - "webpack": "5.1.2", + "typescript": "4.0.5", + "webpack": "5.4.0", "webpack-recompilation-simulator": "3.2.0" }, "dependencies": { diff --git a/tsconfig.json b/tsconfig.json index dfcd473f..cbc38d93 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -34,7 +34,6 @@ "spec", "examples", "dist", - "coverage", - "lib/webpack5/*.js" + "coverage" ] } From 4f7f7506720719461e26c94e1ebfee4454192221 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Tue, 10 Nov 2020 09:57:50 +0100 Subject: [PATCH 48/87] chore: remove broken deprecation tracing --- spec/basic.spec.js | 1 - spec/caching.spec.js | 1 - spec/example.spec.js | 1 - spec/hot.spec.js | 1 - 4 files changed, 4 deletions(-) diff --git a/spec/basic.spec.js b/spec/basic.spec.js index c8467ad1..7a18fb4f 100644 --- a/spec/basic.spec.js +++ b/spec/basic.spec.js @@ -24,7 +24,6 @@ const OUTPUT_DIR = path.resolve(__dirname, '../dist/basic-spec'); jest.setTimeout(30000); process.on('unhandledRejection', r => console.log(r)); -process.traceDeprecation = true; function testHtmlPlugin (webpackConfig, expectedResults, outputFile, done, expectErrors, expectWarnings) { outputFile = outputFile || 'index.html'; diff --git a/spec/caching.spec.js b/spec/caching.spec.js index 209e924b..38f7e7ec 100644 --- a/spec/caching.spec.js +++ b/spec/caching.spec.js @@ -15,7 +15,6 @@ const OUTPUT_DIR = path.join(__dirname, '../dist/caching-spec'); jest.setTimeout(30000); process.on('unhandledRejection', r => console.log(r)); -process.traceDeprecation = true; function setUpCompiler (htmlWebpackPlugin) { jest.spyOn(htmlWebpackPlugin, 'evaluateCompilationResult'); diff --git a/spec/example.spec.js b/spec/example.spec.js index 8f721488..acc1837f 100644 --- a/spec/example.spec.js +++ b/spec/example.spec.js @@ -15,7 +15,6 @@ const webpackMajorVersion = require('webpack/package.json').version.split('.')[0 const OUTPUT_DIR = path.resolve(__dirname, '../dist'); jest.setTimeout(30000); -process.traceDeprecation = true; function runExample (exampleName, done) { const examplePath = path.resolve(__dirname, '..', 'examples', exampleName); diff --git a/spec/hot.spec.js b/spec/hot.spec.js index a2f5e156..a2d2c7f9 100644 --- a/spec/hot.spec.js +++ b/spec/hot.spec.js @@ -21,7 +21,6 @@ const DEFAULT_TEMPLATE = DEFAULT_LOADER + '!' + require.resolve('../default_inde jest.setTimeout(30000); process.on('unhandledRejection', r => console.log(r)); -process.traceDeprecation = true; describe('HtmlWebpackPluginHMR', () => { beforeEach(done => { From ab8b195be40ade21ada2fbf02a1b312459203eb8 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Fri, 4 Dec 2020 22:03:47 +0100 Subject: [PATCH 49/87] fix: support loaders like raw-loader --- index.js | 4 +++- lib/child-compiler.js | 8 +++----- package.json | 3 ++- spec/basic.spec.js | 20 ++++++++++++++++++++ 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/index.js b/index.js index c15bc79f..ab9e3198 100644 --- a/index.js +++ b/index.js @@ -123,7 +123,9 @@ class HtmlWebpackPlugin { } // The LibraryTemplatePlugin stores the template result in a local variable. // To extract the result during the evaluation this part has to be removed. - source = source.replace('var HTML_WEBPACK_PLUGIN_RESULT =', ''); + if (source && source.indexOf('HTML_WEBPACK_PLUGIN_RESULT') >= 0) { + source += ';\nHTML_WEBPACK_PLUGIN_RESULT'; + } const templateWithoutLoaders = templateFilename.replace(/^.+!/, '').replace(/\?.+$/, ''); const vmContext = vm.createContext({ HTML_WEBPACK_PLUGIN: true, require: require, ...global }); const vmScript = new vm.Script(source, { filename: templateWithoutLoaders }); diff --git a/lib/child-compiler.js b/lib/child-compiler.js index 70edcddc..e94bec38 100644 --- a/lib/child-compiler.js +++ b/lib/child-compiler.js @@ -75,7 +75,6 @@ class HtmlWebpackChildCompiler { const webpack = mainCompilation.compiler.webpack; const Compilation = webpack.Compilation; - const NodeTemplatePlugin = webpack.node.NodeTemplatePlugin; const NodeTargetPlugin = webpack.node.NodeTargetPlugin; const LoaderTargetPlugin = webpack.LoaderTargetPlugin; const EntryPlugin = webpack.EntryPlugin; @@ -95,8 +94,7 @@ class HtmlWebpackChildCompiler { name: 'HTML_WEBPACK_PLUGIN_RESULT' }, /** @type {'text/javascript'} */ - scriptType: (/** @type {'text/javascript'} */'text/javascript'), - iife: false + scriptType: (/** @type {'text/javascript'} */'text/javascript') }; const compilerName = 'HtmlWebpackCompiler'; // Create an additional child compiler which takes the template @@ -104,9 +102,9 @@ class HtmlWebpackChildCompiler { // This allows us to use loaders during the compilation const childCompiler = mainCompilation.createChildCompiler(compilerName, outputOptions, [ // Compile the template to nodejs javascript - new NodeTemplatePlugin(outputOptions), new NodeTargetPlugin(), - new LoaderTargetPlugin('node') + new LoaderTargetPlugin('node'), + new webpack.library.EnableLibraryPlugin('var') ]); // The file path context which webpack uses to resolve all relative files to childCompiler.context = mainCompilation.compiler.context; diff --git a/package.json b/package.json index 9a82be89..248f9186 100644 --- a/package.json +++ b/package.json @@ -41,12 +41,13 @@ "mini-css-extract-plugin": "1.0.0", "pug": "2.0.3", "pug-loader": "2.4.0", + "raw-loader": "4.0.2", "rimraf": "2.6.3", "semistandard": "^13.0.1", "standard-version": "9.0.0", "style-loader": "0.23.1", "typescript": "4.0.5", - "webpack": "5.4.0", + "webpack": "5.10.0", "webpack-recompilation-simulator": "3.2.0" }, "dependencies": { diff --git a/spec/basic.spec.js b/spec/basic.spec.js index 7a18fb4f..5b5fcaa1 100644 --- a/spec/basic.spec.js +++ b/spec/basic.spec.js @@ -519,6 +519,26 @@ describe('HtmlWebpackPlugin', () => { }, [''], null, done); }); + it('works with a javascript returning loader like raw-loader', done => { + testHtmlPlugin({ + mode: 'production', + entry: path.join(__dirname, 'fixtures/index.js'), + module: { + rules: [ + { test: /\.html$/, use: ['raw-loader'] } + ] + }, + output: { + path: OUTPUT_DIR, + filename: '[name].js' + }, + plugins: [new HtmlWebpackPlugin({ + inject: true, + template: path.join(__dirname, 'fixtures/plain.html') + })] + }, ['Hello World from backend2020-10-16T09:28:24.192Z

Partial

\ No newline at end of file +Hello World from backend2020-12-04T21:57:14.592Z

Partial

\ No newline at end of file diff --git a/examples/javascript/webpack.config.js b/examples/javascript/webpack.config.js index 510a462f..9945c4c5 100644 --- a/examples/javascript/webpack.config.js +++ b/examples/javascript/webpack.config.js @@ -7,17 +7,15 @@ module.exports = { entry: './example.js', output: { path: path.join(__dirname, 'dist/webpack-' + webpackMajorVersion), - publicPath: '', filename: 'bundle.js' }, module: { rules: [ { test: /\.css$/, use: [MiniCssExtractPlugin.loader, 'css-loader'] }, - { test: /\.png$/, loader: 'file-loader' }, + { test: /\.png$/, type: 'asset/resource' }, { test: /\.html$/, loader: 'html-loader' } ] }, - devtool: 'eval', plugins: [ new HtmlWebpackPlugin({ template: 'template.js' diff --git a/lib/child-compiler.js b/lib/child-compiler.js index e94bec38..1b7cbaab 100644 --- a/lib/child-compiler.js +++ b/lib/child-compiler.js @@ -88,7 +88,9 @@ class HtmlWebpackChildCompiler { const outputOptions = { filename: '__child-[name]', - publicPath: mainCompilation.outputOptions.publicPath, + publicPath: mainCompilation.outputOptions.publicPath === 'auto' + ? '' + : mainCompilation.outputOptions.publicPath, library: { type: 'var', name: 'HTML_WEBPACK_PLUGIN_RESULT' diff --git a/package.json b/package.json index 248f9186..277b8ad5 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,8 @@ "style-loader": "0.23.1", "typescript": "4.0.5", "webpack": "5.10.0", - "webpack-recompilation-simulator": "3.2.0" + "webpack-recompilation-simulator": "3.2.0", + "webpack-cli": "4.2.0" }, "dependencies": { "@types/html-minifier-terser": "^5.0.0", From 2975a6add4f30c5f697e77a3bb17c857efeacb4c Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Sat, 7 Nov 2020 15:46:50 +0100 Subject: [PATCH 51/87] feat: process html during the processAssets stage PROCESS_ASSETS_STAGE_OPTIMIZE_INLINE --- index.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index ab9e3198..e5224a18 100644 --- a/index.js +++ b/index.js @@ -214,13 +214,17 @@ function hookIntoCompiler (compiler, options, plugin) { compilation.hooks.processAssets.tapAsync( { name: 'HtmlWebpackPlugin', - stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS + stage: + /** + * Generate the html after minification and dev tooling is done + */ + webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_INLINE }, /** - * Hook into the PROCESS_ASSETS_STAGE_ADDITIONS hook - * @param {WebpackCompilation} compilationAssets - * @param {(err?: Error) => void} callback - */ + * Hook into the process assets hook + * @param {WebpackCompilation} compilationAssets + * @param {(err?: Error) => void} callback + */ (compilationAssets, callback) => { // Get all entry point names for this html file const entryNames = Array.from(compilation.entrypoints.keys()); From 10a0c5ee14be341d5e07697f16617adc8e8a0fa1 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Mon, 14 Dec 2020 17:19:57 +0100 Subject: [PATCH 52/87] fix: adjust tests as webpack 5 will no longer emit files for builds with errors --- spec/basic.spec.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spec/basic.spec.js b/spec/basic.spec.js index 5b5fcaa1..107925ef 100644 --- a/spec/basic.spec.js +++ b/spec/basic.spec.js @@ -165,6 +165,9 @@ describe('HtmlWebpackPlugin', () => { it('should pass through loader errors', done => { testHtmlPlugin({ mode: 'production', + optimization: { + emitOnErrors: true + }, entry: { app: path.join(__dirname, 'fixtures/index.js') }, @@ -2021,6 +2024,9 @@ describe('HtmlWebpackPlugin', () => { path: OUTPUT_DIR, filename: 'index_bundle.js' }, + optimization: { + emitOnErrors: true + }, plugins: [ new HtmlWebpackPlugin({ inject: true, From a43ab729c9d1805d89e8edc1e3ad396bfbe7d5a6 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Mon, 14 Dec 2020 17:20:30 +0100 Subject: [PATCH 53/87] feat: overrule module output --- lib/child-compiler.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/child-compiler.js b/lib/child-compiler.js index 1b7cbaab..43ef989d 100644 --- a/lib/child-compiler.js +++ b/lib/child-compiler.js @@ -95,8 +95,8 @@ class HtmlWebpackChildCompiler { type: 'var', name: 'HTML_WEBPACK_PLUGIN_RESULT' }, - /** @type {'text/javascript'} */ - scriptType: (/** @type {'text/javascript'} */'text/javascript') + scriptType: /** @type {'text/javascript'} */('text/javascript'), + iife: true }; const compilerName = 'HtmlWebpackCompiler'; // Create an additional child compiler which takes the template @@ -152,9 +152,6 @@ class HtmlWebpackChildCompiler { if (childCompilation && childCompilation.errors && childCompilation.errors.length) { const errorDetails = childCompilation.errors.map(error => { let message = error.message; - if ('error' in error) { - message += ':\n' + error.error; - } if (error.stack) { message += '\n' + error.stack; } From 60a6ef8059cc9ffe3c892c4ae5e6fe81afbd89bf Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Tue, 15 Dec 2020 08:52:49 +0100 Subject: [PATCH 54/87] test: add test for experiments: { outputModule: true } --- spec/basic.spec.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/spec/basic.spec.js b/spec/basic.spec.js index 107925ef..d31ba5e2 100644 --- a/spec/basic.spec.js +++ b/spec/basic.spec.js @@ -2567,4 +2567,21 @@ describe('HtmlWebpackPlugin', () => { ] }, [''], null, done); }); + + it('should allow to use experiments:{outputModule:true}', done => { + testHtmlPlugin({ + mode: 'production', + entry: path.join(__dirname, 'fixtures/index.js'), + output: { + path: OUTPUT_DIR, + filename: 'index_bundle.js', + module: true + }, + experiments: { outputModule: true }, + plugins: [ + new HtmlWebpackPlugin({ + }) + ] + }, [''], null, done); + }); }); From fd5fe587604f052de2de3f760b45a8632f7b3086 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Tue, 15 Dec 2020 19:41:04 +0100 Subject: [PATCH 55/87] refactor: move the publicPath generation into a seperate function --- index.js | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/index.js b/index.js index e5224a18..a6c06bf0 100644 --- a/index.js +++ b/index.js @@ -252,8 +252,11 @@ function hookIntoCompiler (compiler, options, plugin) { // it is a cached result const isCompilationCached = templateResult.mainCompilationHash !== compilation.hash; - // Turn the entry point names into file paths - const assets = htmlWebpackPluginAssets(compilation, childCompilationOutputName, sortedEntryNames, options.publicPath); + /** The public path used inside the html file */ + const htmlPublicPath = getPublicPath(compilation, childCompilationOutputName, options.publicPath); + + /** Generated file paths from the entry point names */ + const assets = htmlWebpackPluginAssets(compilation, sortedEntryNames, htmlPublicPath); // If the template and the assets did not change we don't have to emit the html const newAssetJson = JSON.stringify(getAssetFiles(assets)); @@ -327,7 +330,6 @@ function hookIntoCompiler (compiler, options, plugin) { ? plugin.evaluateCompilationResult(templateResult.compiledEntry.content, options.template) : Promise.reject(new Error('Child compilation contained no compiledEntry')); }); - const templateExectutionPromise = Promise.all([assetsPromise, assetTagGroupsPromise, templateEvaluationPromise]) // Execute the template .then(([assetsHookResult, assetTags, compilationResult]) => typeof compilationResult !== 'function' @@ -545,20 +547,15 @@ function hookIntoCompiler (compiler, options, plugin) { } /** - * The htmlWebpackPluginAssets extracts the asset information of a webpack compilation - * for all given entry names + * Generate the relative or absolute base url to reference images, css, and javascript files + * from within the html file - the publicPath + * * @param {WebpackCompilation} compilation - * @param {string[]} entryNames + * @param {string} childCompilationOutputName * @param {string | 'auto'} customPublicPath - * @returns {{ - publicPath: string, - js: Array, - css: Array, - manifest?: string, - favicon?: string - }} + * @returns {string} */ - function htmlWebpackPluginAssets (compilation, childCompilationOutputName, entryNames, customPublicPath) { + function getPublicPath (compilation, childCompilationOutputName, customPublicPath) { const compilationHash = compilation.hash; /** @@ -587,6 +584,25 @@ function hookIntoCompiler (compiler, options, plugin) { publicPath += '/'; } + return publicPath; + } + + /** + * The htmlWebpackPluginAssets extracts the asset information of a webpack compilation + * for all given entry names + * @param {WebpackCompilation} compilation + * @param {string[]} entryNames + * @param {string | 'auto'} publicPath + * @returns {{ + publicPath: string, + js: Array, + css: Array, + manifest?: string, + favicon?: string + }} + */ + function htmlWebpackPluginAssets (compilation, entryNames, publicPath) { + const compilationHash = compilation.hash; /** * @type {{ publicPath: string, @@ -598,7 +614,7 @@ function hookIntoCompiler (compiler, options, plugin) { */ const assets = { // The public path - publicPath: publicPath, + publicPath, // Will contain all js and mjs files js: [], // Will contain all css files From 13af0fb6860e5159b71f5ae5f3d42efd2786e9ac Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Tue, 15 Dec 2020 20:09:12 +0100 Subject: [PATCH 56/87] feat: add full support for public paths inside templates --- index.js | 6 ++--- lib/child-compiler.js | 5 ++--- spec/basic.spec.js | 47 ++++++++++++++++++++++++++++++++++++++++ spec/fixtures/logo.html | 11 ++++++++++ spec/fixtures/logo.png | Bin 0 -> 54055 bytes 5 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 spec/fixtures/logo.html create mode 100644 spec/fixtures/logo.png diff --git a/index.js b/index.js index a6c06bf0..aae8f6f6 100644 --- a/index.js +++ b/index.js @@ -117,7 +117,7 @@ class HtmlWebpackPlugin { * @param {string} templateFilename * @returns {Promise string | Promise)>} */ - evaluateCompilationResult (source, templateFilename) { + evaluateCompilationResult (source, publicPath, templateFilename) { if (!source) { return Promise.reject(new Error('The child compilation didn\'t provide a result')); } @@ -127,7 +127,7 @@ class HtmlWebpackPlugin { source += ';\nHTML_WEBPACK_PLUGIN_RESULT'; } const templateWithoutLoaders = templateFilename.replace(/^.+!/, '').replace(/\?.+$/, ''); - const vmContext = vm.createContext({ HTML_WEBPACK_PLUGIN: true, require: require, ...global }); + const vmContext = vm.createContext({ HTML_WEBPACK_PLUGIN: true, require: require, htmlWebpackPluginPublicPath: publicPath, ...global }); const vmScript = new vm.Script(source, { filename: templateWithoutLoaders }); // Evaluate code and cast to string let newSource; @@ -327,7 +327,7 @@ function hookIntoCompiler (compiler, options, plugin) { // Once everything is compiled evaluate the html factory // and replace it with its content return ('compiledEntry' in templateResult) - ? plugin.evaluateCompilationResult(templateResult.compiledEntry.content, options.template) + ? plugin.evaluateCompilationResult(templateResult.compiledEntry.content, htmlPublicPath, options.template) : Promise.reject(new Error('Child compilation contained no compiledEntry')); }); const templateExectutionPromise = Promise.all([assetsPromise, assetTagGroupsPromise, templateEvaluationPromise]) diff --git a/lib/child-compiler.js b/lib/child-compiler.js index 43ef989d..02d21de6 100644 --- a/lib/child-compiler.js +++ b/lib/child-compiler.js @@ -88,9 +88,7 @@ class HtmlWebpackChildCompiler { const outputOptions = { filename: '__child-[name]', - publicPath: mainCompilation.outputOptions.publicPath === 'auto' - ? '' - : mainCompilation.outputOptions.publicPath, + publicPath: '', library: { type: 'var', name: 'HTML_WEBPACK_PLUGIN_RESULT' @@ -116,6 +114,7 @@ class HtmlWebpackChildCompiler { // Add all templates this.templates.forEach((template, index) => { + new EntryPlugin(childCompiler.context, 'data:text/javascript,__webpack_public_path__ = htmlWebpackPluginPublicPath;', `HtmlWebpackPlugin_${index}-${this.id}`).apply(childCompiler); new EntryPlugin(childCompiler.context, template, `HtmlWebpackPlugin_${index}-${this.id}`).apply(childCompiler); }); diff --git a/spec/basic.spec.js b/spec/basic.spec.js index d31ba5e2..eeae2fe0 100644 --- a/spec/basic.spec.js +++ b/spec/basic.spec.js @@ -2584,4 +2584,51 @@ describe('HtmlWebpackPlugin', () => { ] }, [''], null, done); }); + + it('generates relative path for asset/resource', done => { + testHtmlPlugin({ + mode: 'development', + entry: path.join(__dirname, 'fixtures/index.js'), + output: { + path: OUTPUT_DIR, + filename: 'index_bundle.js', + assetModuleFilename: 'assets/demo[ext]' + }, + module: { + rules: [ + { test: /\.png$/, type: 'asset/resource' } + ] + }, + plugins: [ + new HtmlWebpackPlugin({ + template: 'html-loader!' + path.join(__dirname, 'fixtures/logo.html'), + filename: 'demo/index.js' + }) + ] + }, [' + + + + Example Plain file + + + + + + diff --git a/spec/fixtures/logo.png b/spec/fixtures/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d71b3d789f45d8f124a1fde57a36e55855a6dcb5 GIT binary patch literal 54055 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 Duf!qe literal 0 HcmV?d00001 From 833b46bbcb5a8b06064bff001b365f5bb3654ef7 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Sun, 3 Jan 2021 13:51:44 +0100 Subject: [PATCH 57/87] fix: inject javascripts in the tag for inject:true and scriptLoading:'defer' --- index.js | 2 +- spec/basic.spec.js | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index aae8f6f6..2f760be1 100644 --- a/index.js +++ b/index.js @@ -302,7 +302,7 @@ function hookIntoCompiler (compiler, options, plugin) { .then(({ assetTags }) => { // Inject scripts to body unless it set explicitly to head const scriptTarget = options.inject === 'head' || - (options.inject === false && options.scriptLoading !== 'blocking') ? 'head' : 'body'; + (options.inject !== 'body' && options.scriptLoading !== 'blocking') ? 'head' : 'body'; // Group assets to `head` and `body` tag arrays const assetGroups = generateAssetGroups(assetTags, scriptTarget); // Allow third-party-plugin authors to reorder and change the assetTags once they are grouped diff --git a/spec/basic.spec.js b/spec/basic.spec.js index eeae2fe0..f9773403 100644 --- a/spec/basic.spec.js +++ b/spec/basic.spec.js @@ -2540,6 +2540,29 @@ describe('HtmlWebpackPlugin', () => { }, ['', ''], null, done); }); + it('should add the javascript assets to the head for inject:true with scriptLoading:defer', done => { + testHtmlPlugin({ + mode: 'production', + entry: path.join(__dirname, 'fixtures/theme.js'), + output: { + path: OUTPUT_DIR, + filename: 'index_bundle.js' + }, + module: { + rules: [ + { test: /\.css$/, use: [MiniCssExtractPlugin.loader, 'css-loader'] } + ] + }, + plugins: [ + new MiniCssExtractPlugin({ filename: 'styles.css' }), + new HtmlWebpackPlugin({ + scriptLoading: 'defer', + inject: true + }) + ] + }, [''], null, done); + }); + it('should allow to use headTags and bodyTags directly in string literals', done => { testHtmlPlugin({ mode: 'production', From b109213613afb693c379da03ecfa3b0b30084da1 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Sun, 3 Jan 2021 13:54:58 +0100 Subject: [PATCH 58/87] docs: update installation instructions for webpack 4 --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7cdcb156..710e0e68 100644 --- a/README.md +++ b/README.md @@ -24,22 +24,22 @@

Webpack 5

```bash - npm i --save-dev html-webpack-plugin@next + npm i --save-dev html-webpack-plugin ``` ```bash - yarn add --dev html-webpack-plugin@next + yarn add --dev html-webpack-plugin ```

Webpack 4

```bash - npm i --save-dev html-webpack-plugin + npm i --save-dev html-webpack-plugin@4 ``` ```bash - yarn add --dev html-webpack-plugin + yarn add --dev html-webpack-plugin@4 ``` From 7c3146d5859941b6c9b4189bf185785e886b2018 Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Sun, 3 Jan 2021 14:12:07 +0100 Subject: [PATCH 59/87] =?UTF-8?q?feat:=20allow=20to=20set=20publicPath=20t?= =?UTF-8?q?o=20empty=20string=20=E2=80=99=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BREAKING CHANGE: Setting publicPath to an empty string will no longer calculate a relative path from the html file to the assets anymore. To keep the old behaviour set the publicPath to ‘auto’ --- index.js | 4 ++-- spec/basic.spec.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 2f760be1..4aa82c02 100644 --- a/index.js +++ b/index.js @@ -565,8 +565,8 @@ function hookIntoCompiler (compiler, options, plugin) { */ const webpackPublicPath = compilation.getAssetPath(compilation.outputOptions.publicPath, { hash: compilationHash }); - // Webpack 5 introduced "auto" - however it can not be retrieved at compile time - const isPublicPathDefined = webpackPublicPath.trim() !== '' && webpackPublicPath !== 'auto'; + // Webpack 5 introduced "auto" as default value + const isPublicPathDefined = webpackPublicPath !== 'auto'; let publicPath = // If the html-webpack-plugin options contain a custom public path uset it diff --git a/spec/basic.spec.js b/spec/basic.spec.js index f9773403..61d392ae 100644 --- a/spec/basic.spec.js +++ b/spec/basic.spec.js @@ -843,6 +843,37 @@ describe('HtmlWebpackPlugin', () => { }, ['Hello World from backend2020-12-04T21:57:14.592Z

Partial

\ No newline at end of file +Hello World from backend2021-01-03T13:36:48.156Z

Partial

\ No newline at end of file diff --git a/examples/multi-page/dist/webpack-5/first.js b/examples/multi-page/dist/webpack-5/first.js index fe5242fb..84318ca9 100644 --- a/examples/multi-page/dist/webpack-5/first.js +++ b/examples/multi-page/dist/webpack-5/first.js @@ -2,12 +2,22 @@ /******/ var __webpack_modules__ = ({ /***/ 173: -/***/ ((module, exports, __webpack_require__) => { +/***/ ((module, __webpack_exports__, __webpack_require__) => { -exports = module.exports = __webpack_require__(609)(false); +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => __WEBPACK_DEFAULT_EXPORT__ +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(609); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); +// Imports + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); // Module -exports.push([module.id, "body {\n background: snow;\n}", ""]); - +___CSS_LOADER_EXPORT___.push([module.id, "body {\n background: snow;\n}", ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), @@ -23,85 +33,66 @@ exports.push([module.id, "body {\n background: snow;\n}", ""]); Author Tobias Koppers @sokra */ // css base code, injected by the css-loader -module.exports = function (useSourceMap) { +// eslint-disable-next-line func-names +module.exports = function (cssWithMappingToString) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { - var content = cssWithMappingToString(item, useSourceMap); + var content = cssWithMappingToString(item); if (item[2]) { - return '@media ' + item[2] + '{' + content + '}'; - } else { - return content; + return "@media ".concat(item[2], " {").concat(content, "}"); } + + return content; }).join(''); }; // import a list of modules into the list + // eslint-disable-next-line func-names - list.i = function (modules, mediaQuery) { + list.i = function (modules, mediaQuery, dedupe) { if (typeof modules === 'string') { + // eslint-disable-next-line no-param-reassign modules = [[null, modules, '']]; } var alreadyImportedModules = {}; - for (var i = 0; i < this.length; i++) { - var id = this[i][0]; + if (dedupe) { + for (var i = 0; i < this.length; i++) { + // eslint-disable-next-line prefer-destructuring + var id = this[i][0]; - if (id != null) { - alreadyImportedModules[id] = true; + if (id != null) { + alreadyImportedModules[id] = true; + } } } - for (i = 0; i < modules.length; i++) { - var item = modules[i]; // skip already imported module - // this implementation is not 100% perfect for weird media query combinations - // when a module is imported multiple times with different media queries. - // I hope this will never occur (Hey this way we have smaller bundles) + for (var _i = 0; _i < modules.length; _i++) { + var item = [].concat(modules[_i]); - if (item[0] == null || !alreadyImportedModules[item[0]]) { - if (mediaQuery && !item[2]) { + if (dedupe && alreadyImportedModules[item[0]]) { + // eslint-disable-next-line no-continue + continue; + } + + if (mediaQuery) { + if (!item[2]) { item[2] = mediaQuery; - } else if (mediaQuery) { - item[2] = '(' + item[2] + ') and (' + mediaQuery + ')'; + } else { + item[2] = "".concat(mediaQuery, " and ").concat(item[2]); } - - list.push(item); } + + list.push(item); } }; return list; }; -function cssWithMappingToString(item, useSourceMap) { - var content = item[1] || ''; - var cssMapping = item[3]; - - if (!cssMapping) { - return content; - } - - if (useSourceMap && typeof btoa === 'function') { - var sourceMapping = toComment(cssMapping); - var sourceURLs = cssMapping.sources.map(function (source) { - return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'; - }); - return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); - } - - return [content].join('\n'); -} // Adapted from convert-source-map (MIT) - - -function toComment(sourceMap) { - // eslint-disable-next-line no-undef - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); - var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; - return '/*# ' + data + ' */'; -} - /***/ }), /***/ 73: @@ -657,6 +648,47 @@ module.exports = function (css) { /******/ } /******/ /************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => module['default'] : +/******/ () => module; +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ (() => { __webpack_require__(73); var h1 = document.createElement('h1'); diff --git a/examples/multi-page/dist/webpack-5/second.js b/examples/multi-page/dist/webpack-5/second.js index fe5242fb..84318ca9 100644 --- a/examples/multi-page/dist/webpack-5/second.js +++ b/examples/multi-page/dist/webpack-5/second.js @@ -2,12 +2,22 @@ /******/ var __webpack_modules__ = ({ /***/ 173: -/***/ ((module, exports, __webpack_require__) => { +/***/ ((module, __webpack_exports__, __webpack_require__) => { -exports = module.exports = __webpack_require__(609)(false); +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => __WEBPACK_DEFAULT_EXPORT__ +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(609); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); +// Imports + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); // Module -exports.push([module.id, "body {\n background: snow;\n}", ""]); - +___CSS_LOADER_EXPORT___.push([module.id, "body {\n background: snow;\n}", ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), @@ -23,85 +33,66 @@ exports.push([module.id, "body {\n background: snow;\n}", ""]); Author Tobias Koppers @sokra */ // css base code, injected by the css-loader -module.exports = function (useSourceMap) { +// eslint-disable-next-line func-names +module.exports = function (cssWithMappingToString) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { - var content = cssWithMappingToString(item, useSourceMap); + var content = cssWithMappingToString(item); if (item[2]) { - return '@media ' + item[2] + '{' + content + '}'; - } else { - return content; + return "@media ".concat(item[2], " {").concat(content, "}"); } + + return content; }).join(''); }; // import a list of modules into the list + // eslint-disable-next-line func-names - list.i = function (modules, mediaQuery) { + list.i = function (modules, mediaQuery, dedupe) { if (typeof modules === 'string') { + // eslint-disable-next-line no-param-reassign modules = [[null, modules, '']]; } var alreadyImportedModules = {}; - for (var i = 0; i < this.length; i++) { - var id = this[i][0]; + if (dedupe) { + for (var i = 0; i < this.length; i++) { + // eslint-disable-next-line prefer-destructuring + var id = this[i][0]; - if (id != null) { - alreadyImportedModules[id] = true; + if (id != null) { + alreadyImportedModules[id] = true; + } } } - for (i = 0; i < modules.length; i++) { - var item = modules[i]; // skip already imported module - // this implementation is not 100% perfect for weird media query combinations - // when a module is imported multiple times with different media queries. - // I hope this will never occur (Hey this way we have smaller bundles) + for (var _i = 0; _i < modules.length; _i++) { + var item = [].concat(modules[_i]); - if (item[0] == null || !alreadyImportedModules[item[0]]) { - if (mediaQuery && !item[2]) { + if (dedupe && alreadyImportedModules[item[0]]) { + // eslint-disable-next-line no-continue + continue; + } + + if (mediaQuery) { + if (!item[2]) { item[2] = mediaQuery; - } else if (mediaQuery) { - item[2] = '(' + item[2] + ') and (' + mediaQuery + ')'; + } else { + item[2] = "".concat(mediaQuery, " and ").concat(item[2]); } - - list.push(item); } + + list.push(item); } }; return list; }; -function cssWithMappingToString(item, useSourceMap) { - var content = item[1] || ''; - var cssMapping = item[3]; - - if (!cssMapping) { - return content; - } - - if (useSourceMap && typeof btoa === 'function') { - var sourceMapping = toComment(cssMapping); - var sourceURLs = cssMapping.sources.map(function (source) { - return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'; - }); - return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); - } - - return [content].join('\n'); -} // Adapted from convert-source-map (MIT) - - -function toComment(sourceMap) { - // eslint-disable-next-line no-undef - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); - var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; - return '/*# ' + data + ' */'; -} - /***/ }), /***/ 73: @@ -657,6 +648,47 @@ module.exports = function (css) { /******/ } /******/ /************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => module['default'] : +/******/ () => module; +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ (() => { __webpack_require__(73); var h1 = document.createElement('h1'); diff --git a/examples/sort-manually/dist/webpack-5/first-file.html b/examples/sort-manually/dist/webpack-5/first-file.html index e3f9c0d7..18171edb 100644 --- a/examples/sort-manually/dist/webpack-5/first-file.html +++ b/examples/sort-manually/dist/webpack-5/first-file.html @@ -1 +1 @@ -Example template \ No newline at end of file +Example template \ No newline at end of file diff --git a/examples/sort-manually/dist/webpack-5/second-file.html b/examples/sort-manually/dist/webpack-5/second-file.html index 7b428811..ef9da924 100644 --- a/examples/sort-manually/dist/webpack-5/second-file.html +++ b/examples/sort-manually/dist/webpack-5/second-file.html @@ -1 +1 @@ -Example template \ No newline at end of file +Example template \ No newline at end of file diff --git a/package.json b/package.json index 4ea3a9e3..b239f63f 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@types/loader-utils": "2.0.1", "@types/node": "11.13.9", "commitizen": "4.2.1", - "css-loader": "2.1.1", + "css-loader": "5.0.1", "cz-conventional-changelog": "2.1.0", "dir-compare": "1.7.2", "file-loader": "3.0.1", From 36f9aca60f51f0f411cc847af2503ed66354742e Mon Sep 17 00:00:00 2001 From: Jan Nicklas Date: Sun, 3 Jan 2021 14:44:36 +0100 Subject: [PATCH 62/87] chore: upgrade dev dependencies --- .../chunk-optimization/dist/webpack-5/219.js | 352 +++++++++ .../chunk-optimization/dist/webpack-5/73.js | 50 -- .../chunk-optimization/dist/webpack-5/805.js | 577 --------------- .../chunk-optimization/dist/webpack-5/965.js | 50 ++ .../dist/webpack-5/entryA.html | 2 +- .../dist/webpack-5/entryA.js | 4 +- .../dist/webpack-5/entryB.html | 2 +- .../dist/webpack-5/entryB.js | 4 +- .../dist/webpack-5/entryC.html | 2 +- ...g => 55b19870aff2e53d1fb1a258c1032fbf.png} | Bin .../custom-template/dist/webpack-5/index.html | 2 +- examples/default/dist/webpack-5/bundle.js | 691 ++++++------------ ...g => 55b19870aff2e53d1fb1a258c1032fbf.png} | Bin .../html-loader/dist/webpack-5/about.html | 2 +- .../html-loader/dist/webpack-5/index.html | 2 +- ...g => 55b19870aff2e53d1fb1a258c1032fbf.png} | Bin .../dist/webpack-5/index.html | 2 +- examples/javascript/dist/webpack-5/index.html | 2 +- examples/multi-page/dist/webpack-5/first.js | 691 ++++++------------ examples/multi-page/dist/webpack-5/second.js | 691 ++++++------------ ...g => 55b19870aff2e53d1fb1a258c1032fbf.png} | Bin .../dist/webpack-5/first-file.html | 2 +- .../dist/webpack-5/second-file.html | 2 +- package.json | 10 +- 24 files changed, 1120 insertions(+), 2020 deletions(-) create mode 100644 examples/chunk-optimization/dist/webpack-5/219.js delete mode 100644 examples/chunk-optimization/dist/webpack-5/73.js delete mode 100644 examples/chunk-optimization/dist/webpack-5/805.js create mode 100644 examples/chunk-optimization/dist/webpack-5/965.js rename examples/custom-template/dist/webpack-5/{0714810ae3fb211173e2964249507195.png => 55b19870aff2e53d1fb1a258c1032fbf.png} (100%) rename examples/html-loader/dist/webpack-5/{0714810ae3fb211173e2964249507195.png => 55b19870aff2e53d1fb1a258c1032fbf.png} (100%) rename examples/javascript-advanced/dist/webpack-5/{0714810ae3fb211173e2964249507195.png => 55b19870aff2e53d1fb1a258c1032fbf.png} (100%) rename examples/sort-manually/dist/webpack-5/{0714810ae3fb211173e2964249507195.png => 55b19870aff2e53d1fb1a258c1032fbf.png} (100%) diff --git a/examples/chunk-optimization/dist/webpack-5/219.js b/examples/chunk-optimization/dist/webpack-5/219.js new file mode 100644 index 00000000..0c724b7e --- /dev/null +++ b/examples/chunk-optimization/dist/webpack-5/219.js @@ -0,0 +1,352 @@ +(self["webpackChunk"] = self["webpackChunk"] || []).push([[219],{ + +/***/ 609: +/***/ ((module) => { + +"use strict"; + + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +// css base code, injected by the css-loader +// eslint-disable-next-line func-names +module.exports = function (cssWithMappingToString) { + var list = []; // return the list of modules as css string + + list.toString = function toString() { + return this.map(function (item) { + var content = cssWithMappingToString(item); + + if (item[2]) { + return "@media ".concat(item[2], " {").concat(content, "}"); + } + + return content; + }).join(''); + }; // import a list of modules into the list + // eslint-disable-next-line func-names + + + list.i = function (modules, mediaQuery, dedupe) { + if (typeof modules === 'string') { + // eslint-disable-next-line no-param-reassign + modules = [[null, modules, '']]; + } + + var alreadyImportedModules = {}; + + if (dedupe) { + for (var i = 0; i < this.length; i++) { + // eslint-disable-next-line prefer-destructuring + var id = this[i][0]; + + if (id != null) { + alreadyImportedModules[id] = true; + } + } + } + + for (var _i = 0; _i < modules.length; _i++) { + var item = [].concat(modules[_i]); + + if (dedupe && alreadyImportedModules[item[0]]) { + // eslint-disable-next-line no-continue + continue; + } + + if (mediaQuery) { + if (!item[2]) { + item[2] = mediaQuery; + } else { + item[2] = "".concat(mediaQuery, " and ").concat(item[2]); + } + } + + list.push(item); + } + }; + + return list; +}; + +/***/ }), + +/***/ 62: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var isOldIE = function isOldIE() { + var memo; + return function memorize() { + if (typeof memo === 'undefined') { + // Test for IE <= 9 as proposed by Browserhacks + // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 + // Tests for existence of standard globals is to allow style-loader + // to operate correctly into non-standard environments + // @see https://github.com/webpack-contrib/style-loader/issues/177 + memo = Boolean(window && document && document.all && !window.atob); + } + + return memo; + }; +}(); + +var getTarget = function getTarget() { + var memo = {}; + return function memorize(target) { + if (typeof memo[target] === 'undefined') { + var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself + + if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { + try { + // This will throw an exception if access to iframe is blocked + // due to cross-origin restrictions + styleTarget = styleTarget.contentDocument.head; + } catch (e) { + // istanbul ignore next + styleTarget = null; + } + } + + memo[target] = styleTarget; + } + + return memo[target]; + }; +}(); + +var stylesInDom = []; + +function getIndexByIdentifier(identifier) { + var result = -1; + + for (var i = 0; i < stylesInDom.length; i++) { + if (stylesInDom[i].identifier === identifier) { + result = i; + break; + } + } + + return result; +} + +function modulesToDom(list, options) { + var idCountMap = {}; + var identifiers = []; + + for (var i = 0; i < list.length; i++) { + var item = list[i]; + var id = options.base ? item[0] + options.base : item[0]; + var count = idCountMap[id] || 0; + var identifier = "".concat(id, " ").concat(count); + idCountMap[id] = count + 1; + var index = getIndexByIdentifier(identifier); + var obj = { + css: item[1], + media: item[2], + sourceMap: item[3] + }; + + if (index !== -1) { + stylesInDom[index].references++; + stylesInDom[index].updater(obj); + } else { + stylesInDom.push({ + identifier: identifier, + updater: addStyle(obj, options), + references: 1 + }); + } + + identifiers.push(identifier); + } + + return identifiers; +} + +function insertStyleElement(options) { + var style = document.createElement('style'); + var attributes = options.attributes || {}; + + if (typeof attributes.nonce === 'undefined') { + var nonce = true ? __webpack_require__.nc : 0; + + if (nonce) { + attributes.nonce = nonce; + } + } + + Object.keys(attributes).forEach(function (key) { + style.setAttribute(key, attributes[key]); + }); + + if (typeof options.insert === 'function') { + options.insert(style); + } else { + var target = getTarget(options.insert || 'head'); + + if (!target) { + throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); + } + + target.appendChild(style); + } + + return style; +} + +function removeStyleElement(style) { + // istanbul ignore if + if (style.parentNode === null) { + return false; + } + + style.parentNode.removeChild(style); +} +/* istanbul ignore next */ + + +var replaceText = function replaceText() { + var textStore = []; + return function replace(index, replacement) { + textStore[index] = replacement; + return textStore.filter(Boolean).join('\n'); + }; +}(); + +function applyToSingletonTag(style, index, remove, obj) { + var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE + + /* istanbul ignore if */ + + if (style.styleSheet) { + style.styleSheet.cssText = replaceText(index, css); + } else { + var cssNode = document.createTextNode(css); + var childNodes = style.childNodes; + + if (childNodes[index]) { + style.removeChild(childNodes[index]); + } + + if (childNodes.length) { + style.insertBefore(cssNode, childNodes[index]); + } else { + style.appendChild(cssNode); + } + } +} + +function applyToTag(style, options, obj) { + var css = obj.css; + var media = obj.media; + var sourceMap = obj.sourceMap; + + if (media) { + style.setAttribute('media', media); + } else { + style.removeAttribute('media'); + } + + if (sourceMap && typeof btoa !== 'undefined') { + css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); + } // For old IE + + /* istanbul ignore if */ + + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + while (style.firstChild) { + style.removeChild(style.firstChild); + } + + style.appendChild(document.createTextNode(css)); + } +} + +var singleton = null; +var singletonCounter = 0; + +function addStyle(obj, options) { + var style; + var update; + var remove; + + if (options.singleton) { + var styleIndex = singletonCounter++; + style = singleton || (singleton = insertStyleElement(options)); + update = applyToSingletonTag.bind(null, style, styleIndex, false); + remove = applyToSingletonTag.bind(null, style, styleIndex, true); + } else { + style = insertStyleElement(options); + update = applyToTag.bind(null, style, options); + + remove = function remove() { + removeStyleElement(style); + }; + } + + update(obj); + return function updateStyle(newObj) { + if (newObj) { + if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) { + return; + } + + update(obj = newObj); + } else { + remove(); + } + }; +} + +module.exports = function (list, options) { + options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of