bring in blocked redux code from lbry-redux
This commit is contained in:
parent
49bcfdce83
commit
b9f3146180
19 changed files with 321 additions and 39 deletions
10
flow-typed/blocked.js
vendored
Normal file
10
flow-typed/blocked.js
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
declare type BlocklistState = {
|
||||||
|
blockedChannels: Array<string>,
|
||||||
|
};
|
||||||
|
|
||||||
|
declare type BlocklistAction = {
|
||||||
|
type: string,
|
||||||
|
data: {
|
||||||
|
uri: string,
|
||||||
|
},
|
||||||
|
};
|
23
flow-typed/comment.js
vendored
Normal file
23
flow-typed/comment.js
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
declare type Comment = {
|
||||||
|
comment: string, // comment body
|
||||||
|
comment_id: string, // sha256 digest
|
||||||
|
claim_id: string, // id linking to the claim this comment
|
||||||
|
timestamp: number, // integer representing unix-time
|
||||||
|
is_hidden: boolean, // claim owner may enable/disable this
|
||||||
|
channel_id?: string, // claimId of channel signing this comment
|
||||||
|
channel_name?: string, // name of channel claim
|
||||||
|
channel_url?: string, // full lbry url to signing channel
|
||||||
|
signature?: string, // signature of comment by originating channel
|
||||||
|
signing_ts?: string, // timestamp used when signing this comment
|
||||||
|
is_channel_signature_valid?: boolean, // whether or not the signature could be validated
|
||||||
|
parent_id?: number, // comment_id of comment this is in reply to
|
||||||
|
};
|
||||||
|
|
||||||
|
// todo: relate individual comments to their commentId
|
||||||
|
declare type CommentsState = {
|
||||||
|
commentsByUri: { [string]: string },
|
||||||
|
byId: { [string]: Array<string> },
|
||||||
|
commentById: { [string]: Comment },
|
||||||
|
isLoading: boolean,
|
||||||
|
myComments: ?Set<string>,
|
||||||
|
};
|
93
flow-typed/notification.js
vendored
Normal file
93
flow-typed/notification.js
vendored
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
// @flow
|
||||||
|
import * as ACTIONS from 'constants/action_types';
|
||||||
|
|
||||||
|
/*
|
||||||
|
Toasts:
|
||||||
|
- First-in, first-out queue
|
||||||
|
- Simple messages that are shown in response to user interactions
|
||||||
|
- Never saved
|
||||||
|
- If they are the result of errors, use the isError flag when creating
|
||||||
|
- For errors that should interrupt user behavior, use Error
|
||||||
|
*/
|
||||||
|
declare type ToastParams = {
|
||||||
|
message: string,
|
||||||
|
title?: string,
|
||||||
|
linkText?: string,
|
||||||
|
linkTarget?: string,
|
||||||
|
isError?: boolean,
|
||||||
|
};
|
||||||
|
|
||||||
|
declare type Toast = {
|
||||||
|
id: string,
|
||||||
|
params: ToastParams,
|
||||||
|
};
|
||||||
|
|
||||||
|
declare type DoToast = {
|
||||||
|
type: ACTIONS.CREATE_TOAST,
|
||||||
|
data: Toast,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Notifications:
|
||||||
|
- List of notifications based on user interactions/app notifications
|
||||||
|
- Always saved, but can be manually deleted
|
||||||
|
- Can happen in the background, or because of user interaction (ex: publish confirmed)
|
||||||
|
*/
|
||||||
|
declare type Notification = {
|
||||||
|
id: string, // Unique id
|
||||||
|
dateCreated: number,
|
||||||
|
isRead: boolean, // Used to display "new" notifications that a user hasn't seen yet
|
||||||
|
source?: string, // The type/area an notification is from. Used for sorting (ex: publishes, transactions)
|
||||||
|
// We may want to use priority/isDismissed in the future to specify how urgent a notification is
|
||||||
|
// and if the user should see it immediately
|
||||||
|
// isDissmied: boolean,
|
||||||
|
// priority?: number
|
||||||
|
};
|
||||||
|
|
||||||
|
declare type DoNotification = {
|
||||||
|
type: ACTIONS.CREATE_NOTIFICATION,
|
||||||
|
data: Notification,
|
||||||
|
};
|
||||||
|
|
||||||
|
declare type DoEditNotification = {
|
||||||
|
type: ACTIONS.EDIT_NOTIFICATION,
|
||||||
|
data: {
|
||||||
|
notification: Notification,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
declare type DoDeleteNotification = {
|
||||||
|
type: ACTIONS.DELETE_NOTIFICATION,
|
||||||
|
data: {
|
||||||
|
id: string, // The id to delete
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Errors:
|
||||||
|
- First-in, first-out queue
|
||||||
|
- Errors that should interupt user behavior
|
||||||
|
- For errors that can be shown without interrupting a user, use Toast with the isError flag
|
||||||
|
*/
|
||||||
|
declare type ErrorNotification = {
|
||||||
|
title: string,
|
||||||
|
text: string,
|
||||||
|
};
|
||||||
|
|
||||||
|
declare type DoError = {
|
||||||
|
type: ACTIONS.CREATE_ERROR,
|
||||||
|
data: ErrorNotification,
|
||||||
|
};
|
||||||
|
|
||||||
|
declare type DoDismissError = {
|
||||||
|
type: ACTIONS.DISMISS_ERROR,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
NotificationState
|
||||||
|
*/
|
||||||
|
declare type NotificationState = {
|
||||||
|
notifications: Array<Notification>,
|
||||||
|
errors: Array<ErrorNotification>,
|
||||||
|
toasts: Array<Toast>,
|
||||||
|
};
|
|
@ -135,7 +135,7 @@
|
||||||
"imagesloaded": "^4.1.4",
|
"imagesloaded": "^4.1.4",
|
||||||
"json-loader": "^0.5.4",
|
"json-loader": "^0.5.4",
|
||||||
"lbry-format": "https://github.com/lbryio/lbry-format.git",
|
"lbry-format": "https://github.com/lbryio/lbry-format.git",
|
||||||
"lbry-redux": "lbryio/lbry-redux#5ac2065b6188e213c40eecd8149bc7b5b89e6eeb",
|
"lbry-redux": "lbryio/lbry-redux#e4c05cebe97b278eca0f7e1c24fa0c210132abd2",
|
||||||
"lbryinc": "lbryio/lbryinc#72eee35f5181940eb4a468a27ddb2a2a4e362fb0",
|
"lbryinc": "lbryio/lbryinc#72eee35f5181940eb4a468a27ddb2a2a4e362fb0",
|
||||||
"lint-staged": "^7.0.2",
|
"lint-staged": "^7.0.2",
|
||||||
"localforage": "^1.7.1",
|
"localforage": "^1.7.1",
|
||||||
|
@ -201,7 +201,7 @@
|
||||||
"webpack-cli": "^3.3.10",
|
"webpack-cli": "^3.3.10",
|
||||||
"webpack-config-utils": "^2.3.1",
|
"webpack-config-utils": "^2.3.1",
|
||||||
"webpack-dev-middleware": "^3.6.0",
|
"webpack-dev-middleware": "^3.6.0",
|
||||||
"webpack-dev-server": "^3.9.0",
|
"webpack-dev-server": "^3.11.0",
|
||||||
"webpack-hot-middleware": "^2.24.3",
|
"webpack-hot-middleware": "^2.24.3",
|
||||||
"webpack-merge": "^4.2.1",
|
"webpack-merge": "^4.2.1",
|
||||||
"webpack-node-externals": "^1.7.2",
|
"webpack-node-externals": "^1.7.2",
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import {
|
import {
|
||||||
selectChannelIsBlocked,
|
selectChannelIsBlocked,
|
||||||
doToggleBlockChannel,
|
|
||||||
makeSelectClaimIsMine,
|
makeSelectClaimIsMine,
|
||||||
makeSelectShortUrlForUri,
|
makeSelectShortUrlForUri,
|
||||||
makeSelectPermanentUrlForUri,
|
makeSelectPermanentUrlForUri,
|
||||||
} from 'lbry-redux';
|
} from 'lbry-redux';
|
||||||
|
import { doToggleBlockChannel } from 'redux/actions/blocked';
|
||||||
import { doToast } from 'redux/actions/notifications';
|
import { doToast } from 'redux/actions/notifications';
|
||||||
import BlockButton from './view';
|
import BlockButton from './view';
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,10 @@ import {
|
||||||
doClaimSearch,
|
doClaimSearch,
|
||||||
selectClaimSearchByQuery,
|
selectClaimSearchByQuery,
|
||||||
selectFetchingClaimSearch,
|
selectFetchingClaimSearch,
|
||||||
selectBlockedChannels,
|
|
||||||
SETTINGS,
|
SETTINGS,
|
||||||
selectFollowedTags,
|
selectFollowedTags,
|
||||||
} from 'lbry-redux';
|
} from 'lbry-redux';
|
||||||
|
import { selectBlockedChannels } from 'redux/selectors/blocked';
|
||||||
import { doToggleTagFollowDesktop } from 'redux/actions/tags';
|
import { doToggleTagFollowDesktop } from 'redux/actions/tags';
|
||||||
import { makeSelectClientSetting } from 'redux/selectors/settings';
|
import { makeSelectClientSetting } from 'redux/selectors/settings';
|
||||||
import ClaimListDiscover from './view';
|
import ClaimListDiscover from './view';
|
||||||
|
|
|
@ -7,13 +7,12 @@ import {
|
||||||
makeSelectClaimIsPending,
|
makeSelectClaimIsPending,
|
||||||
makeSelectCoverForUri,
|
makeSelectCoverForUri,
|
||||||
makeSelectClaimIsNsfw,
|
makeSelectClaimIsNsfw,
|
||||||
selectBlockedChannels,
|
|
||||||
selectChannelIsBlocked,
|
|
||||||
doFileGet,
|
doFileGet,
|
||||||
makeSelectReflectingClaimForUri,
|
makeSelectReflectingClaimForUri,
|
||||||
makeSelectClaimWasPurchased,
|
makeSelectClaimWasPurchased,
|
||||||
makeSelectStreamingUrlForUri,
|
makeSelectStreamingUrlForUri,
|
||||||
} from 'lbry-redux';
|
} from 'lbry-redux';
|
||||||
|
import { selectBlockedChannels, selectChannelIsBlocked } from 'redux/selectors/blocked';
|
||||||
import { selectBlackListedOutpoints, selectFilteredOutpoints } from 'lbryinc';
|
import { selectBlackListedOutpoints, selectFilteredOutpoints } from 'lbryinc';
|
||||||
import { selectShowMatureContent } from 'redux/selectors/settings';
|
import { selectShowMatureContent } from 'redux/selectors/settings';
|
||||||
import { makeSelectHasVisitedUri } from 'redux/selectors/content';
|
import { makeSelectHasVisitedUri } from 'redux/selectors/content';
|
||||||
|
|
|
@ -7,9 +7,9 @@ import {
|
||||||
makeSelectTitleForUri,
|
makeSelectTitleForUri,
|
||||||
doFileGet,
|
doFileGet,
|
||||||
makeSelectChannelForClaimUri,
|
makeSelectChannelForClaimUri,
|
||||||
selectBlockedChannels,
|
|
||||||
makeSelectClaimIsNsfw,
|
makeSelectClaimIsNsfw,
|
||||||
} from 'lbry-redux';
|
} from 'lbry-redux';
|
||||||
|
import { selectBlockedChannels } from 'redux/selectors/blocked';
|
||||||
import { selectBlackListedOutpoints, selectFilteredOutpoints } from 'lbryinc';
|
import { selectBlackListedOutpoints, selectFilteredOutpoints } from 'lbryinc';
|
||||||
import { selectShowMatureContent } from 'redux/selectors/settings';
|
import { selectShowMatureContent } from 'redux/selectors/settings';
|
||||||
import ClaimPreviewTile from './view';
|
import ClaimPreviewTile from './view';
|
||||||
|
@ -32,7 +32,4 @@ const perform = dispatch => ({
|
||||||
getFile: uri => dispatch(doFileGet(uri, false)),
|
getFile: uri => dispatch(doFileGet(uri, false)),
|
||||||
});
|
});
|
||||||
|
|
||||||
export default connect(
|
export default connect(select, perform)(ClaimPreviewTile);
|
||||||
select,
|
|
||||||
perform
|
|
||||||
)(ClaimPreviewTile);
|
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import {
|
import { doClaimSearch, selectClaimSearchByQuery, selectFetchingClaimSearch, SETTINGS } from 'lbry-redux';
|
||||||
doClaimSearch,
|
import { selectBlockedChannels } from 'redux/selectors/blocked';
|
||||||
selectClaimSearchByQuery,
|
|
||||||
selectFetchingClaimSearch,
|
|
||||||
selectBlockedChannels,
|
|
||||||
SETTINGS,
|
|
||||||
} from 'lbry-redux';
|
|
||||||
import { doToggleTagFollowDesktop } from 'redux/actions/tags';
|
import { doToggleTagFollowDesktop } from 'redux/actions/tags';
|
||||||
import { makeSelectClientSetting } from 'redux/selectors/settings';
|
import { makeSelectClientSetting } from 'redux/selectors/settings';
|
||||||
import ClaimListDiscover from './view';
|
import ClaimListDiscover from './view';
|
||||||
|
|
|
@ -246,3 +246,9 @@ export const COMMENT_UPDATE_FAILED = 'COMMENT_UPDATE_FAILED';
|
||||||
export const COMMENT_HIDE_STARTED = 'COMMENT_HIDE_STARTED';
|
export const COMMENT_HIDE_STARTED = 'COMMENT_HIDE_STARTED';
|
||||||
export const COMMENT_HIDE_COMPLETED = 'COMMENT_HIDE_COMPLETED';
|
export const COMMENT_HIDE_COMPLETED = 'COMMENT_HIDE_COMPLETED';
|
||||||
export const COMMENT_HIDE_FAILED = 'COMMENT_HIDE_FAILED';
|
export const COMMENT_HIDE_FAILED = 'COMMENT_HIDE_FAILED';
|
||||||
|
|
||||||
|
// Blocked Channels
|
||||||
|
export const TOGGLE_BLOCK_CHANNEL = 'TOGGLE_BLOCK_CHANNEL';
|
||||||
|
|
||||||
|
// Sync
|
||||||
|
export const USER_STATE_POPULATE = 'USER_STATE_POPULATE';
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { selectFollowedTags, selectBlockedChannels } from 'lbry-redux';
|
import { selectBlockedChannels } from 'redux/selectors/blocked';
|
||||||
|
import { selectFollowedTags } from 'lbry-redux';
|
||||||
import { selectSubscriptions } from 'redux/selectors/subscriptions';
|
import { selectSubscriptions } from 'redux/selectors/subscriptions';
|
||||||
import ChannelsFollowingManagePage from './view';
|
import ChannelsFollowingManagePage from './view';
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { selectBlockedChannels } from 'lbry-redux';
|
import { selectBlockedChannels } from 'redux/selectors/blocked';
|
||||||
import ListBlocked from './view';
|
import ListBlocked from './view';
|
||||||
|
|
||||||
const select = state => ({
|
const select = state => ({
|
||||||
uris: selectBlockedChannels(state),
|
uris: selectBlockedChannels(state),
|
||||||
});
|
});
|
||||||
|
|
||||||
export default connect(
|
export default connect(select, null)(ListBlocked);
|
||||||
select,
|
|
||||||
null
|
|
||||||
)(ListBlocked);
|
|
||||||
|
|
|
@ -22,7 +22,9 @@ import {
|
||||||
selectFfmpegStatus,
|
selectFfmpegStatus,
|
||||||
selectFindingFFmpeg,
|
selectFindingFFmpeg,
|
||||||
} from 'redux/selectors/settings';
|
} from 'redux/selectors/settings';
|
||||||
import { doWalletStatus, selectWalletIsEncrypted, selectBlockedChannelsCount, SETTINGS } from 'lbry-redux';
|
import { doWalletStatus, selectWalletIsEncrypted, SETTINGS } from 'lbry-redux';
|
||||||
|
import { selectBlockedChannelsCount } from 'redux/selectors/blocked';
|
||||||
|
|
||||||
import SettingsPage from './view';
|
import SettingsPage from './view';
|
||||||
import { selectUserVerifiedEmail } from 'redux/selectors/user';
|
import { selectUserVerifiedEmail } from 'redux/selectors/user';
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,6 @@
|
||||||
import { combineReducers } from 'redux';
|
import { combineReducers } from 'redux';
|
||||||
import { connectRouter } from 'connected-react-router';
|
import { connectRouter } from 'connected-react-router';
|
||||||
import {
|
import { claimsReducer, fileInfoReducer, searchReducer, walletReducer, tagsReducer, publishReducer } from 'lbry-redux';
|
||||||
claimsReducer,
|
|
||||||
fileInfoReducer,
|
|
||||||
searchReducer,
|
|
||||||
walletReducer,
|
|
||||||
tagsReducer,
|
|
||||||
blockedReducer,
|
|
||||||
publishReducer,
|
|
||||||
} from 'lbry-redux';
|
|
||||||
import {
|
import {
|
||||||
costInfoReducer,
|
costInfoReducer,
|
||||||
blacklistReducer,
|
blacklistReducer,
|
||||||
|
@ -26,6 +18,7 @@ import notificationsReducer from 'redux/reducers/notifications';
|
||||||
import rewardsReducer from 'redux/reducers/rewards';
|
import rewardsReducer from 'redux/reducers/rewards';
|
||||||
import userReducer from 'redux/reducers/user';
|
import userReducer from 'redux/reducers/user';
|
||||||
import commentsReducer from 'redux/reducers/comments';
|
import commentsReducer from 'redux/reducers/comments';
|
||||||
|
import blockedReducer from 'redux/reducers/blocked';
|
||||||
|
|
||||||
export default history =>
|
export default history =>
|
||||||
combineReducers({
|
combineReducers({
|
||||||
|
|
9
ui/redux/actions/blocked.js
Normal file
9
ui/redux/actions/blocked.js
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
// @flow
|
||||||
|
import * as ACTIONS from 'constants/action_types';
|
||||||
|
|
||||||
|
export const doToggleBlockChannel = (uri: string) => ({
|
||||||
|
type: ACTIONS.TOGGLE_BLOCK_CHANNEL,
|
||||||
|
data: {
|
||||||
|
uri,
|
||||||
|
},
|
||||||
|
});
|
35
ui/redux/reducers/blocked.js
Normal file
35
ui/redux/reducers/blocked.js
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
// @flow
|
||||||
|
import * as ACTIONS from 'constants/action_types';
|
||||||
|
import { handleActions } from 'util/redux-utils';
|
||||||
|
|
||||||
|
const defaultState: BlocklistState = {
|
||||||
|
blockedChannels: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default handleActions(
|
||||||
|
{
|
||||||
|
[ACTIONS.TOGGLE_BLOCK_CHANNEL]: (state: BlocklistState, action: BlocklistAction): BlocklistState => {
|
||||||
|
const { blockedChannels } = state;
|
||||||
|
const { uri } = action.data;
|
||||||
|
let newBlockedChannels = blockedChannels.slice();
|
||||||
|
|
||||||
|
if (newBlockedChannels.includes(uri)) {
|
||||||
|
newBlockedChannels = newBlockedChannels.filter(id => id !== uri);
|
||||||
|
} else {
|
||||||
|
newBlockedChannels.push(uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
blockedChannels: newBlockedChannels,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
[ACTIONS.USER_STATE_POPULATE]: (state: BlocklistState, action: { data: { blocked: ?Array<string> } }) => {
|
||||||
|
const { blocked } = action.data;
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
blockedChannels: blocked && blocked.length ? blocked : state.blockedChannels,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
defaultState
|
||||||
|
);
|
13
ui/redux/selectors/blocked.js
Normal file
13
ui/redux/selectors/blocked.js
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
// @flow
|
||||||
|
import { createSelector } from 'reselect';
|
||||||
|
|
||||||
|
const selectState = (state: { blocked: BlocklistState }) => state.blocked || {};
|
||||||
|
|
||||||
|
export const selectBlockedChannels = createSelector(selectState, (state: BlocklistState) => state.blockedChannels);
|
||||||
|
|
||||||
|
export const selectBlockedChannelsCount = createSelector(selectBlockedChannels, (state: Array<string>) => state.length);
|
||||||
|
|
||||||
|
export const selectChannelIsBlocked = (uri: string) =>
|
||||||
|
createSelector(selectBlockedChannels, (state: Array<string>) => {
|
||||||
|
return state.includes(uri);
|
||||||
|
});
|
|
@ -9,12 +9,12 @@ import {
|
||||||
makeSelectRecommendedContentForUri,
|
makeSelectRecommendedContentForUri,
|
||||||
makeSelectMediaTypeForUri,
|
makeSelectMediaTypeForUri,
|
||||||
selectBalance,
|
selectBalance,
|
||||||
selectBlockedChannels,
|
|
||||||
parseURI,
|
parseURI,
|
||||||
buildURI,
|
buildURI,
|
||||||
makeSelectContentTypeForUri,
|
makeSelectContentTypeForUri,
|
||||||
makeSelectFileNameForUri,
|
makeSelectFileNameForUri,
|
||||||
} from 'lbry-redux';
|
} from 'lbry-redux';
|
||||||
|
import { selectBlockedChannels } from 'redux/selectors/blocked';
|
||||||
import { selectAllCostInfoByUri, makeSelectCostInfoForUri } from 'lbryinc';
|
import { selectAllCostInfoByUri, makeSelectCostInfoForUri } from 'lbryinc';
|
||||||
import { selectShowMatureContent } from 'redux/selectors/settings';
|
import { selectShowMatureContent } from 'redux/selectors/settings';
|
||||||
import * as RENDER_MODES from 'constants/file_render_modes';
|
import * as RENDER_MODES from 'constants/file_render_modes';
|
||||||
|
|
117
yarn.lock
117
yarn.lock
|
@ -5326,6 +5326,11 @@ html-entities@^1.2.0, html-entities@^1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
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"
|
||||||
|
|
||||||
|
html-entities@^1.3.1:
|
||||||
|
version "1.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44"
|
||||||
|
integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==
|
||||||
|
|
||||||
html-loader@^1.0.0-alpha.0:
|
html-loader@^1.0.0-alpha.0:
|
||||||
version "1.0.0-alpha.0"
|
version "1.0.0-alpha.0"
|
||||||
resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-1.0.0-alpha.0.tgz#3f4ae7b490a587619be6d1eaa8ce16683580c642"
|
resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-1.0.0-alpha.0.tgz#3f4ae7b490a587619be6d1eaa8ce16683580c642"
|
||||||
|
@ -6347,9 +6352,9 @@ lazy-val@^1.0.4:
|
||||||
yargs "^13.2.2"
|
yargs "^13.2.2"
|
||||||
zstd-codec "^0.1.1"
|
zstd-codec "^0.1.1"
|
||||||
|
|
||||||
lbry-redux@lbryio/lbry-redux#5ac2065b6188e213c40eecd8149bc7b5b89e6eeb:
|
lbry-redux@lbryio/lbry-redux#e4c05cebe97b278eca0f7e1c24fa0c210132abd2:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/5ac2065b6188e213c40eecd8149bc7b5b89e6eeb"
|
resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/e4c05cebe97b278eca0f7e1c24fa0c210132abd2"
|
||||||
dependencies:
|
dependencies:
|
||||||
proxy-polyfill "0.1.6"
|
proxy-polyfill "0.1.6"
|
||||||
reselect "^3.0.0"
|
reselect "^3.0.0"
|
||||||
|
@ -6648,6 +6653,11 @@ loglevel@^1.6.6:
|
||||||
version "1.6.7"
|
version "1.6.7"
|
||||||
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56"
|
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56"
|
||||||
|
|
||||||
|
loglevel@^1.6.8:
|
||||||
|
version "1.6.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171"
|
||||||
|
integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==
|
||||||
|
|
||||||
longest-streak@^2.0.1:
|
longest-streak@^2.0.1:
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4"
|
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4"
|
||||||
|
@ -7968,6 +7978,15 @@ portfinder@^1.0.25:
|
||||||
debug "^3.1.1"
|
debug "^3.1.1"
|
||||||
mkdirp "^0.5.1"
|
mkdirp "^0.5.1"
|
||||||
|
|
||||||
|
portfinder@^1.0.26:
|
||||||
|
version "1.0.26"
|
||||||
|
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70"
|
||||||
|
integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==
|
||||||
|
dependencies:
|
||||||
|
async "^2.6.2"
|
||||||
|
debug "^3.1.1"
|
||||||
|
mkdirp "^0.5.1"
|
||||||
|
|
||||||
posix-character-classes@^0.1.0:
|
posix-character-classes@^0.1.0:
|
||||||
version "0.1.1"
|
version "0.1.1"
|
||||||
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"
|
||||||
|
@ -9885,6 +9904,15 @@ sockjs@0.3.19:
|
||||||
faye-websocket "^0.10.0"
|
faye-websocket "^0.10.0"
|
||||||
uuid "^3.0.1"
|
uuid "^3.0.1"
|
||||||
|
|
||||||
|
sockjs@0.3.20:
|
||||||
|
version "0.3.20"
|
||||||
|
resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855"
|
||||||
|
integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==
|
||||||
|
dependencies:
|
||||||
|
faye-websocket "^0.10.0"
|
||||||
|
uuid "^3.4.0"
|
||||||
|
websocket-driver "0.6.5"
|
||||||
|
|
||||||
sort-keys-length@^1.0.0:
|
sort-keys-length@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188"
|
resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188"
|
||||||
|
@ -9998,6 +10026,17 @@ spdy@^4.0.1:
|
||||||
select-hose "^2.0.0"
|
select-hose "^2.0.0"
|
||||||
spdy-transport "^3.0.0"
|
spdy-transport "^3.0.0"
|
||||||
|
|
||||||
|
spdy@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
|
||||||
|
integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
|
||||||
|
dependencies:
|
||||||
|
debug "^4.1.0"
|
||||||
|
handle-thing "^2.0.0"
|
||||||
|
http-deceiver "^1.2.7"
|
||||||
|
select-hose "^2.0.0"
|
||||||
|
spdy-transport "^3.0.0"
|
||||||
|
|
||||||
speedometer@~0.1.2:
|
speedometer@~0.1.2:
|
||||||
version "0.1.4"
|
version "0.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d"
|
resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d"
|
||||||
|
@ -11064,7 +11103,7 @@ 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"
|
||||||
|
|
||||||
uuid@^3.0.1, uuid@^3.3.2:
|
uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0:
|
||||||
version "3.4.0"
|
version "3.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||||
|
|
||||||
|
@ -11284,7 +11323,46 @@ webpack-dev-middleware@^3.6.0, webpack-dev-middleware@^3.7.2:
|
||||||
range-parser "^1.2.1"
|
range-parser "^1.2.1"
|
||||||
webpack-log "^2.0.0"
|
webpack-log "^2.0.0"
|
||||||
|
|
||||||
webpack-dev-server@^3.7.2, webpack-dev-server@^3.9.0:
|
webpack-dev-server@^3.11.0:
|
||||||
|
version "3.11.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c"
|
||||||
|
integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==
|
||||||
|
dependencies:
|
||||||
|
ansi-html "0.0.7"
|
||||||
|
bonjour "^3.5.0"
|
||||||
|
chokidar "^2.1.8"
|
||||||
|
compression "^1.7.4"
|
||||||
|
connect-history-api-fallback "^1.6.0"
|
||||||
|
debug "^4.1.1"
|
||||||
|
del "^4.1.1"
|
||||||
|
express "^4.17.1"
|
||||||
|
html-entities "^1.3.1"
|
||||||
|
http-proxy-middleware "0.19.1"
|
||||||
|
import-local "^2.0.0"
|
||||||
|
internal-ip "^4.3.0"
|
||||||
|
ip "^1.1.5"
|
||||||
|
is-absolute-url "^3.0.3"
|
||||||
|
killable "^1.0.1"
|
||||||
|
loglevel "^1.6.8"
|
||||||
|
opn "^5.5.0"
|
||||||
|
p-retry "^3.0.1"
|
||||||
|
portfinder "^1.0.26"
|
||||||
|
schema-utils "^1.0.0"
|
||||||
|
selfsigned "^1.10.7"
|
||||||
|
semver "^6.3.0"
|
||||||
|
serve-index "^1.9.1"
|
||||||
|
sockjs "0.3.20"
|
||||||
|
sockjs-client "1.4.0"
|
||||||
|
spdy "^4.0.2"
|
||||||
|
strip-ansi "^3.0.1"
|
||||||
|
supports-color "^6.1.0"
|
||||||
|
url "^0.11.0"
|
||||||
|
webpack-dev-middleware "^3.7.2"
|
||||||
|
webpack-log "^2.0.0"
|
||||||
|
ws "^6.2.1"
|
||||||
|
yargs "^13.3.2"
|
||||||
|
|
||||||
|
webpack-dev-server@^3.7.2:
|
||||||
version "3.10.3"
|
version "3.10.3"
|
||||||
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0"
|
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -11383,6 +11461,13 @@ webpack@^4.28.4:
|
||||||
watchpack "^1.6.0"
|
watchpack "^1.6.0"
|
||||||
webpack-sources "^1.4.1"
|
webpack-sources "^1.4.1"
|
||||||
|
|
||||||
|
websocket-driver@0.6.5:
|
||||||
|
version "0.6.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36"
|
||||||
|
integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=
|
||||||
|
dependencies:
|
||||||
|
websocket-extensions ">=0.1.1"
|
||||||
|
|
||||||
websocket-driver@>=0.5.1:
|
websocket-driver@>=0.5.1:
|
||||||
version "0.7.3"
|
version "0.7.3"
|
||||||
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9"
|
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9"
|
||||||
|
@ -11600,6 +11685,14 @@ yargs-parser@^13.1.0, yargs-parser@^13.1.1:
|
||||||
camelcase "^5.0.0"
|
camelcase "^5.0.0"
|
||||||
decamelize "^1.2.0"
|
decamelize "^1.2.0"
|
||||||
|
|
||||||
|
yargs-parser@^13.1.2:
|
||||||
|
version "13.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
|
||||||
|
integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
|
||||||
|
dependencies:
|
||||||
|
camelcase "^5.0.0"
|
||||||
|
decamelize "^1.2.0"
|
||||||
|
|
||||||
yargs-parser@^18.1.0:
|
yargs-parser@^18.1.0:
|
||||||
version "18.1.0"
|
version "18.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.0.tgz#1b0ab1118ebd41f68bb30e729f4c83df36ae84c3"
|
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.0.tgz#1b0ab1118ebd41f68bb30e729f4c83df36ae84c3"
|
||||||
|
@ -11661,6 +11754,22 @@ yargs@^13.2.2, yargs@^13.2.4:
|
||||||
y18n "^4.0.0"
|
y18n "^4.0.0"
|
||||||
yargs-parser "^13.1.1"
|
yargs-parser "^13.1.1"
|
||||||
|
|
||||||
|
yargs@^13.3.2:
|
||||||
|
version "13.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
|
||||||
|
integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
|
||||||
|
dependencies:
|
||||||
|
cliui "^5.0.0"
|
||||||
|
find-up "^3.0.0"
|
||||||
|
get-caller-file "^2.0.1"
|
||||||
|
require-directory "^2.1.1"
|
||||||
|
require-main-filename "^2.0.0"
|
||||||
|
set-blocking "^2.0.0"
|
||||||
|
string-width "^3.0.0"
|
||||||
|
which-module "^2.0.0"
|
||||||
|
y18n "^4.0.0"
|
||||||
|
yargs-parser "^13.1.2"
|
||||||
|
|
||||||
yargs@^15.1.0:
|
yargs@^15.1.0:
|
||||||
version "15.3.0"
|
version "15.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.0.tgz#403af6edc75b3ae04bf66c94202228ba119f0976"
|
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.0.tgz#403af6edc75b3ae04bf66c94202228ba119f0976"
|
||||||
|
|
Loading…
Reference in a new issue