Merge pull request #881 from esteemapp/markdown

Markdown refactoring
This commit is contained in:
uğur erdal 2019-05-30 20:20:48 +03:00 committed by GitHub
commit db8914c698
8 changed files with 334 additions and 68 deletions

View File

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>AppCenter.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>57</integer>
</dict>
<key>AppCenterReactNativeShared.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>58</integer>
</dict>
<key>CodePush.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>2</integer>
</dict>
<key>CodePush.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>60</integer>
</dict>
<key>DoubleConversion.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>4</integer>
</dict>
<key>DoubleConversion.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>61</integer>
</dict>
<key>FLAnimatedImage.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>62</integer>
</dict>
<key>Folly.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>5</integer>
</dict>
<key>Folly.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>63</integer>
</dict>
<key>Pods-eSteem-tvOS.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>8</integer>
</dict>
<key>Pods-eSteem-tvOS.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>66</integer>
</dict>
<key>Pods-eSteem-tvOSTests.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>9</integer>
</dict>
<key>Pods-eSteem-tvOSTests.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>67</integer>
</dict>
<key>Pods-eSteem.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>7</integer>
</dict>
<key>Pods-eSteem.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>65</integer>
</dict>
<key>Pods-eSteemTests.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>10</integer>
</dict>
<key>Pods-eSteemTests.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>68</integer>
</dict>
<key>QBImagePickerController-QBImagePicker.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>70</integer>
</dict>
<key>QBImagePickerController.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>69</integer>
</dict>
<key>RNImageCropPicker.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>73</integer>
</dict>
<key>RSKImageCropper.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>74</integer>
</dict>
<key>SDWebImage.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>75</integer>
</dict>
<key>boost-for-react-native.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>59</integer>
</dict>
<key>glog.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>6</integer>
</dict>
<key>glog.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>64</integer>
</dict>
<key>react-native-fast-image.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>71</integer>
</dict>
<key>react-native-version-number.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>72</integer>
</dict>
</dict>
</dict>
</plist>

View File

@ -12,7 +12,7 @@
<key>eSteem.xcscheme_^#shared#^_</key> <key>eSteem.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>26</integer> <integer>7</integer>
</dict> </dict>
</dict> </dict>
</dict> </dict>

View File

