first commit
This commit is contained in:
22
app_vue/node_modules/postcss-svgo/LICENSE-MIT
generated
vendored
Normal file
22
app_vue/node_modules/postcss-svgo/LICENSE-MIT
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
Copyright (c) Ben Briggs <beneb.info@gmail.com> (http://beneb.info)
|
||||
|
||||
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.
|
110
app_vue/node_modules/postcss-svgo/README.md
generated
vendored
Normal file
110
app_vue/node_modules/postcss-svgo/README.md
generated
vendored
Normal file
@ -0,0 +1,110 @@
|
||||
# [postcss][postcss]-svgo
|
||||
|
||||
> Optimise inline SVG with PostCSS.
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
With [npm](https://npmjs.org/package/postcss-svgo) do:
|
||||
|
||||
```
|
||||
npm install postcss-svgo --save
|
||||
```
|
||||
|
||||
|
||||
## Example
|
||||
|
||||
### Input
|
||||
|
||||
```css
|
||||
h1 {
|
||||
background: url('data:image/svg+xml;charset=utf-8,<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"><circle cx="50" cy="50" r="40" fill="yellow" /></svg>');
|
||||
}
|
||||
|
||||
h2 {
|
||||
background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNDAiIGZpbGw9InllbGxvdyIgLz48IS0tdGVzdCBjb21tZW50LS0+PC9zdmc+');
|
||||
}
|
||||
```
|
||||
|
||||
### Output
|
||||
|
||||
```css
|
||||
h1 {
|
||||
background: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="40" fill="%23ff0"/></svg>');
|
||||
}
|
||||
|
||||
h2 {
|
||||
background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjQwIiBmaWxsPSIjZmYwIi8+PC9zdmc+');
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## API
|
||||
|
||||
### `svgo([options])`
|
||||
|
||||
#### options
|
||||
|
||||
##### encode
|
||||
|
||||
Type: `boolean`
|
||||
Default: `undefined`
|
||||
|
||||
If `true`, it will encode URL-unsafe characters such as `<`, `>` and `&`;
|
||||
`false` will decode these characters, and `undefined` will neither encode nor
|
||||
decode the original input. Note that regardless of this setting, `#` will
|
||||
always be URL-encoded.
|
||||
|
||||
##### plugins
|
||||
|
||||
Optionally, you can customise the output by specifying the `plugins` option. You
|
||||
will need to provide the config in comma separated objects, like the example
|
||||
below. Note that you can either disable the plugin by setting it to `false`,
|
||||
or pass different options to change the default behaviour.
|
||||
|
||||
```js
|
||||
var postcss = require('postcss');
|
||||
var svgo = require('postcss-svgo');
|
||||
|
||||
var opts = {
|
||||
plugins: [{
|
||||
removeDoctype: false
|
||||
}, {
|
||||
removeComments: false
|
||||
}, {
|
||||
cleanupNumericValues: {
|
||||
floatPrecision: 2
|
||||
}
|
||||
}, {
|
||||
convertColors: {
|
||||
names2hex: false,
|
||||
rgb2hex: false
|
||||
}
|
||||
}]
|
||||
};
|
||||
|
||||
postcss([ svgo(opts) ]).process(css).then(function (result) {
|
||||
console.log(result.css)
|
||||
});
|
||||
```
|
||||
|
||||
You can view the [full list of plugins here][plugins].
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
See the [PostCSS documentation](https://github.com/postcss/postcss#usage) for
|
||||
examples for your environment.
|
||||
|
||||
|
||||
## Contributors
|
||||
|
||||
See [CONTRIBUTORS.md](https://github.com/cssnano/cssnano/blob/master/CONTRIBUTORS.md).
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Ben Briggs](http://beneb.info)
|
||||
|
||||
[postcss]: https://github.com/postcss/postcss
|
||||
[plugins]: https://github.com/svg/svgo/tree/master/plugins
|
47
app_vue/node_modules/postcss-svgo/package.json
generated
vendored
Normal file
47
app_vue/node_modules/postcss-svgo/package.json
generated
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
{
|
||||
"name": "postcss-svgo",
|
||||
"version": "5.1.0",
|
||||
"description": "Optimise inline SVG with PostCSS.",
|
||||
"main": "src/index.js",
|
||||
"types": "types/index.d.ts",
|
||||
"files": [
|
||||
"LICENSE-MIT",
|
||||
"src",
|
||||
"types"
|
||||
],
|
||||
"keywords": [
|
||||
"css",
|
||||
"minify",
|
||||
"optimise",
|
||||
"postcss",
|
||||
"postcss-plugin",
|
||||
"svg",
|
||||
"svgo"
|
||||
],
|
||||
"license": "MIT",
|
||||
"homepage": "https://github.com/cssnano/cssnano",
|
||||
"author": {
|
||||
"name": "Ben Briggs",
|
||||
"email": "beneb.info@gmail.com",
|
||||
"url": "http://beneb.info"
|
||||
},
|
||||
"repository": "cssnano/cssnano",
|
||||
"dependencies": {
|
||||
"postcss-value-parser": "^4.2.0",
|
||||
"svgo": "^2.7.0"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/cssnano/cssnano/issues"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || >=14.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/svgo": "^2.6.2",
|
||||
"postcss": "^8.2.15"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": "^8.2.15"
|
||||
},
|
||||
"readme": "# [postcss][postcss]-svgo\n\n> Optimise inline SVG with PostCSS.\n\n\n## Install\n\nWith [npm](https://npmjs.org/package/postcss-svgo) do:\n\n```\nnpm install postcss-svgo --save\n```\n\n\n## Example\n\n### Input\n\n```css\nh1 {\n background: url('data:image/svg+xml;charset=utf-8,<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"yellow\" /></svg>');\n}\n\nh2 {\n background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNDAiIGZpbGw9InllbGxvdyIgLz48IS0tdGVzdCBjb21tZW50LS0+PC9zdmc+');\n}\n```\n\n### Output\n\n```css\nh1 {\n background: url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"%23ff0\"/></svg>');\n}\n\nh2 {\n background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjQwIiBmaWxsPSIjZmYwIi8+PC9zdmc+');\n}\n```\n\n\n## API\n\n### `svgo([options])`\n\n#### options\n\n##### encode\n\nType: `boolean`\nDefault: `undefined`\n\nIf `true`, it will encode URL-unsafe characters such as `<`, `>` and `&`;\n`false` will decode these characters, and `undefined` will neither encode nor\ndecode the original input. Note that regardless of this setting, `#` will\nalways be URL-encoded.\n\n##### plugins\n\nOptionally, you can customise the output by specifying the `plugins` option. You\nwill need to provide the config in comma separated objects, like the example\nbelow. Note that you can either disable the plugin by setting it to `false`,\nor pass different options to change the default behaviour.\n\n```js\nvar postcss = require('postcss');\nvar svgo = require('postcss-svgo');\n\nvar opts = {\n plugins: [{\n removeDoctype: false\n }, {\n removeComments: false\n }, {\n cleanupNumericValues: {\n floatPrecision: 2\n }\n }, {\n convertColors: {\n names2hex: false,\n rgb2hex: false\n }\n }]\n};\n\npostcss([ svgo(opts) ]).process(css).then(function (result) {\n console.log(result.css)\n});\n```\n\nYou can view the [full list of plugins here][plugins].\n\n\n## Usage\n\nSee the [PostCSS documentation](https://github.com/postcss/postcss#usage) for\nexamples for your environment.\n\n\n## Contributors\n\nSee [CONTRIBUTORS.md](https://github.com/cssnano/cssnano/blob/master/CONTRIBUTORS.md).\n\n\n## License\n\nMIT © [Ben Briggs](http://beneb.info)\n\n[postcss]: https://github.com/postcss/postcss\n[plugins]: https://github.com/svg/svgo/tree/master/plugins\n"
|
||||
}
|
1
app_vue/node_modules/postcss-svgo/src/globals.d.ts
generated
vendored
Normal file
1
app_vue/node_modules/postcss-svgo/src/globals.d.ts
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
declare var URL: typeof import('url').URL;
|
143
app_vue/node_modules/postcss-svgo/src/index.js
generated
vendored
Normal file
143
app_vue/node_modules/postcss-svgo/src/index.js
generated
vendored
Normal file
@ -0,0 +1,143 @@
|
||||
'use strict';
|
||||
const valueParser = require('postcss-value-parser');
|
||||
const { optimize } = require('svgo');
|
||||
const { encode, decode } = require('./lib/url');
|
||||
|
||||
const PLUGIN = 'postcss-svgo';
|
||||
const dataURI = /data:image\/svg\+xml(;((charset=)?utf-8|base64))?,/i;
|
||||
const dataURIBase64 = /data:image\/svg\+xml;base64,/i;
|
||||
|
||||
// the following regex will globally match:
|
||||
// \b([\w-]+) --> a word (a sequence of one or more [alphanumeric|underscore|dash] characters; followed by
|
||||
// \s*=\s* --> an equal sign character (=) between optional whitespaces; followed by
|
||||
// \\"([\S\s]+?)\\" --> any characters (including whitespaces and newlines) between literal escaped quotes (\")
|
||||
const escapedQuotes = /\b([\w-]+)\s*=\s*\\"([\S\s]+?)\\"/g;
|
||||
|
||||
/**
|
||||
* @param {string} input the SVG string
|
||||
* @param {Options} opts
|
||||
* @return {{result: string, isUriEncoded: boolean}} the minification result
|
||||
*/
|
||||
function minifySVG(input, opts) {
|
||||
let svg = input;
|
||||
let decodedUri, isUriEncoded;
|
||||
try {
|
||||
decodedUri = decode(input);
|
||||
isUriEncoded = decodedUri !== input;
|
||||
} catch (e) {
|
||||
// Swallow exception if we cannot decode the value
|
||||
isUriEncoded = false;
|
||||
}
|
||||
|
||||
if (isUriEncoded) {
|
||||
svg = /** @type {string} */ (decodedUri);
|
||||
}
|
||||
|
||||
if (opts.encode !== undefined) {
|
||||
isUriEncoded = opts.encode;
|
||||
}
|
||||
|
||||
// normalize all escaped quote characters from svg attributes
|
||||
// from <svg attr=\"value\"... /> to <svg attr="value"... />
|
||||
// see: https://github.com/cssnano/cssnano/issues/1194
|
||||
svg = svg.replace(escapedQuotes, '$1="$2"');
|
||||
|
||||
const result = optimize(svg, opts);
|
||||
if (result.error) {
|
||||
throw new Error(result.error);
|
||||
}
|
||||
|
||||
return {
|
||||
result: /** @type {import('svgo').OptimizedSvg}*/ (result).data,
|
||||
isUriEncoded,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {import('postcss').Declaration} decl
|
||||
* @param {Options} opts
|
||||
* @param {import('postcss').Result} postcssResult
|
||||
* @return {void}
|
||||
*/
|
||||
function minify(decl, opts, postcssResult) {
|
||||
const parsed = valueParser(decl.value);
|
||||
|
||||
const minified = parsed.walk((node) => {
|
||||
if (
|
||||
node.type !== 'function' ||
|
||||
node.value.toLowerCase() !== 'url' ||
|
||||
!node.nodes.length
|
||||
) {
|
||||
return;
|
||||
}
|
||||
let { value, quote } = /** @type {valueParser.StringNode} */ (
|
||||
node.nodes[0]
|
||||
);
|
||||
|
||||
let optimizedValue;
|
||||
|
||||
try {
|
||||
if (dataURIBase64.test(value)) {
|
||||
const url = new URL(value);
|
||||
const base64String = `${url.protocol}${url.pathname}`.replace(
|
||||
dataURI,
|
||||
''
|
||||
);
|
||||
const svg = Buffer.from(base64String, 'base64').toString('utf8');
|
||||
const { result } = minifySVG(svg, opts);
|
||||
const data = Buffer.from(result).toString('base64');
|
||||
optimizedValue = 'data:image/svg+xml;base64,' + data + url.hash;
|
||||
} else if (dataURI.test(value)) {
|
||||
const svg = value.replace(dataURI, '');
|
||||
const { result, isUriEncoded } = minifySVG(svg, opts);
|
||||
let data = isUriEncoded ? encode(result) : result;
|
||||
// Should always encode # otherwise we yield a broken SVG
|
||||
// in Firefox (works in Chrome however). See this issue:
|
||||
// https://github.com/cssnano/cssnano/issues/245
|
||||
data = data.replace(/#/g, '%23');
|
||||
optimizedValue = 'data:image/svg+xml;charset=utf-8,' + data;
|
||||
quote = isUriEncoded ? '"' : "'";
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
} catch (error) {
|
||||
decl.warn(postcssResult, `${error}`);
|
||||
return;
|
||||
}
|
||||
node.nodes[0] = Object.assign({}, node.nodes[0], {
|
||||
value: optimizedValue,
|
||||
quote: quote,
|
||||
type: 'string',
|
||||
before: '',
|
||||
after: '',
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
decl.value = minified.toString();
|
||||
}
|
||||
/** @typedef {{encode?: boolean, plugins?: object[]} & import('svgo').OptimizeOptions} Options */
|
||||
/**
|
||||
* @type {import('postcss').PluginCreator<Options>}
|
||||
* @param {Options} opts
|
||||
* @return {import('postcss').Plugin}
|
||||
*/
|
||||
function pluginCreator(opts = {}) {
|
||||
return {
|
||||
postcssPlugin: PLUGIN,
|
||||
|
||||
OnceExit(css, { result }) {
|
||||
css.walkDecls((decl) => {
|
||||
if (!dataURI.test(decl.value)) {
|
||||
return;
|
||||
}
|
||||
|
||||
minify(decl, opts, result);
|
||||
});
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
pluginCreator.postcss = true;
|
||||
module.exports = pluginCreator;
|
18
app_vue/node_modules/postcss-svgo/src/lib/url.js
generated
vendored
Normal file
18
app_vue/node_modules/postcss-svgo/src/lib/url.js
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
/**
|
||||
* @param {string} data
|
||||
* @return {string}
|
||||
*/
|
||||
function encode(data) {
|
||||
return data
|
||||
.replace(/"/g, "'")
|
||||
.replace(/%/g, '%25')
|
||||
.replace(/</g, '%3C')
|
||||
.replace(/>/g, '%3E')
|
||||
.replace(/&/g, '%26')
|
||||
.replace(/#/g, '%23')
|
||||
.replace(/\s+/g, ' ');
|
||||
}
|
||||
|
||||
const decode = decodeURIComponent;
|
||||
module.exports = { encode, decode };
|
17
app_vue/node_modules/postcss-svgo/types/index.d.ts
generated
vendored
Normal file
17
app_vue/node_modules/postcss-svgo/types/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
export = pluginCreator;
|
||||
/** @typedef {{encode?: boolean, plugins?: object[]} & import('svgo').OptimizeOptions} Options */
|
||||
/**
|
||||
* @type {import('postcss').PluginCreator<Options>}
|
||||
* @param {Options} opts
|
||||
* @return {import('postcss').Plugin}
|
||||
*/
|
||||
declare function pluginCreator(opts?: Options): import('postcss').Plugin;
|
||||
declare namespace pluginCreator {
|
||||
export { postcss, Options };
|
||||
}
|
||||
type Options = {
|
||||
encode?: boolean;
|
||||
plugins?: object[];
|
||||
} & import('svgo').OptimizeOptions;
|
||||
declare var postcss: true;
|
||||
import { encode } from "./lib/url";
|
6
app_vue/node_modules/postcss-svgo/types/lib/url.d.ts
generated
vendored
Normal file
6
app_vue/node_modules/postcss-svgo/types/lib/url.d.ts
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* @param {string} data
|
||||
* @return {string}
|
||||
*/
|
||||
export function encode(data: string): string;
|
||||
export const decode: typeof decodeURIComponent;
|
Reference in New Issue
Block a user