first
This commit is contained in:
5
node_modules/@vue/vue-loader-v15/.babelrc
generated
vendored
Normal file
5
node_modules/@vue/vue-loader-v15/.babelrc
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"presets": [
|
||||
["env", { "modules": false }]
|
||||
]
|
||||
}
|
8
node_modules/@vue/vue-loader-v15/.eslintrc.js
generated
vendored
Normal file
8
node_modules/@vue/vue-loader-v15/.eslintrc.js
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
extends: ['plugin:vue-libs/recommended'],
|
||||
rules: {
|
||||
indent: 'off',
|
||||
'space-before-function-paren': 'off'
|
||||
}
|
||||
}
|
1
node_modules/@vue/vue-loader-v15/.gitattributes
generated
vendored
Normal file
1
node_modules/@vue/vue-loader-v15/.gitattributes
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
* text=auto eol=lf
|
730
node_modules/@vue/vue-loader-v15/CHANGELOG.md
generated
vendored
Normal file
730
node_modules/@vue/vue-loader-v15/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,730 @@
|
||||
<a name="15.10.0"></a>
|
||||
# [15.10.0](https://github.com/vuejs/vue-loader/compare/v15.10.0-beta.6...v15.10.0) (2022-07-01)
|
||||
|
||||
|
||||
|
||||
<a name="15.10.0-beta.6"></a>
|
||||
# [15.10.0-beta.6](https://github.com/vuejs/vue-loader/compare/v15.10.0-beta.5...v15.10.0-beta.6) (2022-06-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* always pass id to stylePostLoader when possible ([364ad09](https://github.com/vuejs/vue-loader/commit/364ad09))
|
||||
|
||||
|
||||
|
||||
<a name="15.10.0-beta.5"></a>
|
||||
# [15.10.0-beta.5](https://github.com/vuejs/vue-loader/compare/v15.10.0-beta.4...v15.10.0-beta.5) (2022-06-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* css v-bind in production mode ([655e5f8](https://github.com/vuejs/vue-loader/commit/655e5f8))
|
||||
|
||||
|
||||
|
||||
<a name="15.10.0-beta.4"></a>
|
||||
# [15.10.0-beta.4](https://github.com/vuejs/vue-loader/compare/v15.10.0-beta.3...v15.10.0-beta.4) (2022-06-20)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* support css v-bind (requires 2.7.0-beta.3) ([d653f3b](https://github.com/vuejs/vue-loader/commit/d653f3b))
|
||||
|
||||
|
||||
|
||||
<a name="15.10.0-beta.3"></a>
|
||||
# [15.10.0-beta.3](https://github.com/vuejs/vue-loader/compare/v15.10.0-beta.2...v15.10.0-beta.3) (2022-06-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* cache descriptor with correct resource path ([f6c83b5](https://github.com/vuejs/vue-loader/commit/f6c83b5))
|
||||
|
||||
|
||||
|
||||
<a name="15.10.0-beta.2"></a>
|
||||
# [15.10.0-beta.2](https://github.com/vuejs/vue-loader/compare/v15.10.0-beta.1...v15.10.0-beta.2) (2022-06-16)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* use script-analyzed bindings when compiling template ([55de28c](https://github.com/vuejs/vue-loader/commit/55de28c))
|
||||
|
||||
|
||||
|
||||
<a name="15.10.0-beta.1"></a>
|
||||
# [15.10.0-beta.1](https://github.com/vuejs/vue-loader/compare/v15.9.8...v15.10.0-beta.1) (2022-06-14)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* apply js loaders to compiled template code when used with 2.7 ([30464a8](https://github.com/vuejs/vue-loader/commit/30464a8))
|
||||
* compat for vue 2.7, support `<script setup>` ([308715a](https://github.com/vuejs/vue-loader/commit/308715a))
|
||||
|
||||
|
||||
|
||||
<a name="15.9.8"></a>
|
||||
## [15.9.8](https://github.com/vuejs/vue-loader/compare/v15.9.7...v15.9.8) (2021-08-02)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* fix webpack 5.48 compatibility ([c4c5f17](https://github.com/vuejs/vue-loader/commit/c4c5f17)), closes [#1859](https://github.com/vuejs/vue-loader/issues/1859)
|
||||
|
||||
|
||||
|
||||
<a name="15.9.7"></a>
|
||||
## [15.9.7](https://github.com/vuejs/vue-loader/compare/v15.9.6...v15.9.7) (2021-05-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* [plugin] Use compiler.webpack when possible ([#1822](https://github.com/vuejs/vue-loader/issues/1822)) ([f7ee30b](https://github.com/vuejs/vue-loader/commit/f7ee30b)), closes [#1781](https://github.com/vuejs/vue-loader/issues/1781)
|
||||
* check for compiler.webpack existence ([2472b2f](https://github.com/vuejs/vue-loader/commit/2472b2f))
|
||||
|
||||
|
||||
|
||||
<a name="15.9.6"></a>
|
||||
## [15.9.6](https://github.com/vuejs/vue-loader/compare/v15.9.5...v15.9.6) (2020-12-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* resourceQuery could be undefined in webpack 5 ([a2b89d3](https://github.com/vuejs/vue-loader/commit/a2b89d3)), closes [#1771](https://github.com/vuejs/vue-loader/issues/1771)
|
||||
|
||||
|
||||
|
||||
<a name="15.9.5"></a>
|
||||
## [15.9.5](https://github.com/vuejs/vue-loader/compare/v15.9.4...v15.9.5) (2020-11-02)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add rule plugins to keep up with webpack 5 new features ([7ca8e2c](https://github.com/vuejs/vue-loader/commit/7ca8e2c))
|
||||
* ensure new webpack5 generator property in rules passes ruleset checks ([#1753](https://github.com/vuejs/vue-loader/issues/1753)) ([f79bb08](https://github.com/vuejs/vue-loader/commit/f79bb08)), closes [#1729](https://github.com/vuejs/vue-loader/issues/1729)
|
||||
|
||||
|
||||
|
||||
<a name="15.9.4"></a>
|
||||
## [15.9.4](https://github.com/vuejs/vue-loader/compare/v15.9.3...v15.9.4) (2020-10-27)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* fix id differences between different operating systems ([#1706](https://github.com/vuejs/vue-loader/issues/1706)) ([afe8a0d](https://github.com/vuejs/vue-loader/commit/afe8a0d))
|
||||
* fix mini-css-extract-plugin missing default export error ([#1748](https://github.com/vuejs/vue-loader/issues/1748)) ([429a284](https://github.com/vuejs/vue-loader/commit/429a284))
|
||||
|
||||
|
||||
|
||||
<a name="15.9.3"></a>
|
||||
## [15.9.3](https://github.com/vuejs/vue-loader/compare/v15.9.2...v15.9.3) (2020-06-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* skip matching rule with 'enforce' ([e7b2b11](https://github.com/vuejs/vue-loader/commit/e7b2b11)), closes [#1680](https://github.com/vuejs/vue-loader/issues/1680)
|
||||
|
||||
|
||||
|
||||
<a name="15.9.2"></a>
|
||||
## [15.9.2](https://github.com/vuejs/vue-loader/compare/v15.9.1...v15.9.2) (2020-05-01)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* fix getting shadow root when component is functional ([#1560](https://github.com/vuejs/vue-loader/issues/1560)) ([9a7357a](https://github.com/vuejs/vue-loader/commit/9a7357a))
|
||||
|
||||
|
||||
### Documentation
|
||||
|
||||
* add DocSearch as recommended by vuepress ([#1662](https://github.com/vuejs/vue-loader/issues/1662)) ([032d56b](https://github.com/vuejs/vue-loader/commit/032d56b))
|
||||
|
||||
|
||||
|
||||
<a name="15.9.1"></a>
|
||||
## [15.9.1](https://github.com/vuejs/vue-loader/compare/v15.9.0...v15.9.1) (2020-03-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* ensure unique `ident` when cloning rules, fix webpack 5 compatibility ([#1653](https://github.com/vuejs/vue-loader/issues/1653)) ([84c34a4](https://github.com/vuejs/vue-loader/commit/84c34a4))
|
||||
|
||||
|
||||
|
||||
<a name="15.9.0"></a>
|
||||
# [15.9.0](https://github.com/vuejs/vue-loader/compare/v15.8.3...v15.9.0) (2020-02-12)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add vue-template-compiler as an optional peer dependency ([56db1d7](https://github.com/vuejs/vue-loader/commit/56db1d7)), closes [#1639](https://github.com/vuejs/vue-loader/issues/1639)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* support Rule.rules (nested rules) ([#1618](https://github.com/vuejs/vue-loader/issues/1618)) ([5943319](https://github.com/vuejs/vue-loader/commit/5943319))
|
||||
|
||||
|
||||
|
||||
<a name="15.8.3"></a>
|
||||
## [15.8.3](https://github.com/vuejs/vue-loader/compare/v15.8.2...v15.8.3) (2019-12-16)
|
||||
|
||||
|
||||
|
||||
<a name="15.8.2"></a>
|
||||
## [15.8.2](https://github.com/vuejs/vue-loader/compare/v15.8.1...v15.8.2) (2019-12-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* fix compatibility with webpack 3 ([745d054](https://github.com/vuejs/vue-loader/commit/745d054))
|
||||
|
||||
|
||||
|
||||
<a name="15.8.0"></a>
|
||||
# [15.8.0](https://github.com/vuejs/vue-loader/compare/v15.7.2...v15.8.0) (2019-12-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types:** should import type definition from the `dist` folder ([0751213](https://github.com/vuejs/vue-loader/commit/0751213))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add support for webpack5 ([#1613](https://github.com/vuejs/vue-loader/issues/1613)) ([59eebca](https://github.com/vuejs/vue-loader/commit/59eebca))
|
||||
|
||||
|
||||
|
||||
<a name="15.7.2"></a>
|
||||
## [15.7.2](https://github.com/vuejs/vue-loader/compare/v15.7.1...v15.7.2) (2019-11-02)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add cache-loader to optional peer dependency ([e9d8b71](https://github.com/vuejs/vue-loader/commit/e9d8b71))
|
||||
* use `require.resolve` when referencing `cache-loader` ([#1585](https://github.com/vuejs/vue-loader/issues/1585)) ([d3fa467](https://github.com/vuejs/vue-loader/commit/d3fa467))
|
||||
|
||||
|
||||
|
||||
<a name="15.7.1"></a>
|
||||
## [15.7.1](https://github.com/vuejs/vue-loader/compare/v15.7.0...v15.7.1) (2019-07-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* use "api.isRecorded" instead of "module.hot.data" ([#1569](https://github.com/vuejs/vue-loader/issues/1569)) ([6a05115](https://github.com/vuejs/vue-loader/commit/6a05115))
|
||||
|
||||
|
||||
|
||||
<a name="15.7.0"></a>
|
||||
# [15.7.0](https://github.com/vuejs/vue-loader/compare/v15.6.4...v15.7.0) (2019-02-28)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* support post loaders for template blocks ([#1500](https://github.com/vuejs/vue-loader/issues/1500)) ([731a7ad](https://github.com/vuejs/vue-loader/commit/731a7ad))
|
||||
|
||||
|
||||
|
||||
<a name="15.6.4"></a>
|
||||
## [15.6.4](https://github.com/vuejs/vue-loader/compare/v15.6.0...v15.6.4) (2019-02-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **templateLoder:** honor options.productionMode ([#1409](https://github.com/vuejs/vue-loader/issues/1409)) ([01990d0](https://github.com/vuejs/vue-loader/commit/01990d0))
|
||||
* avoid generating custom block when there is only cache-loader ([#1493](https://github.com/vuejs/vue-loader/issues/1493)) ([a1af343](https://github.com/vuejs/vue-loader/commit/a1af343))
|
||||
* fix wrong outputSourceRange usage ([#1482](https://github.com/vuejs/vue-loader/issues/1482)) ([2d96215](https://github.com/vuejs/vue-loader/commit/2d96215))
|
||||
* keep style index consistent when filtering styles ([#1496](https://github.com/vuejs/vue-loader/issues/1496)) ([e02d937](https://github.com/vuejs/vue-loader/commit/e02d937))
|
||||
* relay correct error message on vue-template-compiler version mismatch ([fdd0338](https://github.com/vuejs/vue-loader/commit/fdd0338))
|
||||
|
||||
|
||||
|
||||
<a name="15.6.3"></a>
|
||||
## [15.6.3](https://github.com/vuejs/vue-loader/compare/v15.6.2...v15.6.3) (2019-02-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **templateLoder:** honor options.productionMode ([#1409](https://github.com/vuejs/vue-loader/issues/1409)) ([01990d0](https://github.com/vuejs/vue-loader/commit/01990d0))
|
||||
* avoid generating custom block when there is only cache-loader ([#1493](https://github.com/vuejs/vue-loader/issues/1493)) ([a1af343](https://github.com/vuejs/vue-loader/commit/a1af343))
|
||||
|
||||
|
||||
|
||||
<a name="15.6.2"></a>
|
||||
## [15.6.2](https://github.com/vuejs/vue-loader/compare/v15.6.1...v15.6.2) (2019-01-27)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* fix wrong outputSourceRange usage ([#1482](https://github.com/vuejs/vue-loader/issues/1482)) ([2d96215](https://github.com/vuejs/vue-loader/commit/2d96215))
|
||||
|
||||
|
||||
|
||||
<a name="15.6.1"></a>
|
||||
## [15.6.1](https://github.com/vuejs/vue-loader/compare/v15.6.0...v15.6.1) (2019-01-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* relay correct error message on vue-template-compiler version mismatch ([fdd0338](https://github.com/vuejs/vue-loader/commit/fdd0338))
|
||||
|
||||
|
||||
|
||||
<a name="15.6.0"></a>
|
||||
# [15.6.0](https://github.com/vuejs/vue-loader/compare/v15.5.1...v15.6.0) (2019-01-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* template comments replace windows \ to / confirm consistent hash ([#1477](https://github.com/vuejs/vue-loader/issues/1477)) ([adc6dd6](https://github.com/vuejs/vue-loader/commit/adc6dd6))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* make `__file` injection opt-in in production ([#1475](https://github.com/vuejs/vue-loader/issues/1475)) ([001382d](https://github.com/vuejs/vue-loader/commit/001382d))
|
||||
* support for compiler 2.6 outputSourceRange ([2215585](https://github.com/vuejs/vue-loader/commit/2215585))
|
||||
* support webpack 5 hooks ([#1469](https://github.com/vuejs/vue-loader/issues/1469)) ([7275ae4](https://github.com/vuejs/vue-loader/commit/7275ae4))
|
||||
|
||||
|
||||
|
||||
<a name="15.5.1"></a>
|
||||
## [15.5.1](https://github.com/vuejs/vue-loader/compare/v15.5.0...v15.5.1) (2019-01-08)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* avoid to generate empty css chunk files ([#1464](https://github.com/vuejs/vue-loader/issues/1464)) ([c444ab6](https://github.com/vuejs/vue-loader/commit/c444ab6))
|
||||
|
||||
|
||||
|
||||
<a name="15.5.0"></a>
|
||||
# [15.5.0](https://github.com/vuejs/vue-loader/compare/v15.4.0...v15.5.0) (2019-01-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* css modules extends error ([#1452](https://github.com/vuejs/vue-loader/issues/1452)) ([082c6ea](https://github.com/vuejs/vue-loader/commit/082c6ea)), closes [#1449](https://github.com/vuejs/vue-loader/issues/1449)
|
||||
* hide ext appending behind a flag (ref [#1372](https://github.com/vuejs/vue-loader/issues/1372)) ([f0beed3](https://github.com/vuejs/vue-loader/commit/f0beed3))
|
||||
* include query in loader dedupe ([4a894de](https://github.com/vuejs/vue-loader/commit/4a894de)), closes [vue-cli#2451](https://github.com/vue-cli/issues/2451)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add `prettify` option ([#1461](https://github.com/vuejs/vue-loader/issues/1461)) ([62a9155](https://github.com/vuejs/vue-loader/commit/62a9155)), closes [#1426](https://github.com/vuejs/vue-loader/issues/1426)
|
||||
|
||||
|
||||
|
||||
<a name="15.4.2"></a>
|
||||
## [15.4.2](https://github.com/vuejs/vue-loader/compare/v15.4.1...v15.4.2) (2018-09-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* include query in loader dedupe ([4a894de](https://github.com/vuejs/vue-loader/commit/4a894de)), closes [vue-cli#2451](https://github.com/vue-cli/issues/2451)
|
||||
|
||||
|
||||
|
||||
<a name="15.4.1"></a>
|
||||
## [15.4.1](https://github.com/vuejs/vue-loader/compare/v15.4.0...v15.4.1) (2018-08-26)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* hide ext appending behind a flag (ref [#1372](https://github.com/vuejs/vue-loader/issues/1372)) ([f0beed3](https://github.com/vuejs/vue-loader/commit/f0beed3))
|
||||
|
||||
|
||||
|
||||
<a name="15.4.0"></a>
|
||||
# [15.4.0](https://github.com/vuejs/vue-loader/compare/v15.3.0...v15.4.0) (2018-08-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* fix inconsistent path between Windows and POSIX systems ( ([#1384](https://github.com/vuejs/vue-loader/issues/1384) ([74a7dbd](https://github.com/vuejs/vue-loader/commit/74a7dbd))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* append the file extension to the mapping files in devtools ([#1372](https://github.com/vuejs/vue-loader/issues/1372)) ([0c2da0f](https://github.com/vuejs/vue-loader/commit/0c2da0f)), closes [#1371](https://github.com/vuejs/vue-loader/issues/1371)
|
||||
|
||||
|
||||
|
||||
<a name="15.3.0"></a>
|
||||
# [15.3.0](https://github.com/vuejs/vue-loader/compare/v15.2.7...v15.3.0) (2018-08-07)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* avoid absolute path in cache-loader inline options ([c6ab50a](https://github.com/vuejs/vue-loader/commit/c6ab50a)), closes [#1367](https://github.com/vuejs/vue-loader/issues/1367)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* set file basename to __file in production ([#1368](https://github.com/vuejs/vue-loader/issues/1368)) ([2f441b9](https://github.com/vuejs/vue-loader/commit/2f441b9))
|
||||
|
||||
|
||||
|
||||
<a name="15.2.7"></a>
|
||||
## [15.2.7](https://github.com/vuejs/vue-loader/compare/v15.2.6...v15.2.7) (2018-08-07)
|
||||
|
||||
|
||||
|
||||
<a name="15.2.6"></a>
|
||||
## [15.2.6](https://github.com/vuejs/vue-loader/compare/v15.2.5...v15.2.6) (2018-07-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* ensure consistent component id on different OS ([0766fe7](https://github.com/vuejs/vue-loader/commit/0766fe7)), closes [vuejs/vue-cli#1728](https://github.com/vuejs/vue-cli/issues/1728)
|
||||
|
||||
|
||||
|
||||
<a name="15.2.5"></a>
|
||||
## [15.2.5](https://github.com/vuejs/vue-loader/compare/v15.2.4...v15.2.5) (2018-07-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* ensure same compiler is used for both parse and tempalte compilation ([1bfc08a](https://github.com/vuejs/vue-loader/commit/1bfc08a))
|
||||
* should not remove eslint-loader on src import blocks (close [#1359](https://github.com/vuejs/vue-loader/issues/1359)) ([6f1d404](https://github.com/vuejs/vue-loader/commit/6f1d404))
|
||||
* support usage with other loaders with enforce: post ([be2384c](https://github.com/vuejs/vue-loader/commit/be2384c)), closes [#1351](https://github.com/vuejs/vue-loader/issues/1351)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* inherit root request query in custom block loaders ([#1330](https://github.com/vuejs/vue-loader/issues/1330)) ([0f0b09b](https://github.com/vuejs/vue-loader/commit/0f0b09b))
|
||||
|
||||
|
||||
|
||||
<a name="15.2.4"></a>
|
||||
## [15.2.4](https://github.com/vuejs/vue-loader/compare/v15.2.2...v15.2.4) (2018-06-01)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* ensure plugin error is emitted only once ([0b006a3](https://github.com/vuejs/vue-loader/commit/0b006a3))
|
||||
* fix unexpected error when options of cache-loader contains ! ([#1334](https://github.com/vuejs/vue-loader/issues/1334)) ([c4a2719](https://github.com/vuejs/vue-loader/commit/c4a2719))
|
||||
* use constant plugin NS ([0fb5172](https://github.com/vuejs/vue-loader/commit/0fb5172)), closes [#1331](https://github.com/vuejs/vue-loader/issues/1331)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* inject issuerPath to resourceQuery for custom block src imports ([#1313](https://github.com/vuejs/vue-loader/issues/1313)) ([a004e30](https://github.com/vuejs/vue-loader/commit/a004e30))
|
||||
|
||||
|
||||
|
||||
<a name="15.2.3"></a>
|
||||
## [15.2.3](https://github.com/vuejs/vue-loader/compare/v15.2.2...v15.2.3) (2018-06-01)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* ensure plugin error is emitted only once ([0b006a3](https://github.com/vuejs/vue-loader/commit/0b006a3))
|
||||
* use constant plugin NS ([0fb5172](https://github.com/vuejs/vue-loader/commit/0fb5172)), closes [#1331](https://github.com/vuejs/vue-loader/issues/1331)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* inject issuerPath to resourceQuery for custom block src imports ([#1313](https://github.com/vuejs/vue-loader/issues/1313)) ([a004e30](https://github.com/vuejs/vue-loader/commit/a004e30))
|
||||
|
||||
|
||||
|
||||
<a name="15.2.2"></a>
|
||||
## [15.2.2](https://github.com/vuejs/vue-loader/compare/v15.2.0...v15.2.2) (2018-05-28)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* check loader for cnpm(npminstall) ([#1321](https://github.com/vuejs/vue-loader/issues/1321)) ([37fbaeb](https://github.com/vuejs/vue-loader/commit/37fbaeb))
|
||||
* ensure template cache uses unique identifier ([538198e](https://github.com/vuejs/vue-loader/commit/538198e))
|
||||
|
||||
|
||||
|
||||
<a name="15.2.1"></a>
|
||||
## [15.2.1](https://github.com/vuejs/vue-loader/compare/v15.2.0...v15.2.1) (2018-05-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* ensure template cache uses unique identifier ([bdb13be](https://github.com/vuejs/vue-loader/commit/bdb13be))
|
||||
|
||||
|
||||
|
||||
<a name="15.2.0"></a>
|
||||
# [15.2.0](https://github.com/vuejs/vue-loader/compare/v15.1.0...v15.2.0) (2018-05-22)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* enable template compile caching ([28e0fd3](https://github.com/vuejs/vue-loader/commit/28e0fd3))
|
||||
|
||||
|
||||
|
||||
<a name="15.1.0"></a>
|
||||
# [15.1.0](https://github.com/vuejs/vue-loader/compare/v15.0.12...v15.1.0) (2018-05-19)
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* avoid duplicate linting when used with eslint-loader ([3d07f81](https://github.com/vuejs/vue-loader/commit/3d07f81))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.12"></a>
|
||||
## [15.0.12](https://github.com/vuejs/vue-loader/compare/v15.0.11...v15.0.12) (2018-05-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* ignore attrs that might interfere with query generation ([3a37269](https://github.com/vuejs/vue-loader/commit/3a37269)), closes [vuejs/vue-cli#1324](https://github.com/vuejs/vue-cli/issues/1324)
|
||||
|
||||
|
||||
|
||||
<a name="15.0.11"></a>
|
||||
## [15.0.11](https://github.com/vuejs/vue-loader/compare/v15.0.9...v15.0.11) (2018-05-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* improve HMR reliability ([4ccd96f](https://github.com/vuejs/vue-loader/commit/4ccd96f))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.10"></a>
|
||||
## [15.0.10](https://github.com/vuejs/vue-loader/compare/v15.0.9...v15.0.10) (2018-05-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* improve HMR reliability ([52012cd](https://github.com/vuejs/vue-loader/commit/52012cd))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.9"></a>
|
||||
## [15.0.9](https://github.com/vuejs/vue-loader/compare/v15.0.8...v15.0.9) (2018-05-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* shadowMode still has to be an option ([4529f83](https://github.com/vuejs/vue-loader/commit/4529f83))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.8"></a>
|
||||
## [15.0.8](https://github.com/vuejs/vue-loader/compare/v15.0.7...v15.0.8) (2018-05-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* avoid mutating original rules array ([14bfc01](https://github.com/vuejs/vue-loader/commit/14bfc01)), closes [#1286](https://github.com/vuejs/vue-loader/issues/1286)
|
||||
|
||||
|
||||
|
||||
<a name="15.0.7"></a>
|
||||
## [15.0.7](https://github.com/vuejs/vue-loader/compare/v15.0.6...v15.0.7) (2018-05-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* stylePostLoader injection for windows flat node_modules ([a9a4412](https://github.com/vuejs/vue-loader/commit/a9a4412)), closes [#1284](https://github.com/vuejs/vue-loader/issues/1284)
|
||||
|
||||
|
||||
|
||||
<a name="15.0.6"></a>
|
||||
## [15.0.6](https://github.com/vuejs/vue-loader/compare/v15.0.5...v15.0.6) (2018-05-02)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* duplicate loaders when using src import with loader options ([37329e1](https://github.com/vuejs/vue-loader/commit/37329e1)), closes [#1278](https://github.com/vuejs/vue-loader/issues/1278)
|
||||
|
||||
|
||||
|
||||
<a name="15.0.5"></a>
|
||||
## [15.0.5](https://github.com/vuejs/vue-loader/compare/v15.0.4...v15.0.5) (2018-04-30)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* ignore VueLoaderPlugin check when using thread-loader ([#1268](https://github.com/vuejs/vue-loader/issues/1268)) ([476f466](https://github.com/vuejs/vue-loader/commit/476f466)), closes [#1267](https://github.com/vuejs/vue-loader/issues/1267)
|
||||
|
||||
|
||||
|
||||
<a name="15.0.4"></a>
|
||||
## [15.0.4](https://github.com/vuejs/vue-loader/compare/v15.0.3...v15.0.4) (2018-04-27)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* enable whitelist in exclude function ([5b0e392](https://github.com/vuejs/vue-loader/commit/5b0e392))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.3"></a>
|
||||
## [15.0.3](https://github.com/vuejs/vue-loader/compare/v15.0.2...v15.0.3) (2018-04-26)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* handle rule.use being a string (ref: [#1256](https://github.com/vuejs/vue-loader/issues/1256)) ([fc2ba27](https://github.com/vuejs/vue-loader/commit/fc2ba27))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.2"></a>
|
||||
## [15.0.2](https://github.com/vuejs/vue-loader/compare/v15.0.1...v15.0.2) (2018-04-26)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* remove resource field in cloned rules (fix [#1254](https://github.com/vuejs/vue-loader/issues/1254)) ([35ca03f](https://github.com/vuejs/vue-loader/commit/35ca03f))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.1"></a>
|
||||
## [15.0.1](https://github.com/vuejs/vue-loader/compare/v15.0.0...v15.0.1) (2018-04-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* prioritize .vue rules in plugin (fix [#1246](https://github.com/vuejs/vue-loader/issues/1246)) ([bffacd5](https://github.com/vuejs/vue-loader/commit/bffacd5))
|
||||
* warn missing plugin ([068bb81](https://github.com/vuejs/vue-loader/commit/068bb81))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.0"></a>
|
||||
# [15.0.0](https://github.com/vuejs/vue-loader/compare/v15.0.0-rc.2...v15.0.0) (2018-04-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* compat with null-loader (close [#1239](https://github.com/vuejs/vue-loader/issues/1239)) ([5cd5f6f](https://github.com/vuejs/vue-loader/commit/5cd5f6f))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* support declaring rules using .vue.html (ref [#1238](https://github.com/vuejs/vue-loader/issues/1238)) ([a3af6b3](https://github.com/vuejs/vue-loader/commit/a3af6b3))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.0-rc.2"></a>
|
||||
# [15.0.0-rc.2](https://github.com/vuejs/vue-loader/compare/v15.0.0-rc.1...v15.0.0-rc.2) (2018-04-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* avoid bailout of webpack module concatenation ([#1230](https://github.com/vuejs/vue-loader/issues/1230)) ([b983304](https://github.com/vuejs/vue-loader/commit/b983304))
|
||||
* reuse ident of css related loaders to avoid duplicates ([#1233](https://github.com/vuejs/vue-loader/issues/1233)) ([b16311f](https://github.com/vuejs/vue-loader/commit/b16311f))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.0-rc.1"></a>
|
||||
# [15.0.0-rc.1](https://github.com/vuejs/vue-loader/compare/v15.0.0-beta.7...v15.0.0-rc.1) (2018-04-06)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* support being used on files not ending with .vue ([5a9ee91](https://github.com/vuejs/vue-loader/commit/5a9ee91))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.0-beta.7"></a>
|
||||
# [15.0.0-beta.7](https://github.com/vuejs/vue-loader/compare/v15.0.0-beta.6...v15.0.0-beta.7) (2018-03-25)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* handle `<template lang="xxx">` with loaders ([c954f32](https://github.com/vuejs/vue-loader/commit/c954f32))
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* `<template lang="xxx">` are now handled
|
||||
with webpack loaders as well.
|
||||
|
||||
|
||||
|
||||
<a name="15.0.0-beta.6"></a>
|
||||
# [15.0.0-beta.6](https://github.com/vuejs/vue-loader/compare/v15.0.0-beta.5...v15.0.0-beta.6) (2018-03-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* compat with html-webpack-plugin ([8626739](https://github.com/vuejs/vue-loader/commit/8626739)), closes [#1213](https://github.com/vuejs/vue-loader/issues/1213)
|
||||
* only reuse ident for whitelisted loaders ([230abd4](https://github.com/vuejs/vue-loader/commit/230abd4)), closes [#1214](https://github.com/vuejs/vue-loader/issues/1214)
|
||||
|
||||
|
||||
|
||||
<a name="15.0.0-beta.5"></a>
|
||||
# [15.0.0-beta.5](https://github.com/vuejs/vue-loader/compare/v15.0.0-beta.4...v15.0.0-beta.5) (2018-03-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* pass correct args to RuleSet.normalizeRule (fix [#1210](https://github.com/vuejs/vue-loader/issues/1210)) ([1c54dc4](https://github.com/vuejs/vue-loader/commit/1c54dc4))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.0-beta.4"></a>
|
||||
# [15.0.0-beta.4](https://github.com/vuejs/vue-loader/compare/v15.0.0-beta.3...v15.0.0-beta.4) (2018-03-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* avoid babel options validation error (fix [#1209](https://github.com/vuejs/vue-loader/issues/1209)) ([d3e3f5e](https://github.com/vuejs/vue-loader/commit/d3e3f5e))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.0-beta.3"></a>
|
||||
# [15.0.0-beta.3](https://github.com/vuejs/vue-loader/compare/v15.0.0-beta.2...v15.0.0-beta.3) (2018-03-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* handle vue rule with include (fix [#1201](https://github.com/vuejs/vue-loader/issues/1201)) ([2be5507](https://github.com/vuejs/vue-loader/commit/2be5507))
|
||||
* make sure cloned rules reuse the exact same ident in options ([eab9460](https://github.com/vuejs/vue-loader/commit/eab9460)), closes [#1199](https://github.com/vuejs/vue-loader/issues/1199)
|
||||
* remove rule.loaders from normalized rules ([#1207](https://github.com/vuejs/vue-loader/issues/1207)) ([e9cbbcd](https://github.com/vuejs/vue-loader/commit/e9cbbcd))
|
||||
* support test-less oneOf rules ([7208885](https://github.com/vuejs/vue-loader/commit/7208885))
|
||||
* use relative path for self path resolution ([343b9df](https://github.com/vuejs/vue-loader/commit/343b9df))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **loader:** support options.productionMode ([#1208](https://github.com/vuejs/vue-loader/issues/1208)) ([69bc1c1](https://github.com/vuejs/vue-loader/commit/69bc1c1))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.0-beta.2"></a>
|
||||
# [15.0.0-beta.2](https://github.com/vuejs/vue-loader/compare/v15.0.0-beta.1...v15.0.0-beta.2) (2018-03-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* loader check for windows ([ab067b0](https://github.com/vuejs/vue-loader/commit/ab067b0))
|
||||
* properly stringify hot-reload-api path for Windows ([fb1306e](https://github.com/vuejs/vue-loader/commit/fb1306e))
|
||||
|
||||
|
||||
|
||||
<a name="15.0.0-beta.1"></a>
|
||||
# [15.0.0-beta.1](https://github.com/vuejs/vue-loader/compare/f418bd9...v15.0.0-beta.1) (2018-03-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* remove .vue from fake resourcePath to avoid double match ([7c5b6ac](https://github.com/vuejs/vue-loader/commit/7c5b6ac))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* basic hot reload ([f418bd9](https://github.com/vuejs/vue-loader/commit/f418bd9))
|
||||
* css modules + hmr ([99754c0](https://github.com/vuejs/vue-loader/commit/99754c0))
|
||||
* dynamic style injection ([234d48b](https://github.com/vuejs/vue-loader/commit/234d48b))
|
||||
* expose all block attrs via query ([cda1ec3](https://github.com/vuejs/vue-loader/commit/cda1ec3))
|
||||
* respect user compiler / compilerOptions ([58239f6](https://github.com/vuejs/vue-loader/commit/58239f6))
|
||||
* support configuring loader for custom blocks via resourceQuery ([d04f9cf](https://github.com/vuejs/vue-loader/commit/d04f9cf))
|
||||
* support rules with oneOf ([c3b379d](https://github.com/vuejs/vue-loader/commit/c3b379d))
|
||||
|
||||
|
||||
|
21
node_modules/@vue/vue-loader-v15/LICENSE
generated
vendored
Normal file
21
node_modules/@vue/vue-loader-v15/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015-present Yuxi (Evan) You
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
120
node_modules/@vue/vue-loader-v15/README.md
generated
vendored
Normal file
120
node_modules/@vue/vue-loader-v15/README.md
generated
vendored
Normal file
@ -0,0 +1,120 @@
|
||||
# vue-loader [](https://circleci.com/gh/vuejs/vue-loader/tree/master) [](https://ci.appveyor.com/project/yyx990803/vue-loader/branch/master)
|
||||
|
||||
> webpack loader for Vue Single-File Components
|
||||
|
||||
**NOTE:** The master branch now hosts the code for v15! Legacy code is now in the [v14 branch](https://github.com/vuejs/vue-loader/tree/v14).
|
||||
|
||||
- [Documentation](https://vue-loader.vuejs.org)
|
||||
- [Migrating from v14](https://vue-loader.vuejs.org/migrating.html)
|
||||
|
||||
## What is Vue Loader?
|
||||
|
||||
`vue-loader` is a loader for [webpack](https://webpack.js.org/) that allows you to author Vue components in a format called [Single-File Components (SFCs)](./docs/spec.md):
|
||||
|
||||
``` vue
|
||||
<template>
|
||||
<div class="example">{{ msg }}</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
msg: 'Hello world!'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.example {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
```
|
||||
|
||||
There are many cool features provided by `vue-loader`:
|
||||
|
||||
- Allows using other webpack loaders for each part of a Vue component, for example Sass for `<style>` and Pug for `<template>`;
|
||||
- Allows custom blocks in a `.vue` file that can have custom loader chains applied to them;
|
||||
- Treat static assets referenced in `<style>` and `<template>` as module dependencies and handle them with webpack loaders;
|
||||
- Simulate scoped CSS for each component;
|
||||
- State-preserving hot-reloading during development.
|
||||
|
||||
In a nutshell, the combination of webpack and `vue-loader` gives you a modern, flexible and extremely powerful front-end workflow for authoring Vue.js applications.
|
||||
|
||||
## How It Works
|
||||
|
||||
> The following section is for maintainers and contributors who are interested in the internal implementation details of `vue-loader`, and is **not** required knowledge for end users.
|
||||
|
||||
`vue-loader` is not a simple source transform loader. It handles each language blocks inside an SFC with its own dedicated loader chain (you can think of each block as a "virtual module"), and finally assembles the blocks together into the final module. Here's a brief overview of how the whole thing works:
|
||||
|
||||
1. `vue-loader` parses the SFC source code into an *SFC Descriptor* using `@vue/component-compiler-utils`. It then generates an import for each language block so the actual returned module code looks like this:
|
||||
|
||||
``` js
|
||||
// code returned from the main loader for 'source.vue'
|
||||
|
||||
// import the <template> block
|
||||
import render from 'source.vue?vue&type=template'
|
||||
// import the <script> block
|
||||
import script from 'source.vue?vue&type=script'
|
||||
export * from 'source.vue?vue&type=script'
|
||||
// import <style> blocks
|
||||
import 'source.vue?vue&type=style&index=1'
|
||||
|
||||
script.render = render
|
||||
export default script
|
||||
```
|
||||
|
||||
Notice how the code is importing `source.vue` itself, but with different request queries for each block.
|
||||
|
||||
2. We want the content in `script` block to be treated like `.js` files (and if it's `<script lang="ts">`, we want to to be treated like `.ts` files). Same for other language blocks. So we want webpack to apply any configured module rules that matches `.js` also to requests that look like `source.vue?vue&type=script`. This is what `VueLoaderPlugin` (`src/plugins.ts`) does: for each module rule in the webpack config, it creates a modified clone that targets corresponding Vue language block requests.
|
||||
|
||||
Suppose we have configured `babel-loader` for all `*.js` files. That rule will be cloned and applied to Vue SFC `<script>` blocks as well. Internally to webpack, a request like
|
||||
|
||||
``` js
|
||||
import script from 'source.vue?vue&type=script'
|
||||
```
|
||||
|
||||
Will expand to:
|
||||
|
||||
``` js
|
||||
import script from 'babel-loader!vue-loader!source.vue?vue&type=script'
|
||||
```
|
||||
|
||||
Notice the `vue-loader` is also matched because `vue-loader` are applied to `.vue` files.
|
||||
|
||||
Similarly, if you have configured `style-loader` + `css-loader` + `sass-loader` for `*.scss` files:
|
||||
|
||||
``` html
|
||||
<style scoped lang="scss">
|
||||
```
|
||||
|
||||
Will be returned by `vue-loader` as:
|
||||
|
||||
``` js
|
||||
import 'source.vue?vue&type=style&index=1&scoped&lang=scss'
|
||||
```
|
||||
|
||||
And webpack will expand it to:
|
||||
|
||||
``` js
|
||||
import 'style-loader!css-loader!sass-loader!vue-loader!source.vue?vue&type=style&index=1&scoped&lang=scss'
|
||||
```
|
||||
|
||||
3. When processing the expanded requests, the main `vue-loader` will get invoked again. This time though, the loader notices that the request has queries and is targeting a specific block only. So it selects (`src/select.ts`) the inner content of the target block and passes it on to the loaders matched after it.
|
||||
|
||||
4. For the `<script>` block, this is pretty much it. For `<template>` and `<style>` blocks though, a few extra tasks need to be performed:
|
||||
|
||||
- We need to compile the template using the Vue template compiler;
|
||||
- We need to post-process the CSS in `<style scoped>` blocks, **before** `css-loader`.
|
||||
|
||||
Technically, these are additional loaders (`src/templateLoader.ts` and `src/stylePostLoader.ts`) that need to be injected into the expanded loader chain. It would be very complicated if the end users have to configure this themselves, so `VueLoaderPlugin` also injects a global [Pitching Loader](https://webpack.js.org/api/loaders/#pitching-loader) (`src/pitcher.ts`) that intercepts Vue `<template>` and `<style>` requests and injects the necessary loaders. The final requests look like the following:
|
||||
|
||||
``` js
|
||||
// <template lang="pug">
|
||||
import 'vue-loader/template-loader!pug-loader!vue-loader!source.vue?vue&type=template'
|
||||
|
||||
// <style scoped lang="scss">
|
||||
import 'style-loader!css-loader!vue-loader/style-post-loader!sass-loader!vue-loader!source.vue?vue&type=style&index=1&scoped&lang=scss'
|
||||
```
|
31
node_modules/@vue/vue-loader-v15/lib/codegen/customBlocks.js
generated
vendored
Normal file
31
node_modules/@vue/vue-loader-v15/lib/codegen/customBlocks.js
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
const qs = require('querystring')
|
||||
const { attrsToQuery } = require('./utils')
|
||||
|
||||
module.exports = function genCustomBlocksCode(
|
||||
blocks,
|
||||
resourcePath,
|
||||
resourceQuery,
|
||||
stringifyRequest
|
||||
) {
|
||||
return (
|
||||
`\n/* custom blocks */\n` +
|
||||
blocks
|
||||
.map((block, i) => {
|
||||
const src = block.attrs.src || resourcePath
|
||||
const attrsQuery = attrsToQuery(block.attrs)
|
||||
const issuerQuery = block.attrs.src
|
||||
? `&issuerPath=${qs.escape(resourcePath)}`
|
||||
: ''
|
||||
const inheritQuery = resourceQuery ? `&${resourceQuery.slice(1)}` : ''
|
||||
const query = `?vue&type=custom&index=${i}&blockType=${qs.escape(
|
||||
block.type
|
||||
)}${issuerQuery}${attrsQuery}${inheritQuery}`
|
||||
return (
|
||||
`import block${i} from ${stringifyRequest(src + query)}\n` +
|
||||
`if (typeof block${i} === 'function') block${i}(component)`
|
||||
)
|
||||
})
|
||||
.join(`\n`) +
|
||||
`\n`
|
||||
)
|
||||
}
|
31
node_modules/@vue/vue-loader-v15/lib/codegen/hotReload.js
generated
vendored
Normal file
31
node_modules/@vue/vue-loader-v15/lib/codegen/hotReload.js
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
const hotReloadAPIPath = JSON.stringify(require.resolve('vue-hot-reload-api'))
|
||||
|
||||
const genTemplateHotReloadCode = (id, request) => {
|
||||
return `
|
||||
module.hot.accept(${request}, function () {
|
||||
api.rerender('${id}', {
|
||||
render: render,
|
||||
staticRenderFns: staticRenderFns
|
||||
})
|
||||
})
|
||||
`.trim()
|
||||
}
|
||||
|
||||
exports.genHotReloadCode = (id, functional, templateRequest) => {
|
||||
return `
|
||||
/* hot reload */
|
||||
if (module.hot) {
|
||||
var api = require(${hotReloadAPIPath})
|
||||
api.install(require('vue'))
|
||||
if (api.compatible) {
|
||||
module.hot.accept()
|
||||
if (!api.isRecorded('${id}')) {
|
||||
api.createRecord('${id}', component.options)
|
||||
} else {
|
||||
api.${functional ? 'rerender' : 'reload'}('${id}', component.options)
|
||||
}
|
||||
${templateRequest ? genTemplateHotReloadCode(id, templateRequest) : ''}
|
||||
}
|
||||
}
|
||||
`.trim()
|
||||
}
|
129
node_modules/@vue/vue-loader-v15/lib/codegen/styleInjection.js
generated
vendored
Normal file
129
node_modules/@vue/vue-loader-v15/lib/codegen/styleInjection.js
generated
vendored
Normal file
@ -0,0 +1,129 @@
|
||||
const { attrsToQuery } = require('./utils')
|
||||
const hotReloadAPIPath = JSON.stringify(require.resolve('vue-hot-reload-api'))
|
||||
const nonWhitespaceRE = /\S+/
|
||||
|
||||
module.exports = function genStyleInjectionCode(
|
||||
loaderContext,
|
||||
styles,
|
||||
id,
|
||||
resourcePath,
|
||||
stringifyRequest,
|
||||
needsHotReload,
|
||||
needsExplicitInjection,
|
||||
isProduction
|
||||
) {
|
||||
let styleImportsCode = ``
|
||||
let styleInjectionCode = ``
|
||||
let cssModulesHotReloadCode = ``
|
||||
|
||||
let hasCSSModules = false
|
||||
const cssModuleNames = new Map()
|
||||
|
||||
function genStyleRequest(style, i) {
|
||||
const src = style.src || resourcePath
|
||||
const attrsQuery = attrsToQuery(style.attrs, 'css')
|
||||
const inheritQuery = `&${loaderContext.resourceQuery.slice(1)}`
|
||||
// make sure to only pass id not src importing so that we don't inject
|
||||
// duplicate tags when multiple components import the same css file
|
||||
const idQuery = !style.src || style.scoped ? `&id=${id}` : ``
|
||||
const prodQuery = isProduction ? `&prod` : ``
|
||||
const query = `?vue&type=style&index=${i}${idQuery}${prodQuery}${attrsQuery}${inheritQuery}`
|
||||
return stringifyRequest(src + query)
|
||||
}
|
||||
|
||||
function genCSSModulesCode(style, request, i) {
|
||||
hasCSSModules = true
|
||||
|
||||
const moduleName = style.module === true ? '$style' : style.module
|
||||
if (cssModuleNames.has(moduleName)) {
|
||||
loaderContext.emitError(`CSS module name ${moduleName} is not unique!`)
|
||||
}
|
||||
cssModuleNames.set(moduleName, true)
|
||||
|
||||
// `(vue-)style-loader` exports the name-to-hash map directly
|
||||
// `css-loader` exports it in `.locals`
|
||||
const locals = `(style${i}.locals || style${i})`
|
||||
const name = JSON.stringify(moduleName)
|
||||
|
||||
if (!needsHotReload) {
|
||||
styleInjectionCode += `this[${name}] = ${locals}\n`
|
||||
} else {
|
||||
styleInjectionCode += `
|
||||
cssModules[${name}] = ${locals}
|
||||
Object.defineProperty(this, ${name}, {
|
||||
configurable: true,
|
||||
get: function () {
|
||||
return cssModules[${name}]
|
||||
}
|
||||
})
|
||||
`
|
||||
cssModulesHotReloadCode += `
|
||||
module.hot && module.hot.accept([${request}], function () {
|
||||
var oldLocals = cssModules[${name}]
|
||||
if (oldLocals) {
|
||||
var newLocals = require(${request})
|
||||
if (JSON.stringify(newLocals) !== JSON.stringify(oldLocals)) {
|
||||
cssModules[${name}] = newLocals
|
||||
require(${hotReloadAPIPath}).rerender("${id}")
|
||||
}
|
||||
}
|
||||
})
|
||||
`
|
||||
}
|
||||
}
|
||||
|
||||
// empty styles: with no `src` specified or only contains whitespaces
|
||||
const isNotEmptyStyle = (style) =>
|
||||
style.src || nonWhitespaceRE.test(style.content)
|
||||
// explicit injection is needed in SSR (for critical CSS collection)
|
||||
// or in Shadow Mode (for injection into shadow root)
|
||||
// In these modes, vue-style-loader exports objects with the __inject__
|
||||
// method; otherwise we simply import the styles.
|
||||
if (!needsExplicitInjection) {
|
||||
styles.forEach((style, i) => {
|
||||
// do not generate requests for empty styles
|
||||
if (isNotEmptyStyle(style)) {
|
||||
const request = genStyleRequest(style, i)
|
||||
styleImportsCode += `import style${i} from ${request}\n`
|
||||
if (style.module) genCSSModulesCode(style, request, i)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
styles.forEach((style, i) => {
|
||||
if (isNotEmptyStyle(style)) {
|
||||
const request = genStyleRequest(style, i)
|
||||
styleInjectionCode +=
|
||||
`var style${i} = require(${request})\n` +
|
||||
`if (style${i}.__inject__) style${i}.__inject__(context)\n`
|
||||
if (style.module) genCSSModulesCode(style, request, i)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (!needsExplicitInjection && !hasCSSModules) {
|
||||
return styleImportsCode
|
||||
}
|
||||
|
||||
return `
|
||||
${styleImportsCode}
|
||||
${hasCSSModules && needsHotReload ? `var cssModules = {}` : ``}
|
||||
${needsHotReload ? `var disposed = false` : ``}
|
||||
|
||||
function injectStyles (context) {
|
||||
${needsHotReload ? `if (disposed) return` : ``}
|
||||
${styleInjectionCode}
|
||||
}
|
||||
|
||||
${
|
||||
needsHotReload
|
||||
? `
|
||||
module.hot && module.hot.dispose(function (data) {
|
||||
disposed = true
|
||||
})
|
||||
`
|
||||
: ``
|
||||
}
|
||||
|
||||
${cssModulesHotReloadCode}
|
||||
`.trim()
|
||||
}
|
20
node_modules/@vue/vue-loader-v15/lib/codegen/utils.js
generated
vendored
Normal file
20
node_modules/@vue/vue-loader-v15/lib/codegen/utils.js
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
const qs = require('querystring')
|
||||
|
||||
// these are built-in query parameters so should be ignored
|
||||
// if the user happen to add them as attrs
|
||||
const ignoreList = ['id', 'index', 'src', 'type']
|
||||
|
||||
// transform the attrs on a SFC block descriptor into a resourceQuery string
|
||||
exports.attrsToQuery = (attrs, langFallback) => {
|
||||
let query = ``
|
||||
for (const name in attrs) {
|
||||
const value = attrs[name]
|
||||
if (!ignoreList.includes(name)) {
|
||||
query += `&${qs.escape(name)}=${value ? qs.escape(value) : ``}`
|
||||
}
|
||||
}
|
||||
if (langFallback && !(`lang` in attrs)) {
|
||||
query += `&lang=${langFallback}`
|
||||
}
|
||||
return query
|
||||
}
|
54
node_modules/@vue/vue-loader-v15/lib/compiler.js
generated
vendored
Normal file
54
node_modules/@vue/vue-loader-v15/lib/compiler.js
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
// resolve compilers to use.
|
||||
|
||||
let cached
|
||||
|
||||
exports.resolveCompiler = function (ctx, loaderContext) {
|
||||
if (cached) {
|
||||
return cached
|
||||
}
|
||||
|
||||
// check 2.7
|
||||
try {
|
||||
const pkg = loadFromContext('vue/package.json', ctx)
|
||||
const [major, minor] = pkg.version.split('.')
|
||||
if (major === '2' && Number(minor) >= 7) {
|
||||
return (cached = {
|
||||
is27: true,
|
||||
compiler: loadFromContext('vue/compiler-sfc', ctx),
|
||||
templateCompiler: undefined
|
||||
})
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
return (cached = {
|
||||
compiler: require('@vue/component-compiler-utils'),
|
||||
templateCompiler: loadTemplateCompiler(ctx, loaderContext)
|
||||
})
|
||||
}
|
||||
|
||||
function loadFromContext(path, ctx) {
|
||||
return require(require.resolve(path, {
|
||||
paths: [ctx]
|
||||
}))
|
||||
}
|
||||
|
||||
function loadTemplateCompiler(ctx, loaderContext) {
|
||||
try {
|
||||
return loadFromContext('vue-template-compiler', ctx)
|
||||
} catch (e) {
|
||||
if (loaderContext) {
|
||||
if (/version mismatch/.test(e.toString())) {
|
||||
loaderContext.emitError(e)
|
||||
} else {
|
||||
loaderContext.emitError(
|
||||
new Error(
|
||||
`[vue-loader] vue-template-compiler must be installed as a peer dependency, ` +
|
||||
`or a compatible compiler implementation must be passed via options.`
|
||||
)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
throw e
|
||||
}
|
||||
}
|
||||
}
|
47
node_modules/@vue/vue-loader-v15/lib/descriptorCache.js
generated
vendored
Normal file
47
node_modules/@vue/vue-loader-v15/lib/descriptorCache.js
generated
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const { resolveCompiler } = require('./compiler')
|
||||
|
||||
const cache = new Map()
|
||||
|
||||
exports.setDescriptor = function setDescriptor(filename, entry) {
|
||||
cache.set(cleanQuery(filename), entry)
|
||||
}
|
||||
|
||||
exports.getDescriptor = function getDescriptor(
|
||||
filename,
|
||||
options,
|
||||
loaderContext
|
||||
) {
|
||||
filename = cleanQuery(filename)
|
||||
if (cache.has(filename)) {
|
||||
return cache.get(filename)
|
||||
}
|
||||
|
||||
// This function should only be called after the descriptor has been
|
||||
// cached by the main loader.
|
||||
// If this is somehow called without a cache hit, it's probably due to sub
|
||||
// loaders being run in separate threads. The only way to deal with this is to
|
||||
// read from disk directly...
|
||||
const source = fs.readFileSync(filename, 'utf-8')
|
||||
const sourceRoot = path.dirname(
|
||||
path.relative(loaderContext.rootContext, loaderContext.resourcePath)
|
||||
)
|
||||
const { compiler, templateCompiler } = resolveCompiler(
|
||||
loaderContext.rootContext
|
||||
)
|
||||
const descriptor = compiler.parse({
|
||||
source,
|
||||
compiler: options.compiler || templateCompiler,
|
||||
filename,
|
||||
sourceRoot,
|
||||
needMap: loaderContext.sourceMap
|
||||
})
|
||||
cache.set(filename, descriptor)
|
||||
return descriptor
|
||||
}
|
||||
|
||||
function cleanQuery(str) {
|
||||
const i = str.indexOf('?')
|
||||
return i > 0 ? str.slice(0, i) : str
|
||||
}
|
24
node_modules/@vue/vue-loader-v15/lib/index.d.ts
generated
vendored
Normal file
24
node_modules/@vue/vue-loader-v15/lib/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
import { Plugin } from 'webpack'
|
||||
import { VueTemplateCompiler } from '@vue/component-compiler-utils/dist/types'
|
||||
import { CompilerOptions } from 'vue-template-compiler'
|
||||
|
||||
declare namespace VueLoader {
|
||||
class VueLoaderPlugin extends Plugin {}
|
||||
|
||||
interface VueLoaderOptions {
|
||||
transformAssetUrls?: { [tag: string]: string | Array<string> }
|
||||
compiler?: VueTemplateCompiler
|
||||
compilerOptions?: CompilerOptions
|
||||
transpileOptions?: Object
|
||||
optimizeSSR?: boolean
|
||||
hotReload?: boolean
|
||||
productionMode?: boolean
|
||||
shadowMode?: boolean
|
||||
cacheDirectory?: string
|
||||
cacheIdentifier?: string
|
||||
prettify?: boolean
|
||||
exposeFilename?: boolean
|
||||
}
|
||||
}
|
||||
|
||||
export = VueLoader
|
204
node_modules/@vue/vue-loader-v15/lib/index.js
generated
vendored
Normal file
204
node_modules/@vue/vue-loader-v15/lib/index.js
generated
vendored
Normal file
@ -0,0 +1,204 @@
|
||||
const path = require('path')
|
||||
const hash = require('hash-sum')
|
||||
const qs = require('querystring')
|
||||
const plugin = require('./plugin')
|
||||
const selectBlock = require('./select')
|
||||
const loaderUtils = require('loader-utils')
|
||||
const { attrsToQuery } = require('./codegen/utils')
|
||||
const genStylesCode = require('./codegen/styleInjection')
|
||||
const { genHotReloadCode } = require('./codegen/hotReload')
|
||||
const genCustomBlocksCode = require('./codegen/customBlocks')
|
||||
const componentNormalizerPath = require.resolve('./runtime/componentNormalizer')
|
||||
const { NS } = require('./plugin')
|
||||
const { resolveCompiler } = require('./compiler')
|
||||
const { setDescriptor } = require('./descriptorCache')
|
||||
|
||||
let errorEmitted = false
|
||||
|
||||
module.exports = function (source) {
|
||||
const loaderContext = this
|
||||
|
||||
if (!errorEmitted && !loaderContext['thread-loader'] && !loaderContext[NS]) {
|
||||
loaderContext.emitError(
|
||||
new Error(
|
||||
`vue-loader was used without the corresponding plugin. ` +
|
||||
`Make sure to include VueLoaderPlugin in your webpack config.`
|
||||
)
|
||||
)
|
||||
errorEmitted = true
|
||||
}
|
||||
|
||||
const stringifyRequest = (r) => loaderUtils.stringifyRequest(loaderContext, r)
|
||||
|
||||
const {
|
||||
mode,
|
||||
target,
|
||||
request,
|
||||
minimize,
|
||||
sourceMap,
|
||||
rootContext,
|
||||
resourcePath,
|
||||
resourceQuery = ''
|
||||
} = loaderContext
|
||||
|
||||
const rawQuery = resourceQuery.slice(1)
|
||||
const inheritQuery = `&${rawQuery}`
|
||||
const incomingQuery = qs.parse(rawQuery)
|
||||
const options = loaderUtils.getOptions(loaderContext) || {}
|
||||
|
||||
const isServer = target === 'node'
|
||||
const isShadow = !!options.shadowMode
|
||||
const isProduction =
|
||||
mode === 'production' ||
|
||||
options.productionMode ||
|
||||
minimize ||
|
||||
process.env.NODE_ENV === 'production'
|
||||
|
||||
const filename = path.basename(resourcePath)
|
||||
const context = rootContext || process.cwd()
|
||||
const sourceRoot = path.dirname(path.relative(context, resourcePath))
|
||||
|
||||
const { compiler, templateCompiler } = resolveCompiler(context, loaderContext)
|
||||
|
||||
const descriptor = compiler.parse({
|
||||
source,
|
||||
compiler: options.compiler || templateCompiler,
|
||||
filename,
|
||||
sourceRoot,
|
||||
needMap: sourceMap
|
||||
})
|
||||
|
||||
// cache descriptor
|
||||
setDescriptor(resourcePath, descriptor)
|
||||
|
||||
// module id for scoped CSS & hot-reload
|
||||
const rawShortFilePath = path
|
||||
.relative(context, resourcePath)
|
||||
.replace(/^(\.\.[\/\\])+/, '')
|
||||
const shortFilePath = rawShortFilePath.replace(/\\/g, '/')
|
||||
const id = hash(
|
||||
isProduction
|
||||
? shortFilePath + '\n' + source.replace(/\r\n/g, '\n')
|
||||
: shortFilePath
|
||||
)
|
||||
|
||||
// if the query has a type field, this is a language block request
|
||||
// e.g. foo.vue?type=template&id=xxxxx
|
||||
// and we will return early
|
||||
if (incomingQuery.type) {
|
||||
return selectBlock(
|
||||
descriptor,
|
||||
id,
|
||||
options,
|
||||
loaderContext,
|
||||
incomingQuery,
|
||||
!!options.appendExtension
|
||||
)
|
||||
}
|
||||
|
||||
// feature information
|
||||
const hasScoped = descriptor.styles.some((s) => s.scoped)
|
||||
const hasFunctional =
|
||||
descriptor.template && descriptor.template.attrs.functional
|
||||
const needsHotReload =
|
||||
!isServer &&
|
||||
!isProduction &&
|
||||
(descriptor.script || descriptor.scriptSetup || descriptor.template) &&
|
||||
options.hotReload !== false
|
||||
|
||||
// script
|
||||
let scriptImport = `var script = {}`
|
||||
// let isTS = false
|
||||
const { script, scriptSetup } = descriptor
|
||||
if (script || scriptSetup) {
|
||||
// const lang = script?.lang || scriptSetup?.lang
|
||||
// isTS = !!(lang && /tsx?/.test(lang))
|
||||
const src = (script && !scriptSetup && script.src) || resourcePath
|
||||
const attrsQuery = attrsToQuery((scriptSetup || script).attrs, 'js')
|
||||
const query = `?vue&type=script${attrsQuery}${inheritQuery}`
|
||||
const request = stringifyRequest(src + query)
|
||||
scriptImport =
|
||||
`import script from ${request}\n` + `export * from ${request}` // support named exports
|
||||
}
|
||||
|
||||
// template
|
||||
let templateImport = `var render, staticRenderFns`
|
||||
let templateRequest
|
||||
if (descriptor.template) {
|
||||
const src = descriptor.template.src || resourcePath
|
||||
const idQuery = `&id=${id}`
|
||||
const scopedQuery = hasScoped ? `&scoped=true` : ``
|
||||
const attrsQuery = attrsToQuery(descriptor.template.attrs)
|
||||
// const tsQuery =
|
||||
// options.enableTsInTemplate !== false && isTS ? `&ts=true` : ``
|
||||
const query = `?vue&type=template${idQuery}${scopedQuery}${attrsQuery}${inheritQuery}`
|
||||
const request = (templateRequest = stringifyRequest(src + query))
|
||||
templateImport = `import { render, staticRenderFns } from ${request}`
|
||||
}
|
||||
|
||||
// styles
|
||||
let stylesCode = ``
|
||||
if (descriptor.styles.length) {
|
||||
stylesCode = genStylesCode(
|
||||
loaderContext,
|
||||
descriptor.styles,
|
||||
id,
|
||||
resourcePath,
|
||||
stringifyRequest,
|
||||
needsHotReload,
|
||||
isServer || isShadow, // needs explicit injection?
|
||||
isProduction
|
||||
)
|
||||
}
|
||||
|
||||
let code =
|
||||
`
|
||||
${templateImport}
|
||||
${scriptImport}
|
||||
${stylesCode}
|
||||
|
||||
/* normalize component */
|
||||
import normalizer from ${stringifyRequest(`!${componentNormalizerPath}`)}
|
||||
var component = normalizer(
|
||||
script,
|
||||
render,
|
||||
staticRenderFns,
|
||||
${hasFunctional ? `true` : `false`},
|
||||
${/injectStyles/.test(stylesCode) ? `injectStyles` : `null`},
|
||||
${hasScoped ? JSON.stringify(id) : `null`},
|
||||
${isServer ? JSON.stringify(hash(request)) : `null`}
|
||||
${isShadow ? `,true` : ``}
|
||||
)
|
||||
`.trim() + `\n`
|
||||
|
||||
if (descriptor.customBlocks && descriptor.customBlocks.length) {
|
||||
code += genCustomBlocksCode(
|
||||
descriptor.customBlocks,
|
||||
resourcePath,
|
||||
resourceQuery,
|
||||
stringifyRequest
|
||||
)
|
||||
}
|
||||
|
||||
if (needsHotReload) {
|
||||
code += `\n` + genHotReloadCode(id, hasFunctional, templateRequest)
|
||||
}
|
||||
|
||||
// Expose filename. This is used by the devtools and Vue runtime warnings.
|
||||
if (!isProduction) {
|
||||
// Expose the file's full path in development, so that it can be opened
|
||||
// from the devtools.
|
||||
code += `\ncomponent.options.__file = ${JSON.stringify(
|
||||
rawShortFilePath.replace(/\\/g, '/')
|
||||
)}`
|
||||
} else if (options.exposeFilename) {
|
||||
// Libraries can opt-in to expose their components' filenames in production builds.
|
||||
// For security reasons, only expose the file's basename in production.
|
||||
code += `\ncomponent.options.__file = ${JSON.stringify(filename)}`
|
||||
}
|
||||
|
||||
code += `\nexport default component.exports`
|
||||
return code
|
||||
}
|
||||
|
||||
module.exports.VueLoaderPlugin = plugin
|
175
node_modules/@vue/vue-loader-v15/lib/loaders/pitcher.js
generated
vendored
Normal file
175
node_modules/@vue/vue-loader-v15/lib/loaders/pitcher.js
generated
vendored
Normal file
@ -0,0 +1,175 @@
|
||||
const qs = require('querystring')
|
||||
const loaderUtils = require('loader-utils')
|
||||
const hash = require('hash-sum')
|
||||
const selfPath = require.resolve('../index')
|
||||
const templateLoaderPath = require.resolve('./templateLoader')
|
||||
const stylePostLoaderPath = require.resolve('./stylePostLoader')
|
||||
const { resolveCompiler } = require('../compiler')
|
||||
|
||||
const isESLintLoader = (l) => /(\/|\\|@)eslint-loader/.test(l.path)
|
||||
const isNullLoader = (l) => /(\/|\\|@)null-loader/.test(l.path)
|
||||
const isCSSLoader = (l) => /(\/|\\|@)css-loader/.test(l.path)
|
||||
const isCacheLoader = (l) => /(\/|\\|@)cache-loader/.test(l.path)
|
||||
const isPitcher = (l) => l.path !== __filename
|
||||
const isPreLoader = (l) => !l.pitchExecuted
|
||||
const isPostLoader = (l) => l.pitchExecuted
|
||||
|
||||
const dedupeESLintLoader = (loaders) => {
|
||||
const res = []
|
||||
let seen = false
|
||||
loaders.forEach((l) => {
|
||||
if (!isESLintLoader(l)) {
|
||||
res.push(l)
|
||||
} else if (!seen) {
|
||||
seen = true
|
||||
res.push(l)
|
||||
}
|
||||
})
|
||||
return res
|
||||
}
|
||||
|
||||
const shouldIgnoreCustomBlock = (loaders) => {
|
||||
const actualLoaders = loaders.filter((loader) => {
|
||||
// vue-loader
|
||||
if (loader.path === selfPath) {
|
||||
return false
|
||||
}
|
||||
|
||||
// cache-loader
|
||||
if (isCacheLoader(loader)) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
})
|
||||
return actualLoaders.length === 0
|
||||
}
|
||||
|
||||
module.exports = (code) => code
|
||||
|
||||
// This pitching loader is responsible for intercepting all vue block requests
|
||||
// and transform it into appropriate requests.
|
||||
module.exports.pitch = function (remainingRequest) {
|
||||
const options = loaderUtils.getOptions(this)
|
||||
const { cacheDirectory, cacheIdentifier } = options
|
||||
const query = qs.parse(this.resourceQuery.slice(1))
|
||||
|
||||
let loaders = this.loaders
|
||||
|
||||
// if this is a language block request, eslint-loader may get matched
|
||||
// multiple times
|
||||
if (query.type) {
|
||||
// if this is an inline block, since the whole file itself is being linted,
|
||||
// remove eslint-loader to avoid duplicate linting.
|
||||
if (/\.vue$/.test(this.resourcePath)) {
|
||||
loaders = loaders.filter((l) => !isESLintLoader(l))
|
||||
} else {
|
||||
// This is a src import. Just make sure there's not more than 1 instance
|
||||
// of eslint present.
|
||||
loaders = dedupeESLintLoader(loaders)
|
||||
}
|
||||
}
|
||||
|
||||
// remove self
|
||||
loaders = loaders.filter(isPitcher)
|
||||
|
||||
// do not inject if user uses null-loader to void the type (#1239)
|
||||
if (loaders.some(isNullLoader)) {
|
||||
return
|
||||
}
|
||||
|
||||
const genRequest = (loaders) => {
|
||||
// Important: dedupe since both the original rule
|
||||
// and the cloned rule would match a source import request.
|
||||
// also make sure to dedupe based on loader path.
|
||||
// assumes you'd probably never want to apply the same loader on the same
|
||||
// file twice.
|
||||
// Exception: in Vue CLI we do need two instances of postcss-loader
|
||||
// for user config and inline minification. So we need to dedupe baesd on
|
||||
// path AND query to be safe.
|
||||
const seen = new Map()
|
||||
const loaderStrings = []
|
||||
|
||||
loaders.forEach((loader) => {
|
||||
const identifier =
|
||||
typeof loader === 'string' ? loader : loader.path + loader.query
|
||||
const request = typeof loader === 'string' ? loader : loader.request
|
||||
if (!seen.has(identifier)) {
|
||||
seen.set(identifier, true)
|
||||
// loader.request contains both the resolved loader path and its options
|
||||
// query (e.g. ??ref-0)
|
||||
loaderStrings.push(request)
|
||||
}
|
||||
})
|
||||
|
||||
return loaderUtils.stringifyRequest(
|
||||
this,
|
||||
'-!' +
|
||||
[...loaderStrings, this.resourcePath + this.resourceQuery].join('!')
|
||||
)
|
||||
}
|
||||
|
||||
// Inject style-post-loader before css-loader for scoped CSS and trimming
|
||||
if (query.type === `style`) {
|
||||
const cssLoaderIndex = loaders.findIndex(isCSSLoader)
|
||||
if (cssLoaderIndex > -1) {
|
||||
const afterLoaders = loaders.slice(0, cssLoaderIndex + 1)
|
||||
const beforeLoaders = loaders.slice(cssLoaderIndex + 1)
|
||||
const request = genRequest([
|
||||
...afterLoaders,
|
||||
stylePostLoaderPath,
|
||||
...beforeLoaders
|
||||
])
|
||||
// console.log(request)
|
||||
return query.module
|
||||
? `export { default } from ${request}; export * from ${request}`
|
||||
: `export * from ${request}`
|
||||
}
|
||||
}
|
||||
|
||||
// for templates: inject the template compiler & optional cache
|
||||
if (query.type === `template`) {
|
||||
const path = require('path')
|
||||
const cacheLoader =
|
||||
cacheDirectory && cacheIdentifier
|
||||
? [
|
||||
`${require.resolve('cache-loader')}?${JSON.stringify({
|
||||
// For some reason, webpack fails to generate consistent hash if we
|
||||
// use absolute paths here, even though the path is only used in a
|
||||
// comment. For now we have to ensure cacheDirectory is a relative path.
|
||||
cacheDirectory: (path.isAbsolute(cacheDirectory)
|
||||
? path.relative(process.cwd(), cacheDirectory)
|
||||
: cacheDirectory
|
||||
).replace(/\\/g, '/'),
|
||||
cacheIdentifier: hash(cacheIdentifier) + '-vue-loader-template'
|
||||
})}`
|
||||
]
|
||||
: []
|
||||
|
||||
const preLoaders = loaders.filter(isPreLoader)
|
||||
const postLoaders = loaders.filter(isPostLoader)
|
||||
const { is27 } = resolveCompiler(this.rootContext, this)
|
||||
|
||||
const request = genRequest([
|
||||
...cacheLoader,
|
||||
...postLoaders,
|
||||
...(is27 ? [] : [templateLoaderPath + `??vue-loader-options`]),
|
||||
...preLoaders
|
||||
])
|
||||
|
||||
// the template compiler uses esm exports
|
||||
return `export * from ${request}`
|
||||
}
|
||||
|
||||
// if a custom block has no other matching loader other than vue-loader itself
|
||||
// or cache-loader, we should ignore it
|
||||
if (query.type === `custom` && shouldIgnoreCustomBlock(loaders)) {
|
||||
return ``
|
||||
}
|
||||
|
||||
// When the user defines a rule that has only resourceQuery but no test,
|
||||
// both that rule and the cloned rule will match, resulting in duplicated
|
||||
// loaders. Therefore it is necessary to perform a dedupe here.
|
||||
const request = genRequest(loaders)
|
||||
return `import mod from ${request}; export default mod; export * from ${request}`
|
||||
}
|
25
node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js
generated
vendored
Normal file
25
node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
const qs = require('querystring')
|
||||
const { resolveCompiler } = require('../compiler')
|
||||
|
||||
// This is a post loader that handles scoped CSS transforms.
|
||||
// Injected right before css-loader by the global pitcher (../pitch.js)
|
||||
// for any <style scoped> selection requests initiated from within vue files.
|
||||
module.exports = function (source, inMap) {
|
||||
const query = qs.parse(this.resourceQuery.slice(1))
|
||||
const { compiler } = resolveCompiler(this.rootContext, this)
|
||||
const { code, map, errors } = compiler.compileStyle({
|
||||
source,
|
||||
filename: this.resourcePath,
|
||||
id: `data-v-${query.id}`,
|
||||
map: inMap,
|
||||
scoped: !!query.scoped,
|
||||
isProd: query.prod != null,
|
||||
trim: true
|
||||
})
|
||||
|
||||
if (errors.length) {
|
||||
this.callback(errors[0])
|
||||
} else {
|
||||
this.callback(null, code, map)
|
||||
}
|
||||
}
|
108
node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js
generated
vendored
Normal file
108
node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js
generated
vendored
Normal file
@ -0,0 +1,108 @@
|
||||
const qs = require('querystring')
|
||||
const loaderUtils = require('loader-utils')
|
||||
const { resolveCompiler } = require('../compiler')
|
||||
const { getDescriptor } = require('../descriptorCache')
|
||||
const { resolveScript } = require('../resolveScript')
|
||||
|
||||
// Loader that compiles raw template into JavaScript functions.
|
||||
// This is injected by the global pitcher (../pitch) for template
|
||||
// selection requests initiated from vue files.
|
||||
module.exports = function (source) {
|
||||
const loaderContext = this
|
||||
const filename = this.resourcePath
|
||||
const ctx = this.rootContext
|
||||
const query = qs.parse(this.resourceQuery.slice(1))
|
||||
|
||||
// although this is not the main vue-loader, we can get access to the same
|
||||
// vue-loader options because we've set an ident in the plugin and used that
|
||||
// ident to create the request for this loader in the pitcher.
|
||||
const options = loaderUtils.getOptions(loaderContext) || {}
|
||||
const { id } = query
|
||||
const isServer = loaderContext.target === 'node'
|
||||
const isProduction =
|
||||
options.productionMode ||
|
||||
loaderContext.minimize ||
|
||||
process.env.NODE_ENV === 'production'
|
||||
const isFunctional = query.functional
|
||||
|
||||
const compilerOptions = Object.assign(
|
||||
{
|
||||
outputSourceRange: true
|
||||
},
|
||||
options.compilerOptions,
|
||||
{
|
||||
scopeId: query.scoped ? `data-v-${id}` : null,
|
||||
comments: query.comments
|
||||
}
|
||||
)
|
||||
|
||||
const { compiler, templateCompiler } = resolveCompiler(ctx, loaderContext)
|
||||
|
||||
const descriptor = getDescriptor(filename, options, loaderContext)
|
||||
const script = resolveScript(descriptor, id, options, loaderContext)
|
||||
|
||||
// for vue/compiler-sfc OR @vue/component-compiler-utils
|
||||
const finalOptions = {
|
||||
source,
|
||||
filename: this.resourcePath,
|
||||
compiler: options.compiler || templateCompiler,
|
||||
compilerOptions,
|
||||
// allow customizing behavior of vue-template-es2015-compiler
|
||||
transpileOptions: options.transpileOptions,
|
||||
transformAssetUrls: options.transformAssetUrls || true,
|
||||
isProduction,
|
||||
isFunctional,
|
||||
optimizeSSR: isServer && options.optimizeSSR !== false,
|
||||
prettify: options.prettify,
|
||||
bindings: script ? script.bindings : undefined
|
||||
}
|
||||
|
||||
const compiled = compiler.compileTemplate(finalOptions)
|
||||
|
||||
// tips
|
||||
if (compiled.tips && compiled.tips.length) {
|
||||
compiled.tips.forEach((tip) => {
|
||||
loaderContext.emitWarning(typeof tip === 'object' ? tip.msg : tip)
|
||||
})
|
||||
}
|
||||
|
||||
// errors
|
||||
if (compiled.errors && compiled.errors.length) {
|
||||
const generateCodeFrame =
|
||||
(templateCompiler && templateCompiler.generateCodeFrame) ||
|
||||
compiler.generateCodeFrame
|
||||
// 2.6 compiler outputs errors as objects with range
|
||||
if (generateCodeFrame && finalOptions.compilerOptions.outputSourceRange) {
|
||||
// TODO account for line offset in case template isn't placed at top
|
||||
// of the file
|
||||
loaderContext.emitError(
|
||||
`\n\n Errors compiling template:\n\n` +
|
||||
compiled.errors
|
||||
.map(({ msg, start, end }) => {
|
||||
const frame = generateCodeFrame(source, start, end)
|
||||
return ` ${msg}\n\n${pad(frame)}`
|
||||
})
|
||||
.join(`\n\n`) +
|
||||
'\n'
|
||||
)
|
||||
} else {
|
||||
loaderContext.emitError(
|
||||
`\n Error compiling template:\n${pad(compiled.source)}\n` +
|
||||
compiled.errors.map((e) => ` - ${e}`).join('\n') +
|
||||
'\n'
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
const { code } = compiled
|
||||
|
||||
// finish with ESM exports
|
||||
return code + `\nexport { render, staticRenderFns }`
|
||||
}
|
||||
|
||||
function pad(source) {
|
||||
return source
|
||||
.split(/\r?\n/)
|
||||
.map((line) => ` ${line}`)
|
||||
.join('\n')
|
||||
}
|
232
node_modules/@vue/vue-loader-v15/lib/plugin-webpack4.js
generated
vendored
Normal file
232
node_modules/@vue/vue-loader-v15/lib/plugin-webpack4.js
generated
vendored
Normal file
@ -0,0 +1,232 @@
|
||||
const qs = require('querystring')
|
||||
const RuleSet = require('webpack/lib/RuleSet')
|
||||
const { resolveCompiler } = require('./compiler')
|
||||
|
||||
const id = 'vue-loader-plugin'
|
||||
const NS = 'vue-loader'
|
||||
|
||||
class VueLoaderPlugin {
|
||||
apply(compiler) {
|
||||
// add NS marker so that the loader can detect and report missing plugin
|
||||
if (compiler.hooks) {
|
||||
// webpack 4
|
||||
compiler.hooks.compilation.tap(id, (compilation) => {
|
||||
const normalModuleLoader = compilation.hooks.normalModuleLoader
|
||||
normalModuleLoader.tap(id, (loaderContext) => {
|
||||
loaderContext[NS] = true
|
||||
})
|
||||
})
|
||||
} else {
|
||||
// webpack < 4
|
||||
compiler.plugin('compilation', (compilation) => {
|
||||
compilation.plugin('normal-module-loader', (loaderContext) => {
|
||||
loaderContext[NS] = true
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// use webpack's RuleSet utility to normalize user rules
|
||||
const rawRules = compiler.options.module.rules
|
||||
const { rules } = new RuleSet(rawRules)
|
||||
|
||||
// find the rule that applies to vue files
|
||||
let vueRuleIndex = rawRules.findIndex(createMatcher(`foo.vue`))
|
||||
if (vueRuleIndex < 0) {
|
||||
vueRuleIndex = rawRules.findIndex(createMatcher(`foo.vue.html`))
|
||||
}
|
||||
const vueRule = rules[vueRuleIndex]
|
||||
|
||||
if (!vueRule) {
|
||||
throw new Error(
|
||||
`[VueLoaderPlugin Error] No matching rule for .vue files found.\n` +
|
||||
`Make sure there is at least one root-level rule that matches .vue or .vue.html files.`
|
||||
)
|
||||
}
|
||||
|
||||
if (vueRule.oneOf) {
|
||||
throw new Error(
|
||||
`[VueLoaderPlugin Error] vue-loader 15 currently does not support vue rules with oneOf.`
|
||||
)
|
||||
}
|
||||
|
||||
// get the normalized "use" for vue files
|
||||
const vueUse = vueRule.use
|
||||
// get vue-loader options
|
||||
const vueLoaderUseIndex = vueUse.findIndex((u) => {
|
||||
return /^vue-loader|(\/|\\|@)vue-loader/.test(u.loader)
|
||||
})
|
||||
|
||||
if (vueLoaderUseIndex < 0) {
|
||||
throw new Error(
|
||||
`[VueLoaderPlugin Error] No matching use for vue-loader is found.\n` +
|
||||
`Make sure the rule matching .vue files include vue-loader in its use.`
|
||||
)
|
||||
}
|
||||
|
||||
// make sure vue-loader options has a known ident so that we can share
|
||||
// options by reference in the template-loader by using a ref query like
|
||||
// template-loader??vue-loader-options
|
||||
const vueLoaderUse = vueUse[vueLoaderUseIndex]
|
||||
vueLoaderUse.ident = 'vue-loader-options'
|
||||
vueLoaderUse.options = vueLoaderUse.options || {}
|
||||
|
||||
// for each user rule (except the vue rule), create a cloned rule
|
||||
// that targets the corresponding language blocks in *.vue files.
|
||||
const clonedRules = rules.filter((r) => r !== vueRule).map(cloneRule)
|
||||
|
||||
// rule for template compiler
|
||||
const templateCompilerRule = {
|
||||
loader: require.resolve('./loaders/templateLoader'),
|
||||
resourceQuery: (query) => {
|
||||
const parsed = qs.parse(query.slice(1))
|
||||
return parsed.vue != null && parsed.type === 'template'
|
||||
},
|
||||
options: vueLoaderUse.options
|
||||
}
|
||||
|
||||
// for each rule that matches plain .js/.ts files, also create a clone and
|
||||
// match it against the compiled template code inside *.vue files, so that
|
||||
// compiled vue render functions receive the same treatment as user code
|
||||
// (mostly babel)
|
||||
const { is27 } = resolveCompiler(compiler.options.context)
|
||||
let jsRulesForRenderFn = []
|
||||
if (is27) {
|
||||
const matchesJS = createMatcher(`test.js`)
|
||||
// const matchesTS = createMatcher(`test.ts`)
|
||||
jsRulesForRenderFn = rules
|
||||
.filter((r) => r !== vueRule && matchesJS(r))
|
||||
.map(cloneRuleForRenderFn)
|
||||
}
|
||||
|
||||
// global pitcher (responsible for injecting template compiler loader & CSS
|
||||
// post loader)
|
||||
const pitcher = {
|
||||
loader: require.resolve('./loaders/pitcher'),
|
||||
resourceQuery: (query) => {
|
||||
const parsed = qs.parse(query.slice(1))
|
||||
return parsed.vue != null
|
||||
},
|
||||
options: {
|
||||
cacheDirectory: vueLoaderUse.options.cacheDirectory,
|
||||
cacheIdentifier: vueLoaderUse.options.cacheIdentifier
|
||||
}
|
||||
}
|
||||
|
||||
// replace original rules
|
||||
compiler.options.module.rules = [
|
||||
pitcher,
|
||||
...jsRulesForRenderFn,
|
||||
...(is27 ? [templateCompilerRule] : []),
|
||||
...clonedRules,
|
||||
...rules
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
function createMatcher(fakeFile) {
|
||||
return (rule, i) => {
|
||||
// #1201 we need to skip the `include` check when locating the vue rule
|
||||
const clone = Object.assign({}, rule)
|
||||
delete clone.include
|
||||
const normalized = RuleSet.normalizeRule(clone, {}, '')
|
||||
return !rule.enforce && normalized.resource && normalized.resource(fakeFile)
|
||||
}
|
||||
}
|
||||
|
||||
function cloneRule(rule) {
|
||||
const { resource, resourceQuery } = rule
|
||||
// Assuming `test` and `resourceQuery` tests are executed in series and
|
||||
// synchronously (which is true based on RuleSet's implementation), we can
|
||||
// save the current resource being matched from `test` so that we can access
|
||||
// it in `resourceQuery`. This ensures when we use the normalized rule's
|
||||
// resource check, include/exclude are matched correctly.
|
||||
let currentResource
|
||||
const res = Object.assign({}, rule, {
|
||||
resource: {
|
||||
test: (resource) => {
|
||||
currentResource = resource
|
||||
return true
|
||||
}
|
||||
},
|
||||
resourceQuery: (query) => {
|
||||
const parsed = qs.parse(query.slice(1))
|
||||
if (parsed.vue == null) {
|
||||
return false
|
||||
}
|
||||
if (resource && parsed.lang == null) {
|
||||
return false
|
||||
}
|
||||
const fakeResourcePath = `${currentResource}.${parsed.lang}`
|
||||
if (resource && !resource(fakeResourcePath)) {
|
||||
return false
|
||||
}
|
||||
if (resourceQuery && !resourceQuery(query)) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
})
|
||||
|
||||
if (rule.rules) {
|
||||
res.rules = rule.rules.map(cloneRule)
|
||||
}
|
||||
|
||||
if (rule.oneOf) {
|
||||
res.oneOf = rule.oneOf.map(cloneRule)
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
function cloneRuleForRenderFn(rule) {
|
||||
const resource = rule.resource
|
||||
const resourceQuery = rule.resourceQuery
|
||||
let currentResource
|
||||
|
||||
const res = {
|
||||
...rule,
|
||||
resource: (resource) => {
|
||||
currentResource = resource
|
||||
return true
|
||||
},
|
||||
resourceQuery: (query) => {
|
||||
const parsed = qs.parse(query.slice(1))
|
||||
if (parsed.vue == null || parsed.type !== 'template') {
|
||||
return false
|
||||
}
|
||||
const fakeResourcePath = `${currentResource}.${parsed.ts ? `ts` : `js`}`
|
||||
if (resource && !resource(fakeResourcePath)) {
|
||||
return false
|
||||
}
|
||||
if (resourceQuery && !resourceQuery(query)) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
// Filter out `thread-loader` from the `use` array.
|
||||
// Mitigate https://github.com/vuejs/vue/issues/12828
|
||||
// Note this won't work if the `use` filed is a function
|
||||
if (Array.isArray(res.use)) {
|
||||
const isThreadLoader = (loader) => loader === 'thread-loader' || /\/node_modules\/thread-loader\//.test(loader)
|
||||
|
||||
res.use = res.use.filter(useEntry => {
|
||||
const loader = typeof useEntry === 'string' ? useEntry : useEntry.loader
|
||||
return !isThreadLoader(loader)
|
||||
})
|
||||
}
|
||||
|
||||
if (rule.rules) {
|
||||
res.rules = rule.rules.map(cloneRuleForRenderFn)
|
||||
}
|
||||
|
||||
if (rule.oneOf) {
|
||||
res.oneOf = rule.oneOf.map(cloneRuleForRenderFn)
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
VueLoaderPlugin.NS = NS
|
||||
module.exports = VueLoaderPlugin
|
300
node_modules/@vue/vue-loader-v15/lib/plugin-webpack5.js
generated
vendored
Normal file
300
node_modules/@vue/vue-loader-v15/lib/plugin-webpack5.js
generated
vendored
Normal file
@ -0,0 +1,300 @@
|
||||
const { resolveCompiler } = require('./compiler')
|
||||
|
||||
const qs = require('querystring')
|
||||
const id = 'vue-loader-plugin'
|
||||
const NS = 'vue-loader'
|
||||
const BasicEffectRulePlugin = require('webpack/lib/rules/BasicEffectRulePlugin')
|
||||
const BasicMatcherRulePlugin = require('webpack/lib/rules/BasicMatcherRulePlugin')
|
||||
const RuleSetCompiler = require('webpack/lib/rules/RuleSetCompiler')
|
||||
const UseEffectRulePlugin = require('webpack/lib/rules/UseEffectRulePlugin')
|
||||
|
||||
const objectMatcherRulePlugins = []
|
||||
try {
|
||||
const ObjectMatcherRulePlugin = require('webpack/lib/rules/ObjectMatcherRulePlugin')
|
||||
objectMatcherRulePlugins.push(
|
||||
new ObjectMatcherRulePlugin('assert', 'assertions'),
|
||||
new ObjectMatcherRulePlugin('descriptionData')
|
||||
)
|
||||
} catch (e) {
|
||||
const DescriptionDataMatcherRulePlugin = require('webpack/lib/rules/DescriptionDataMatcherRulePlugin')
|
||||
objectMatcherRulePlugins.push(new DescriptionDataMatcherRulePlugin())
|
||||
}
|
||||
|
||||
const ruleSetCompiler = new RuleSetCompiler([
|
||||
new BasicMatcherRulePlugin('test', 'resource'),
|
||||
new BasicMatcherRulePlugin('mimetype'),
|
||||
new BasicMatcherRulePlugin('dependency'),
|
||||
new BasicMatcherRulePlugin('include', 'resource'),
|
||||
new BasicMatcherRulePlugin('exclude', 'resource', true),
|
||||
new BasicMatcherRulePlugin('conditions'),
|
||||
new BasicMatcherRulePlugin('resource'),
|
||||
new BasicMatcherRulePlugin('resourceQuery'),
|
||||
new BasicMatcherRulePlugin('resourceFragment'),
|
||||
new BasicMatcherRulePlugin('realResource'),
|
||||
new BasicMatcherRulePlugin('issuer'),
|
||||
new BasicMatcherRulePlugin('compiler'),
|
||||
...objectMatcherRulePlugins,
|
||||
new BasicEffectRulePlugin('type'),
|
||||
new BasicEffectRulePlugin('sideEffects'),
|
||||
new BasicEffectRulePlugin('parser'),
|
||||
new BasicEffectRulePlugin('resolve'),
|
||||
new BasicEffectRulePlugin('generator'),
|
||||
new UseEffectRulePlugin()
|
||||
])
|
||||
|
||||
class VueLoaderPlugin {
|
||||
apply(compiler) {
|
||||
const normalModule = compiler.webpack
|
||||
? compiler.webpack.NormalModule
|
||||
: require('webpack/lib/NormalModule')
|
||||
// add NS marker so that the loader can detect and report missing plugin
|
||||
compiler.hooks.compilation.tap(id, (compilation) => {
|
||||
const normalModuleLoader =
|
||||
normalModule.getCompilationHooks(compilation).loader
|
||||
normalModuleLoader.tap(id, (loaderContext) => {
|
||||
loaderContext[NS] = true
|
||||
})
|
||||
})
|
||||
|
||||
const rules = compiler.options.module.rules
|
||||
let rawVueRule
|
||||
let vueRules = []
|
||||
|
||||
for (const rawRule of rules) {
|
||||
// skip rules with 'enforce'. eg. rule for eslint-loader
|
||||
if (rawRule.enforce) {
|
||||
continue
|
||||
}
|
||||
vueRules = match(rawRule, 'foo.vue')
|
||||
if (!vueRules.length) {
|
||||
vueRules = match(rawRule, 'foo.vue.html')
|
||||
}
|
||||
if (vueRules.length > 0) {
|
||||
if (rawRule.oneOf) {
|
||||
throw new Error(
|
||||
`[VueLoaderPlugin Error] vue-loader 15 currently does not support vue rules with oneOf.`
|
||||
)
|
||||
}
|
||||
rawVueRule = rawRule
|
||||
break
|
||||
}
|
||||
}
|
||||
if (!vueRules.length) {
|
||||
throw new Error(
|
||||
`[VueLoaderPlugin Error] No matching rule for .vue files found.\n` +
|
||||
`Make sure there is at least one root-level rule that matches .vue or .vue.html files.`
|
||||
)
|
||||
}
|
||||
|
||||
// get the normalized "use" for vue files
|
||||
const vueUse = vueRules
|
||||
.filter((rule) => rule.type === 'use')
|
||||
.map((rule) => rule.value)
|
||||
|
||||
// get vue-loader options
|
||||
const vueLoaderUseIndex = vueUse.findIndex((u) => {
|
||||
return /^vue-loader|(\/|\\|@)vue-loader/.test(u.loader)
|
||||
})
|
||||
|
||||
if (vueLoaderUseIndex < 0) {
|
||||
throw new Error(
|
||||
`[VueLoaderPlugin Error] No matching use for vue-loader is found.\n` +
|
||||
`Make sure the rule matching .vue files include vue-loader in its use.`
|
||||
)
|
||||
}
|
||||
|
||||
// make sure vue-loader options has a known ident so that we can share
|
||||
// options by reference in the template-loader by using a ref query like
|
||||
// template-loader??vue-loader-options
|
||||
const vueLoaderUse = vueUse[vueLoaderUseIndex]
|
||||
vueLoaderUse.ident = 'vue-loader-options'
|
||||
vueLoaderUse.options = vueLoaderUse.options || {}
|
||||
|
||||
// for each user rule (expect the vue rule), create a cloned rule
|
||||
// that targets the corresponding language blocks in *.vue files.
|
||||
const refs = new Map()
|
||||
const clonedRules = rules
|
||||
.filter((r) => r !== rawVueRule)
|
||||
.map((rawRule) =>
|
||||
cloneRule(rawRule, refs, langBlockRuleCheck, langBlockRuleResource)
|
||||
)
|
||||
|
||||
// fix conflict with config.loader and config.options when using config.use
|
||||
delete rawVueRule.loader
|
||||
delete rawVueRule.options
|
||||
rawVueRule.use = vueUse
|
||||
|
||||
// rule for template compiler
|
||||
const templateCompilerRule = {
|
||||
loader: require.resolve('./loaders/templateLoader'),
|
||||
resourceQuery: (query) => {
|
||||
if (!query) {
|
||||
return false
|
||||
}
|
||||
const parsed = qs.parse(query.slice(1))
|
||||
return parsed.vue != null && parsed.type === 'template'
|
||||
},
|
||||
options: vueLoaderUse.options
|
||||
}
|
||||
|
||||
// for each rule that matches plain .js files, also create a clone and
|
||||
// match it against the compiled template code inside *.vue files, so that
|
||||
// compiled vue render functions receive the same treatment as user code
|
||||
// (mostly babel)
|
||||
const { is27 } = resolveCompiler(compiler.options.context)
|
||||
let jsRulesForRenderFn = []
|
||||
if (is27) {
|
||||
const skipThreadLoader = true
|
||||
jsRulesForRenderFn = rules
|
||||
.filter(
|
||||
(r) =>
|
||||
r !== rawVueRule &&
|
||||
(match(r, 'test.js').length > 0 || match(r, 'test.ts').length > 0)
|
||||
)
|
||||
.map((rawRule) => cloneRule(rawRule, refs, jsRuleCheck, jsRuleResource, skipThreadLoader))
|
||||
}
|
||||
|
||||
// global pitcher (responsible for injecting template compiler loader & CSS
|
||||
// post loader)
|
||||
const pitcher = {
|
||||
loader: require.resolve('./loaders/pitcher'),
|
||||
resourceQuery: (query) => {
|
||||
if (!query) {
|
||||
return false
|
||||
}
|
||||
const parsed = qs.parse(query.slice(1))
|
||||
return parsed.vue != null
|
||||
},
|
||||
options: {
|
||||
cacheDirectory: vueLoaderUse.options.cacheDirectory,
|
||||
cacheIdentifier: vueLoaderUse.options.cacheIdentifier
|
||||
}
|
||||
}
|
||||
|
||||
// replace original rules
|
||||
compiler.options.module.rules = [
|
||||
pitcher,
|
||||
...jsRulesForRenderFn,
|
||||
...(is27 ? [templateCompilerRule] : []),
|
||||
...clonedRules,
|
||||
...rules
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
const matcherCache = new WeakMap()
|
||||
|
||||
function match(rule, fakeFile) {
|
||||
let ruleSet = matcherCache.get(rule)
|
||||
if (!ruleSet) {
|
||||
// skip the `include` check when locating the vue rule
|
||||
const clonedRawRule = { ...rule }
|
||||
delete clonedRawRule.include
|
||||
|
||||
ruleSet = ruleSetCompiler.compile([clonedRawRule])
|
||||
matcherCache.set(rule, ruleSet)
|
||||
}
|
||||
|
||||
return ruleSet.exec({
|
||||
resource: fakeFile
|
||||
})
|
||||
}
|
||||
|
||||
const langBlockRuleCheck = (query, rule) => {
|
||||
return (
|
||||
query.type === 'custom' || !rule.conditions.length || query.lang != null
|
||||
)
|
||||
}
|
||||
|
||||
const langBlockRuleResource = (query, resource) => `${resource}.${query.lang}`
|
||||
|
||||
const jsRuleCheck = (query) => {
|
||||
return query.type === 'template'
|
||||
}
|
||||
|
||||
const jsRuleResource = (query, resource) =>
|
||||
`${resource}.${query.ts ? `ts` : `js`}`
|
||||
|
||||
let uid = 0
|
||||
|
||||
function cloneRule(rawRule, refs, ruleCheck, ruleResource, skipThreadLoader) {
|
||||
const compiledRule = ruleSetCompiler.compileRule(
|
||||
`clonedRuleSet-${++uid}`,
|
||||
rawRule,
|
||||
refs
|
||||
)
|
||||
|
||||
// do not process rule with enforce
|
||||
if (!rawRule.enforce) {
|
||||
const ruleUse = compiledRule.effects
|
||||
.filter((effect) => effect.type === 'use')
|
||||
.map((effect) => effect.value)
|
||||
// fix conflict with config.loader and config.options when using config.use
|
||||
delete rawRule.loader
|
||||
delete rawRule.options
|
||||
|
||||
// Filter out `thread-loader` from the `use` array.
|
||||
// Mitigate https://github.com/vuejs/vue/issues/12828
|
||||
// Note this won't work if the `use` filed is a function
|
||||
if (skipThreadLoader && Array.isArray(ruleUse)) {
|
||||
const isThreadLoader = (loader) => loader === 'thread-loader' || /\/node_modules\/thread-loader\//.test(loader)
|
||||
rawRule.use = ruleUse.filter(useEntry => {
|
||||
const loader = typeof useEntry === 'string' ? useEntry : useEntry.loader
|
||||
return !isThreadLoader(loader)
|
||||
})
|
||||
} else {
|
||||
rawRule.use = ruleUse
|
||||
}
|
||||
}
|
||||
|
||||
let currentResource
|
||||
const res = {
|
||||
...rawRule,
|
||||
resource: (resources) => {
|
||||
currentResource = resources
|
||||
return true
|
||||
},
|
||||
resourceQuery: (query) => {
|
||||
if (!query) {
|
||||
return false
|
||||
}
|
||||
|
||||
const parsed = qs.parse(query.slice(1))
|
||||
if (parsed.vue == null) {
|
||||
return false
|
||||
}
|
||||
if (!ruleCheck(parsed, compiledRule)) {
|
||||
return false
|
||||
}
|
||||
const fakeResourcePath = ruleResource(parsed, currentResource)
|
||||
for (const condition of compiledRule.conditions) {
|
||||
// add support for resourceQuery
|
||||
const request =
|
||||
condition.property === 'resourceQuery' ? query : fakeResourcePath
|
||||
if (condition && !condition.fn(request)) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
delete res.test
|
||||
|
||||
if (rawRule.rules) {
|
||||
res.rules = rawRule.rules.map((rule) =>
|
||||
cloneRule(rule, refs, ruleCheck, ruleResource)
|
||||
)
|
||||
}
|
||||
|
||||
if (rawRule.oneOf) {
|
||||
res.oneOf = rawRule.oneOf.map((rule) =>
|
||||
cloneRule(rule, refs, ruleCheck, ruleResource)
|
||||
)
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
VueLoaderPlugin.NS = NS
|
||||
module.exports = VueLoaderPlugin
|
12
node_modules/@vue/vue-loader-v15/lib/plugin.js
generated
vendored
Normal file
12
node_modules/@vue/vue-loader-v15/lib/plugin.js
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
const webpack = require('webpack')
|
||||
let VueLoaderPlugin = null
|
||||
|
||||
if (webpack.version && webpack.version[0] > 4) {
|
||||
// webpack5 and upper
|
||||
VueLoaderPlugin = require('./plugin-webpack5')
|
||||
} else {
|
||||
// webpack4 and lower
|
||||
VueLoaderPlugin = require('./plugin-webpack4')
|
||||
}
|
||||
|
||||
module.exports = VueLoaderPlugin
|
51
node_modules/@vue/vue-loader-v15/lib/resolveScript.js
generated
vendored
Normal file
51
node_modules/@vue/vue-loader-v15/lib/resolveScript.js
generated
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
const { resolveCompiler } = require('./compiler')
|
||||
|
||||
const clientCache = new WeakMap()
|
||||
const serverCache = new WeakMap()
|
||||
|
||||
exports.resolveScript = function resolveScript(
|
||||
descriptor,
|
||||
scopeId,
|
||||
options,
|
||||
loaderContext
|
||||
) {
|
||||
if (!descriptor.script && !descriptor.scriptSetup) {
|
||||
return null
|
||||
}
|
||||
|
||||
const { compiler } = resolveCompiler(loaderContext.rootContext, loaderContext)
|
||||
if (!compiler.compileScript) {
|
||||
if (descriptor.scriptSetup) {
|
||||
loaderContext.emitError(
|
||||
'The version of Vue you are using does not support <script setup>. ' +
|
||||
'Please upgrade to 2.7 or above.'
|
||||
)
|
||||
}
|
||||
return descriptor.script
|
||||
}
|
||||
|
||||
const isProd =
|
||||
loaderContext.mode === 'production' || process.env.NODE_ENV === 'production'
|
||||
const isServer = options.optimizeSSR || loaderContext.target === 'node'
|
||||
|
||||
const cacheToUse = isServer ? serverCache : clientCache
|
||||
const cached = cacheToUse.get(descriptor)
|
||||
if (cached) {
|
||||
return cached
|
||||
}
|
||||
|
||||
let resolved = null
|
||||
|
||||
try {
|
||||
resolved = compiler.compileScript(descriptor, {
|
||||
id: scopeId,
|
||||
isProd,
|
||||
babelParserPlugins: options.babelParserPlugins
|
||||
})
|
||||
} catch (e) {
|
||||
loaderContext.emitError(e)
|
||||
}
|
||||
|
||||
cacheToUse.set(descriptor, resolved)
|
||||
return resolved
|
||||
}
|
96
node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js
generated
vendored
Normal file
96
node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js
generated
vendored
Normal file
@ -0,0 +1,96 @@
|
||||
/* globals __VUE_SSR_CONTEXT__ */
|
||||
|
||||
// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
|
||||
// This module is a runtime utility for cleaner component module output and will
|
||||
// be included in the final webpack user bundle.
|
||||
|
||||
export default function normalizeComponent(
|
||||
scriptExports,
|
||||
render,
|
||||
staticRenderFns,
|
||||
functionalTemplate,
|
||||
injectStyles,
|
||||
scopeId,
|
||||
moduleIdentifier /* server only */,
|
||||
shadowMode /* vue-cli only */
|
||||
) {
|
||||
// Vue.extend constructor export interop
|
||||
var options =
|
||||
typeof scriptExports === 'function' ? scriptExports.options : scriptExports
|
||||
|
||||
// render functions
|
||||
if (render) {
|
||||
options.render = render
|
||||
options.staticRenderFns = staticRenderFns
|
||||
options._compiled = true
|
||||
}
|
||||
|
||||
// functional template
|
||||
if (functionalTemplate) {
|
||||
options.functional = true
|
||||
}
|
||||
|
||||
// scopedId
|
||||
if (scopeId) {
|
||||
options._scopeId = 'data-v-' + scopeId
|
||||
}
|
||||
|
||||
var hook
|
||||
if (moduleIdentifier) {
|
||||
// server build
|
||||
hook = function (context) {
|
||||
// 2.3 injection
|
||||
context =
|
||||
context || // cached call
|
||||
(this.$vnode && this.$vnode.ssrContext) || // stateful
|
||||
(this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
|
||||
// 2.2 with runInNewContext: true
|
||||
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
|
||||
context = __VUE_SSR_CONTEXT__
|
||||
}
|
||||
// inject component styles
|
||||
if (injectStyles) {
|
||||
injectStyles.call(this, context)
|
||||
}
|
||||
// register component module identifier for async chunk inferrence
|
||||
if (context && context._registeredComponents) {
|
||||
context._registeredComponents.add(moduleIdentifier)
|
||||
}
|
||||
}
|
||||
// used by ssr in case component is cached and beforeCreate
|
||||
// never gets called
|
||||
options._ssrRegister = hook
|
||||
} else if (injectStyles) {
|
||||
hook = shadowMode
|
||||
? function () {
|
||||
injectStyles.call(
|
||||
this,
|
||||
(options.functional ? this.parent : this).$root.$options.shadowRoot
|
||||
)
|
||||
}
|
||||
: injectStyles
|
||||
}
|
||||
|
||||
if (hook) {
|
||||
if (options.functional) {
|
||||
// for template-only hot-reload because in that case the render fn doesn't
|
||||
// go through the normalizer
|
||||
options._injectStyles = hook
|
||||
// register for functional component in vue file
|
||||
var originalRender = options.render
|
||||
options.render = function renderWithStyleInjection(h, context) {
|
||||
hook.call(context)
|
||||
return originalRender(h, context)
|
||||
}
|
||||
} else {
|
||||
// inject component registration as beforeCreate hook
|
||||
var existing = options.beforeCreate
|
||||
options.beforeCreate = existing ? [].concat(existing, hook) : [hook]
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
exports: scriptExports,
|
||||
options: options
|
||||
}
|
||||
}
|
50
node_modules/@vue/vue-loader-v15/lib/select.js
generated
vendored
Normal file
50
node_modules/@vue/vue-loader-v15/lib/select.js
generated
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
const { resolveScript } = require('./resolveScript')
|
||||
|
||||
module.exports = function selectBlock(
|
||||
descriptor,
|
||||
scopeId,
|
||||
options,
|
||||
loaderContext,
|
||||
query,
|
||||
appendExtension
|
||||
) {
|
||||
// template
|
||||
if (query.type === `template`) {
|
||||
if (appendExtension) {
|
||||
loaderContext.resourcePath += '.' + (descriptor.template.lang || 'html')
|
||||
}
|
||||
loaderContext.callback(
|
||||
null,
|
||||
descriptor.template.content,
|
||||
descriptor.template.map
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
// script
|
||||
if (query.type === `script`) {
|
||||
const script = resolveScript(descriptor, scopeId, options, loaderContext)
|
||||
if (appendExtension) {
|
||||
loaderContext.resourcePath += '.' + (script.lang || 'js')
|
||||
}
|
||||
loaderContext.callback(null, script.content, script.map)
|
||||
return
|
||||
}
|
||||
|
||||
// styles
|
||||
if (query.type === `style` && query.index != null) {
|
||||
const style = descriptor.styles[query.index]
|
||||
if (appendExtension) {
|
||||
loaderContext.resourcePath += '.' + (style.lang || 'css')
|
||||
}
|
||||
loaderContext.callback(null, style.content, style.map)
|
||||
return
|
||||
}
|
||||
|
||||
// custom
|
||||
if (query.type === 'custom' && query.index != null) {
|
||||
const block = descriptor.customBlocks[query.index]
|
||||
loaderContext.callback(null, block.content, block.map)
|
||||
return
|
||||
}
|
||||
}
|
15
node_modules/@vue/vue-loader-v15/node_modules/.bin/json5
generated
vendored
Normal file
15
node_modules/@vue/vue-loader-v15/node_modules/.bin/json5
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
"$basedir/node" "$basedir/../json5/lib/cli.js" "$@"
|
||||
ret=$?
|
||||
else
|
||||
node "$basedir/../json5/lib/cli.js" "$@"
|
||||
ret=$?
|
||||
fi
|
||||
exit $ret
|
17
node_modules/@vue/vue-loader-v15/node_modules/.bin/json5.cmd
generated
vendored
Normal file
17
node_modules/@vue/vue-loader-v15/node_modules/.bin/json5.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
"%_prog%" "%dp0%\..\json5\lib\cli.js" %*
|
||||
ENDLOCAL
|
||||
EXIT /b %errorlevel%
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
18
node_modules/@vue/vue-loader-v15/node_modules/.bin/json5.ps1
generated
vendored
Normal file
18
node_modules/@vue/vue-loader-v15/node_modules/.bin/json5.ps1
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
& "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
& "node$exe" "$basedir/../json5/lib/cli.js" $args
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
15
node_modules/@vue/vue-loader-v15/node_modules/.bin/webpack
generated
vendored
Normal file
15
node_modules/@vue/vue-loader-v15/node_modules/.bin/webpack
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
"$basedir/node" "$basedir/../../../../webpack/bin/webpack.js" "$@"
|
||||
ret=$?
|
||||
else
|
||||
node "$basedir/../../../../webpack/bin/webpack.js" "$@"
|
||||
ret=$?
|
||||
fi
|
||||
exit $ret
|
7
node_modules/@vue/vue-loader-v15/node_modules/.bin/webpack.cmd
generated
vendored
Normal file
7
node_modules/@vue/vue-loader-v15/node_modules/.bin/webpack.cmd
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
@IF EXIST "%~dp0\node.exe" (
|
||||
"%~dp0\node.exe" "%~dp0\..\..\..\..\webpack\bin\webpack.js" %*
|
||||
) ELSE (
|
||||
@SETLOCAL
|
||||
@SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
node "%~dp0\..\..\..\..\webpack\bin\webpack.js" %*
|
||||
)
|
13
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/.editorconfig
generated
vendored
Normal file
13
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/.editorconfig
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
# editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
1
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/.jshintignore
generated
vendored
Normal file
1
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/.jshintignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
node_modules
|
21
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/.jshintrc
generated
vendored
Normal file
21
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/.jshintrc
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"curly": true,
|
||||
"eqeqeq": true,
|
||||
"newcap": true,
|
||||
"noarg": true,
|
||||
"noempty": true,
|
||||
"nonew": true,
|
||||
"sub": true,
|
||||
"validthis": true,
|
||||
"undef": true,
|
||||
"trailing": true,
|
||||
"boss": true,
|
||||
"eqnull": true,
|
||||
"strict": true,
|
||||
"immed": true,
|
||||
"expr": true,
|
||||
"latedef": "nofunc",
|
||||
"quotmark": "single",
|
||||
"indent": 2,
|
||||
"node": true
|
||||
}
|
2
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/.npmignore
generated
vendored
Normal file
2
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/.npmignore
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
node_modules
|
||||
npm-debug.log
|
11
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/changelog.markdown
generated
vendored
Normal file
11
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/changelog.markdown
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
# 1.0.2 Quick Sort
|
||||
|
||||
- Sorts object keys so that property order doesn't affect outcome
|
||||
|
||||
# 1.0.1 Perfect Circle
|
||||
|
||||
- Guard against circular references
|
||||
|
||||
# 1.0.0 IPO
|
||||
|
||||
- Initial Public Release
|
58
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/hash-sum.js
generated
vendored
Normal file
58
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/hash-sum.js
generated
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
'use strict';
|
||||
|
||||
function pad (hash, len) {
|
||||
while (hash.length < len) {
|
||||
hash = '0' + hash;
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
function fold (hash, text) {
|
||||
var i;
|
||||
var chr;
|
||||
var len;
|
||||
if (text.length === 0) {
|
||||
return hash;
|
||||
}
|
||||
for (i = 0, len = text.length; i < len; i++) {
|
||||
chr = text.charCodeAt(i);
|
||||
hash = ((hash << 5) - hash) + chr;
|
||||
hash |= 0;
|
||||
}
|
||||
return hash < 0 ? hash * -2 : hash;
|
||||
}
|
||||
|
||||
function foldObject (hash, o, seen) {
|
||||
return Object.keys(o).sort().reduce(foldKey, hash);
|
||||
function foldKey (hash, key) {
|
||||
return foldValue(hash, o[key], key, seen);
|
||||
}
|
||||
}
|
||||
|
||||
function foldValue (input, value, key, seen) {
|
||||
var hash = fold(fold(fold(input, key), toString(value)), typeof value);
|
||||
if (value === null) {
|
||||
return fold(hash, 'null');
|
||||
}
|
||||
if (value === undefined) {
|
||||
return fold(hash, 'undefined');
|
||||
}
|
||||
if (typeof value === 'object') {
|
||||
if (seen.indexOf(value) !== -1) {
|
||||
return fold(hash, '[Circular]' + key);
|
||||
}
|
||||
seen.push(value);
|
||||
return foldObject(hash, value, seen);
|
||||
}
|
||||
return fold(hash, value.toString());
|
||||
}
|
||||
|
||||
function toString (o) {
|
||||
return Object.prototype.toString.call(o);
|
||||
}
|
||||
|
||||
function sum (o) {
|
||||
return pad(foldValue(0, o, '', []).toString(16), 8);
|
||||
}
|
||||
|
||||
module.exports = sum;
|
20
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/license
generated
vendored
Normal file
20
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/license
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright © 2014 Nicolas Bevacqua
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
52
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/package.json
generated
vendored
Normal file
52
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/package.json
generated
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"_from": "hash-sum@^1.0.2",
|
||||
"_id": "hash-sum@1.0.2",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
|
||||
"_location": "/@vue/vue-loader-v15/hash-sum",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "hash-sum@^1.0.2",
|
||||
"name": "hash-sum",
|
||||
"escapedName": "hash-sum",
|
||||
"rawSpec": "^1.0.2",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^1.0.2"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/@vue/vue-loader-v15"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
|
||||
"_shasum": "33b40777754c6432573c120cc3808bbd10d47f04",
|
||||
"_spec": "hash-sum@^1.0.2",
|
||||
"_where": "C:\\Users\\zhouxueli\\Desktop\\scheduling-app\\node_modules\\@vue\\vue-loader-v15",
|
||||
"authors": [
|
||||
"Nicolas Bevacqua <nicolasbevacqua@gmail.com>"
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/bevacqua/hash-sum/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {},
|
||||
"deprecated": false,
|
||||
"description": "Blazing fast unique hash generator",
|
||||
"devDependencies": {
|
||||
"jshint": "2.5.0",
|
||||
"jshint-stylish": "0.2.0",
|
||||
"tape": "3.0.3"
|
||||
},
|
||||
"homepage": "https://github.com/bevacqua/hash-sum",
|
||||
"license": "MIT",
|
||||
"main": "hash-sum.js",
|
||||
"name": "hash-sum",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/bevacqua/hash-sum.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "jshint . && tape test.js"
|
||||
},
|
||||
"version": "1.0.2"
|
||||
}
|
67
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/readme.md
generated
vendored
Normal file
67
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/readme.md
generated
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
# hash-sum
|
||||
|
||||
> blazing fast unique hash generator
|
||||
|
||||
# install
|
||||
|
||||
```shell
|
||||
npm i hash-sum -S
|
||||
```
|
||||
|
||||
# features
|
||||
|
||||
- no dependencies
|
||||
- minimal footprint
|
||||
- works in all of node.js, io.js, and the browser
|
||||
- hashes functions based on their source code
|
||||
- produces different hashes for different object types
|
||||
- support for circular references in objects
|
||||
- ignores property assignment order
|
||||
|
||||
# `sum(value)`
|
||||
|
||||
yields a four-byte hexadecimal hash based off of `value`.
|
||||
|
||||
```
|
||||
# creates unique hashes
|
||||
creates unique hashes
|
||||
4d237d49 from: [ 0, 1, 2, 3 ]
|
||||
766ec173 from: { url: 12 }
|
||||
2f473108 from: { headers: 12 }
|
||||
23308836 from: { headers: 122 }
|
||||
062bce44 from: { headers: '122' }
|
||||
acb9f66e from: { headers: { accept: 'text/plain' } }
|
||||
1c365a2d from: { payload: [ 0, 1, 2, 3 ], headers: [ { a: 'b' } ] }
|
||||
7319ae9d from: { a: [Function] }
|
||||
8a3a0e86 from: { b: [Function] }
|
||||
b6d7f5d4 from: { b: [Function] }
|
||||
6c95fc65 from: function () {}
|
||||
2941766e from: function (a) {}
|
||||
294f8def from: function (b) {}
|
||||
2d9c0cb8 from: function (a) { return a;}
|
||||
ed5c63fc from: function (a) {return a;}
|
||||
bba68bf6 from: ''
|
||||
2d27667d from: 'null'
|
||||
774b96ed from: 'false'
|
||||
2d2a1684 from: 'true'
|
||||
8daa1a0c from: '0'
|
||||
8daa1a0a from: '1'
|
||||
e38f07cc from: 'void 0'
|
||||
6037ea1a from: 'undefined'
|
||||
9b7df12e from: null
|
||||
3c206f76 from: false
|
||||
01e34ba8 from: true
|
||||
1a96284a from: 0
|
||||
1a96284b from: 1
|
||||
29172c1a from: undefined
|
||||
4505230f from: {}
|
||||
3718c6e8 from: { a: {}, b: {} }
|
||||
5d844489 from: []
|
||||
938eaaf0 from: Tue Jul 14 2015 15:35:36 GMT-0300 (ART)
|
||||
dfe5fb2e from: global
|
||||
ok 1 should be equal
|
||||
```
|
||||
|
||||
# license
|
||||
|
||||
MIT
|
61
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/test.js
generated
vendored
Normal file
61
node_modules/@vue/vue-loader-v15/node_modules/hash-sum/test.js
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
'use strict';
|
||||
|
||||
var _ = require('lodash');
|
||||
var test = require('tape');
|
||||
var sum = require('./');
|
||||
|
||||
test('creates unique hashes', function (t) {
|
||||
var results = [];
|
||||
sub([0,1,2,3]);
|
||||
sub({url:12});
|
||||
sub({headers:12});
|
||||
sub({headers:122});
|
||||
sub({headers:'122'});
|
||||
sub({headers:{accept:'text/plain'}});
|
||||
sub({payload:[0,1,2,3],headers:[{a:'b'}]});
|
||||
sub({a:function () {}});
|
||||
sub({b:function () {}});
|
||||
sub({b:function (a) {}});
|
||||
sub(function () {});
|
||||
sub(function (a) {});
|
||||
sub(function (b) {});
|
||||
sub(function (a) { return a;});
|
||||
sub(function (a) {return a;});
|
||||
sub('');
|
||||
sub('null');
|
||||
sub('false');
|
||||
sub('true');
|
||||
sub('0');
|
||||
sub('1');
|
||||
sub('void 0');
|
||||
sub('undefined');
|
||||
sub(null);
|
||||
sub(false);
|
||||
sub(true);
|
||||
sub(0);
|
||||
sub(1);
|
||||
sub(void 0);
|
||||
sub({});
|
||||
sub({a:{},b:{}});
|
||||
sub([]);
|
||||
sub(new Date());
|
||||
sub(global, 'global');
|
||||
t.equal(results.length, _.uniq(results).length);
|
||||
t.end();
|
||||
|
||||
function sub (value, name) {
|
||||
var hash = sum(value);
|
||||
results.push(hash);
|
||||
console.log('%s from:', hash, name || value);
|
||||
}
|
||||
});
|
||||
|
||||
test('hashes clash if same properties', function (t) {
|
||||
equals({a:'1'},{a:'1'});
|
||||
equals({a:'1',b:1},{b:1,a:'1'});
|
||||
t.end();
|
||||
|
||||
function equals (a, b) {
|
||||
t.equal(sum(a), sum(b));
|
||||
}
|
||||
});
|
23
node_modules/@vue/vue-loader-v15/node_modules/json5/LICENSE.md
generated
vendored
Normal file
23
node_modules/@vue/vue-loader-v15/node_modules/json5/LICENSE.md
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2012-2018 Aseem Kishore, and [others].
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
[others]: https://github.com/json5/json5/contributors
|
234
node_modules/@vue/vue-loader-v15/node_modules/json5/README.md
generated
vendored
Normal file
234
node_modules/@vue/vue-loader-v15/node_modules/json5/README.md
generated
vendored
Normal file
@ -0,0 +1,234 @@
|
||||
# JSON5 – JSON for Humans
|
||||
|
||||
[][Build Status]
|
||||
[][Coverage
|
||||
Status]
|
||||
|
||||
The JSON5 Data Interchange Format (JSON5) is a superset of [JSON] that aims to
|
||||
alleviate some of the limitations of JSON by expanding its syntax to include
|
||||
some productions from [ECMAScript 5.1].
|
||||
|
||||
This JavaScript library is the official reference implementation for JSON5
|
||||
parsing and serialization libraries.
|
||||
|
||||
[Build Status]: https://travis-ci.org/json5/json5
|
||||
|
||||
[Coverage Status]: https://coveralls.io/github/json5/json5
|
||||
|
||||
[JSON]: https://tools.ietf.org/html/rfc7159
|
||||
|
||||
[ECMAScript 5.1]: https://www.ecma-international.org/ecma-262/5.1/
|
||||
|
||||
## Summary of Features
|
||||
The following ECMAScript 5.1 features, which are not supported in JSON, have
|
||||
been extended to JSON5.
|
||||
|
||||
### Objects
|
||||
- Object keys may be an ECMAScript 5.1 _[IdentifierName]_.
|
||||
- Objects may have a single trailing comma.
|
||||
|
||||
### Arrays
|
||||
- Arrays may have a single trailing comma.
|
||||
|
||||
### Strings
|
||||
- Strings may be single quoted.
|
||||
- Strings may span multiple lines by escaping new line characters.
|
||||
- Strings may include character escapes.
|
||||
|
||||
### Numbers
|
||||
- Numbers may be hexadecimal.
|
||||
- Numbers may have a leading or trailing decimal point.
|
||||
- Numbers may be [IEEE 754] positive infinity, negative infinity, and NaN.
|
||||
- Numbers may begin with an explicit plus sign.
|
||||
|
||||
### Comments
|
||||
- Single and multi-line comments are allowed.
|
||||
|
||||
### White Space
|
||||
- Additional white space characters are allowed.
|
||||
|
||||
[IdentifierName]: https://www.ecma-international.org/ecma-262/5.1/#sec-7.6
|
||||
|
||||
[IEEE 754]: http://ieeexplore.ieee.org/servlet/opac?punumber=4610933
|
||||
|
||||
## Short Example
|
||||
```js
|
||||
{
|
||||
// comments
|
||||
unquoted: 'and you can quote me on that',
|
||||
singleQuotes: 'I can use "double quotes" here',
|
||||
lineBreaks: "Look, Mom! \
|
||||
No \\n's!",
|
||||
hexadecimal: 0xdecaf,
|
||||
leadingDecimalPoint: .8675309, andTrailing: 8675309.,
|
||||
positiveSign: +1,
|
||||
trailingComma: 'in objects', andIn: ['arrays',],
|
||||
"backwardsCompatible": "with JSON",
|
||||
}
|
||||
```
|
||||
|
||||
## Specification
|
||||
For a detailed explanation of the JSON5 format, please read the [official
|
||||
specification](https://json5.github.io/json5-spec/).
|
||||
|
||||
## Installation
|
||||
### Node.js
|
||||
```sh
|
||||
npm install json5
|
||||
```
|
||||
|
||||
```js
|
||||
const JSON5 = require('json5')
|
||||
```
|
||||
|
||||
### Browsers
|
||||
```html
|
||||
<script src="https://unpkg.com/json5@^1.0.0"></script>
|
||||
```
|
||||
|
||||
This will create a global `JSON5` variable.
|
||||
|
||||
## API
|
||||
The JSON5 API is compatible with the [JSON API].
|
||||
|
||||
[JSON API]:
|
||||
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON
|
||||
|
||||
### JSON5.parse()
|
||||
Parses a JSON5 string, constructing the JavaScript value or object described by
|
||||
the string. An optional reviver function can be provided to perform a
|
||||
transformation on the resulting object before it is returned.
|
||||
|
||||
#### Syntax
|
||||
JSON5.parse(text[, reviver])
|
||||
|
||||
#### Parameters
|
||||
- `text`: The string to parse as JSON5.
|
||||
- `reviver`: If a function, this prescribes how the value originally produced by
|
||||
parsing is transformed, before being returned.
|
||||
|
||||
#### Return value
|
||||
The object corresponding to the given JSON5 text.
|
||||
|
||||
### JSON5.stringify()
|
||||
Converts a JavaScript value to a JSON5 string, optionally replacing values if a
|
||||
replacer function is specified, or optionally including only the specified
|
||||
properties if a replacer array is specified.
|
||||
|
||||
#### Syntax
|
||||
JSON5.stringify(value[, replacer[, space]])
|
||||
JSON5.stringify(value[, options])
|
||||
|
||||
#### Parameters
|
||||
- `value`: The value to convert to a JSON5 string.
|
||||
- `replacer`: A function that alters the behavior of the stringification
|
||||
process, or an array of String and Number objects that serve as a whitelist
|
||||
for selecting/filtering the properties of the value object to be included in
|
||||
the JSON5 string. If this value is null or not provided, all properties of the
|
||||
object are included in the resulting JSON5 string.
|
||||
- `space`: A String or Number object that's used to insert white space into the
|
||||
output JSON5 string for readability purposes. If this is a Number, it
|
||||
indicates the number of space characters to use as white space; this number is
|
||||
capped at 10 (if it is greater, the value is just 10). Values less than 1
|
||||
indicate that no space should be used. If this is a String, the string (or the
|
||||
first 10 characters of the string, if it's longer than that) is used as white
|
||||
space. If this parameter is not provided (or is null), no white space is used.
|
||||
If white space is used, trailing commas will be used in objects and arrays.
|
||||
- `options`: An object with the following properties:
|
||||
- `replacer`: Same as the `replacer` parameter.
|
||||
- `space`: Same as the `space` parameter.
|
||||
- `quote`: A String representing the quote character to use when serializing
|
||||
strings.
|
||||
|
||||
#### Return value
|
||||
A JSON5 string representing the value.
|
||||
|
||||
### Node.js `require()` JSON5 files
|
||||
When using Node.js, you can `require()` JSON5 files by adding the following
|
||||
statement.
|
||||
|
||||
```js
|
||||
require('json5/lib/register')
|
||||
```
|
||||
|
||||
Then you can load a JSON5 file with a Node.js `require()` statement. For
|
||||
example:
|
||||
|
||||
```js
|
||||
const config = require('./config.json5')
|
||||
```
|
||||
|
||||
## CLI
|
||||
Since JSON is more widely used than JSON5, this package includes a CLI for
|
||||
converting JSON5 to JSON and for validating the syntax of JSON5 documents.
|
||||
|
||||
### Installation
|
||||
```sh
|
||||
npm install --global json5
|
||||
```
|
||||
|
||||
### Usage
|
||||
```sh
|
||||
json5 [options] <file>
|
||||
```
|
||||
|
||||
If `<file>` is not provided, then STDIN is used.
|
||||
|
||||
#### Options:
|
||||
- `-s`, `--space`: The number of spaces to indent or `t` for tabs
|
||||
- `-o`, `--out-file [file]`: Output to the specified file, otherwise STDOUT
|
||||
- `-v`, `--validate`: Validate JSON5 but do not output JSON
|
||||
- `-V`, `--version`: Output the version number
|
||||
- `-h`, `--help`: Output usage information
|
||||
|
||||
## Contibuting
|
||||
### Development
|
||||
```sh
|
||||
git clone https://github.com/json5/json5
|
||||
cd json5
|
||||
npm install
|
||||
```
|
||||
|
||||
When contributing code, please write relevant tests and run `npm test` and `npm
|
||||
run lint` before submitting pull requests. Please use an editor that supports
|
||||
[EditorConfig](http://editorconfig.org/).
|
||||
|
||||
### Issues
|
||||
To report bugs or request features regarding the JSON5 data format, please
|
||||
submit an issue to the [official specification
|
||||
repository](https://github.com/json5/json5-spec).
|
||||
|
||||
To report bugs or request features regarding the JavaScript implentation of
|
||||
JSON5, please submit an issue to this repository.
|
||||
|
||||
## License
|
||||
MIT. See [LICENSE.md](./LICENSE.md) for details.
|
||||
|
||||
## Credits
|
||||
[Assem Kishore](https://github.com/aseemk) founded this project.
|
||||
|
||||
[Michael Bolin](http://bolinfest.com/) independently arrived at and published
|
||||
some of these same ideas with awesome explanations and detail. Recommended
|
||||
reading: [Suggested Improvements to JSON](http://bolinfest.com/essays/json.html)
|
||||
|
||||
[Douglas Crockford](http://www.crockford.com/) of course designed and built
|
||||
JSON, but his state machine diagrams on the [JSON website](http://json.org/), as
|
||||
cheesy as it may sound, gave us motivation and confidence that building a new
|
||||
parser to implement these ideas was within reach! The original
|
||||
implementation of JSON5 was also modeled directly off of Doug’s open-source
|
||||
[json_parse.js] parser. We’re grateful for that clean and well-documented
|
||||
code.
|
||||
|
||||
[json_parse.js]:
|
||||
https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
|
||||
|
||||
[Max Nanasy](https://github.com/MaxNanasy) has been an early and prolific
|
||||
supporter, contributing multiple patches and ideas.
|
||||
|
||||
[Andrew Eisenberg](https://github.com/aeisenberg) contributed the original
|
||||
`stringify` method.
|
||||
|
||||
[Jordan Tucker](https://github.com/jordanbtucker) has aligned JSON5 more closely
|
||||
with ES5, wrote the official JSON5 specification, completely rewrote the
|
||||
codebase from the ground up, and is actively maintaining this project.
|
1
node_modules/@vue/vue-loader-v15/node_modules/json5/dist/index.js
generated
vendored
Normal file
1
node_modules/@vue/vue-loader-v15/node_modules/json5/dist/index.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
2
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/cli.js
generated
vendored
Normal file
2
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/cli.js
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env node
|
||||
'use strict';var _fs=require('fs');var _fs2=_interopRequireDefault(_fs);var _path=require('path');var _path2=_interopRequireDefault(_path);var _minimist=require('minimist');var _minimist2=_interopRequireDefault(_minimist);var _package=require('../package.json');var _package2=_interopRequireDefault(_package);var _=require('./');var _2=_interopRequireDefault(_);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var argv=(0,_minimist2.default)(process.argv.slice(2),{alias:{'convert':'c','space':'s','validate':'v','out-file':'o','version':'V','help':'h'},boolean:['convert','validate','version','help'],string:['space','out-file']});if(argv.version){version()}else if(argv.help){usage()}else{var inFilename=argv._[0];var readStream=void 0;if(inFilename){readStream=_fs2.default.createReadStream(inFilename)}else{readStream=process.stdin}var json5='';readStream.on('data',function(data){json5+=data});readStream.on('end',function(){var space=void 0;if(argv.space==='t'||argv.space==='tab'){space='\t'}else{space=Number(argv.space)}var value=void 0;try{value=_2.default.parse(json5);if(!argv.validate){var json=JSON.stringify(value,null,space);var writeStream=void 0;if(argv.convert&&inFilename&&!argv.o){var parsedFilename=_path2.default.parse(inFilename);var outFilename=_path2.default.format(Object.assign(parsedFilename,{base:_path2.default.basename(parsedFilename.base,parsedFilename.ext)+'.json'}));writeStream=_fs2.default.createWriteStream(outFilename)}else if(argv.o){writeStream=_fs2.default.createWriteStream(argv.o)}else{writeStream=process.stdout}writeStream.write(json)}}catch(err){console.error(err.message);process.exit(1)}})}function version(){console.log(_package2.default.version)}function usage(){console.log('\n Usage: json5 [options] <file>\n\n If <file> is not provided, then STDIN is used.\n\n Options:\n\n -s, --space The number of spaces to indent or \'t\' for tabs\n -o, --out-file [file] Output to the specified file, otherwise STDOUT\n -v, --validate Validate JSON5 but do not output JSON\n -V, --version Output the version number\n -h, --help Output usage information')}
|
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/index.js
generated
vendored
Normal file
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/index.js
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var _parse=require('./parse');var _parse2=_interopRequireDefault(_parse);var _stringify=require('./stringify');var _stringify2=_interopRequireDefault(_stringify);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default={parse:_parse2.default,stringify:_stringify2.default};module.exports=exports['default'];
|
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/parse.js
generated
vendored
Normal file
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/parse.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/register.js
generated
vendored
Normal file
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/register.js
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
'use strict';var _fs=require('fs');var _fs2=_interopRequireDefault(_fs);var _=require('./');var _2=_interopRequireDefault(_);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}require.extensions['.json5']=function(module,filename){var content=_fs2.default.readFileSync(filename,'utf8');try{module.exports=_2.default.parse(content)}catch(err){err.message=filename+': '+err.message;throw err}};
|
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/require.js
generated
vendored
Normal file
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/require.js
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
"use strict";require("./register");console.warn("'json5/require' is deprecated. Please use 'json5/register' instead.");
|
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/stringify.js
generated
vendored
Normal file
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/stringify.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/unicode.js
generated
vendored
Normal file
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/unicode.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/util.js
generated
vendored
Normal file
1
node_modules/@vue/vue-loader-v15/node_modules/json5/lib/util.js
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
'use strict';Object.defineProperty(exports,'__esModule',{value:true});exports.isSpaceSeparator=isSpaceSeparator;exports.isIdStartChar=isIdStartChar;exports.isIdContinueChar=isIdContinueChar;exports.isDigit=isDigit;exports.isHexDigit=isHexDigit;var _unicode=require('../lib/unicode');var unicode=_interopRequireWildcard(_unicode);function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key]}}newObj.default=obj;return newObj}}function isSpaceSeparator(c){return unicode.Space_Separator.test(c)}function isIdStartChar(c){return c>='a'&&c<='z'||c>='A'&&c<='Z'||c==='$'||c==='_'||unicode.ID_Start.test(c)}function isIdContinueChar(c){return c>='a'&&c<='z'||c>='A'&&c<='Z'||c>='0'&&c<='9'||c==='$'||c==='_'||c==='\u200C'||c==='\u200D'||unicode.ID_Continue.test(c)}function isDigit(c){return /[0-9]/.test(c)}function isHexDigit(c){return /[0-9A-Fa-f]/.test(c)}
|
115
node_modules/@vue/vue-loader-v15/node_modules/json5/package.json
generated
vendored
Normal file
115
node_modules/@vue/vue-loader-v15/node_modules/json5/package.json
generated
vendored
Normal file
@ -0,0 +1,115 @@
|
||||
{
|
||||
"_from": "json5@^1.0.1",
|
||||
"_id": "json5@1.0.2",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
|
||||
"_location": "/@vue/vue-loader-v15/json5",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "json5@^1.0.1",
|
||||
"name": "json5",
|
||||
"escapedName": "json5",
|
||||
"rawSpec": "^1.0.1",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^1.0.1"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/@vue/vue-loader-v15/loader-utils"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
|
||||
"_shasum": "63d98d60f21b313b77c4d6da18bfa69d80e1d593",
|
||||
"_spec": "json5@^1.0.1",
|
||||
"_where": "C:\\Users\\zhouxueli\\Desktop\\scheduling-app\\node_modules\\@vue\\vue-loader-v15\\node_modules\\loader-utils",
|
||||
"author": {
|
||||
"name": "Aseem Kishore",
|
||||
"email": "aseem.kishore@gmail.com"
|
||||
},
|
||||
"bin": {
|
||||
"json5": "lib/cli.js"
|
||||
},
|
||||
"browser": "dist/index.js",
|
||||
"bugs": {
|
||||
"url": "https://github.com/json5/json5/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Max Nanasy",
|
||||
"email": "max.nanasy@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Andrew Eisenberg",
|
||||
"email": "andrew@eisenberg.as"
|
||||
},
|
||||
{
|
||||
"name": "Jordan Tucker",
|
||||
"email": "jordanbtucker@gmail.com"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"minimist": "^1.2.0"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "JSON for humans.",
|
||||
"devDependencies": {
|
||||
"babel-cli": "^6.26.0",
|
||||
"babel-core": "^6.26.0",
|
||||
"babel-plugin-add-module-exports": "^0.2.1",
|
||||
"babel-plugin-external-helpers": "^6.22.0",
|
||||
"babel-plugin-istanbul": "^4.1.5",
|
||||
"babel-preset-env": "^1.6.1",
|
||||
"babel-register": "^6.26.0",
|
||||
"babelrc-rollup": "^3.0.0",
|
||||
"coveralls": "^3.0.0",
|
||||
"cross-env": "^5.1.4",
|
||||
"del": "^3.0.0",
|
||||
"eslint": "^4.18.2",
|
||||
"eslint-config-standard": "^11.0.0",
|
||||
"eslint-plugin-import": "^2.9.0",
|
||||
"eslint-plugin-node": "^6.0.1",
|
||||
"eslint-plugin-promise": "^3.7.0",
|
||||
"eslint-plugin-standard": "^3.0.1",
|
||||
"mocha": "^5.0.4",
|
||||
"nyc": "^11.4.1",
|
||||
"regenerate": "^1.3.3",
|
||||
"rollup": "^0.56.5",
|
||||
"rollup-plugin-babel": "^3.0.3",
|
||||
"rollup-plugin-commonjs": "^9.0.0",
|
||||
"rollup-plugin-node-resolve": "^3.2.0",
|
||||
"rollup-plugin-uglify": "^3.0.0",
|
||||
"sinon": "^4.4.2",
|
||||
"unicode-9.0.0": "^0.7.5"
|
||||
},
|
||||
"files": [
|
||||
"lib/",
|
||||
"dist/"
|
||||
],
|
||||
"homepage": "http://json5.org/",
|
||||
"keywords": [
|
||||
"json",
|
||||
"json5",
|
||||
"es5",
|
||||
"es2015",
|
||||
"ecmascript"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "lib/index.js",
|
||||
"name": "json5",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/json5/json5.git"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "babel-node build/build.js && babel src -d lib && rollup -c",
|
||||
"coverage": "nyc report --reporter=text-lcov | coveralls",
|
||||
"lint": "eslint --fix build src",
|
||||
"prepublishOnly": "npm run lint && npm test && npm run production",
|
||||
"pretest": "cross-env NODE_ENV=test npm run build",
|
||||
"preversion": "npm run lint && npm test && npm run production",
|
||||
"production": "cross-env NODE_ENV=production npm run build",
|
||||
"test": "nyc --reporter=html --reporter=text mocha"
|
||||
},
|
||||
"version": "1.0.2"
|
||||
}
|
20
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/LICENSE
generated
vendored
Normal file
20
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/LICENSE
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
Copyright JS Foundation and other contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
275
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/README.md
generated
vendored
Normal file
275
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/README.md
generated
vendored
Normal file
@ -0,0 +1,275 @@
|
||||
# loader-utils
|
||||
|
||||
## Methods
|
||||
|
||||
### `getOptions`
|
||||
|
||||
Recommended way to retrieve the options of a loader invocation:
|
||||
|
||||
```javascript
|
||||
// inside your loader
|
||||
const options = loaderUtils.getOptions(this);
|
||||
```
|
||||
|
||||
1. If `this.query` is a string:
|
||||
- Tries to parse the query string and returns a new object
|
||||
- Throws if it's not a valid query string
|
||||
2. If `this.query` is object-like, it just returns `this.query`
|
||||
3. In any other case, it just returns `null`
|
||||
|
||||
**Please note:** The returned `options` object is *read-only*. It may be re-used across multiple invocations.
|
||||
If you pass it on to another library, make sure to make a *deep copy* of it:
|
||||
|
||||
```javascript
|
||||
const options = Object.assign(
|
||||
{},
|
||||
defaultOptions,
|
||||
loaderUtils.getOptions(this) // it is safe to pass null to Object.assign()
|
||||
);
|
||||
// don't forget nested objects or arrays
|
||||
options.obj = Object.assign({}, options.obj);
|
||||
options.arr = options.arr.slice();
|
||||
someLibrary(options);
|
||||
```
|
||||
|
||||
[clone](https://www.npmjs.com/package/clone) is a good library to make a deep copy of the options.
|
||||
|
||||
#### Options as query strings
|
||||
|
||||
If the loader options have been passed as loader query string (`loader?some¶ms`), the string is parsed by using [`parseQuery`](#parsequery).
|
||||
|
||||
### `parseQuery`
|
||||
|
||||
Parses a passed string (e.g. `loaderContext.resourceQuery`) as a query string, and returns an object.
|
||||
|
||||
``` javascript
|
||||
const params = loaderUtils.parseQuery(this.resourceQuery); // resource: `file?param1=foo`
|
||||
if (params.param1 === "foo") {
|
||||
// do something
|
||||
}
|
||||
```
|
||||
|
||||
The string is parsed like this:
|
||||
|
||||
``` text
|
||||
-> Error
|
||||
? -> {}
|
||||
?flag -> { flag: true }
|
||||
?+flag -> { flag: true }
|
||||
?-flag -> { flag: false }
|
||||
?xyz=test -> { xyz: "test" }
|
||||
?xyz=1 -> { xyz: "1" } // numbers are NOT parsed
|
||||
?xyz[]=a -> { xyz: ["a"] }
|
||||
?flag1&flag2 -> { flag1: true, flag2: true }
|
||||
?+flag1,-flag2 -> { flag1: true, flag2: false }
|
||||
?xyz[]=a,xyz[]=b -> { xyz: ["a", "b"] }
|
||||
?a%2C%26b=c%2C%26d -> { "a,&b": "c,&d" }
|
||||
?{data:{a:1},isJSON5:true} -> { data: { a: 1 }, isJSON5: true }
|
||||
```
|
||||
|
||||
### `stringifyRequest`
|
||||
|
||||
Turns a request into a string that can be used inside `require()` or `import` while avoiding absolute paths.
|
||||
Use it instead of `JSON.stringify(...)` if you're generating code inside a loader.
|
||||
|
||||
**Why is this necessary?** Since webpack calculates the hash before module paths are translated into module ids, we must avoid absolute paths to ensure
|
||||
consistent hashes across different compilations.
|
||||
|
||||
This function:
|
||||
|
||||
- resolves absolute requests into relative requests if the request and the module are on the same hard drive
|
||||
- replaces `\` with `/` if the request and the module are on the same hard drive
|
||||
- won't change the path at all if the request and the module are on different hard drives
|
||||
- applies `JSON.stringify` to the result
|
||||
|
||||
```javascript
|
||||
loaderUtils.stringifyRequest(this, "./test.js");
|
||||
// "\"./test.js\""
|
||||
|
||||
loaderUtils.stringifyRequest(this, ".\\test.js");
|
||||
// "\"./test.js\""
|
||||
|
||||
loaderUtils.stringifyRequest(this, "test");
|
||||
// "\"test\""
|
||||
|
||||
loaderUtils.stringifyRequest(this, "test/lib/index.js");
|
||||
// "\"test/lib/index.js\""
|
||||
|
||||
loaderUtils.stringifyRequest(this, "otherLoader?andConfig!test?someConfig");
|
||||
// "\"otherLoader?andConfig!test?someConfig\""
|
||||
|
||||
loaderUtils.stringifyRequest(this, require.resolve("test"));
|
||||
// "\"../node_modules/some-loader/lib/test.js\""
|
||||
|
||||
loaderUtils.stringifyRequest(this, "C:\\module\\test.js");
|
||||
// "\"../../test.js\"" (on Windows, in case the module and the request are on the same drive)
|
||||
|
||||
loaderUtils.stringifyRequest(this, "C:\\module\\test.js");
|
||||
// "\"C:\\module\\test.js\"" (on Windows, in case the module and the request are on different drives)
|
||||
|
||||
loaderUtils.stringifyRequest(this, "\\\\network-drive\\test.js");
|
||||
// "\"\\\\network-drive\\\\test.js\"" (on Windows, in case the module and the request are on different drives)
|
||||
```
|
||||
|
||||
### `urlToRequest`
|
||||
|
||||
Converts some resource URL to a webpack module request.
|
||||
|
||||
> i Before call `urlToRequest` you need call `isUrlRequest` to ensure it is requestable url
|
||||
|
||||
```javascript
|
||||
const url = "path/to/module.js";
|
||||
|
||||
if (loaderUtils.isUrlRequest(url)) {
|
||||
// Logic for requestable url
|
||||
const request = loaderUtils.urlToRequest(url);
|
||||
} else {
|
||||
// Logic for not requestable url
|
||||
}
|
||||
```
|
||||
|
||||
Simple example:
|
||||
|
||||
```javascript
|
||||
const url = "path/to/module.js";
|
||||
const request = loaderUtils.urlToRequest(url); // "./path/to/module.js"
|
||||
```
|
||||
|
||||
#### Module URLs
|
||||
|
||||
Any URL containing a `~` will be interpreted as a module request. Anything after the `~` will be considered the request path.
|
||||
|
||||
```javascript
|
||||
const url = "~path/to/module.js";
|
||||
const request = loaderUtils.urlToRequest(url); // "path/to/module.js"
|
||||
```
|
||||
|
||||
#### Root-relative URLs
|
||||
|
||||
URLs that are root-relative (start with `/`) can be resolved relative to some arbitrary path by using the `root` parameter:
|
||||
|
||||
```javascript
|
||||
const url = "/path/to/module.js";
|
||||
const root = "./root";
|
||||
const request = loaderUtils.urlToRequest(url, root); // "./root/path/to/module.js"
|
||||
```
|
||||
|
||||
To convert a root-relative URL into a module URL, specify a `root` value that starts with `~`:
|
||||
|
||||
```javascript
|
||||
const url = "/path/to/module.js";
|
||||
const root = "~";
|
||||
const request = loaderUtils.urlToRequest(url, root); // "path/to/module.js"
|
||||
```
|
||||
|
||||
### `interpolateName`
|
||||
|
||||
Interpolates a filename template using multiple placeholders and/or a regular expression.
|
||||
The template and regular expression are set as query params called `name` and `regExp` on the current loader's context.
|
||||
|
||||
```javascript
|
||||
const interpolatedName = loaderUtils.interpolateName(loaderContext, name, options);
|
||||
```
|
||||
|
||||
The following tokens are replaced in the `name` parameter:
|
||||
|
||||
* `[ext]` the extension of the resource
|
||||
* `[name]` the basename of the resource
|
||||
* `[path]` the path of the resource relative to the `context` query parameter or option.
|
||||
* `[folder]` the folder the resource is in
|
||||
* `[query]` the queryof the resource, i.e. `?foo=bar`
|
||||
* `[emoji]` a random emoji representation of `options.content`
|
||||
* `[emoji:<length>]` same as above, but with a customizable number of emojis
|
||||
* `[contenthash]` the hash of `options.content` (Buffer) (by default it's the hex digest of the md5 hash)
|
||||
* `[<hashType>:contenthash:<digestType>:<length>]` optionally one can configure
|
||||
* other `hashType`s, i. e. `sha1`, `md5`, `sha256`, `sha512`
|
||||
* other `digestType`s, i. e. `hex`, `base26`, `base32`, `base36`, `base49`, `base52`, `base58`, `base62`, `base64`
|
||||
* and `length` the length in chars
|
||||
* `[hash]` the hash of `options.content` (Buffer) (by default it's the hex digest of the md5 hash)
|
||||
* `[<hashType>:hash:<digestType>:<length>]` optionally one can configure
|
||||
* other `hashType`s, i. e. `sha1`, `md5`, `sha256`, `sha512`
|
||||
* other `digestType`s, i. e. `hex`, `base26`, `base32`, `base36`, `base49`, `base52`, `base58`, `base62`, `base64`
|
||||
* and `length` the length in chars
|
||||
* `[N]` the N-th match obtained from matching the current file name against `options.regExp`
|
||||
|
||||
In loader context `[hash]` and `[contenthash]` are the same, but we recommend using `[contenthash]` for avoid misleading.
|
||||
|
||||
Examples
|
||||
|
||||
``` javascript
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/js/javascript.js"
|
||||
loaderUtils.interpolateName(loaderContext, "js/[hash].script.[ext]", { content: ... });
|
||||
// => js/9473fdd0d880a43c21b7778d34872157.script.js
|
||||
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/js/javascript.js"
|
||||
// loaderContext.resourceQuery = "?foo=bar"
|
||||
loaderUtils.interpolateName(loaderContext, "js/[hash].script.[ext][query]", { content: ... });
|
||||
// => js/9473fdd0d880a43c21b7778d34872157.script.js?foo=bar
|
||||
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/js/javascript.js"
|
||||
loaderUtils.interpolateName(loaderContext, "js/[contenthash].script.[ext]", { content: ... });
|
||||
// => js/9473fdd0d880a43c21b7778d34872157.script.js
|
||||
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/page.html"
|
||||
loaderUtils.interpolateName(loaderContext, "html-[hash:6].html", { content: ... });
|
||||
// => html-9473fd.html
|
||||
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/flash.txt"
|
||||
loaderUtils.interpolateName(loaderContext, "[hash]", { content: ... });
|
||||
// => c31e9820c001c9c4a86bce33ce43b679
|
||||
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/img/image.gif"
|
||||
loaderUtils.interpolateName(loaderContext, "[emoji]", { content: ... });
|
||||
// => 👍
|
||||
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/img/image.gif"
|
||||
loaderUtils.interpolateName(loaderContext, "[emoji:4]", { content: ... });
|
||||
// => 🙍🏢📤🐝
|
||||
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/img/image.png"
|
||||
loaderUtils.interpolateName(loaderContext, "[sha512:hash:base64:7].[ext]", { content: ... });
|
||||
// => 2BKDTjl.png
|
||||
// use sha512 hash instead of md5 and with only 7 chars of base64
|
||||
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/img/myself.png"
|
||||
// loaderContext.query.name =
|
||||
loaderUtils.interpolateName(loaderContext, "picture.png");
|
||||
// => picture.png
|
||||
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/dir/file.png"
|
||||
loaderUtils.interpolateName(loaderContext, "[path][name].[ext]?[hash]", { content: ... });
|
||||
// => /app/dir/file.png?9473fdd0d880a43c21b7778d34872157
|
||||
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/js/page-home.js"
|
||||
loaderUtils.interpolateName(loaderContext, "script-[1].[ext]", { regExp: "page-(.*)\\.js", content: ... });
|
||||
// => script-home.js
|
||||
|
||||
// loaderContext.resourcePath = "/absolute/path/to/app/js/javascript.js"
|
||||
// loaderContext.resourceQuery = "?foo=bar"
|
||||
loaderUtils.interpolateName(
|
||||
loaderContext,
|
||||
(resourcePath, resourceQuery) => {
|
||||
// resourcePath - `/app/js/javascript.js`
|
||||
// resourceQuery - `?foo=bar`
|
||||
|
||||
return "js/[hash].script.[ext]";
|
||||
},
|
||||
{ content: ... }
|
||||
);
|
||||
// => js/9473fdd0d880a43c21b7778d34872157.script.js
|
||||
```
|
||||
|
||||
### `getHashDigest`
|
||||
|
||||
``` javascript
|
||||
const digestString = loaderUtils.getHashDigest(buffer, hashType, digestType, maxLength);
|
||||
```
|
||||
|
||||
* `buffer` the content that should be hashed
|
||||
* `hashType` one of `sha1`, `md5`, `sha256`, `sha512` or any other node.js supported hash type
|
||||
* `digestType` one of `hex`, `base26`, `base32`, `base36`, `base49`, `base52`, `base58`, `base62`, `base64`
|
||||
* `maxLength` the maximum length in chars
|
||||
|
||||
## License
|
||||
|
||||
MIT (http://www.opensource.org/licenses/mit-license.php)
|
16
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/getCurrentRequest.js
generated
vendored
Normal file
16
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/getCurrentRequest.js
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
'use strict';
|
||||
|
||||
function getCurrentRequest(loaderContext) {
|
||||
if (loaderContext.currentRequest) {
|
||||
return loaderContext.currentRequest;
|
||||
}
|
||||
|
||||
const request = loaderContext.loaders
|
||||
.slice(loaderContext.loaderIndex)
|
||||
.map((obj) => obj.request)
|
||||
.concat([loaderContext.resource]);
|
||||
|
||||
return request.join('!');
|
||||
}
|
||||
|
||||
module.exports = getCurrentRequest;
|
69
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/getHashDigest.js
generated
vendored
Normal file
69
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/getHashDigest.js
generated
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
'use strict';
|
||||
|
||||
const baseEncodeTables = {
|
||||
26: 'abcdefghijklmnopqrstuvwxyz',
|
||||
32: '123456789abcdefghjkmnpqrstuvwxyz', // no 0lio
|
||||
36: '0123456789abcdefghijklmnopqrstuvwxyz',
|
||||
49: 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ', // no lIO
|
||||
52: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
|
||||
58: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ', // no 0lIO
|
||||
62: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
|
||||
64: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_',
|
||||
};
|
||||
|
||||
function encodeBufferToBase(buffer, base) {
|
||||
const encodeTable = baseEncodeTables[base];
|
||||
if (!encodeTable) {
|
||||
throw new Error('Unknown encoding base' + base);
|
||||
}
|
||||
|
||||
const readLength = buffer.length;
|
||||
const Big = require('big.js');
|
||||
|
||||
Big.RM = Big.DP = 0;
|
||||
let b = new Big(0);
|
||||
|
||||
for (let i = readLength - 1; i >= 0; i--) {
|
||||
b = b.times(256).plus(buffer[i]);
|
||||
}
|
||||
|
||||
let output = '';
|
||||
while (b.gt(0)) {
|
||||
output = encodeTable[b.mod(base)] + output;
|
||||
b = b.div(base);
|
||||
}
|
||||
|
||||
Big.DP = 20;
|
||||
Big.RM = 1;
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
function getHashDigest(buffer, hashType, digestType, maxLength) {
|
||||
hashType = hashType || 'md5';
|
||||
maxLength = maxLength || 9999;
|
||||
|
||||
const hash = require('crypto').createHash(hashType);
|
||||
|
||||
hash.update(buffer);
|
||||
|
||||
if (
|
||||
digestType === 'base26' ||
|
||||
digestType === 'base32' ||
|
||||
digestType === 'base36' ||
|
||||
digestType === 'base49' ||
|
||||
digestType === 'base52' ||
|
||||
digestType === 'base58' ||
|
||||
digestType === 'base62' ||
|
||||
digestType === 'base64'
|
||||
) {
|
||||
return encodeBufferToBase(hash.digest(), digestType.substr(4)).substr(
|
||||
0,
|
||||
maxLength
|
||||
);
|
||||
} else {
|
||||
return hash.digest(digestType || 'hex').substr(0, maxLength);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = getHashDigest;
|
20
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/getOptions.js
generated
vendored
Normal file
20
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/getOptions.js
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
const parseQuery = require('./parseQuery');
|
||||
|
||||
function getOptions(loaderContext) {
|
||||
const query = loaderContext.query;
|
||||
|
||||
if (typeof query === 'string' && query !== '') {
|
||||
return parseQuery(loaderContext.query);
|
||||
}
|
||||
|
||||
if (!query || typeof query !== 'object') {
|
||||
// Not object-like queries are not supported.
|
||||
return null;
|
||||
}
|
||||
|
||||
return query;
|
||||
}
|
||||
|
||||
module.exports = getOptions;
|
16
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/getRemainingRequest.js
generated
vendored
Normal file
16
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/getRemainingRequest.js
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
'use strict';
|
||||
|
||||
function getRemainingRequest(loaderContext) {
|
||||
if (loaderContext.remainingRequest) {
|
||||
return loaderContext.remainingRequest;
|
||||
}
|
||||
|
||||
const request = loaderContext.loaders
|
||||
.slice(loaderContext.loaderIndex + 1)
|
||||
.map((obj) => obj.request)
|
||||
.concat([loaderContext.resource]);
|
||||
|
||||
return request.join('!');
|
||||
}
|
||||
|
||||
module.exports = getRemainingRequest;
|
23
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/index.js
generated
vendored
Normal file
23
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/index.js
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
|
||||
const getOptions = require('./getOptions');
|
||||
const parseQuery = require('./parseQuery');
|
||||
const stringifyRequest = require('./stringifyRequest');
|
||||
const getRemainingRequest = require('./getRemainingRequest');
|
||||
const getCurrentRequest = require('./getCurrentRequest');
|
||||
const isUrlRequest = require('./isUrlRequest');
|
||||
const urlToRequest = require('./urlToRequest');
|
||||
const parseString = require('./parseString');
|
||||
const getHashDigest = require('./getHashDigest');
|
||||
const interpolateName = require('./interpolateName');
|
||||
|
||||
exports.getOptions = getOptions;
|
||||
exports.parseQuery = parseQuery;
|
||||
exports.stringifyRequest = stringifyRequest;
|
||||
exports.getRemainingRequest = getRemainingRequest;
|
||||
exports.getCurrentRequest = getCurrentRequest;
|
||||
exports.isUrlRequest = isUrlRequest;
|
||||
exports.urlToRequest = urlToRequest;
|
||||
exports.parseString = parseString;
|
||||
exports.getHashDigest = getHashDigest;
|
||||
exports.interpolateName = interpolateName;
|
151
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/interpolateName.js
generated
vendored
Normal file
151
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/interpolateName.js
generated
vendored
Normal file
@ -0,0 +1,151 @@
|
||||
'use strict';
|
||||
|
||||
const path = require('path');
|
||||
const emojisList = require('emojis-list');
|
||||
const getHashDigest = require('./getHashDigest');
|
||||
|
||||
const emojiRegex = /[\uD800-\uDFFF]./;
|
||||
const emojiList = emojisList.filter((emoji) => emojiRegex.test(emoji));
|
||||
const emojiCache = {};
|
||||
|
||||
function encodeStringToEmoji(content, length) {
|
||||
if (emojiCache[content]) {
|
||||
return emojiCache[content];
|
||||
}
|
||||
|
||||
length = length || 1;
|
||||
|
||||
const emojis = [];
|
||||
|
||||
do {
|
||||
if (!emojiList.length) {
|
||||
throw new Error('Ran out of emoji');
|
||||
}
|
||||
|
||||
const index = Math.floor(Math.random() * emojiList.length);
|
||||
|
||||
emojis.push(emojiList[index]);
|
||||
emojiList.splice(index, 1);
|
||||
} while (--length > 0);
|
||||
|
||||
const emojiEncoding = emojis.join('');
|
||||
|
||||
emojiCache[content] = emojiEncoding;
|
||||
|
||||
return emojiEncoding;
|
||||
}
|
||||
|
||||
function interpolateName(loaderContext, name, options) {
|
||||
let filename;
|
||||
|
||||
const hasQuery =
|
||||
loaderContext.resourceQuery && loaderContext.resourceQuery.length > 1;
|
||||
|
||||
if (typeof name === 'function') {
|
||||
filename = name(
|
||||
loaderContext.resourcePath,
|
||||
hasQuery ? loaderContext.resourceQuery : undefined
|
||||
);
|
||||
} else {
|
||||
filename = name || '[hash].[ext]';
|
||||
}
|
||||
|
||||
const context = options.context;
|
||||
const content = options.content;
|
||||
const regExp = options.regExp;
|
||||
|
||||
let ext = 'bin';
|
||||
let basename = 'file';
|
||||
let directory = '';
|
||||
let folder = '';
|
||||
let query = '';
|
||||
|
||||
if (loaderContext.resourcePath) {
|
||||
const parsed = path.parse(loaderContext.resourcePath);
|
||||
let resourcePath = loaderContext.resourcePath;
|
||||
|
||||
if (parsed.ext) {
|
||||
ext = parsed.ext.substr(1);
|
||||
}
|
||||
|
||||
if (parsed.dir) {
|
||||
basename = parsed.name;
|
||||
resourcePath = parsed.dir + path.sep;
|
||||
}
|
||||
|
||||
if (typeof context !== 'undefined') {
|
||||
directory = path
|
||||
.relative(context, resourcePath + '_')
|
||||
.replace(/\\/g, '/')
|
||||
.replace(/\.\.(\/)?/g, '_$1');
|
||||
directory = directory.substr(0, directory.length - 1);
|
||||
} else {
|
||||
directory = resourcePath.replace(/\\/g, '/').replace(/\.\.(\/)?/g, '_$1');
|
||||
}
|
||||
|
||||
if (directory.length === 1) {
|
||||
directory = '';
|
||||
} else if (directory.length > 1) {
|
||||
folder = path.basename(directory);
|
||||
}
|
||||
}
|
||||
|
||||
if (loaderContext.resourceQuery && loaderContext.resourceQuery.length > 1) {
|
||||
query = loaderContext.resourceQuery;
|
||||
|
||||
const hashIdx = query.indexOf('#');
|
||||
|
||||
if (hashIdx >= 0) {
|
||||
query = query.substr(0, hashIdx);
|
||||
}
|
||||
}
|
||||
|
||||
let url = filename;
|
||||
|
||||
if (content) {
|
||||
// Match hash template
|
||||
url = url
|
||||
// `hash` and `contenthash` are same in `loader-utils` context
|
||||
// let's keep `hash` for backward compatibility
|
||||
.replace(
|
||||
/\[(?:([^[:\]]+):)?(?:hash|contenthash)(?::([a-z]+\d*))?(?::(\d+))?\]/gi,
|
||||
(all, hashType, digestType, maxLength) =>
|
||||
getHashDigest(content, hashType, digestType, parseInt(maxLength, 10))
|
||||
)
|
||||
.replace(/\[emoji(?::(\d+))?\]/gi, (all, length) =>
|
||||
encodeStringToEmoji(content, parseInt(length, 10))
|
||||
);
|
||||
}
|
||||
|
||||
url = url
|
||||
.replace(/\[ext\]/gi, () => ext)
|
||||
.replace(/\[name\]/gi, () => basename)
|
||||
.replace(/\[path\]/gi, () => directory)
|
||||
.replace(/\[folder\]/gi, () => folder)
|
||||
.replace(/\[query\]/gi, () => query);
|
||||
|
||||
if (regExp && loaderContext.resourcePath) {
|
||||
const match = loaderContext.resourcePath.match(new RegExp(regExp));
|
||||
|
||||
match &&
|
||||
match.forEach((matched, i) => {
|
||||
url = url.replace(new RegExp('\\[' + i + '\\]', 'ig'), matched);
|
||||
});
|
||||
}
|
||||
|
||||
if (
|
||||
typeof loaderContext.options === 'object' &&
|
||||
typeof loaderContext.options.customInterpolateName === 'function'
|
||||
) {
|
||||
url = loaderContext.options.customInterpolateName.call(
|
||||
loaderContext,
|
||||
url,
|
||||
name,
|
||||
options
|
||||
);
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
module.exports = interpolateName;
|
31
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/isUrlRequest.js
generated
vendored
Normal file
31
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/isUrlRequest.js
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
'use strict';
|
||||
|
||||
const path = require('path');
|
||||
|
||||
function isUrlRequest(url, root) {
|
||||
// An URL is not an request if
|
||||
|
||||
// 1. It's an absolute url and it is not `windows` path like `C:\dir\file`
|
||||
if (/^[a-z][a-z0-9+.-]*:/i.test(url) && !path.win32.isAbsolute(url)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 2. It's a protocol-relative
|
||||
if (/^\/\//.test(url)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 3. It's some kind of url for a template
|
||||
if (/^[{}[\]#*;,'§$%&(=?`´^°<>]/.test(url)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 4. It's also not an request if root isn't set and it's a root-relative url
|
||||
if ((root === undefined || root === false) && /^\//.test(url)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
module.exports = isUrlRequest;
|
68
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/parseQuery.js
generated
vendored
Normal file
68
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/parseQuery.js
generated
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
'use strict';
|
||||
|
||||
const JSON5 = require('json5');
|
||||
|
||||
const specialValues = {
|
||||
null: null,
|
||||
true: true,
|
||||
false: false,
|
||||
};
|
||||
|
||||
function parseQuery(query) {
|
||||
if (query.substr(0, 1) !== '?') {
|
||||
throw new Error(
|
||||
"A valid query string passed to parseQuery should begin with '?'"
|
||||
);
|
||||
}
|
||||
|
||||
query = query.substr(1);
|
||||
|
||||
if (!query) {
|
||||
return {};
|
||||
}
|
||||
|
||||
if (query.substr(0, 1) === '{' && query.substr(-1) === '}') {
|
||||
return JSON5.parse(query);
|
||||
}
|
||||
|
||||
const queryArgs = query.split(/[,&]/g);
|
||||
const result = Object.create(null);
|
||||
|
||||
queryArgs.forEach((arg) => {
|
||||
const idx = arg.indexOf('=');
|
||||
|
||||
if (idx >= 0) {
|
||||
let name = arg.substr(0, idx);
|
||||
let value = decodeURIComponent(arg.substr(idx + 1));
|
||||
|
||||
if (specialValues.hasOwnProperty(value)) {
|
||||
value = specialValues[value];
|
||||
}
|
||||
|
||||
if (name.substr(-2) === '[]') {
|
||||
name = decodeURIComponent(name.substr(0, name.length - 2));
|
||||
|
||||
if (!Array.isArray(result[name])) {
|
||||
result[name] = [];
|
||||
}
|
||||
|
||||
result[name].push(value);
|
||||
} else {
|
||||
name = decodeURIComponent(name);
|
||||
result[name] = value;
|
||||
}
|
||||
} else {
|
||||
if (arg.substr(0, 1) === '-') {
|
||||
result[decodeURIComponent(arg.substr(1))] = false;
|
||||
} else if (arg.substr(0, 1) === '+') {
|
||||
result[decodeURIComponent(arg.substr(1))] = true;
|
||||
} else {
|
||||
result[decodeURIComponent(arg)] = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = parseQuery;
|
23
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/parseString.js
generated
vendored
Normal file
23
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/parseString.js
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
|
||||
function parseString(str) {
|
||||
try {
|
||||
if (str[0] === '"') {
|
||||
return JSON.parse(str);
|
||||
}
|
||||
|
||||
if (str[0] === "'" && str.substr(str.length - 1) === "'") {
|
||||
return parseString(
|
||||
str
|
||||
.replace(/\\.|"/g, (x) => (x === '"' ? '\\"' : x))
|
||||
.replace(/^'|'$/g, '"')
|
||||
);
|
||||
}
|
||||
|
||||
return JSON.parse('"' + str + '"');
|
||||
} catch (e) {
|
||||
return str;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = parseString;
|
51
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/stringifyRequest.js
generated
vendored
Normal file
51
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/stringifyRequest.js
generated
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
'use strict';
|
||||
|
||||
const path = require('path');
|
||||
|
||||
const matchRelativePath = /^\.\.?[/\\]/;
|
||||
|
||||
function isAbsolutePath(str) {
|
||||
return path.posix.isAbsolute(str) || path.win32.isAbsolute(str);
|
||||
}
|
||||
|
||||
function isRelativePath(str) {
|
||||
return matchRelativePath.test(str);
|
||||
}
|
||||
|
||||
function stringifyRequest(loaderContext, request) {
|
||||
const splitted = request.split('!');
|
||||
const context =
|
||||
loaderContext.context ||
|
||||
(loaderContext.options && loaderContext.options.context);
|
||||
|
||||
return JSON.stringify(
|
||||
splitted
|
||||
.map((part) => {
|
||||
// First, separate singlePath from query, because the query might contain paths again
|
||||
const splittedPart = part.match(/^(.*?)(\?.*)/);
|
||||
const query = splittedPart ? splittedPart[2] : '';
|
||||
let singlePath = splittedPart ? splittedPart[1] : part;
|
||||
|
||||
if (isAbsolutePath(singlePath) && context) {
|
||||
singlePath = path.relative(context, singlePath);
|
||||
|
||||
if (isAbsolutePath(singlePath)) {
|
||||
// If singlePath still matches an absolute path, singlePath was on a different drive than context.
|
||||
// In this case, we leave the path platform-specific without replacing any separators.
|
||||
// @see https://github.com/webpack/loader-utils/pull/14
|
||||
return singlePath + query;
|
||||
}
|
||||
|
||||
if (isRelativePath(singlePath) === false) {
|
||||
// Ensure that the relative path starts at least with ./ otherwise it would be a request into the modules directory (like node_modules).
|
||||
singlePath = './' + singlePath;
|
||||
}
|
||||
}
|
||||
|
||||
return singlePath.replace(/\\/g, '/') + query;
|
||||
})
|
||||
.join('!')
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = stringifyRequest;
|
60
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/urlToRequest.js
generated
vendored
Normal file
60
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/lib/urlToRequest.js
generated
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
'use strict';
|
||||
|
||||
// we can't use path.win32.isAbsolute because it also matches paths starting with a forward slash
|
||||
const matchNativeWin32Path = /^[A-Z]:[/\\]|^\\\\/i;
|
||||
|
||||
function urlToRequest(url, root) {
|
||||
// Do not rewrite an empty url
|
||||
if (url === '') {
|
||||
return '';
|
||||
}
|
||||
|
||||
const moduleRequestRegex = /^[^?]*~/;
|
||||
let request;
|
||||
|
||||
if (matchNativeWin32Path.test(url)) {
|
||||
// absolute windows path, keep it
|
||||
request = url;
|
||||
} else if (root !== undefined && root !== false && /^\//.test(url)) {
|
||||
// if root is set and the url is root-relative
|
||||
switch (typeof root) {
|
||||
// 1. root is a string: root is prefixed to the url
|
||||
case 'string':
|
||||
// special case: `~` roots convert to module request
|
||||
if (moduleRequestRegex.test(root)) {
|
||||
request = root.replace(/([^~/])$/, '$1/') + url.slice(1);
|
||||
} else {
|
||||
request = root + url;
|
||||
}
|
||||
break;
|
||||
// 2. root is `true`: absolute paths are allowed
|
||||
// *nix only, windows-style absolute paths are always allowed as they doesn't start with a `/`
|
||||
case 'boolean':
|
||||
request = url;
|
||||
break;
|
||||
default:
|
||||
throw new Error(
|
||||
"Unexpected parameters to loader-utils 'urlToRequest': url = " +
|
||||
url +
|
||||
', root = ' +
|
||||
root +
|
||||
'.'
|
||||
);
|
||||
}
|
||||
} else if (/^\.\.?\//.test(url)) {
|
||||
// A relative url stays
|
||||
request = url;
|
||||
} else {
|
||||
// every other url is threaded like a relative url
|
||||
request = './' + url;
|
||||
}
|
||||
|
||||
// A `~` makes the url an module
|
||||
if (moduleRequestRegex.test(request)) {
|
||||
request = request.replace(moduleRequestRegex, '');
|
||||
}
|
||||
|
||||
return request;
|
||||
}
|
||||
|
||||
module.exports = urlToRequest;
|
70
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/package.json
generated
vendored
Normal file
70
node_modules/@vue/vue-loader-v15/node_modules/loader-utils/package.json
generated
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
{
|
||||
"_from": "loader-utils@^1.1.0",
|
||||
"_id": "loader-utils@1.4.2",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
|
||||
"_location": "/@vue/vue-loader-v15/loader-utils",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "loader-utils@^1.1.0",
|
||||
"name": "loader-utils",
|
||||
"escapedName": "loader-utils",
|
||||
"rawSpec": "^1.1.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^1.1.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/@vue/vue-loader-v15"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
|
||||
"_shasum": "29a957f3a63973883eb684f10ffd3d151fec01a3",
|
||||
"_spec": "loader-utils@^1.1.0",
|
||||
"_where": "C:\\Users\\zhouxueli\\Desktop\\scheduling-app\\node_modules\\@vue\\vue-loader-v15",
|
||||
"author": {
|
||||
"name": "Tobias Koppers @sokra"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/webpack/loader-utils/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {
|
||||
"big.js": "^5.2.2",
|
||||
"emojis-list": "^3.0.0",
|
||||
"json5": "^1.0.1"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "utils for webpack loaders",
|
||||
"devDependencies": {
|
||||
"coveralls": "^3.0.2",
|
||||
"eslint": "^5.11.0",
|
||||
"eslint-plugin-node": "^8.0.0",
|
||||
"eslint-plugin-prettier": "^3.0.0",
|
||||
"jest": "^21.2.1",
|
||||
"prettier": "^1.19.1",
|
||||
"standard-version": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.0.0"
|
||||
},
|
||||
"files": [
|
||||
"lib"
|
||||
],
|
||||
"homepage": "https://github.com/webpack/loader-utils#readme",
|
||||
"license": "MIT",
|
||||
"main": "lib/index.js",
|
||||
"name": "loader-utils",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/webpack/loader-utils.git"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint lib test",
|
||||
"pretest": "yarn lint",
|
||||
"release": "yarn test && standard-version",
|
||||
"test": "jest",
|
||||
"test:ci": "jest --coverage"
|
||||
},
|
||||
"version": "1.4.2"
|
||||
}
|
144
node_modules/@vue/vue-loader-v15/package.json
generated
vendored
Normal file
144
node_modules/@vue/vue-loader-v15/package.json
generated
vendored
Normal file
@ -0,0 +1,144 @@
|
||||
{
|
||||
"_from": "@vue/vue-loader-v15@npm:vue-loader@^15.9.7",
|
||||
"_id": "vue-loader@15.10.1",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==",
|
||||
"_location": "/@vue/vue-loader-v15",
|
||||
"_phantomChildren": {
|
||||
"big.js": "5.2.2",
|
||||
"emojis-list": "3.0.0",
|
||||
"minimist": "1.2.8"
|
||||
},
|
||||
"_requested": {
|
||||
"type": "alias",
|
||||
"registry": true,
|
||||
"raw": "@vue/vue-loader-v15@npm:vue-loader@^15.9.7",
|
||||
"name": "@vue/vue-loader-v15",
|
||||
"escapedName": "@vue%2fvue-loader-v15",
|
||||
"scope": "@vue",
|
||||
"rawSpec": "npm:vue-loader@^15.9.7",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": null,
|
||||
"subSpec": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "vue-loader@^15.9.7",
|
||||
"name": "vue-loader",
|
||||
"escapedName": "vue-loader",
|
||||
"rawSpec": "^15.9.7",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^15.9.7"
|
||||
}
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/@vue/cli-service"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz",
|
||||
"_shasum": "c451c4cd05a911aae7b5dbbbc09fb913fb3cca18",
|
||||
"_spec": "@vue/vue-loader-v15@npm:vue-loader@^15.9.7",
|
||||
"_where": "C:\\Users\\zhouxueli\\Desktop\\scheduling-app\\node_modules\\@vue\\cli-service",
|
||||
"author": {
|
||||
"name": "Evan You"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/vuejs/vue-loader/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {
|
||||
"@vue/component-compiler-utils": "^3.1.0",
|
||||
"hash-sum": "^1.0.2",
|
||||
"loader-utils": "^1.1.0",
|
||||
"vue-hot-reload-api": "^2.3.0",
|
||||
"vue-style-loader": "^4.1.0"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "Vue single-file component loader for Webpack",
|
||||
"devDependencies": {
|
||||
"@types/webpack": "^4.4.27",
|
||||
"babel-core": "^6.26.0",
|
||||
"babel-loader": "^7.1.4",
|
||||
"babel-preset-env": "^1.6.1",
|
||||
"cache-loader": "^2.0.1",
|
||||
"conventional-changelog-cli": "^1.3.22",
|
||||
"css-loader": "^1.0.0",
|
||||
"eslint": "^4.19.0",
|
||||
"eslint-plugin-vue-libs": "^2.1.0",
|
||||
"file-loader": "^1.1.11",
|
||||
"html-webpack-plugin": "^4.0.0",
|
||||
"javascript-stringify": "^1.6.0",
|
||||
"jest": "^23.5.0",
|
||||
"jsdom": "^11.6.2",
|
||||
"json": "^9.0.6",
|
||||
"lint-staged": "^7.0.0",
|
||||
"markdown-loader": "^2.0.2",
|
||||
"memfs": "^3.1.2",
|
||||
"mini-css-extract-plugin": "^0.4.1",
|
||||
"normalize-newline": "^3.0.0",
|
||||
"null-loader": "^0.1.1",
|
||||
"postcss-loader": "^2.1.2",
|
||||
"pug": "^2.0.1",
|
||||
"pug-plain-loader": "^1.0.0",
|
||||
"raw-loader": "^0.5.1",
|
||||
"source-map": "^0.5.0",
|
||||
"stylus": "^0.54.5",
|
||||
"stylus-loader": "^3.0.2",
|
||||
"sugarss": "^1.0.1",
|
||||
"thread-loader": "^3.0.4",
|
||||
"ts-loader": "^4.2.0",
|
||||
"typescript": "^4.8.4",
|
||||
"url-loader": "^1.0.1",
|
||||
"vue": "^2.7.14",
|
||||
"vue-server-renderer": "^2.7.14",
|
||||
"vue-template-compiler": "^2.7.14",
|
||||
"vuepress": "^0.14.2",
|
||||
"vuepress-theme-vue": "^1.1.0",
|
||||
"webpack": "^4.46.0",
|
||||
"webpack-cli": "^3.2.0",
|
||||
"webpack-dev-server": "^3.1.1",
|
||||
"webpack-merge": "^4.1.2",
|
||||
"yorkie": "^1.0.3"
|
||||
},
|
||||
"gitHooks": {
|
||||
"pre-commit": "lint-staged"
|
||||
},
|
||||
"homepage": "https://github.com/vuejs/vue-loader",
|
||||
"license": "MIT",
|
||||
"lint-staged": {
|
||||
"lib/**/*.js": [
|
||||
"eslint --fix",
|
||||
"git add"
|
||||
],
|
||||
"test/**/*.js": [
|
||||
"eslint --fix",
|
||||
"git add"
|
||||
]
|
||||
},
|
||||
"main": "lib/index.js",
|
||||
"name": "vue-loader",
|
||||
"peerDependencies": {
|
||||
"css-loader": "*",
|
||||
"webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"cache-loader": {
|
||||
"optional": true
|
||||
},
|
||||
"vue-template-compiler": {
|
||||
"optional": true
|
||||
}
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/vuejs/vue-loader.git"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "webpack --config example/webpack.config.js --hide-modules",
|
||||
"dev": "webpack-dev-server --config example/webpack.config.js --inline --hot",
|
||||
"docs": "vuepress dev docs",
|
||||
"docs:build": "vuepress build docs",
|
||||
"lint": "eslint lib test --fix",
|
||||
"test": "jest --env node"
|
||||
},
|
||||
"typings": "lib/index.d.ts",
|
||||
"version": "15.10.1"
|
||||
}
|
Reference in New Issue
Block a user