This commit is contained in:
2024-03-22 03:47:51 +05:30
parent 8bcf3d211e
commit 89819f6fe2
28440 changed files with 3211033 additions and 2 deletions

46
node_modules/svg-parser/CHANGELOG.md generated vendored Normal file
View File

@@ -0,0 +1,46 @@
# svg-parser changelog
## 2.0.3
* Fix reported error location ([#9](https://github.com/Rich-Harris/svg-parser/issues/9))
## 2.0.2
* Allow underscores in attribute names ([#4](https://github.com/Rich-Harris/svg-parser/issues/4))
## 2.0.1
* Fix empty/space attributes
## 2.0.0
* Migrate to HAST
## 1.0.6
* Remove unused dependency
## 1.0.5
* Handle doctype and CDATA
## 1.0.4
* Handle unexpected end of input
## 1.0.3
* Prevent infinite loops on bad final closing tag
## 1.0.2
* Prevent `""=true` attributes
## 1.0.1
* Allow attributes with numbers (e.g. `x1`)
* Fix error messages
## 1.0.0
* First release

41
node_modules/svg-parser/README.md generated vendored Normal file
View File

@@ -0,0 +1,41 @@
# svg-parser
Take a string representing an SVG document or fragment, turn it into [HAST](https://github.com/syntax-tree/hast) JavaScript object.
## Installation
`npm install svg-parser`, or grab it from [npmcdn.com/svg-parser](https://npmcdn.com/svg-parser).
## Usage
```js
import { parse } from 'svg-parser';
const parsed = parse( `
<svg viewBox='0 0 100 100'>
<!-- stuff goes here... -->
</svg>
` );
/*
{
type: 'root',
children: [
{
type: 'element',
tagName: 'svg',
properties: {
viewBox: '0 0 100 100'
},
children: [...]
}
]
}
*/
```
## License
MIT

281
node_modules/svg-parser/dist/svg-parser.esm.js generated vendored Normal file
View File

@@ -0,0 +1,281 @@
function getLocator(source, options) {
if (options === void 0) { options = {}; }
var offsetLine = options.offsetLine || 0;
var offsetColumn = options.offsetColumn || 0;
var originalLines = source.split('\n');
var start = 0;
var lineRanges = originalLines.map(function (line, i) {
var end = start + line.length + 1;
var range = { start: start, end: end, line: i };
start = end;
return range;
});
var i = 0;
function rangeContains(range, index) {
return range.start <= index && index < range.end;
}
function getLocation(range, index) {
return { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index };
}
function locate(search, startIndex) {
if (typeof search === 'string') {
search = source.indexOf(search, startIndex || 0);
}
var range = lineRanges[i];
var d = search >= range.end ? 1 : -1;
while (range) {
if (rangeContains(range, search))
return getLocation(range, search);
i += d;
range = lineRanges[i];
}
}
return locate;
}
function locate(source, search, options) {
if (typeof options === 'number') {
throw new Error('locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument');
}
return getLocator(source, options)(search, options && options.startIndex);
}
var validNameCharacters = /[a-zA-Z0-9:_-]/;
var whitespace = /[\s\t\r\n]/;
var quotemark = /['"]/;
function repeat(str, i) {
var result = '';
while (i--) { result += str; }
return result;
}
function parse(source) {
var header = '';
var stack = [];
var state = metadata;
var currentElement = null;
var root = null;
function error(message) {
var ref = locate(source, i);
var line = ref.line;
var column = ref.column;
var before = source.slice(0, i);
var beforeLine = /(^|\n).*$/.exec(before)[0].replace(/\t/g, ' ');
var after = source.slice(i);
var afterLine = /.*(\n|$)/.exec(after)[0];
var snippet = "" + beforeLine + afterLine + "\n" + (repeat(' ', beforeLine.length)) + "^";
throw new Error(
(message + " (" + line + ":" + column + "). If this is valid SVG, it's probably a bug in svg-parser. Please raise an issue at https://github.com/Rich-Harris/svg-parser/issues thanks!\n\n" + snippet)
);
}
function metadata() {
while ((i < source.length && source[i] !== '<') || !validNameCharacters.test(source[i + 1])) {
header += source[i++];
}
return neutral();
}
function neutral() {
var text = '';
while (i < source.length && source[i] !== '<') { text += source[i++]; }
if (/\S/.test(text)) {
currentElement.children.push({ type: 'text', value: text });
}
if (source[i] === '<') {
return tag;
}
return neutral;
}
function tag() {
var char = source[i];
if (char === '?') { return neutral; } // <?xml...
if (char === '!') {
if (source.slice(i + 1, i + 3) === '--') { return comment; }
if (source.slice(i + 1, i + 8) === '[CDATA[') { return cdata; }
if (/doctype/i.test(source.slice(i + 1, i + 8))) { return neutral; }
}
if (char === '/') { return closingTag; }
var tagName = getName();
var element = {
type: 'element',
tagName: tagName,
properties: {},
children: []
};
if (currentElement) {
currentElement.children.push(element);
} else {
root = element;
}
var attribute;
while (i < source.length && (attribute = getAttribute())) {
element.properties[attribute.name] = attribute.value;
}
var selfClosing = false;
if (source[i] === '/') {
i += 1;
selfClosing = true;
}
if (source[i] !== '>') {
error('Expected >');
}
if (!selfClosing) {
currentElement = element;
stack.push(element);
}
return neutral;
}
function comment() {
var index = source.indexOf('-->', i);
if (!~index) { error('expected -->'); }
i = index + 2;
return neutral;
}
function cdata() {
var index = source.indexOf(']]>', i);
if (!~index) { error('expected ]]>'); }
currentElement.children.push(source.slice(i + 7, index));
i = index + 2;
return neutral;
}
function closingTag() {
var tagName = getName();
if (!tagName) { error('Expected tag name'); }
if (tagName !== currentElement.tagName) {
error(("Expected closing tag </" + tagName + "> to match opening tag <" + (currentElement.tagName) + ">"));
}
allowSpaces();
if (source[i] !== '>') {
error('Expected >');
}
stack.pop();
currentElement = stack[stack.length - 1];
return neutral;
}
function getName() {
var name = '';
while (i < source.length && validNameCharacters.test(source[i])) { name += source[i++]; }
return name;
}
function getAttribute() {
if (!whitespace.test(source[i])) { return null; }
allowSpaces();
var name = getName();
if (!name) { return null; }
var value = true;
allowSpaces();
if (source[i] === '=') {
i += 1;
allowSpaces();
value = getAttributeValue();
if (!isNaN(value) && value.trim() !== '') { value = +value; } // TODO whitelist numeric attributes?
}
return { name: name, value: value };
}
function getAttributeValue() {
return quotemark.test(source[i]) ? getQuotedAttributeValue() : getUnquotedAttributeValue();
}
function getUnquotedAttributeValue() {
var value = '';
do {
var char = source[i];
if (char === ' ' || char === '>' || char === '/') {
return value;
}
value += char;
i += 1;
} while (i < source.length);
return value;
}
function getQuotedAttributeValue() {
var quotemark = source[i++];
var value = '';
var escaped = false;
while (i < source.length) {
var char = source[i++];
if (char === quotemark && !escaped) {
return value;
}
if (char === '\\' && !escaped) {
escaped = true;
}
value += escaped ? ("\\" + char) : char;
escaped = false;
}
}
function allowSpaces() {
while (i < source.length && whitespace.test(source[i])) { i += 1; }
}
var i = metadata.length;
while (i < source.length) {
if (!state) { error('Unexpected character'); }
state = state();
i += 1;
}
if (state !== neutral) {
error('Unexpected end of input');
}
if (root.tagName === 'svg') { root.metadata = header; }
return {
type: 'root',
children: [root]
};
}
export { parse };
//# sourceMappingURL=svg-parser.esm.js.map

1
node_modules/svg-parser/dist/svg-parser.esm.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

291
node_modules/svg-parser/dist/svg-parser.umd.js generated vendored Normal file
View File

@@ -0,0 +1,291 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = global || self, factory(global.svgParser = {}));
}(this, (function (exports) { 'use strict';
function getLocator(source, options) {
if (options === void 0) { options = {}; }
var offsetLine = options.offsetLine || 0;
var offsetColumn = options.offsetColumn || 0;
var originalLines = source.split('\n');
var start = 0;
var lineRanges = originalLines.map(function (line, i) {
var end = start + line.length + 1;
var range = { start: start, end: end, line: i };
start = end;
return range;
});
var i = 0;
function rangeContains(range, index) {
return range.start <= index && index < range.end;
}
function getLocation(range, index) {
return { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index };
}
function locate(search, startIndex) {
if (typeof search === 'string') {
search = source.indexOf(search, startIndex || 0);
}
var range = lineRanges[i];
var d = search >= range.end ? 1 : -1;
while (range) {
if (rangeContains(range, search))
return getLocation(range, search);
i += d;
range = lineRanges[i];
}
}
return locate;
}
function locate(source, search, options) {
if (typeof options === 'number') {
throw new Error('locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument');
}
return getLocator(source, options)(search, options && options.startIndex);
}
var validNameCharacters = /[a-zA-Z0-9:_-]/;
var whitespace = /[\s\t\r\n]/;
var quotemark = /['"]/;
function repeat(str, i) {
var result = '';
while (i--) { result += str; }
return result;
}
function parse(source) {
var header = '';
var stack = [];
var state = metadata;
var currentElement = null;
var root = null;
function error(message) {
var ref = locate(source, i);
var line = ref.line;
var column = ref.column;
var before = source.slice(0, i);
var beforeLine = /(^|\n).*$/.exec(before)[0].replace(/\t/g, ' ');
var after = source.slice(i);
var afterLine = /.*(\n|$)/.exec(after)[0];
var snippet = "" + beforeLine + afterLine + "\n" + (repeat(' ', beforeLine.length)) + "^";
throw new Error(
(message + " (" + line + ":" + column + "). If this is valid SVG, it's probably a bug in svg-parser. Please raise an issue at https://github.com/Rich-Harris/svg-parser/issues thanks!\n\n" + snippet)
);
}
function metadata() {
while ((i < source.length && source[i] !== '<') || !validNameCharacters.test(source[i + 1])) {
header += source[i++];
}
return neutral();
}
function neutral() {
var text = '';
while (i < source.length && source[i] !== '<') { text += source[i++]; }
if (/\S/.test(text)) {
currentElement.children.push({ type: 'text', value: text });
}
if (source[i] === '<') {
return tag;
}
return neutral;
}
function tag() {
var char = source[i];
if (char === '?') { return neutral; } // <?xml...
if (char === '!') {
if (source.slice(i + 1, i + 3) === '--') { return comment; }
if (source.slice(i + 1, i + 8) === '[CDATA[') { return cdata; }
if (/doctype/i.test(source.slice(i + 1, i + 8))) { return neutral; }
}
if (char === '/') { return closingTag; }
var tagName = getName();
var element = {
type: 'element',
tagName: tagName,
properties: {},
children: []
};
if (currentElement) {
currentElement.children.push(element);
} else {
root = element;
}
var attribute;
while (i < source.length && (attribute = getAttribute())) {
element.properties[attribute.name] = attribute.value;
}
var selfClosing = false;
if (source[i] === '/') {
i += 1;
selfClosing = true;
}
if (source[i] !== '>') {
error('Expected >');
}
if (!selfClosing) {
currentElement = element;
stack.push(element);
}
return neutral;
}
function comment() {
var index = source.indexOf('-->', i);
if (!~index) { error('expected -->'); }
i = index + 2;
return neutral;
}
function cdata() {
var index = source.indexOf(']]>', i);
if (!~index) { error('expected ]]>'); }
currentElement.children.push(source.slice(i + 7, index));
i = index + 2;
return neutral;
}
function closingTag() {
var tagName = getName();
if (!tagName) { error('Expected tag name'); }
if (tagName !== currentElement.tagName) {
error(("Expected closing tag </" + tagName + "> to match opening tag <" + (currentElement.tagName) + ">"));
}
allowSpaces();
if (source[i] !== '>') {
error('Expected >');
}
stack.pop();
currentElement = stack[stack.length - 1];
return neutral;
}
function getName() {
var name = '';
while (i < source.length && validNameCharacters.test(source[i])) { name += source[i++]; }
return name;
}
function getAttribute() {
if (!whitespace.test(source[i])) { return null; }
allowSpaces();
var name = getName();
if (!name) { return null; }
var value = true;
allowSpaces();
if (source[i] === '=') {
i += 1;
allowSpaces();
value = getAttributeValue();
if (!isNaN(value) && value.trim() !== '') { value = +value; } // TODO whitelist numeric attributes?
}
return { name: name, value: value };
}
function getAttributeValue() {
return quotemark.test(source[i]) ? getQuotedAttributeValue() : getUnquotedAttributeValue();
}
function getUnquotedAttributeValue() {
var value = '';
do {
var char = source[i];
if (char === ' ' || char === '>' || char === '/') {
return value;
}
value += char;
i += 1;
} while (i < source.length);
return value;
}
function getQuotedAttributeValue() {
var quotemark = source[i++];
var value = '';
var escaped = false;
while (i < source.length) {
var char = source[i++];
if (char === quotemark && !escaped) {
return value;
}
if (char === '\\' && !escaped) {
escaped = true;
}
value += escaped ? ("\\" + char) : char;
escaped = false;
}
}
function allowSpaces() {
while (i < source.length && whitespace.test(source[i])) { i += 1; }
}
var i = metadata.length;
while (i < source.length) {
if (!state) { error('Unexpected character'); }
state = state();
i += 1;
}
if (state !== neutral) {
error('Unexpected end of input');
}
if (root.tagName === 'svg') { root.metadata = header; }
return {
type: 'root',
children: [root]
};
}
exports.parse = parse;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=svg-parser.umd.js.map

1
node_modules/svg-parser/dist/svg-parser.umd.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

50
node_modules/svg-parser/package.json generated vendored Normal file
View File

@@ -0,0 +1,50 @@
{
"name": "svg-parser",
"version": "2.0.4",
"description": "Create a JSON-friendly object from an SVG string",
"main": "dist/svg-parser.umd.js",
"jsnext:main": "dist/svg-parser.esm.js",
"module": "dist/svg-parser.esm.js",
"files": [
"dist",
"README.md"
],
"scripts": {
"test": "mocha",
"build": "rm -rf dist && rollup -c",
"pretest": "npm run build",
"prepublish": "npm run lint && npm test",
"lint": "eslint src"
},
"prettier": {
"singleQuote": true,
"useTabs": true,
"printWidth": 100
},
"repository": {
"type": "git",
"url": "git+https://github.com/Rich-Harris/svg-parser.git"
},
"keywords": [
"SVG",
"parser",
"JSON",
"object"
],
"author": "Rich Harris",
"license": "MIT",
"bugs": {
"url": "https://github.com/Rich-Harris/svg-parser/issues"
},
"homepage": "https://github.com/Rich-Harris/svg-parser#README",
"devDependencies": {
"@rollup/plugin-buble": "^0.21.0",
"@rollup/plugin-node-resolve": "^7.0.0",
"eslint": "^3.2.2",
"locate-character": "^2.0.5",
"mocha": "^3.0.1",
"prettier": "^1.18.2",
"rollup": "^1.29.0",
"source-map-support": "^0.4.2"
}
}