@ -22,6 +22,7 @@
}, },
"dependencies": { "dependencies": {
"@babel/runtime": "^7.1.2", "@babel/runtime": "^7.1.2",
"@esteemapp/esteem-render-helpers": "^1.0.9",
"appcenter": "^1.10.0", "appcenter": "^1.10.0",
"appcenter-analytics": "^1.10.0", "appcenter-analytics": "^1.10.0",
"appcenter-crashes": "^1.10.0", "appcenter-crashes": "^1.10.0",

View File

@ -1,9 +1,9 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import { View, KeyboardAvoidingView, FlatList, Text, Platform, ScrollView } from 'react-native'; import { View, KeyboardAvoidingView, FlatList, Text, Platform, ScrollView } from 'react-native';
import ActionSheet from 'react-native-actionsheet'; import ActionSheet from 'react-native-actionsheet';
import { renderPostBody } from '@esteemapp/esteem-render-helpers';
// Utils // Utils
import { markDown2Html } from '../../../utils/markdownToHtml';
import applyImageLink from './formats/applyWebLinkFormat'; import applyImageLink from './formats/applyWebLinkFormat';
import Formats from './formats/formats'; import Formats from './formats/formats';
@ -114,7 +114,7 @@ export default class MarkdownEditorView extends Component {
return ( return (
<ScrollView style={styles.previewContainer}> <ScrollView style={styles.previewContainer}>
{text ? <PostBody body={markDown2Html(text)} /> : <Text>...</Text>} {text ? <PostBody body={renderPostBody(text)} /> : <Text>...</Text>}
</ScrollView> </ScrollView>
); );
}; };

View File

@ -28,11 +28,6 @@ export default EStyleSheet.create({
h3: { h3: {
fontSize: 20, fontSize: 20,
}, },
img: {
// height: 50,
marginTop: 10,
// left: -15,
},
commentContainer: { commentContainer: {
paddingHorizontal: 0, paddingHorizontal: 0,
marginTop: 10, marginTop: 10,
@ -65,4 +60,19 @@ export default EStyleSheet.create({
backgroundColor: '$darkIconColor', backgroundColor: '$darkIconColor',
fontFamily: '$editorFont', fontFamily: '$editorFont',
}, },
center: {
textAlign: 'center',
alignItems: 'center',
justifyContent: 'center',
},
postImage: {
marginTop: 10,
minHeight: 216,
width: '100%',
},
commentImage: {
marginTop: 10,
minHeight: 80,
width: '100%',
},
}); });

View File

@ -1,55 +1,43 @@
import React, { PureComponent, Fragment } from 'react'; 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 { withNavigation } from 'react-navigation';
import { injectIntl } from 'react-intl'; import { injectIntl } from 'react-intl';
import FastImage from 'react-native-fast-image';
import HTML from 'react-native-render-html'; import HTML from 'react-native-render-html';
import { getParentsTagsRecursively } from 'react-native-render-html/src/HTMLUtils'; import { getParentsTagsRecursively } from 'react-native-render-html/src/HTMLUtils';
// Utils
import { validateUsername } from '../../../../utils/user';
// Styles // Styles
import styles from './postBodyStyles'; import styles from './postBodyStyles';
// Constants // Constants
import { default as ROUTES } from '../../../../constants/routeNames'; import { default as ROUTES } from '../../../../constants/routeNames';
import DEFAULT_IMAGE from '../../../../assets/no_image.png';
// Components // Components
const WIDTH = Dimensions.get('window').width; const WIDTH = Dimensions.get('window').width;
const CUSTOM_RENDERERS = {
// example
// center: () => <Text style={{ backgroundColor: 'blue', textAlign: 'center'}}>ugur</Text>,
};
const DEFAULT_PROPS = {
renderers: CUSTOM_RENDERERS,
debug: true,
};
class PostBody extends PureComponent { class PostBody extends PureComponent {
constructor(props) {
super(props);
this.state = {};
}
// Component Life Cycles // Component Life Cycles
// Component Functions // Component Functions
_handleOnLinkPress = (evt, href, hrefatr) => { _handleOnLinkPress = (href, hrefatr) => {
const { handleOnUserPress, handleOnPostPress } = this.props; const { handleOnUserPress, handleOnPostPress } = this.props;
if (hrefatr.class === 'markdown-author-link') { if (hrefatr.class === 'markdown-author-link') {
if (!handleOnUserPress) { if (!handleOnUserPress) {
this._handleOnUserPress(href); this._handleOnUserPress(hrefatr['data-author']);
} else { } else {
handleOnUserPress(href); handleOnUserPress(hrefatr['data-author']);
} }
} else if (hrefatr.class === 'markdown-post-link') { } else if (hrefatr.class === 'markdown-post-link') {
if (!handleOnPostPress) { if (!handleOnPostPress) {
this._handleOnPostPress(href, hrefatr.data_author); this._handleOnPostPress(hrefatr['data-permlink'], hrefatr['data-author']);
} else { } else {
handleOnPostPress(href); handleOnPostPress(hrefatr['data-permlink']);
} }
} else { } else {
this._handleBrowserLink(href); this._handleBrowserLink(href);
@ -58,37 +46,15 @@ class PostBody extends PureComponent {
_handleBrowserLink = async url => { _handleBrowserLink = async url => {
if (!url) return; if (!url) return;
let author;
let permlink;
const { intl } = this.props; const { intl } = this.props;
if ( Linking.canOpenURL(url).then((supported) => {
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) { if (supported) {
Linking.openURL(url); Linking.openURL(url);
} else { } else {
Alert.alert(intl.formatMessage({ id: 'alert.failed_to_open' })); Alert.alert(intl.formatMessage({ id: 'alert.failed_to_open' }));
} }
}); });
}
}; };
_handleOnPostPress = (permlink, author) => { _handleOnPostPress = (permlink, author) => {
@ -109,7 +75,7 @@ class PostBody extends PureComponent {
_handleOnUserPress = username => { _handleOnUserPress = username => {
const { navigation } = this.props; const { navigation } = this.props;
if (username && validateUsername(username)) { if (username) {
navigation.navigate({ navigation.navigate({
routeName: ROUTES.SCREENS.PROFILE, routeName: ROUTES.SCREENS.PROFILE,
params: { params: {
@ -187,10 +153,35 @@ class PostBody extends PureComponent {
? { width: WIDTH - 50, height: 80 } ? { width: WIDTH - 50, height: 80 }
: { width: WIDTH, height: 216 }; : { width: WIDTH, height: 216 };
const _customRenderer = {
img: (htmlAttribs, children, convertedCSSStyles, passProps) => (
<FastImage
key={passProps.key}
defaultSource={DEFAULT_IMAGE}
source={{ uri: htmlAttribs.src, priority: FastImage.priority.normal }}
style={isComment ? styles.commentImage : styles.postImage}
resizeMode={FastImage.resizeMode.contain}
/>
),
a: (htmlAttribs, children, convertedCSSStyles, passProps) => {
if (passProps.parentWrapper === 'Text') {
return (
<Text key={passProps.key} {...htmlAttribs} onPress={() => this._handleOnLinkPress(htmlAttribs['data-href'], htmlAttribs)}>
{children}
</Text>
);
}
return (
<TouchableOpacity key={passProps.key} {...htmlAttribs} onPress={() => this._handleOnLinkPress(htmlAttribs['data-href'], htmlAttribs)}>
{children}
</TouchableOpacity>
);
},
};
return ( return (
<Fragment> <Fragment>
<HTML <HTML
{...DEFAULT_PROPS}
html={body} html={body}
onLinkPress={(evt, href, hrefatr) => this._handleOnLinkPress(evt, href, hrefatr)} onLinkPress={(evt, href, hrefatr) => this._handleOnLinkPress(evt, href, hrefatr)}
containerStyle={isComment ? styles.commentContainer : styles.container} containerStyle={isComment ? styles.commentContainer : styles.container}
@ -204,6 +195,7 @@ class PostBody extends PureComponent {
imagesMaxWidth={isComment ? WIDTH - 50 : WIDTH} imagesMaxWidth={isComment ? WIDTH - 50 : WIDTH}
alterNode={e => this._alterNode(e, isComment)} alterNode={e => this._alterNode(e, isComment)}
alterData={e => this._alterData(e)} alterData={e => this._alterData(e)}
renderers={_customRenderer}
/> />
</Fragment> </Fragment>
); );

View File

@ -1,3 +1,4 @@
import { postBodySummary, renderPostBody } from '@esteemapp/esteem-render-helpers';
// Utils // Utils
import { markDown2Html } from './markdownToHtml'; import { markDown2Html } from './markdownToHtml';
import { getPostSummary } from './formatter'; import { getPostSummary } from './formatter';
@ -22,8 +23,8 @@ export const parsePost = (post, currentUserName) => {
post.avatar = `https://steemitimages.com/u/${post.author}/avatar/small`; post.avatar = `https://steemitimages.com/u/${post.author}/avatar/small`;
post.active_votes.sort((a, b) => b.rshares - a.rshares); post.active_votes.sort((a, b) => b.rshares - a.rshares);
post.body = markDown2Html(post.body); post.body = renderPostBody(post);
post.summary = getPostSummary(post.body, 150); post.summary = postBodySummary(post, 150);
post.is_declined_payout = Number(parseFloat(post.max_accepted_payout)) === 0; post.is_declined_payout = Number(parseFloat(post.max_accepted_payout)) === 0;
if (currentUserName) { if (currentUserName) {
@ -142,8 +143,8 @@ export const parseComments = comments => {
comment.author_reputation = getReputation(comment.author_reputation); comment.author_reputation = getReputation(comment.author_reputation);
comment.avatar = `https://steemitimages.com/u/${comment.author}/avatar/small`; comment.avatar = `https://steemitimages.com/u/${comment.author}/avatar/small`;
comment.markdownBody = comment.body; comment.markdownBody = comment.body;
comment.body = markDown2Html(comment.body); comment.body = renderPostBody(comment);
comment.summary = getPostSummary(comment.body, 100, true); comment.summary = `"${getPostSummary(comment.body, 100, true)}"`;
}); });
return comments; return comments;
}; };

124
yarn.lock
View File

@ -1098,6 +1098,18 @@
exec-sh "^0.3.2" exec-sh "^0.3.2"
minimist "^1.2.0" 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": "@jest/console@^24.7.1":
version "24.7.1" version "24.7.1"
resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" 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" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= 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: array-unique@^0.2.1:
version "0.2.1" version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 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" inherits "^2.0.3"
minimalistic-assert "^1.0.1" 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: hmac-drbg@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 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" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
htmlparser2@^3.10.1: htmlparser2@^3.10.0, htmlparser2@^3.10.1:
version "3.10.1" version "3.10.1"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
@ -5657,16 +5679,41 @@ locate-path@^3.0.0:
p-locate "^3.0.0" p-locate "^3.0.0"
path-exists "^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: lodash.debounce@^4.0.8:
version "4.0.8" version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= 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: lodash.merge@^4.6.0:
version "4.6.1" version "4.6.1"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54"
integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== 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: lodash.pad@^4.1.0:
version "4.5.1" version "4.5.1"
resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70"
@ -6965,6 +7012,14 @@ path-type@^3.0.0:
dependencies: dependencies:
pify "^3.0.0" 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: pegjs@^0.10.0:
version "0.10.0" version "0.10.0"
resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" 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" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= 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: prelude-ls@~1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 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" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== 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: process@~0.5.1:
version "0.5.2" version "0.5.2"
resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" 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" end-of-stream "^1.1.0"
once "^1.3.1" 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: punycode@^1.4.1:
version "1.4.1" version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 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" split-on-first "^1.0.0"
strict-uri-encode "^2.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: querystringify@^2.1.1:
version "2.1.1" version "2.1.1"
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
@ -8178,6 +8257,22 @@ sane@^4.0.3:
minimist "^1.1.1" minimist "^1.1.1"
walker "~1.0.5" 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: sax@^1.2.4:
version "1.2.4" version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 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" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 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: sshpk@^1.7.0:
version "1.16.1" version "1.16.1"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 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" querystringify "^2.1.1"
requires-port "^1.0.0" 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: use@^3.1.0:
version "3.1.1" version "3.1.1"
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 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" define-properties "^1.1.2"
object.getownpropertydescriptors "^2.0.3" 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: utils-merge@1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
@ -9462,7 +9580,7 @@ xmldoc@^0.4.0:
dependencies: dependencies:
sax "~1.1.1" sax "~1.1.1"
xmldom@0.1.x: xmldom@0.1.x, xmldom@^0.1.27:
version "0.1.27" version "0.1.27"
resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9"
integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk= integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk=
@ -9477,7 +9595,7 @@ xregexp@2.0.0:
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943"
integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= 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" version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=