MM-24115 Use Native + BuiltIn emojis instead of systemEmojis (#4274)
* MM-24115 Use BuiltInEmojis instead of systemEmojis * Address QA found issues
This commit is contained in:
parent
36e55c95a2
commit
1ae5584cb1
13 changed files with 243 additions and 178 deletions
|
|
@ -27,6 +27,7 @@ export default class EmojiSuggestion extends PureComponent {
|
|||
autocompleteCustomEmojis: PropTypes.func.isRequired,
|
||||
}).isRequired,
|
||||
cursorPosition: PropTypes.number,
|
||||
customEmojisEnabled: PropTypes.bool,
|
||||
emojis: PropTypes.array.isRequired,
|
||||
isSearch: PropTypes.bool,
|
||||
fuse: PropTypes.object.isRequired,
|
||||
|
|
@ -77,7 +78,7 @@ export default class EmojiSuggestion extends PureComponent {
|
|||
const oldMatchTerm = this.matchTerm;
|
||||
this.matchTerm = match[3] || '';
|
||||
|
||||
if (this.matchTerm !== oldMatchTerm && this.matchTerm.length) {
|
||||
if (this.matchTerm !== oldMatchTerm && this.matchTerm.length && nextProps.customEmojisEnabled) {
|
||||
this.props.actions.autocompleteCustomEmojis(this.matchTerm);
|
||||
return;
|
||||
}
|
||||
|
|
@ -89,10 +90,10 @@ export default class EmojiSuggestion extends PureComponent {
|
|||
}
|
||||
}
|
||||
|
||||
handleFuzzySearch = async (matchTerm, props) => {
|
||||
handleFuzzySearch = (matchTerm, props) => {
|
||||
const {emojis, fuse} = props;
|
||||
|
||||
const results = await fuse.search(matchTerm.toLowerCase());
|
||||
const results = fuse.search(matchTerm.toLowerCase());
|
||||
const data = results.map((index) => emojis[index]);
|
||||
this.setEmojiData(data, matchTerm);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import {createSelector} from 'reselect';
|
|||
import {bindActionCreators} from 'redux';
|
||||
|
||||
import {getCustomEmojisByName} from '@mm-redux/selectors/entities/emojis';
|
||||
import {getConfig} from '@mm-redux/selectors/entities/general';
|
||||
import {autocompleteCustomEmojis} from '@mm-redux/actions/emojis';
|
||||
|
||||
import {addReactionToLatestPost} from 'app/actions/views/emoji';
|
||||
|
|
@ -42,8 +43,9 @@ function mapStateToProps(state) {
|
|||
const fuse = new Fuse(list, options);
|
||||
|
||||
return {
|
||||
fuse,
|
||||
emojis,
|
||||
customEmojisEnabled: getConfig(state).EnableCustomEmoji === 'true',
|
||||
fuse,
|
||||
theme: getTheme(state),
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@ export default class EmojiPicker extends PureComponent {
|
|||
actions: PropTypes.shape({
|
||||
getCustomEmojis: PropTypes.func.isRequired,
|
||||
incrementEmojiPickerPage: PropTypes.func.isRequired,
|
||||
searchCustomEmojis: PropTypes.func.isRequired,
|
||||
}).isRequired,
|
||||
};
|
||||
|
||||
|
|
@ -187,7 +186,7 @@ export default class EmojiPicker extends PureComponent {
|
|||
|
||||
clearTimeout(this.searchTermTimeout);
|
||||
const timeout = searchTerm ? 100 : 0;
|
||||
this.searchTermTimeout = setTimeout(async () => {
|
||||
this.searchTermTimeout = setTimeout(() => {
|
||||
const filteredEmojis = this.searchEmojis(searchTerm);
|
||||
this.setState({
|
||||
filteredEmojis,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import {bindActionCreators} from 'redux';
|
|||
import {getTheme} from '@mm-redux/selectors/entities/preferences';
|
||||
import {getCustomEmojisByName} from '@mm-redux/selectors/entities/emojis';
|
||||
import {getConfig} from '@mm-redux/selectors/entities/general';
|
||||
import {getCustomEmojis, searchCustomEmojis} from '@mm-redux/actions/emojis';
|
||||
import {getCustomEmojis} from '@mm-redux/actions/emojis';
|
||||
|
||||
import {incrementEmojiPickerPage} from 'app/actions/views/emoji';
|
||||
import {getDimensions, isLandscape} from 'app/selectors/device';
|
||||
|
|
@ -173,7 +173,6 @@ function mapDispatchToProps(dispatch) {
|
|||
actions: bindActionCreators({
|
||||
getCustomEmojis,
|
||||
incrementEmojiPickerPage,
|
||||
searchCustomEmojis,
|
||||
}, dispatch),
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,15 +8,12 @@ import {getCustomEmojisByName as selectCustomEmojisByName} from '@mm-redux/selec
|
|||
import {parseNeededCustomEmojisFromText} from '@mm-redux/utils/emoji_utils';
|
||||
|
||||
import {GetStateFunc, DispatchFunc, ActionFunc, ActionResult} from '@mm-redux/types/actions';
|
||||
import {getSystemEmojis} from 'app/utils/emojis';
|
||||
|
||||
import {logError} from './errors';
|
||||
import {bindClientFunc, forceLogoutIfNecessary} from './helpers';
|
||||
import {SystemEmoji, CustomEmoji} from '@mm-redux/types/emojis';
|
||||
import {CustomEmoji} from '@mm-redux/types/emojis';
|
||||
import {Dictionary} from '@mm-redux/types/utilities';
|
||||
export let systemEmojis: Map<string, SystemEmoji> = new Map();
|
||||
export function setSystemEmojis(emojis: Map<string, SystemEmoji>) {
|
||||
systemEmojis = emojis;
|
||||
}
|
||||
|
||||
export function createCustomEmoji(emoji: any, image: any): ActionFunc {
|
||||
return bindClientFunc({
|
||||
|
|
@ -89,6 +86,7 @@ export function getCustomEmojisInText(text: string): ActionFunc {
|
|||
const state = getState();
|
||||
const nonExistentEmoji = state.entities.emojis.nonExistentEmoji;
|
||||
const customEmojisByName = selectCustomEmojisByName(state);
|
||||
const systemEmojis: Set<string> = getSystemEmojis();
|
||||
|
||||
const emojisToLoad = parseNeededCustomEmojisFromText(text, systemEmojis, customEmojisByName, nonExistentEmoji);
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import nock from 'nock';
|
|||
import * as Actions from '@mm-redux/actions/posts';
|
||||
import {getChannelStats} from '@mm-redux/actions/channels';
|
||||
import {login} from '@mm-redux/actions/users';
|
||||
import {setSystemEmojis, createCustomEmoji} from '@mm-redux/actions/emojis';
|
||||
import {createCustomEmoji} from '@mm-redux/actions/emojis';
|
||||
import {Client4} from '@mm-redux/client';
|
||||
import {Preferences, Posts, RequestStatus} from '../constants';
|
||||
import {ChannelTypes, PostTypes} from '@mm-redux/action_types';
|
||||
|
|
@ -555,8 +555,6 @@ describe('Actions.Posts', () => {
|
|||
},
|
||||
};
|
||||
|
||||
setSystemEmojis(new Map([['systemEmoji1', {}]]));
|
||||
|
||||
it('no emojis in post', () => {
|
||||
assert.deepEqual(
|
||||
Actions.getNeededCustomEmojis(state, [
|
||||
|
|
@ -578,7 +576,7 @@ describe('Actions.Posts', () => {
|
|||
it('system emoji in post', () => {
|
||||
assert.deepEqual(
|
||||
Actions.getNeededCustomEmojis(state, [
|
||||
{message: ':systemEmoji1:'},
|
||||
{message: ':mattermost:'},
|
||||
]),
|
||||
new Set(),
|
||||
);
|
||||
|
|
@ -587,7 +585,7 @@ describe('Actions.Posts', () => {
|
|||
it('mixed emojis in post', () => {
|
||||
assert.deepEqual(
|
||||
Actions.getNeededCustomEmojis(state, [
|
||||
{message: ':systemEmoji1: :name1: :name2: :name3:'},
|
||||
{message: ':mattermost: :name1: :name2: :name3:'},
|
||||
]),
|
||||
new Set(['name3']),
|
||||
);
|
||||
|
|
@ -659,7 +657,7 @@ describe('Actions.Posts', () => {
|
|||
it('mixed emojis in message attachment', () => {
|
||||
assert.deepEqual(
|
||||
Actions.getNeededCustomEmojis(state, [
|
||||
{message: '', props: {attachments: [{text: ':name4: :name1:', pretext: ':name3: :systemEmoji1:', fields: [{value: ':name3:'}]}]}},
|
||||
{message: '', props: {attachments: [{text: ':name4: :name1:', pretext: ':name3: :mattermost:', fields: [{value: ':name3:'}]}]}},
|
||||
]),
|
||||
new Set(['name3', 'name4']),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Client4, DEFAULT_LIMIT_AFTER, DEFAULT_LIMIT_BEFORE} from '@mm-redux/client';
|
||||
import {Client4} from '@mm-redux/client';
|
||||
import {General, Preferences, Posts} from '@mm-redux/constants';
|
||||
import {WebsocketEvents} from '@constants';
|
||||
import {PostTypes, ChannelTypes, FileTypes, IntegrationTypes} from '@mm-redux/action_types';
|
||||
|
|
@ -16,11 +16,12 @@ import {getUserIdFromChannelName} from '@mm-redux/utils/channel_utils';
|
|||
import {parseNeededCustomEmojisFromText} from '@mm-redux/utils/emoji_utils';
|
||||
import {isFromWebhook, isSystemMessage, shouldIgnorePost} from '@mm-redux/utils/post_utils';
|
||||
import {isCombinedUserActivityPost} from '@mm-redux/utils/post_list';
|
||||
import {getSystemEmojis} from 'app/utils/emojis';
|
||||
|
||||
import {getMyChannelMember, markChannelAsUnread, markChannelAsRead, markChannelAsViewed} from './channels';
|
||||
import {systemEmojis, getCustomEmojiByName, getCustomEmojisByName} from './emojis';
|
||||
import {getCustomEmojiByName, getCustomEmojisByName} from './emojis';
|
||||
import {logError} from './errors';
|
||||
import {bindClientFunc, forceLogoutIfNecessary} from './helpers';
|
||||
import {forceLogoutIfNecessary} from './helpers';
|
||||
|
||||
import {
|
||||
deletePreferences,
|
||||
|
|
@ -592,7 +593,7 @@ export function getCustomEmojiForReaction(name: string) {
|
|||
return async (dispatch: DispatchFunc, getState: GetStateFunc) => {
|
||||
const nonExistentEmoji = getState().entities.emojis.nonExistentEmoji;
|
||||
const customEmojisByName = selectCustomEmojisByName(getState());
|
||||
|
||||
const systemEmojis = getSystemEmojis();
|
||||
if (systemEmojis.has(name)) {
|
||||
return {data: true};
|
||||
}
|
||||
|
|
@ -623,6 +624,7 @@ export function getReactionsForPost(postId: string) {
|
|||
if (reactions && reactions.length > 0) {
|
||||
const nonExistentEmoji = getState().entities.emojis.nonExistentEmoji;
|
||||
const customEmojisByName = selectCustomEmojisByName(getState());
|
||||
const systemEmojis = getSystemEmojis();
|
||||
const emojisToLoad = new Set<string>();
|
||||
|
||||
reactions.forEach((r: Reaction) => {
|
||||
|
|
@ -1034,6 +1036,7 @@ export function getNeededCustomEmojis(state: GlobalState, posts: Array<Post>): S
|
|||
|
||||
let customEmojisByName: Map<string, CustomEmoji>; // Populate this lazily since it's relatively expensive
|
||||
const nonExistentEmoji = state.entities.emojis.nonExistentEmoji;
|
||||
const systemEmojis = getSystemEmojis();
|
||||
|
||||
posts.forEach((post) => {
|
||||
if (post.message.includes(':')) {
|
||||
|
|
@ -1097,7 +1100,7 @@ export function removePost(post: ExtendedPost) {
|
|||
}
|
||||
|
||||
export function selectPost(postId: string) {
|
||||
return async (dispatch: DispatchFunc, getState: GetStateFunc) => {
|
||||
return async (dispatch: DispatchFunc) => {
|
||||
dispatch({
|
||||
type: PostTypes.RECEIVED_POST_SELECTED,
|
||||
data: postId,
|
||||
|
|
@ -1179,7 +1182,7 @@ export function doPostActionWithCookie(postId: string, actionId: string, actionC
|
|||
}
|
||||
|
||||
export function addMessageIntoHistory(message: string) {
|
||||
return async (dispatch: DispatchFunc, getState: GetStateFunc) => {
|
||||
return async (dispatch: DispatchFunc) => {
|
||||
dispatch({
|
||||
type: PostTypes.ADD_MESSAGE_INTO_HISTORY,
|
||||
data: message,
|
||||
|
|
@ -1190,7 +1193,7 @@ export function addMessageIntoHistory(message: string) {
|
|||
}
|
||||
|
||||
export function resetHistoryIndex(index: number) {
|
||||
return async (dispatch: DispatchFunc, getState: GetStateFunc) => {
|
||||
return async (dispatch: DispatchFunc) => {
|
||||
dispatch({
|
||||
type: PostTypes.RESET_HISTORY_INDEX,
|
||||
data: index,
|
||||
|
|
@ -1201,7 +1204,7 @@ export function resetHistoryIndex(index: number) {
|
|||
}
|
||||
|
||||
export function moveHistoryIndexBack(index: number) {
|
||||
return async (dispatch: DispatchFunc, getState: GetStateFunc) => {
|
||||
return async (dispatch: DispatchFunc) => {
|
||||
dispatch({
|
||||
type: PostTypes.MOVE_HISTORY_INDEX_BACK,
|
||||
data: index,
|
||||
|
|
@ -1212,7 +1215,7 @@ export function moveHistoryIndexBack(index: number) {
|
|||
}
|
||||
|
||||
export function moveHistoryIndexForward(index: number) {
|
||||
return async (dispatch: DispatchFunc, getState: GetStateFunc) => {
|
||||
return async (dispatch: DispatchFunc) => {
|
||||
dispatch({
|
||||
type: PostTypes.MOVE_HISTORY_INDEX_FORWARD,
|
||||
data: index,
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ describe('EmojiUtils', () => {
|
|||
it('no emojis', () => {
|
||||
const actual = EmojiUtils.parseNeededCustomEmojisFromText(
|
||||
'This has no emojis',
|
||||
new Map(),
|
||||
new Set(),
|
||||
new Map(),
|
||||
new Map(),
|
||||
);
|
||||
|
|
@ -22,7 +22,7 @@ describe('EmojiUtils', () => {
|
|||
it('some emojis', () => {
|
||||
const actual = EmojiUtils.parseNeededCustomEmojisFromText(
|
||||
':this: :is_all: :emo-jis: :123:',
|
||||
new Map(),
|
||||
new Set(),
|
||||
new Map(),
|
||||
new Map(),
|
||||
);
|
||||
|
|
@ -34,7 +34,7 @@ describe('EmojiUtils', () => {
|
|||
it('text surrounding emojis', () => {
|
||||
const actual = EmojiUtils.parseNeededCustomEmojisFromText(
|
||||
':this:/:is_all: (:emo-jis:) surrounding:123:text:456:asdf',
|
||||
new Map(),
|
||||
new Set(),
|
||||
new Map(),
|
||||
new Map(),
|
||||
);
|
||||
|
|
@ -46,7 +46,7 @@ describe('EmojiUtils', () => {
|
|||
it('system emojis', () => {
|
||||
const actual = EmojiUtils.parseNeededCustomEmojisFromText(
|
||||
':this: :is_all: :emo-jis: :123:',
|
||||
new Map([['this', {name: 'this'}], ['123', {name: '123'}]]),
|
||||
new Set(['this', '123']),
|
||||
new Map(),
|
||||
new Map(),
|
||||
);
|
||||
|
|
@ -58,7 +58,7 @@ describe('EmojiUtils', () => {
|
|||
it('custom emojis', () => {
|
||||
const actual = EmojiUtils.parseNeededCustomEmojisFromText(
|
||||
':this: :is_all: :emo-jis: :123:',
|
||||
new Map(),
|
||||
new Set(),
|
||||
new Map([['is_all', {name: 'is_all'}], ['emo-jis', {name: 'emo-jis'}]]),
|
||||
new Map(),
|
||||
);
|
||||
|
|
@ -70,7 +70,7 @@ describe('EmojiUtils', () => {
|
|||
it('emojis that we\'ve already tried to load', () => {
|
||||
const actual = EmojiUtils.parseNeededCustomEmojisFromText(
|
||||
':this: :is_all: :emo-jis: :123:',
|
||||
new Map(),
|
||||
new Set(),
|
||||
new Map(),
|
||||
new Map([['this', {name: 'this'}], ['emo-jis', {name: 'emo-jis'}]]),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ export function getEmojiImageUrl(emoji: Emoji): string {
|
|||
return Client4.getSystemEmojiImageUrl(filename);
|
||||
}
|
||||
|
||||
export function parseNeededCustomEmojisFromText(text: string, systemEmojis: Map<string, SystemEmoji>, customEmojisByName: Map<string, CustomEmoji>, nonExistentEmoji: Set<string>): Set<string> {
|
||||
export function parseNeededCustomEmojisFromText(text: string, systemEmojis: Set<string>, customEmojisByName: Map<string, CustomEmoji>, nonExistentEmoji: Set<string>): Set<string> {
|
||||
if (!text.includes(':')) {
|
||||
return new Set();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
import React, {PureComponent} from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import {
|
||||
Keyboard,
|
||||
StyleSheet,
|
||||
View,
|
||||
} from 'react-native';
|
||||
|
|
@ -47,6 +48,7 @@ export default class AddReaction extends PureComponent {
|
|||
}
|
||||
|
||||
close = () => {
|
||||
Keyboard.dismiss();
|
||||
dismissModal();
|
||||
};
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
332
package-lock.json
generated
332
package-lock.json
generated
|
|
@ -4780,14 +4780,6 @@
|
|||
"resolved": "https://registry.npmjs.org/@react-native-community/cameraroll/-/cameraroll-1.5.2.tgz",
|
||||
"integrity": "sha512-xrkrmcI5V8IzWoGQOqycs2YZRmGqASqZMDkjOzFFg6bCy95+OMquPnCmGdaUx1ONO1x6tsQSCv87xM/oL+9m/A=="
|
||||
},
|
||||
"@react-native-community/cli-debugger-ui": {
|
||||
"version": "4.6.3",
|
||||
"resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.6.3.tgz",
|
||||
"integrity": "sha512-5hnzGBP1eXmc1gOuKm9x5uyw9z5QE3C2pSz57eaV6dHjl9LKfeBXd9L+RqeG/uWi7buE4YyJwirvpufLREoyJg==",
|
||||
"requires": {
|
||||
"serve-static": "^1.13.1"
|
||||
}
|
||||
},
|
||||
"@react-native-community/cli-platform-android": {
|
||||
"version": "4.6.3",
|
||||
"resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-4.6.3.tgz",
|
||||
|
|
@ -4988,11 +4980,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"@react-native-community/cli-types": {
|
||||
"version": "4.6.3",
|
||||
"resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-4.6.3.tgz",
|
||||
"integrity": "sha512-76uXaqPV1m6zGmL+x/KGHfLZiVVbCvkI4KElnd1dVEsDrVVoAsJ0tvBad+GhHh/NtYU1VmtuJ/zcKnjWdVla1A=="
|
||||
},
|
||||
"@react-native-community/netinfo": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-4.4.0.tgz",
|
||||
|
|
@ -6982,6 +6969,12 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"chownr": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
|
||||
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
|
||||
"optional": true
|
||||
},
|
||||
"ci-info": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
|
||||
|
|
@ -9674,6 +9667,15 @@
|
|||
"universalify": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"fs-minipass": {
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
|
||||
"integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minipass": "^2.6.0"
|
||||
}
|
||||
},
|
||||
"fs-readdir-recursive": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
|
||||
|
|
@ -9739,12 +9741,6 @@
|
|||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"chownr": {
|
||||
"version": "1.1.1",
|
||||
"resolved": false,
|
||||
"integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
|
||||
"optional": true
|
||||
},
|
||||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
"resolved": false,
|
||||
|
|
@ -9796,15 +9792,6 @@
|
|||
"integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
|
||||
"optional": true
|
||||
},
|
||||
"fs-minipass": {
|
||||
"version": "1.2.5",
|
||||
"resolved": false,
|
||||
"integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minipass": "^2.2.1"
|
||||
}
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": false,
|
||||
|
|
@ -9911,38 +9898,13 @@
|
|||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"resolved": false,
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||
"optional": true
|
||||
},
|
||||
"minipass": {
|
||||
"version": "2.3.5",
|
||||
"resolved": false,
|
||||
"integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.2",
|
||||
"yallist": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"minizlib": {
|
||||
"version": "1.2.1",
|
||||
"resolved": false,
|
||||
"integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minipass": "^2.2.1"
|
||||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
"resolved": false,
|
||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
|
|
@ -10086,9 +10048,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"minimist": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
|
|
@ -10188,21 +10150,6 @@
|
|||
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
|
||||
"optional": true
|
||||
},
|
||||
"tar": {
|
||||
"version": "4.4.8",
|
||||
"resolved": false,
|
||||
"integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chownr": "^1.1.1",
|
||||
"fs-minipass": "^1.2.5",
|
||||
"minipass": "^2.3.4",
|
||||
"minizlib": "^1.1.1",
|
||||
"mkdirp": "^0.5.0",
|
||||
"safe-buffer": "^5.1.2",
|
||||
"yallist": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": false,
|
||||
|
|
@ -10223,12 +10170,6 @@
|
|||
"resolved": false,
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"optional": true
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.0.3",
|
||||
"resolved": false,
|
||||
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -10317,9 +10258,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"fuse.js": {
|
||||
"version": "5.0.10-beta",
|
||||
"resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-5.0.10-beta.tgz",
|
||||
"integrity": "sha512-/tZI6BiF4zToF1neZxOIa5YmSw6j5+3yJW/agoYUZBiaxHJk/ANBxafYDS/60Tvo3JQM2u/ceRvOgBmRYkv70A=="
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.6.1.tgz",
|
||||
"integrity": "sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw=="
|
||||
},
|
||||
"gensync": {
|
||||
"version": "1.0.0-beta.1",
|
||||
|
|
@ -16839,20 +16780,12 @@
|
|||
"dev": true
|
||||
},
|
||||
"json5": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
|
||||
"integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
|
||||
"integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"minimist": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
||||
"dev": true
|
||||
}
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
|
|
@ -17965,9 +17898,36 @@
|
|||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
||||
},
|
||||
"minipass": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
|
||||
"integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.2",
|
||||
"yallist": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"minizlib": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
|
||||
"integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minipass": "^2.9.0"
|
||||
}
|
||||
},
|
||||
"mixin-deep": {
|
||||
"version": "1.3.2",
|
||||
|
|
@ -17989,11 +17949,11 @@
|
|||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"mmjstool": {
|
||||
|
|
@ -18594,9 +18554,9 @@
|
|||
}
|
||||
},
|
||||
"yargs": {
|
||||
"version": "15.1.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz",
|
||||
"integrity": "sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg==",
|
||||
"version": "15.3.1",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz",
|
||||
"integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cliui": "^6.0.0",
|
||||
|
|
@ -18609,13 +18569,13 @@
|
|||
"string-width": "^4.2.0",
|
||||
"which-module": "^2.0.0",
|
||||
"y18n": "^4.0.0",
|
||||
"yargs-parser": "^16.1.0"
|
||||
"yargs-parser": "^18.1.1"
|
||||
}
|
||||
},
|
||||
"yargs-parser": {
|
||||
"version": "16.1.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz",
|
||||
"integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==",
|
||||
"version": "18.1.3",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
|
||||
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"camelcase": "^5.0.0",
|
||||
|
|
@ -19589,9 +19549,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@jest/types": {
|
||||
"version": "25.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-25.3.0.tgz",
|
||||
"integrity": "sha512-UkaDNewdqXAmCDbN2GlUM6amDKS78eCqiw/UmF5nE0mmLTd6moJkiZJML/X52Ke3LH7Swhw883IRXq8o9nWjVw==",
|
||||
"version": "25.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz",
|
||||
"integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==",
|
||||
"requires": {
|
||||
"@types/istanbul-lib-coverage": "^2.0.0",
|
||||
"@types/istanbul-reports": "^1.1.1",
|
||||
|
|
@ -19600,14 +19560,14 @@
|
|||
}
|
||||
},
|
||||
"@react-native-community/cli": {
|
||||
"version": "4.6.3",
|
||||
"resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-4.6.3.tgz",
|
||||
"integrity": "sha512-MqOvUyKfspzA/uUSQELouYDkS4hbqaCWG/Nc13/k+vwQnXjq2sJlVKZCrctV4IY33oKMr/S0LwyZiiiwhQ8GMg==",
|
||||
"version": "4.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-4.8.0.tgz",
|
||||
"integrity": "sha512-z4qHfxtoTxKhQ0V9B02a82IxBkEBH5FfKnaJn9WL5Tf4SmE91ER8ZNVEWNr97S4TCFVYDrpM7iKnrYpNi/ciYQ==",
|
||||
"requires": {
|
||||
"@hapi/joi": "^15.0.3",
|
||||
"@react-native-community/cli-debugger-ui": "^4.6.3",
|
||||
"@react-native-community/cli-tools": "^4.6.3",
|
||||
"@react-native-community/cli-types": "^4.6.3",
|
||||
"@react-native-community/cli-debugger-ui": "^4.8.0",
|
||||
"@react-native-community/cli-tools": "^4.8.0",
|
||||
"@react-native-community/cli-types": "^4.8.0",
|
||||
"chalk": "^3.0.0",
|
||||
"command-exists": "^1.2.8",
|
||||
"commander": "^2.19.0",
|
||||
|
|
@ -19644,17 +19604,43 @@
|
|||
"ws": "^1.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@react-native-community/cli-debugger-ui": {
|
||||
"version": "4.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.8.0.tgz",
|
||||
"integrity": "sha512-Eq9lHINDXiBAwmFRCMN8jeKk6FTDnTxAfITkjPUNNTj7q3K+fH/oyOMJjxbIZbryIJY6g+g/ln6vsS2WzISNYQ==",
|
||||
"requires": {
|
||||
"serve-static": "^1.13.1"
|
||||
}
|
||||
},
|
||||
"@react-native-community/cli-tools": {
|
||||
"version": "4.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-4.8.0.tgz",
|
||||
"integrity": "sha512-voXGruhYyyhCbEYM2uZ54dMZcBgXFFcQxVK3nLwJDG9nSQGObZInj9Zf76ix5qGnvKKGWIGUcbmRhyLpAzTXuQ==",
|
||||
"requires": {
|
||||
"chalk": "^3.0.0",
|
||||
"lodash": "^4.17.15",
|
||||
"mime": "^2.4.1",
|
||||
"node-fetch": "^2.6.0",
|
||||
"open": "^6.2.0",
|
||||
"shell-quote": "1.6.1"
|
||||
}
|
||||
},
|
||||
"@react-native-community/cli-types": {
|
||||
"version": "4.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-4.8.0.tgz",
|
||||
"integrity": "sha512-gkjQdmzskQJdddVNRBATa7rWMbamD2j4B7w9shbg20tIBYoh/tgHdkgiLqZQSfBKa8HqrAkeCJTYaT1oV4oReQ=="
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
|
||||
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
|
||||
},
|
||||
"pretty-format": {
|
||||
"version": "25.3.0",
|
||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.3.0.tgz",
|
||||
"integrity": "sha512-wToHwF8bkQknIcFkBqNfKu4+UZqnrLn/Vr+wwKQwwvPzkBfDDKp/qIabFqdgtoi5PEnM8LFByVsOrHoa3SpTVA==",
|
||||
"version": "25.5.0",
|
||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz",
|
||||
"integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==",
|
||||
"requires": {
|
||||
"@jest/types": "^25.3.0",
|
||||
"@jest/types": "^25.5.0",
|
||||
"ansi-regex": "^5.0.0",
|
||||
"ansi-styles": "^4.0.0",
|
||||
"react-is": "^16.12.0"
|
||||
|
|
@ -19828,10 +19814,10 @@
|
|||
"p-locate": "^4.1.0"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
||||
"mime": {
|
||||
"version": "2.4.5",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz",
|
||||
"integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w=="
|
||||
},
|
||||
"p-locate": {
|
||||
"version": "4.1.0",
|
||||
|
|
@ -21957,6 +21943,29 @@
|
|||
"integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
|
||||
"dev": true
|
||||
},
|
||||
"tar": {
|
||||
"version": "4.4.13",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
|
||||
"integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chownr": "^1.1.1",
|
||||
"fs-minipass": "^1.2.5",
|
||||
"minipass": "^2.8.6",
|
||||
"minizlib": "^1.2.1",
|
||||
"mkdirp": "^0.5.0",
|
||||
"safe-buffer": "^5.1.2",
|
||||
"yallist": "^3.0.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"temp": {
|
||||
"version": "0.8.3",
|
||||
"resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
|
||||
|
|
@ -22184,9 +22193,9 @@
|
|||
}
|
||||
},
|
||||
"ts-jest": {
|
||||
"version": "25.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-25.2.1.tgz",
|
||||
"integrity": "sha512-TnntkEEjuXq/Gxpw7xToarmHbAafgCaAzOpnajnFC6jI7oo1trMzAHA04eWpc3MhV6+yvhE8uUBAmN+teRJh0A==",
|
||||
"version": "25.5.0",
|
||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-25.5.0.tgz",
|
||||
"integrity": "sha512-govrjbOk1UEzcJ5cX5k8X8IUtFuP3lp3mrF3ZuKtCdAOQzdeCM7qualhb/U8s8SWFwEDutOqfF5PLkJ+oaYD4w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bs-logger": "0.x",
|
||||
|
|
@ -22195,22 +22204,65 @@
|
|||
"json5": "2.x",
|
||||
"lodash.memoize": "4.x",
|
||||
"make-error": "1.x",
|
||||
"micromatch": "4.x",
|
||||
"mkdirp": "0.x",
|
||||
"resolve": "1.x",
|
||||
"semver": "^5.5",
|
||||
"yargs-parser": "^16.1.0"
|
||||
"semver": "6.x",
|
||||
"yargs-parser": "18.x"
|
||||
},
|
||||
"dependencies": {
|
||||
"semver": {
|
||||
"version": "5.7.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
|
||||
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
|
||||
"braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fill-range": "^7.0.1"
|
||||
}
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true
|
||||
},
|
||||
"micromatch": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
|
||||
"integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"braces": "^3.0.1",
|
||||
"picomatch": "^2.0.5"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
||||
"dev": true
|
||||
},
|
||||
"to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-number": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"yargs-parser": {
|
||||
"version": "16.1.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz",
|
||||
"integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==",
|
||||
"version": "18.1.3",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
|
||||
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"camelcase": "^5.0.0",
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
"deepmerge": "4.2.2",
|
||||
"emoji-regex": "8.0.0",
|
||||
"form-data": "3.0.0",
|
||||
"fuse.js": "5.0.10-beta",
|
||||
"fuse.js": "3.6.1",
|
||||
"intl": "1.2.5",
|
||||
"jail-monkey": "2.3.2",
|
||||
"mime-db": "1.43.0",
|
||||
|
|
@ -116,8 +116,8 @@
|
|||
"eslint-plugin-mattermost": "github:mattermost/eslint-plugin-mattermost#070ce792d105482ffb2b27cfc0b7e78b3d20acee",
|
||||
"eslint-plugin-react": "7.19.0",
|
||||
"harmony-reflect": "1.6.1",
|
||||
"isomorphic-fetch": "2.2.1",
|
||||
"husky": "4.2.3",
|
||||
"isomorphic-fetch": "2.2.1",
|
||||
"jest": "25.2.3",
|
||||
"jest-cli": "25.2.3",
|
||||
"jest-enzyme": "7.1.2",
|
||||
|
|
@ -135,7 +135,7 @@
|
|||
"redux-mock-store": "1.5.4",
|
||||
"redux-persist-node-storage": "2.0.0",
|
||||
"socketcluster": "16.0.1",
|
||||
"ts-jest": "25.2.1",
|
||||
"ts-jest": "25.5.0",
|
||||
"typescript": "3.8.3",
|
||||
"underscore": "1.9.2",
|
||||
"util": "0.12.2"
|
||||
|
|
|
|||
Loading…
Reference in a new issue