updates for cross-device sync #130
10 changed files with 4367 additions and 1157 deletions
3520
dist/bundle.es.js
vendored
Normal file
3520
dist/bundle.es.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
1667
dist/bundle.js
vendored
1667
dist/bundle.js
vendored
File diff suppressed because it is too large
Load diff
11
package.json
11
package.json
|
@ -2,7 +2,9 @@
|
|||
"name": "lbry-redux",
|
||||
"version": "0.0.1",
|
||||
"description": "Common shared components for desktop and mobile.",
|
||||
"keywords": ["lbry"],
|
||||
"keywords": [
|
||||
"lbry"
|
||||
],
|
||||
"license": "MIT",
|
||||
"homepage": "https://lbry.io/",
|
||||
"bugs": {
|
||||
|
@ -17,8 +19,9 @@
|
|||
"email": "hello@lbry.io"
|
||||
},
|
||||
"main": "dist/bundle.js",
|
||||
"module": "dist/bundle.es.js",
|
||||
"scripts": {
|
||||
"build": "webpack",
|
||||
"build": "rollup --config && webpack",
|
||||
"dev": "webpack --watch",
|
||||
"precommit": "lint-staged",
|
||||
"lint": "eslint 'src/**/*.js' --fix",
|
||||
|
@ -50,6 +53,10 @@
|
|||
"husky": "^0.14.3",
|
||||
"lint-staged": "^7.0.4",
|
||||
"prettier": "^1.4.2",
|
||||
"rollup": "^1.8.0",
|
||||
"rollup-plugin-babel": "3",
|
||||
"rollup-plugin-flow": "^1.1.1",
|
||||
"rollup-plugin-includepaths": "^0.2.3",
|
||||
"webpack": "^4.5.0",
|
||||
"webpack-cli": "^2.0.14"
|
||||
},
|
||||
|
|
26
rollup.config.js
Normal file
26
rollup.config.js
Normal file
|
@ -0,0 +1,26 @@
|
|||
import babel from 'rollup-plugin-babel';
|
||||
import flow from 'rollup-plugin-flow';
|
||||
import includePaths from 'rollup-plugin-includepaths';
|
||||
|
||||
let includePathOptions = {
|
||||
include: {},
|
||||
paths: ['src'],
|
||||
external: [],
|
||||
extensions: ['.js']
|
||||
};
|
||||
|
||||
export default {
|
||||
input: 'src/index.js',
|
||||
output: {
|
||||
file: 'dist/bundle.es.js',
|
||||
format: 'cjs'
|
||||
},
|
||||
plugins: [
|
||||
flow({all: true}),
|
||||
includePaths(includePathOptions),
|
||||
babel({
|
||||
babelrc: false,
|
||||
presets: ['stage-2'],
|
||||
}),
|
||||
],
|
||||
}
|
|
@ -60,6 +60,8 @@ export const WALLET_STATUS_START = 'WALLET_STATUS_START';
|
|||
export const WALLET_STATUS_COMPLETED = 'WALLET_STATUS_COMPLETED';
|
||||
export const SET_TRANSACTION_LIST_FILTER = 'SET_TRANSACTION_LIST_FILTER';
|
||||
export const UPDATE_CURRENT_HEIGHT = 'UPDATE_CURRENT_HEIGHT';
|
||||
export const SET_DRAFT_TRANSACTION_AMOUNT = 'SET_DRAFT_TRANSACTION_AMOUNT';
|
||||
export const SET_DRAFT_TRANSACTION_ADDRESS = 'SET_DRAFT_TRANSACTION_ADDRESS';
|
||||
|
||||
// Claims
|
||||
export const RESOLVE_URIS_STARTED = 'RESOLVE_URIS_STARTED';
|
||||
|
@ -206,7 +208,10 @@ export const DO_PREPARE_EDIT = 'DO_PREPARE_EDIT';
|
|||
export const CREATE_NOTIFICATION = 'CREATE_NOTIFICATION';
|
||||
export const EDIT_NOTIFICATION = 'EDIT_NOTIFICATION';
|
||||
export const DELETE_NOTIFICATION = 'DELETE_NOTIFICATION';
|
||||
export const DISMISS_NOTIFICATION = 'DISMISS_NOTIFICATION';
|
||||
export const CREATE_TOAST = 'CREATE_TOAST';
|
||||
export const DISMISS_TOAST = 'DISMISS_TOAST';
|
||||
export const CREATE_ERROR = 'CREATE_ERROR';
|
||||
export const DISMISS_ERROR = 'DISMISS_ERROR';
|
||||
|
||||
export const FETCH_DATE = 'FETCH_DATE';
|
||||
|
|
25
src/index.js
25
src/index.js
|
@ -10,7 +10,7 @@ import Lbry from 'lbry';
|
|||
import { selectState as selectSearchState } from 'redux/selectors/search';
|
||||
|
||||
// types
|
||||
export { Toast } from 'types/Notification';
|
||||
// export { Toast } from 'types/Notification';
|
||||
|
||||
// constants
|
||||
export {
|
||||
|
@ -111,7 +111,6 @@ export {
|
|||
makeSelectClaimForUri,
|
||||
makeSelectClaimIsMine,
|
||||
makeSelectFetchingChannelClaims,
|
||||
makeSelectClaimsInChannelForCurrentPage,
|
||||
makeSelectClaimsInChannelForPage,
|
||||
makeSelectMetadataForUri,
|
||||
makeSelectTitleForUri,
|
||||
|
@ -144,10 +143,6 @@ export {
|
|||
selectFetchingMyChannels,
|
||||
selectMyChannelClaims,
|
||||
selectResolvingUris,
|
||||
selectFeaturedUris,
|
||||
selectFetchingFeaturedUris,
|
||||
selectTrendingUris,
|
||||
selectFetchingTrendingUris,
|
||||
selectPlayingUri,
|
||||
selectChannelClaimCounts,
|
||||
selectCurrentChannelPage,
|
||||
|
@ -170,31 +165,13 @@ export {
|
|||
selectFileListPublishedSort,
|
||||
} from 'redux/selectors/file_info';
|
||||
|
||||
export {
|
||||
computePageFromPath,
|
||||
makeSelectCurrentParam,
|
||||
selectCurrentPath,
|
||||
selectCurrentPage,
|
||||
selectCurrentParams,
|
||||
selectHeaderLinks,
|
||||
selectPageTitle,
|
||||
selectPathAfterAuth,
|
||||
selectIsBackDisabled,
|
||||
selectIsForwardDisabled,
|
||||
selectHistoryIndex,
|
||||
selectHistoryStack,
|
||||
selectActiveHistoryEntry,
|
||||
} from 'redux/selectors/navigation';
|
||||
|
||||
export { selectSearchState };
|
||||
export {
|
||||
makeSelectSearchUris,
|
||||
selectSearchQuery,
|
||||
selectSearchValue,
|
||||
selectSearchOptions,
|
||||
selectIsSearching,
|
||||
selectSearchUrisByQuery,
|
||||
selectWunderBarAddress,
|
||||
selectSearchBarFocused,
|
||||
selectSearchSuggestions,
|
||||
makeSelectQueryWithOptions,
|
||||
|
|
|
@ -7,7 +7,7 @@ import {
|
|||
makeSelectSearchUris,
|
||||
selectSuggestions,
|
||||
makeSelectQueryWithOptions,
|
||||
selectSearchQuery,
|
||||
selectSearchValue,
|
||||
} from 'redux/selectors/search';
|
||||
import { batchActions } from 'util/batchActions';
|
||||
import debounce from 'util/debounce';
|
||||
|
@ -24,76 +24,6 @@ export const setSearchApi = (endpoint: string) => {
|
|||
CONNECTION_STRING = endpoint.replace(/\/*$/, '/'); // exactly one slash at the end;
|
||||
};
|
||||
|
||||
export const doSearch = (
|
||||
rawQuery: string, // pass in a query if you don't want to search for what's in the search bar
|
||||
size: ?number, // only pass in if you don't want to use the users setting (ex: related content)
|
||||
from: ?number,
|
||||
isBackgroundSearch: boolean = false
|
||||
) => (dispatch: Dispatch, getState: GetState) => {
|
||||
const query = rawQuery.replace(/^lbry:\/\//i, '').replace(/\//, ' ');
|
||||
|
||||
if (!query) {
|
||||
dispatch({
|
||||
type: ACTIONS.SEARCH_FAIL,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const state = getState();
|
||||
const queryWithOptions = makeSelectQueryWithOptions(query, size, from, isBackgroundSearch)(state);
|
||||
|
||||
// If we have already searched for something, we don't need to do anything
|
||||
const urisForQuery = makeSelectSearchUris(queryWithOptions)(state);
|
||||
if (urisForQuery && !!urisForQuery.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
dispatch({
|
||||
type: ACTIONS.SEARCH_START,
|
||||
});
|
||||
|
||||
// If the user is on the file page with a pre-populated uri and they select
|
||||
// the search option without typing anything, searchQuery will be empty
|
||||
// We need to populate it so the input is filled on the search page
|
||||
// isBackgroundSearch means the search is happening in the background, don't update the search query
|
||||
if (!state.search.searchQuery && !isBackgroundSearch) {
|
||||
dispatch({
|
||||
type: ACTIONS.UPDATE_SEARCH_QUERY,
|
||||
data: { searchQuery: query },
|
||||
});
|
||||
}
|
||||
|
||||
fetch(`${CONNECTION_STRING}search?${queryWithOptions}`)
|
||||
.then(handleFetchResponse)
|
||||
.then(data => {
|
||||
const uris = [];
|
||||
const actions = [];
|
||||
|
||||
data.forEach(result => {
|
||||
const uri = buildURI({
|
||||
claimName: result.name,
|
||||
claimId: result.claimId,
|
||||
});
|
||||
actions.push(doResolveUri(uri));
|
||||
uris.push(uri);
|
||||
});
|
||||
|
||||
actions.push({
|
||||
type: ACTIONS.SEARCH_SUCCESS,
|
||||
data: {
|
||||
query: queryWithOptions,
|
||||
uris,
|
||||
},
|
||||
});
|
||||
dispatch(batchActions(...actions));
|
||||
})
|
||||
.catch(() => {
|
||||
dispatch({
|
||||
type: ACTIONS.SEARCH_FAIL,
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
export const getSearchSuggestions = (value: string) => (dispatch: Dispatch, getState: GetState) => {
|
||||
const query = value.trim();
|
||||
|
||||
|
@ -145,6 +75,73 @@ export const doUpdateSearchQuery = (query: string, shouldSkipSuggestions: ?boole
|
|||
}
|
||||
};
|
||||
|
||||
export const doSearch = (
|
||||
rawQuery: string, // pass in a query if you don't want to search for what's in the search bar
|
||||
size: ?number, // only pass in if you don't want to use the users setting (ex: related content)
|
||||
from: ?number,
|
||||
isBackgroundSearch: boolean = false
|
||||
) => (dispatch: Dispatch, getState: GetState) => {
|
||||
const query = rawQuery.replace(/^lbry:\/\//i, '').replace(/\//, ' ');
|
||||
|
||||
if (!query) {
|
||||
dispatch({
|
||||
type: ACTIONS.SEARCH_FAIL,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const state = getState();
|
||||
const queryWithOptions = makeSelectQueryWithOptions(query, size, from, isBackgroundSearch)(state);
|
||||
|
||||
// If we have already searched for something, we don't need to do anything
|
||||
const urisForQuery = makeSelectSearchUris(queryWithOptions)(state);
|
||||
if (urisForQuery && !!urisForQuery.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
dispatch({
|
||||
type: ACTIONS.SEARCH_START,
|
||||
});
|
||||
|
||||
// If the user is on the file page with a pre-populated uri and they select
|
||||
// the search option without typing anything, searchQuery will be empty
|
||||
// We need to populate it so the input is filled on the search page
|
||||
// isBackgroundSearch means the search is happening in the background, don't update the search query
|
||||
if (!state.search.searchQuery && !isBackgroundSearch) {
|
||||
dispatch(doUpdateSearchQuery(query));
|
||||
}
|
||||
|
||||
fetch(`${CONNECTION_STRING}search?${queryWithOptions}`)
|
||||
.then(handleFetchResponse)
|
||||
.then(data => {
|
||||
const uris = [];
|
||||
const actions = [];
|
||||
|
||||
data.forEach(result => {
|
||||
const uri = buildURI({
|
||||
claimName: result.name,
|
||||
claimId: result.claimId,
|
||||
});
|
||||
actions.push(doResolveUri(uri));
|
||||
uris.push(uri);
|
||||
});
|
||||
|
||||
actions.push({
|
||||
type: ACTIONS.SEARCH_SUCCESS,
|
||||
data: {
|
||||
query: queryWithOptions,
|
||||
uris,
|
||||
},
|
||||
});
|
||||
dispatch(batchActions(...actions));
|
||||
})
|
||||
.catch(() => {
|
||||
dispatch({
|
||||
type: ACTIONS.SEARCH_FAIL,
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
export const doFocusSearchInput = () => (dispatch: Dispatch) =>
|
||||
dispatch({
|
||||
type: ACTIONS.SEARCH_FOCUS,
|
||||
|
@ -160,15 +157,15 @@ export const doUpdateSearchOptions = (newOptions: SearchOptions) => (
|
|||
getState: GetState
|
||||
) => {
|
||||
const state = getState();
|
||||
const searchQuery = selectSearchQuery(state);
|
||||
const searchValue = selectSearchValue(state);
|
||||
|
||||
dispatch({
|
||||
type: ACTIONS.UPDATE_SEARCH_OPTIONS,
|
||||
data: newOptions,
|
||||
});
|
||||
|
||||
if (searchQuery) {
|
||||
if (searchValue) {
|
||||
// After updating, perform a search with the new options
|
||||
dispatch(doSearch(searchQuery));
|
||||
dispatch(doSearch(searchValue));
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import { normalizeURI, buildURI, parseURI } from 'lbryURI';
|
||||
import { makeSelectCurrentParam } from 'redux/selectors/navigation';
|
||||
import { selectSearchUrisByQuery } from 'redux/selectors/search';
|
||||
import { createSelector } from 'reselect';
|
||||
import { isClaimNsfw } from 'util/claim';
|
||||
|
@ -116,24 +115,6 @@ export const makeSelectClaimsInChannelForPage = (uri, page) =>
|
|||
return claimIds.map(claimId => byId[claimId]);
|
||||
});
|
||||
|
||||
export const makeSelectClaimsInChannelForCurrentPage = uri => {
|
||||
const pageSelector = makeSelectCurrentParam('page');
|
||||
|
||||
return createSelector(
|
||||
selectClaimsById,
|
||||
selectAllClaimsByChannel,
|
||||
pageSelector,
|
||||
(byId, allClaims, page) => {
|
||||
const byChannel = allClaims[uri] || {};
|
||||
const claimIds = byChannel[page || 1];
|
||||
|
||||
if (!claimIds) return claimIds;
|
||||
|
||||
return claimIds.map(claimId => byId[claimId]);
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export const makeSelectClaimsInChannelForCurrentPageState = uri =>
|
||||
createSelector(
|
||||
selectClaimsById,
|
||||
|
@ -264,13 +245,11 @@ export const makeSelectNsfwCountFromUris = uris =>
|
|||
}, 0)
|
||||
);
|
||||
|
||||
export const makeSelectNsfwCountForChannel = uri => {
|
||||
const pageSelector = makeSelectCurrentParam('page');
|
||||
|
||||
return createSelector(
|
||||
export const makeSelectNsfwCountForChannel = uri =>
|
||||
createSelector(
|
||||
selectClaimsById,
|
||||
selectAllClaimsByChannel,
|
||||
pageSelector,
|
||||
selectCurrentChannelPage,
|
||||
(byId, allClaims, page) => {
|
||||
const byChannel = allClaims[uri] || {};
|
||||
const claimIds = byChannel[page || 1];
|
||||
|
@ -286,7 +265,6 @@ export const makeSelectNsfwCountForChannel = uri => {
|
|||
}, 0);
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export const makeSelectRecommendedContentForUri = uri =>
|
||||
createSelector(
|
||||
|
|
|
@ -3,7 +3,6 @@ import type { SearchState, SearchOptions, SearchSuggestion } from 'types/Search'
|
|||
import { SEARCH_TYPES, SEARCH_OPTIONS } from 'constants/search';
|
||||
import { getSearchQueryString } from 'util/query_params';
|
||||
import { normalizeURI, parseURI } from 'lbryURI';
|
||||
import { selectCurrentPage, selectCurrentParams } from 'redux/selectors/navigation';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
type State = { search: SearchState };
|
||||
|
@ -27,14 +26,6 @@ export const selectSuggestions: (
|
|||
state => state.suggestions
|
||||
);
|
||||
|
||||
export const selectSearchQuery: (state: State) => ?string = createSelector(
|
||||
selectCurrentPage,
|
||||
selectCurrentParams,
|
||||
selectSearchValue,
|
||||
(page: string, params: ?{ query: string }, searchValue: string) =>
|
||||
page === 'search' ? params && params.query : searchValue
|
||||
);
|
||||
|
||||
export const selectIsSearching: (state: State) => boolean = createSelector(
|
||||
selectState,
|
||||
state => state.searching
|
||||
|
@ -51,20 +42,6 @@ export const makeSelectSearchUris = (query: string): ((state: State) => Array<st
|
|||
byQuery => byQuery[query ? query.replace(/^lbry:\/\//i, '').replace(/\//, ' ') : query]
|
||||
);
|
||||
|
||||
export const selectWunderBarAddress = createSelector(
|
||||
selectCurrentPage,
|
||||
selectSearchQuery,
|
||||
selectCurrentParams,
|
||||
(page: string, query: string, params: { uri: string }) => {
|
||||
// only populate the wunderbar address if we are on the file/channel pages
|
||||
// or show the search query
|
||||
if (page === 'show') {
|
||||
return params.uri;
|
||||
}
|
||||
return query;
|
||||
}
|
||||
);
|
||||
|
||||
export const selectSearchBarFocused: boolean = createSelector(selectState, state => state.focused);
|
||||
|
||||
export const selectSearchSuggestions: Array<SearchSuggestion> = createSelector(
|
||||
|
@ -150,7 +127,7 @@ export const makeSelectQueryWithOptions = (
|
|||
customFrom: ?number,
|
||||
isBackgroundSearch: boolean = false // If it's a background search, don't use the users settings
|
||||
) =>
|
||||
createSelector(selectSearchQuery, selectSearchOptions, (query, options) => {
|
||||
createSelector(selectSearchValue, selectSearchOptions, (query, options) => {
|
||||
const size = customSize || options[SEARCH_OPTIONS.RESULT_COUNT];
|
||||
|
||||
const queryString = getSearchQueryString(
|
||||
|
|
72
yarn.lock
72
yarn.lock
|
@ -130,6 +130,16 @@
|
|||
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
|
||||
integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==
|
||||
|
||||
"@types/estree@0.0.39":
|
||||
version "0.0.39"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
|
||||
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
|
||||
|
||||
"@types/node@^11.11.6":
|
||||
version "11.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.0.tgz#b0df8d6ef9b5001b2be3a94d909ce3c29a80f9e1"
|
||||
integrity sha512-rx29MMkRdVmzunmiA4lzBYJNnXsW/PhG4kMBy2ATsYaDjGGR75dCFEVVROKpNwlVdcUX3xxlghKQOeDPBJobng==
|
||||
|
||||
"@webassemblyjs/ast@1.3.1":
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.3.1.tgz#3081b4b3ff0af733aa5ba573af998f33711293f8"
|
||||
|
@ -297,6 +307,11 @@ acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0:
|
|||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
|
||||
integrity sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==
|
||||
|
||||
acorn@^6.1.1:
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
|
||||
integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==
|
||||
|
||||
agent-base@4, agent-base@^4.1.0:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
|
||||
|
@ -1298,7 +1313,7 @@ babylon@7.0.0-beta.44:
|
|||
resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d"
|
||||
integrity sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==
|
||||
|
||||
babylon@^6.17.3, babylon@^6.18.0:
|
||||
babylon@^6.15.0, babylon@^6.17.3, babylon@^6.18.0:
|
||||
version "6.18.0"
|
||||
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
|
||||
integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
|
||||
|
@ -2624,6 +2639,11 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
|
|||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
|
||||
integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
|
||||
|
||||
estree-walker@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e"
|
||||
integrity sha1-va/oCVOD2EFNXcLs9MkXO225QS4=
|
||||
|
||||
esutils@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
|
||||
|
@ -2933,6 +2953,14 @@ flow-parser@^0.*:
|
|||
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.72.0.tgz#6c8041e76ac7d0be1a71ce29c00cd1435fb6013c"
|
||||
integrity sha512-kFaDtviKlD/rHi6NRp42KTbnPgz/nKcWUJQhqDnLDeKA8uGcRVSy0YlQjaf9M3pFo5PgC3SNFnCPpQGLtHjH2w==
|
||||
|
||||
flow-remove-types@^1.1.0:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/flow-remove-types/-/flow-remove-types-1.2.3.tgz#6131aefc7da43364bb8b479758c9dec7735d1a18"
|
||||
integrity sha512-ypq/U3V+t9atYiOuSJd40tekCra03EHKoRsiK/wXGrsZimuum0kdwVY7Yv0HTaoXgHW1WiayomYd+Q3kkvPl9Q==
|
||||
dependencies:
|
||||
babylon "^6.15.0"
|
||||
vlq "^0.2.1"
|
||||
|
||||
flow-typed@^2.5.1:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/flow-typed/-/flow-typed-2.5.1.tgz#0ff565cc94d2af8c557744ba364b6f14726a6b9f"
|
||||
|
@ -6036,6 +6064,43 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
|
|||
hash-base "^3.0.0"
|
||||
inherits "^2.0.1"
|
||||
|
||||
rollup-plugin-babel@3:
|
||||
version "3.0.7"
|
||||
resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-3.0.7.tgz#5b13611f1ab8922497e9d15197ae5d8a23fe3b1e"
|
||||
integrity sha512-bVe2y0z/V5Ax1qU8NX/0idmzIwJPdUGu8Xx3vXH73h0yGjxfv2gkFI82MBVg49SlsFlLTBadBHb67zy4TWM3hA==
|
||||
dependencies:
|
||||
rollup-pluginutils "^1.5.0"
|
||||
|
||||
rollup-plugin-flow@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/rollup-plugin-flow/-/rollup-plugin-flow-1.1.1.tgz#6ce568f1dd559666b77ab76b4bae251407528db6"
|
||||
integrity sha1-bOVo8d1Vlma3erdrS64lFAdSjbY=
|
||||
dependencies:
|
||||
flow-remove-types "^1.1.0"
|
||||
rollup-pluginutils "^1.5.1"
|
||||
|
||||
rollup-plugin-includepaths@^0.2.3:
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/rollup-plugin-includepaths/-/rollup-plugin-includepaths-0.2.3.tgz#244d21b9669a0debe476d825e4a02ed08c06b258"
|
||||
integrity sha512-4QbSIZPDT+FL4SViEVCRi4cGCA64zQJu7u5qmCkO3ecHy+l9EQBsue15KfCpddfb6Br0q47V/v2+E2YUiqts9g==
|
||||
|
||||
rollup-pluginutils@^1.5.0, rollup-pluginutils@^1.5.1:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408"
|
||||
integrity sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=
|
||||
dependencies:
|
||||
estree-walker "^0.2.1"
|
||||
minimatch "^3.0.2"
|
||||
|
||||
rollup@^1.8.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.8.0.tgz#e3ce8b708ad4325166717f74f244f691595d35e2"
|
||||
integrity sha512-dKxL6ihUZ9YrVySKf/LBz5joW2sqwWkiuki34279Ppr2cL+O6Za6Ujovk+rtTX0AFCIsH1rs6y8LYKdZZ/7C5A==
|
||||
dependencies:
|
||||
"@types/estree" "0.0.39"
|
||||
"@types/node" "^11.11.6"
|
||||
acorn "^6.1.1"
|
||||
|
||||
run-async@^2.0.0, run-async@^2.2.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
|
||||
|
@ -6972,6 +7037,11 @@ vinyl@^2.0.1:
|
|||
remove-trailing-separator "^1.0.1"
|
||||
replace-ext "^1.0.0"
|
||||
|
||||
vlq@^0.2.1:
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
|
||||
integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==
|
||||
|
||||
vm-browserify@0.0.4:
|
||||
version "0.0.4"
|
||||
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
|
||||
|
|
Loading…
Add table
Reference in a new issue