diff --git a/ios/Pods/Pods.xcodeproj/xcuserdata/ue.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/Pods/Pods.xcodeproj/xcuserdata/ue.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 000000000..2beda8df2 --- /dev/null +++ b/ios/Pods/Pods.xcodeproj/xcuserdata/ue.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,144 @@ + + + + + SchemeUserState + + AppCenter.xcscheme_^#shared#^_ + + orderHint + 57 + + AppCenterReactNativeShared.xcscheme_^#shared#^_ + + orderHint + 58 + + CodePush.xcscheme + + orderHint + 2 + + CodePush.xcscheme_^#shared#^_ + + orderHint + 60 + + DoubleConversion.xcscheme + + orderHint + 4 + + DoubleConversion.xcscheme_^#shared#^_ + + orderHint + 61 + + FLAnimatedImage.xcscheme_^#shared#^_ + + orderHint + 62 + + Folly.xcscheme + + orderHint + 5 + + Folly.xcscheme_^#shared#^_ + + orderHint + 63 + + Pods-eSteem-tvOS.xcscheme + + orderHint + 8 + + Pods-eSteem-tvOS.xcscheme_^#shared#^_ + + orderHint + 66 + + Pods-eSteem-tvOSTests.xcscheme + + orderHint + 9 + + Pods-eSteem-tvOSTests.xcscheme_^#shared#^_ + + orderHint + 67 + + Pods-eSteem.xcscheme + + orderHint + 7 + + Pods-eSteem.xcscheme_^#shared#^_ + + orderHint + 65 + + Pods-eSteemTests.xcscheme + + orderHint + 10 + + Pods-eSteemTests.xcscheme_^#shared#^_ + + orderHint + 68 + + QBImagePickerController-QBImagePicker.xcscheme_^#shared#^_ + + orderHint + 70 + + QBImagePickerController.xcscheme_^#shared#^_ + + orderHint + 69 + + RNImageCropPicker.xcscheme_^#shared#^_ + + orderHint + 73 + + RSKImageCropper.xcscheme_^#shared#^_ + + orderHint + 74 + + SDWebImage.xcscheme_^#shared#^_ + + orderHint + 75 + + boost-for-react-native.xcscheme_^#shared#^_ + + orderHint + 59 + + glog.xcscheme + + orderHint + 6 + + glog.xcscheme_^#shared#^_ + + orderHint + 64 + + react-native-fast-image.xcscheme_^#shared#^_ + + orderHint + 71 + + react-native-version-number.xcscheme_^#shared#^_ + + orderHint + 72 + + + + diff --git a/ios/eSteem.xcodeproj/xcuserdata/ue.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/eSteem.xcodeproj/xcuserdata/ue.xcuserdatad/xcschemes/xcschememanagement.plist index 3cffac506..22724d81f 100644 --- a/ios/eSteem.xcodeproj/xcuserdata/ue.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/ios/eSteem.xcodeproj/xcuserdata/ue.xcuserdatad/xcschemes/xcschememanagement.plist @@ -12,7 +12,7 @@ eSteem.xcscheme_^#shared#^_ orderHint - 26 + 7 diff --git a/package.json b/package.json index 42b263b18..0d9d7014a 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", + "@esteemapp/esteem-render-helpers": "^1.0.9", "appcenter": "^1.10.0", "appcenter-analytics": "^1.10.0", "appcenter-crashes": "^1.10.0", diff --git a/src/components/markdownEditor/view/markdownEditorView.js b/src/components/markdownEditor/view/markdownEditorView.js index a5f57ae41..68ae18a67 100644 --- a/src/components/markdownEditor/view/markdownEditorView.js +++ b/src/components/markdownEditor/view/markdownEditorView.js @@ -1,9 +1,9 @@ import React, { Component } from 'react'; import { View, KeyboardAvoidingView, FlatList, Text, Platform, ScrollView } from 'react-native'; import ActionSheet from 'react-native-actionsheet'; +import { renderPostBody } from '@esteemapp/esteem-render-helpers'; // Utils -import { markDown2Html } from '../../../utils/markdownToHtml'; import applyImageLink from './formats/applyWebLinkFormat'; import Formats from './formats/formats'; @@ -114,7 +114,7 @@ export default class MarkdownEditorView extends Component { return ( - {text ? : ...} + {text ? : ...} ); }; diff --git a/src/components/postElements/body/view/postBodyStyles.js b/src/components/postElements/body/view/postBodyStyles.js index 0ded04bde..b0b601ee3 100644 --- a/src/components/postElements/body/view/postBodyStyles.js +++ b/src/components/postElements/body/view/postBodyStyles.js @@ -28,11 +28,6 @@ export default EStyleSheet.create({ h3: { fontSize: 20, }, - img: { - // height: 50, - marginTop: 10, - // left: -15, - }, commentContainer: { paddingHorizontal: 0, marginTop: 10, @@ -65,4 +60,19 @@ export default EStyleSheet.create({ backgroundColor: '$darkIconColor', fontFamily: '$editorFont', }, + center: { + textAlign: 'center', + alignItems: 'center', + justifyContent: 'center', + }, + postImage: { + marginTop: 10, + minHeight: 216, + width: '100%', + }, + commentImage: { + marginTop: 10, + minHeight: 80, + width: '100%', + }, }); diff --git a/src/components/postElements/body/view/postBodyView.js b/src/components/postElements/body/view/postBodyView.js index 006a9f60a..5976a28a5 100644 --- a/src/components/postElements/body/view/postBodyView.js +++ b/src/components/postElements/body/view/postBodyView.js @@ -1,55 +1,43 @@ import React, { PureComponent, Fragment } from 'react'; -import { Dimensions, Linking, Alert } from 'react-native'; +import { + Dimensions, Linking, Alert, TouchableOpacity, Text, +} from 'react-native'; import { withNavigation } from 'react-navigation'; import { injectIntl } from 'react-intl'; +import FastImage from 'react-native-fast-image'; import HTML from 'react-native-render-html'; import { getParentsTagsRecursively } from 'react-native-render-html/src/HTMLUtils'; -// Utils -import { validateUsername } from '../../../../utils/user'; - // Styles import styles from './postBodyStyles'; // Constants import { default as ROUTES } from '../../../../constants/routeNames'; +import DEFAULT_IMAGE from '../../../../assets/no_image.png'; // Components const WIDTH = Dimensions.get('window').width; -const CUSTOM_RENDERERS = { - // example - // center: () => ugur, -}; -const DEFAULT_PROPS = { - renderers: CUSTOM_RENDERERS, - debug: true, -}; class PostBody extends PureComponent { - constructor(props) { - super(props); - this.state = {}; - } - // Component Life Cycles // Component Functions - _handleOnLinkPress = (evt, href, hrefatr) => { + _handleOnLinkPress = (href, hrefatr) => { const { handleOnUserPress, handleOnPostPress } = this.props; if (hrefatr.class === 'markdown-author-link') { if (!handleOnUserPress) { - this._handleOnUserPress(href); + this._handleOnUserPress(hrefatr['data-author']); } else { - handleOnUserPress(href); + handleOnUserPress(hrefatr['data-author']); } } else if (hrefatr.class === 'markdown-post-link') { if (!handleOnPostPress) { - this._handleOnPostPress(href, hrefatr.data_author); + this._handleOnPostPress(hrefatr['data-permlink'], hrefatr['data-author']); } else { - handleOnPostPress(href); + handleOnPostPress(hrefatr['data-permlink']); } } else { this._handleBrowserLink(href); @@ -58,37 +46,15 @@ class PostBody extends PureComponent { _handleBrowserLink = async url => { if (!url) return; - - let author; - let permlink; const { intl } = this.props; - if ( - url.indexOf('esteem') > -1 || - url.indexOf('steemit') > -1 || - url.indexOf('busy') > -1 || - (url.indexOf('steempeak') > -1 && url.indexOf('files') < 0) - ) { - url = url.substring(url.indexOf('@'), url.length); - const routeParams = url && url.indexOf('/') > -1 ? url.split('/') : [url]; - - [, permlink] = routeParams; - author = routeParams[0].indexOf('@') > -1 ? routeParams[0].replace('@', '') : routeParams[0]; - } - - if (author && permlink) { - this._handleOnPostPress(permlink, author); - } else if (author) { - this._handleOnUserPress(author); - } else { - Linking.canOpenURL(url).then(supported => { - if (supported) { - Linking.openURL(url); - } else { - Alert.alert(intl.formatMessage({ id: 'alert.failed_to_open' })); - } - }); - } + Linking.canOpenURL(url).then((supported) => { + if (supported) { + Linking.openURL(url); + } else { + Alert.alert(intl.formatMessage({ id: 'alert.failed_to_open' })); + } + }); }; _handleOnPostPress = (permlink, author) => { @@ -109,7 +75,7 @@ class PostBody extends PureComponent { _handleOnUserPress = username => { const { navigation } = this.props; - if (username && validateUsername(username)) { + if (username) { navigation.navigate({ routeName: ROUTES.SCREENS.PROFILE, params: { @@ -187,10 +153,35 @@ class PostBody extends PureComponent { ? { width: WIDTH - 50, height: 80 } : { width: WIDTH, height: 216 }; + const _customRenderer = { + img: (htmlAttribs, children, convertedCSSStyles, passProps) => ( + + ), + a: (htmlAttribs, children, convertedCSSStyles, passProps) => { + if (passProps.parentWrapper === 'Text') { + return ( + this._handleOnLinkPress(htmlAttribs['data-href'], htmlAttribs)}> + {children} + + ); + } + return ( + this._handleOnLinkPress(htmlAttribs['data-href'], htmlAttribs)}> + {children} + + ); + }, + }; + return ( this._handleOnLinkPress(evt, href, hrefatr)} containerStyle={isComment ? styles.commentContainer : styles.container} @@ -204,6 +195,7 @@ class PostBody extends PureComponent { imagesMaxWidth={isComment ? WIDTH - 50 : WIDTH} alterNode={e => this._alterNode(e, isComment)} alterData={e => this._alterData(e)} + renderers={_customRenderer} /> ); diff --git a/src/utils/postParser.js b/src/utils/postParser.js index 93994b639..b95525c12 100644 --- a/src/utils/postParser.js +++ b/src/utils/postParser.js @@ -1,3 +1,4 @@ +import { postBodySummary, renderPostBody } from '@esteemapp/esteem-render-helpers'; // Utils import { markDown2Html } from './markdownToHtml'; import { getPostSummary } from './formatter'; @@ -22,8 +23,8 @@ export const parsePost = (post, currentUserName) => { post.avatar = `https://steemitimages.com/u/${post.author}/avatar/small`; post.active_votes.sort((a, b) => b.rshares - a.rshares); - post.body = markDown2Html(post.body); - post.summary = getPostSummary(post.body, 150); + post.body = renderPostBody(post); + post.summary = postBodySummary(post, 150); post.is_declined_payout = Number(parseFloat(post.max_accepted_payout)) === 0; if (currentUserName) { @@ -142,8 +143,8 @@ export const parseComments = comments => { comment.author_reputation = getReputation(comment.author_reputation); comment.avatar = `https://steemitimages.com/u/${comment.author}/avatar/small`; comment.markdownBody = comment.body; - comment.body = markDown2Html(comment.body); - comment.summary = getPostSummary(comment.body, 100, true); + comment.body = renderPostBody(comment); + comment.summary = `"${getPostSummary(comment.body, 100, true)}"`; }); return comments; }; diff --git a/yarn.lock b/yarn.lock index bf262cb37..8dd4cb64d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1098,6 +1098,18 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@esteemapp/esteem-render-helpers@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@esteemapp/esteem-render-helpers/-/esteem-render-helpers-1.0.9.tgz#c54e0d86b2a6d1a9affd5f11949e75b7b39f65d8" + integrity sha512-uNW5D8ifjc9OImqgYc4uKTXqvMPTJFC378boRGRaAsvIy7foC/G3l4GF33H+zzENTldSa21Hv0SJ/LtTWgUwVg== + dependencies: + he "^1.2.0" + path "^0.12.7" + remarkable "^1.7.1" + sanitize-html "^1.20.1" + url "^0.11.0" + xmldom "^0.1.27" + "@jest/console@^24.7.1": version "24.7.1" resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" @@ -1706,6 +1718,11 @@ array-slice@^0.2.3: resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= +array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" @@ -4284,6 +4301,11 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -4322,7 +4344,7 @@ html-entities@^1.2.0: resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= -htmlparser2@^3.10.1: +htmlparser2@^3.10.0, htmlparser2@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -5657,16 +5679,41 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.escaperegexp@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + lodash.merge@^4.6.0: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== +lodash.mergewith@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" + integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ== + lodash.pad@^4.1.0: version "4.5.1" resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" @@ -6965,6 +7012,14 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path@^0.12.7: + version "0.12.7" + resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" + integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8= + dependencies: + process "^0.11.1" + util "^0.10.3" + pegjs@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" @@ -7079,6 +7134,15 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss@^7.0.5: + version "7.0.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2" + integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -7156,6 +7220,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== +process@^0.11.1: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" @@ -7235,6 +7304,11 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -7269,6 +7343,11 @@ query-string@^6.1.0: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + querystringify@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" @@ -8178,6 +8257,22 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sanitize-html@^1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.20.1.tgz#f6effdf55dd398807171215a62bfc21811bacf85" + integrity sha512-txnH8TQjaQvg2Q0HY06G6CDJLVYCpbnxrdO0WN8gjCKaU5J0KbyGYhZxx5QJg3WLZ1lB7XU9kDkfrCXUozqptA== + dependencies: + chalk "^2.4.1" + htmlparser2 "^3.10.0" + lodash.clonedeep "^4.5.0" + lodash.escaperegexp "^4.1.2" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.mergewith "^4.6.1" + postcss "^7.0.5" + srcset "^1.0.0" + xtend "^4.0.1" + sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -8546,6 +8641,14 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +srcset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/srcset/-/srcset-1.0.0.tgz#a5669de12b42f3b1d5e83ed03c71046fc48f41ef" + integrity sha1-pWad4StC87HV6D7QPHEEb8SPQe8= + dependencies: + array-uniq "^1.0.2" + number-is-nan "^1.0.0" + sshpk@^1.7.0: version "1.16.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" @@ -9174,6 +9277,14 @@ url-parse@^1.4.4: querystringify "^2.1.1" requires-port "^1.0.0" +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -9192,6 +9303,13 @@ util.promisify@^1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +util@^0.10.3: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== + dependencies: + inherits "2.0.3" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -9462,7 +9580,7 @@ xmldoc@^0.4.0: dependencies: sax "~1.1.1" -xmldom@0.1.x: +xmldom@0.1.x, xmldom@^0.1.27: version "0.1.27" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk= @@ -9477,7 +9595,7 @@ xregexp@2.0.0: resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=