tui-image-editor
Advanced tools
Comparing version 3.7.2 to 3.7.3
@@ -1,2 +0,2 @@ | ||
// Type definitions for TOAST UI Image Editor v3.7.2 | ||
// Type definitions for TOAST UI Image Editor v3.7.3 | ||
// TypeScript Version: 3.2.2 | ||
@@ -3,0 +3,0 @@ |
{ | ||
"name": "tui-image-editor", | ||
"author": "NHN FE Development Lab <dl_javascript@nhn.com>", | ||
"version": "3.7.2", | ||
"version": "3.7.3", | ||
"license": "MIT", | ||
@@ -28,7 +28,7 @@ "repository": { | ||
"devDependencies": { | ||
"babel-core": "^6.18.2", | ||
"babel-eslint": "^7.1.0", | ||
"babel-loader": "^6.2.7", | ||
"babel-preset-es2015": "^6.18.0", | ||
"css-loader": "^0.28.11", | ||
"babel-core": "^6.26.3", | ||
"babel-eslint": "^10.0.3", | ||
"babel-loader": "^7.1.2", | ||
"babel-preset-es2015": "^6.24.1", | ||
"css-loader": "^3.4.1", | ||
"dtslint": "^0.4.2", | ||
@@ -38,4 +38,3 @@ "es5-shim": "^4.5.9", | ||
"eslint-config-tui": "^1.0.1", | ||
"eslint-loader": "^1.6.1", | ||
"extract-text-webpack-plugin": "^1.0.1", | ||
"eslint-loader": "^2.0.0", | ||
"file-saver": "^1.3.3", | ||
@@ -47,15 +46,20 @@ "istanbul-instrumenter-loader": "^1.0.0", | ||
"jsdoc": "^3.5.4", | ||
"karma": "^1.3.0", | ||
"karma-chrome-launcher": "^2.0.0", | ||
"karma-coverage": "^1.1.1", | ||
"karma": "^4.4.1", | ||
"karma-chrome-launcher": "^2.2.0", | ||
"karma-coverage": "^2.0.1", | ||
"karma-edge-launcher": "^0.4.2", | ||
"karma-es5-shim": "0.0.4", | ||
"karma-firefox-launcher": "^1.1.0", | ||
"karma-jasmine": "^1.0.2", | ||
"karma-ie-launcher": "^1.0.0", | ||
"karma-jasmine": "^1.1.1", | ||
"karma-jasmine-jquery-2": "^0.1.1", | ||
"karma-jquery": "^0.2.4", | ||
"karma-junit-reporter": "^1.2.0", | ||
"karma-sourcemap-loader": "^0.3.7", | ||
"karma-webdriver-launcher": "git+https://github.com/nhn/karma-webdriver-launcher.git#v1.1.0", | ||
"karma-webpack": "^1.8.0", | ||
"karma-webdriver-launcher": "git+https://github.com/nhn/karma-webdriver-launcher.git#v1.2.0", | ||
"karma-webpack": "^4.0.2", | ||
"mini-css-extract-plugin": "^0.9.0", | ||
"mkdirp": "^0.5.1", | ||
"safe-umd-webpack-plugin": "0.0.2", | ||
"optimize-css-assets-webpack-plugin": "^5.0.3", | ||
"safe-umd-webpack-plugin": "^4.0.0", | ||
"simulant": "^0.2.2", | ||
@@ -68,4 +72,6 @@ "stylus": "^0.54.5", | ||
"typescript": "^3.2.2", | ||
"webpack": "^1.13.3", | ||
"webpack-dev-server": "^1.11.0" | ||
"uglifyjs-webpack-plugin": "^2.2.0", | ||
"webpack": "^4.41.5", | ||
"webpack-cli": "^3.3.10", | ||
"webpack-dev-server": "^3.10.1" | ||
}, | ||
@@ -78,10 +84,10 @@ "scripts": { | ||
"bundle:svg": "node makesvg.js", | ||
"serve": "webpack-dev-server --inline --hot -d", | ||
"serve": "webpack-dev-server", | ||
"doc:dev": "tuidoc --dev", | ||
"doc": "tuidoc", | ||
"tslint": "tslint index.d.ts", | ||
"postinstall": "npm install --no-save --no-optional fabric@^3.3.2" | ||
"tslint": "tslint index.d.ts" | ||
}, | ||
"dependencies": { | ||
"core-js": "2.4.1", | ||
"fabric": "3.6.0", | ||
"tui-code-snippet": "^1.5.0", | ||
@@ -88,0 +94,0 @@ "tui-color-picker": "^2.2.0" |
@@ -194,19 +194,6 @@ # ![Toast UI ImageEditor](https://user-images.githubusercontent.com/35218826/40895380-0b9f4cd6-67ea-11e8-982f-18121daa3a04.png) | ||
##### 2. `fabric.js` installation | ||
And you should add **postInstall** script to your `package.json`. | ||
_This process will be removed when `fabric.js` updated to v2.7.0 and bundled with TOAST UI ImageEditor together._ | ||
##### 2. If the installation of the `fabric.js` dependency module does not go smoothly | ||
```js | ||
{ | ||
// ... | ||
"scripts": { | ||
// ... | ||
"postInstall": "npm install --no-save --no-optional fabric@^1.6.7" | ||
} | ||
// ... | ||
} | ||
``` | ||
To solve the problem, you need to refer to [Some Steps](https://github.com/fabricjs/fabric.js#install-with-npm) to solve the problem. | ||
Or you can add `fabric` as dependency. **But** there is [some steps](https://github.com/fabricjs/fabric.js#install-with-npm) to be installed well. | ||
#### bower | ||
@@ -366,3 +353,3 @@ | ||
## 🔩 Dependency | ||
* [fabric.js](https://github.com/fabricjs/fabric.js/releases) >=3.0.0 && <= 3.3.2 | ||
* [fabric.js](https://github.com/fabricjs/fabric.js/releases) =3.6.0 | ||
* [tui.code-snippet](https://github.com/nhn/tui.code-snippet/releases/tag/v1.3.0) >=1.3.0 | ||
@@ -369,0 +356,0 @@ * [tui.color-picker](https://github.com/nhn/tui.color-picker/releases/tag/v2.2.0) >=2.2.0 |
@@ -27,3 +27,3 @@ /** | ||
* @param {string} [options.styles.textAlign] Type of text align (left / center / right) | ||
* @param {string} [options.styles.textDecoraiton] Type of line (underline / line-throgh / overline) | ||
* @param {string} [options.styles.textDecoration] Type of line (underline / line-through / overline) | ||
* @param {{x: number, y: number}} [options.position] - Initial position | ||
@@ -30,0 +30,0 @@ * @returns {Promise} |
@@ -27,3 +27,3 @@ /** | ||
* @param {string} [styles.textAlign] Type of text align (left / center / right) | ||
* @param {string} [styles.textDecoraiton] Type of line (underline / line-throgh / overline) | ||
* @param {string} [styles.textDecoration] Type of line (underline / line-through / overline) | ||
* @returns {Promise} | ||
@@ -30,0 +30,0 @@ */ |
@@ -26,3 +26,3 @@ /** | ||
* @param {string} [props.textAlign] Type of text align (left / center / right) | ||
* @param {string} [props.textDecoraiton] Type of line (underline / line-throgh / overline) | ||
* @param {string} [props.textDecoration] Type of line (underline / line-through / overline) | ||
* @returns {Promise} | ||
@@ -29,0 +29,0 @@ */ |
@@ -10,3 +10,3 @@ /** | ||
import {keyCodes, componentNames} from '../consts'; | ||
import {clamp} from '../util'; | ||
import {clamp, fixFloatingPoint} from '../util'; | ||
@@ -137,2 +137,12 @@ const MOUSE_MOVE_THRESHOLD = 10; | ||
/** | ||
* Change cropzone visible | ||
* @param {boolean} visible - cropzone visible state | ||
*/ | ||
changeVisibility(visible) { | ||
if (this._cropzone) { | ||
this._cropzone.set({visible}); | ||
} | ||
} | ||
/** | ||
* onMousedown handler in fabric canvas | ||
@@ -333,3 +343,3 @@ * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event | ||
const scaleHeight = getScale(height, originalHeight); | ||
[width, height] = snippet.map([width, height], sizeValue => sizeValue * scaleHeight); | ||
[width, height] = snippet.map([width, height], sizeValue => fixFloatingPoint(sizeValue * scaleHeight)); | ||
@@ -336,0 +346,0 @@ return { |
@@ -362,2 +362,3 @@ /** | ||
}); | ||
resizeHelper.resize(shape, pointer); | ||
@@ -364,0 +365,0 @@ canvas.renderAll(); |
@@ -24,3 +24,4 @@ /** | ||
textAlign: 'left', | ||
textDecoraiton: '' | ||
textDecoration: '', | ||
underline: false | ||
}; | ||
@@ -213,3 +214,3 @@ const {browser} = snippet; | ||
* @param {string} [options.styles.textAlign] Type of text align (left / center / right) | ||
* @param {string} [options.styles.textDecoraiton] Type of line (underline / line-throgh / overline) | ||
* @param {string} [options.styles.textDecoration] Type of line (underline / line-through / overline) | ||
* @param {{x: number, y: number}} [options.position] - Initial position | ||
@@ -282,3 +283,3 @@ * @returns {Promise} | ||
* @param {string} [styleObj.textAlign] Type of text align (left / center / right) | ||
* @param {string} [styleObj.textDecoraiton] Type of line (underline / line-throgh / overline) | ||
* @param {string} [styleObj.textDecoration] Type of line (underline / line-through / overline) | ||
* @returns {Promise} | ||
@@ -285,0 +286,0 @@ */ |
@@ -49,3 +49,3 @@ /** | ||
_renderCropzone() { | ||
_renderCropzone(ctx) { | ||
const cropzoneDashLineWidth = 7; | ||
@@ -61,3 +61,2 @@ const cropzoneDashLineOffset = 7; | ||
// Set original scale | ||
const ctx = this.canvas.getContext(); | ||
ctx.scale(originalScaleX, originalScaleY); | ||
@@ -95,8 +94,6 @@ | ||
*/ | ||
_render() { | ||
const ctx = this.canvas.getContext(); | ||
_render(ctx) { | ||
this.callSuper('_render', ctx); | ||
this._renderCropzone(); | ||
this._renderCropzone(ctx); | ||
}, | ||
@@ -290,4 +287,5 @@ | ||
_onScaling(fEvent) { | ||
const selectedCorner = fEvent.transform.corner; | ||
const pointer = this.canvas.getPointer(fEvent.e); | ||
const settings = this._calcScalingSizeFromPointer(pointer); | ||
const settings = this._calcScalingSizeFromPointer(pointer, selectedCorner); | ||
@@ -302,6 +300,7 @@ // On scaling cropzone, | ||
* @param {{x: number, y: number}} pointer - Mouse position | ||
* @param {string} selectedCorner - selected corner type | ||
* @returns {Object} Having left or(and) top or(and) width or(and) height. | ||
* @private | ||
*/ | ||
_calcScalingSizeFromPointer(pointer) { | ||
_calcScalingSizeFromPointer(pointer, selectedCorner) { | ||
const pointerX = pointer.x, | ||
@@ -316,3 +315,3 @@ pointerY = pointer.y, | ||
*/ | ||
return this._makeScalingSettings(tlScalingSize, brScalingSize); | ||
return this._makeScalingSettings(tlScalingSize, brScalingSize, selectedCorner); | ||
}, | ||
@@ -366,6 +365,7 @@ | ||
* @param {{width: number, height: number}} br - Bottom-Right setting | ||
* @param {string} selectedCorner - selected corner type | ||
* @returns {{width: ?number, height: ?number, left: ?number, top: ?number}} Position setting | ||
* @private | ||
*/ | ||
_makeScalingSettings(tl, br) { | ||
_makeScalingSettings(tl, br, selectedCorner) { | ||
const tlWidth = tl.width; | ||
@@ -379,3 +379,3 @@ const tlHeight = tl.height; | ||
switch (this.__corner) { | ||
switch (selectedCorner) { | ||
case CORNER_TYPE_TOP_LEFT: | ||
@@ -382,0 +382,0 @@ settings = tl; |
@@ -406,3 +406,9 @@ /** | ||
toDataURL(options) { | ||
return this._canvas && this._canvas.toDataURL(options); | ||
const cropper = this.getComponent(components.CROPPER); | ||
cropper.changeVisibility(false); | ||
const dataUrl = this._canvas && this._canvas.toDataURL(options); | ||
cropper.changeVisibility(true); | ||
return dataUrl; | ||
} | ||
@@ -661,3 +667,3 @@ | ||
* @param {string} [props.textAlign] Type of text align (left / center / right) | ||
* @param {string} [props.textDecoraiton] Type of line (underline / line-throgh / overline) | ||
* @param {string} [props.textDecoration] Type of line (underline / line-through / overline) | ||
* @returns {Object} applied properties | ||
@@ -664,0 +670,0 @@ */ |
@@ -84,3 +84,3 @@ /** | ||
const left = shape.left - (centerPoint.x - origin.x); | ||
const top = shape.top - (centerPoint.x - origin.y); | ||
const top = shape.top - (centerPoint.y - origin.y); | ||
@@ -110,2 +110,3 @@ shape.set({ | ||
shape.setPositionByOrigin(origin, originX, originY); | ||
shape.setCoords(); | ||
} | ||
@@ -112,0 +113,0 @@ |
@@ -212,3 +212,3 @@ /** | ||
* @property {string} textAlign - Type of text align (left / center / right) | ||
* @property {string} textDecoraiton - Type of line (underline / line-throgh / overline) | ||
* @property {string} textDecoration - Type of line (underline / line-through / overline) | ||
*/ | ||
@@ -988,3 +988,3 @@ | ||
* @param {string} [options.styles.textAlign] Type of text align (left / center / right) | ||
* @param {string} [options.styles.textDecoraiton] Type of line (underline / line-throgh / overline) | ||
* @param {string} [options.styles.textDecoration] Type of line (underline / line-through / overline) | ||
* @param {{x: number, y: number}} [options.position] - Initial position | ||
@@ -1040,3 +1040,3 @@ * @returns {Promise} | ||
* @param {string} [styleObj.textAlign] Type of text align (left / center / right) | ||
* @param {string} [styleObj.textDecoraiton] Type of line (underline / line-throgh / overline) | ||
* @param {string} [styleObj.textDecoration] Type of line (underline / line-through / overline) | ||
* @returns {Promise} | ||
@@ -1043,0 +1043,0 @@ * @example |
@@ -105,3 +105,6 @@ import Range from './tools/range'; | ||
'italic': {fontStyle: 'italic'}, | ||
'underline': {textDecoration: 'underline'} | ||
'underline': { | ||
underline: true, | ||
textDecoration: 'underline' | ||
} | ||
}[styleType]; | ||
@@ -108,0 +111,0 @@ |
@@ -6,2 +6,3 @@ /** | ||
import {forEach, sendHostname} from 'tui-code-snippet'; | ||
const FLOATING_POINT_DIGIT = 2; | ||
const {min, max} = Math; | ||
@@ -11,3 +12,2 @@ let hostnameSent = false; | ||
module.exports = { | ||
/** | ||
@@ -191,3 +191,11 @@ * Clamp value | ||
return new Blob([uInt8Array], {type: mimeString}); | ||
}, | ||
/** | ||
* Fix floating point diff. | ||
* @param {number} value - original value | ||
* @returns {number} fixed value | ||
*/ | ||
fixFloatingPoint(value) { | ||
return Number(value.toFixed(FLOATING_POINT_DIGIT)); | ||
} | ||
}; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Install scripts
Supply chain riskInstall scripts are run when the package is installed. The majority of malware in npm is hidden in install scripts.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
1859397
283
0
4
45
17556
370
90
153
+ Addedfabric@3.6.0
+ Added@mapbox/node-pre-gyp@1.0.11(transitive)
+ Addedabab@2.0.6(transitive)
+ Addedabbrev@1.1.1(transitive)
+ Addedacorn@6.4.27.4.1(transitive)
+ Addedacorn-globals@4.3.4(transitive)
+ Addedacorn-walk@6.2.0(transitive)
+ Addedagent-base@6.0.2(transitive)
+ Addedajv@6.12.6(transitive)
+ Addedansi-regex@5.0.1(transitive)
+ Addedaproba@2.0.0(transitive)
+ Addedare-we-there-yet@2.0.0(transitive)
+ Addedarray-equal@1.0.2(transitive)
+ Addedasn1@0.2.6(transitive)
+ Addedassert-plus@1.0.0(transitive)
+ Addedasynckit@0.4.0(transitive)
+ Addedaws-sign2@0.7.0(transitive)
+ Addedaws4@1.13.2(transitive)
+ Addedbalanced-match@1.0.2(transitive)
+ Addedbcrypt-pbkdf@1.0.2(transitive)
+ Addedbrace-expansion@1.1.11(transitive)
+ Addedbrowser-process-hrtime@1.0.0(transitive)
+ Addedcanvas@2.11.2(transitive)
+ Addedcaseless@0.12.0(transitive)
+ Addedchownr@2.0.0(transitive)
+ Addedcolor-support@1.1.3(transitive)
+ Addedcombined-stream@1.0.8(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addedconsole-control-strings@1.1.0(transitive)
+ Addedcore-util-is@1.0.2(transitive)
+ Addedcssom@0.3.80.4.4(transitive)
+ Addedcssstyle@2.3.0(transitive)
+ Addeddashdash@1.14.1(transitive)
+ Addeddata-urls@1.1.0(transitive)
+ Addeddebug@4.3.7(transitive)
+ Addeddecompress-response@4.2.1(transitive)
+ Addeddeep-is@0.1.4(transitive)
+ Addeddelayed-stream@1.0.0(transitive)
+ Addeddelegates@1.0.0(transitive)
+ Addeddetect-libc@2.0.3(transitive)
+ Addeddomexception@1.0.1(transitive)
+ Addedecc-jsbn@0.1.2(transitive)
+ Addedemoji-regex@8.0.0(transitive)
+ Addedescodegen@1.14.3(transitive)
+ Addedesprima@4.0.1(transitive)
+ Addedestraverse@4.3.0(transitive)
+ Addedesutils@2.0.3(transitive)
+ Addedextend@3.0.2(transitive)
+ Addedextsprintf@1.3.0(transitive)
+ Addedfabric@3.6.0(transitive)
+ Addedfast-deep-equal@3.1.3(transitive)
+ Addedfast-json-stable-stringify@2.1.0(transitive)
+ Addedfast-levenshtein@2.0.6(transitive)
+ Addedforever-agent@0.6.1(transitive)
+ Addedform-data@2.3.3(transitive)
+ Addedfs-minipass@2.1.0(transitive)
+ Addedfs.realpath@1.0.0(transitive)
+ Addedgauge@3.0.2(transitive)
+ Addedgetpass@0.1.7(transitive)
+ Addedglob@7.2.3(transitive)
+ Addedhar-schema@2.0.0(transitive)
+ Addedhar-validator@5.1.5(transitive)
+ Addedhas-unicode@2.0.1(transitive)
+ Addedhtml-encoding-sniffer@1.0.2(transitive)
+ Addedhttp-signature@1.2.0(transitive)
+ Addedhttps-proxy-agent@5.0.1(transitive)
+ Addediconv-lite@0.4.24(transitive)
+ Addedinflight@1.0.6(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedip-regex@2.1.0(transitive)
+ Addedis-fullwidth-code-point@3.0.0(transitive)
+ Addedis-typedarray@1.0.0(transitive)
+ Addedisstream@0.1.2(transitive)
+ Addedjsbn@0.1.1(transitive)
+ Addedjsdom@15.2.1(transitive)
+ Addedjson-schema@0.4.0(transitive)
+ Addedjson-schema-traverse@0.4.1(transitive)
+ Addedjson-stringify-safe@5.0.1(transitive)
+ Addedjsprim@1.4.2(transitive)
+ Addedlevn@0.3.0(transitive)
+ Addedlodash@4.17.21(transitive)
+ Addedlodash.sortby@4.7.0(transitive)
+ Addedmake-dir@3.1.0(transitive)
+ Addedmime-db@1.52.0(transitive)
+ Addedmime-types@2.1.35(transitive)
+ Addedmimic-response@2.1.0(transitive)
+ Addedminimatch@3.1.2(transitive)
+ Addedminipass@3.3.65.0.0(transitive)
+ Addedminizlib@2.1.2(transitive)
+ Addedmkdirp@1.0.4(transitive)
+ Addedms@2.1.3(transitive)
+ Addednan@2.22.0(transitive)
+ Addednode-fetch@2.7.0(transitive)
+ Addednopt@5.0.0(transitive)
+ Addednpmlog@5.0.1(transitive)
+ Addednwsapi@2.2.13(transitive)
+ Addedoauth-sign@0.9.0(transitive)
+ Addedobject-assign@4.1.1(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedoptionator@0.8.3(transitive)
+ Addedparse5@5.1.0(transitive)
+ Addedpath-is-absolute@1.0.1(transitive)
+ Addedperformance-now@2.1.0(transitive)
+ Addedpn@1.1.0(transitive)
+ Addedprelude-ls@1.1.2(transitive)
+ Addedpsl@1.10.0(transitive)
+ Addedpunycode@2.3.1(transitive)
+ Addedqs@6.5.3(transitive)
+ Addedreadable-stream@3.6.2(transitive)
+ Addedrequest@2.88.2(transitive)
+ Addedrequest-promise-core@1.1.4(transitive)
+ Addedrequest-promise-native@1.0.9(transitive)
+ Addedrimraf@3.0.2(transitive)
+ Addedsafe-buffer@5.2.1(transitive)
+ Addedsafer-buffer@2.1.2(transitive)
+ Addedsaxes@3.1.11(transitive)
+ Addedsemver@6.3.17.6.3(transitive)
+ Addedset-blocking@2.0.0(transitive)
+ Addedsignal-exit@3.0.7(transitive)
+ Addedsimple-concat@1.0.1(transitive)
+ Addedsimple-get@3.1.1(transitive)
+ Addedsource-map@0.6.1(transitive)
+ Addedsshpk@1.18.0(transitive)
+ Addedstealthy-require@1.1.1(transitive)
+ Addedstring-width@4.2.3(transitive)
+ Addedstring_decoder@1.3.0(transitive)
+ Addedstrip-ansi@6.0.1(transitive)
+ Addedsymbol-tree@3.2.4(transitive)
+ Addedtar@6.2.1(transitive)
+ Addedtough-cookie@2.5.03.0.1(transitive)
+ Addedtr46@0.0.31.0.1(transitive)
+ Addedtunnel-agent@0.6.0(transitive)
+ Addedtweetnacl@0.14.5(transitive)
+ Addedtype-check@0.3.2(transitive)
+ Addeduri-js@4.4.1(transitive)
+ Addedutil-deprecate@1.0.2(transitive)
+ Addeduuid@3.4.0(transitive)
+ Addedverror@1.10.0(transitive)
+ Addedw3c-hr-time@1.0.2(transitive)
+ Addedw3c-xmlserializer@1.1.2(transitive)
+ Addedwebidl-conversions@3.0.14.0.2(transitive)
+ Addedwhatwg-encoding@1.0.5(transitive)
+ Addedwhatwg-mimetype@2.3.0(transitive)
+ Addedwhatwg-url@5.0.07.1.0(transitive)
+ Addedwide-align@1.1.5(transitive)
+ Addedword-wrap@1.2.5(transitive)
+ Addedwrappy@1.0.2(transitive)
+ Addedws@7.5.10(transitive)
+ Addedxml-name-validator@3.0.0(transitive)
+ Addedxmlchars@2.2.0(transitive)
+ Addedyallist@4.0.0(transitive)