diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d05a018d7..25d617452 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,6 +42,9 @@ jobs: - name: (Backend) Install Packages working-directory: ./backend_server run: mix deps.get > /dev/null + - name: (Backend) run migration + working-directory: ./backend_server + run: MIX_ENV=ci MIX_ENV=ci mix ecto.migrate > /dev/null - name: (Backend) set up test DB working-directory: ./backend_server run: MIX_ENV=ci mix ecto.setup > /dev/null diff --git a/cypress/integration/home/layout.spec.js b/cypress/integration/home/layout.spec.js index 7d14b2db3..dfb285f7f 100644 --- a/cypress/integration/home/layout.spec.js +++ b/cypress/integration/home/layout.spec.js @@ -32,25 +32,25 @@ describe('home page: ', () => { }) // TODO: modify keys not working .. - it.skip('doramon Comp should close after shortcut pressed', () => { - // ctrl + C pressed - cy.id('header-search').click() - cy.id('doraemon-inputer').should('be.visible') - cy.id('doraemon-inputer').type('{ctrl}C', { release: true }) - cy.id('doraemon-inputer').should('not.be.visible') - - // ctrl + G pressed - cy.id('header-search').click() - cy.id('doraemon-inputer').should('be.visible') - cy.id('doraemon-inputer').type('{ctrl}G') - cy.id('doraemon-inputer').should('not.be.visible') - - // esc pressed - cy.id('header-search').click() - cy.id('doraemon-inputer').should('be.visible') - cy.id('doraemon-inputer').type('{esc}') - cy.id('doraemon-inputer').should('not.be.visible') - }) + // it.skip('doramon Comp should close after shortcut pressed', () => { + // // ctrl + C pressed + // cy.id('header-search').click() + // cy.id('doraemon-inputer').should('be.visible') + // cy.id('doraemon-inputer').type('{ctrl}C', { release: true }) + // cy.id('doraemon-inputer').should('not.be.visible') + + // // ctrl + G pressed + // cy.id('header-search').click() + // cy.id('doraemon-inputer').should('be.visible') + // cy.id('doraemon-inputer').type('{ctrl}G') + // cy.id('doraemon-inputer').should('not.be.visible') + + // // esc pressed + // cy.id('header-search').click() + // cy.id('doraemon-inputer').should('be.visible') + // cy.id('doraemon-inputer').type('{esc}') + // cy.id('doraemon-inputer').should('not.be.visible') + // }) it('user-related area should be seen', () => { cy.id('header-unlogin-user').should('be.visible') diff --git a/package.json b/package.json index e6b2034ac..1a65302bb 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "test:dev": "cross-env NODE_ENV=test jest --config .jest.config.js", "test:watch": "npm run test -- --watch", "test:cover": "npm run test -- --coverage", - "test:e2e": "cypress open", + "test:e2e": "./node_modules/.bin/cypress open", "cy:run": "./node_modules/.bin/cypress run --key 60eb2dd7-724d-4b39-bd12-f434f3465866 --record", "cy:run:free": "./node_modules/.bin/cypress run", "test:ci": "start-server-and-test ci http://localhost:3000 cy:run:free", @@ -153,7 +153,7 @@ "bundlewatch": "^0.2.7", "commitizen": "3.1.2", "coveralls": "3.0.14", - "cypress": "6.2.0", + "cypress": "^7.0.0", "cz-conventional-changelog": "^3.0.0", "enzyme": "3.11.0", "enzyme-adapter-react-16": "1.15.2", diff --git a/src/components/WorksCard/index.js b/src/components/Cards/WorksCard.tsx old mode 100755 new mode 100644 similarity index 63% rename from src/components/WorksCard/index.js rename to src/components/Cards/WorksCard.tsx index 9e39450a3..93d6505e2 --- a/src/components/WorksCard/index.js +++ b/src/components/Cards/WorksCard.tsx @@ -5,10 +5,9 @@ */ import React from 'react' -import T from 'prop-types' import { ICON, ICON_CMD } from '@/config' -import { buildLog, cutRest, nilOrEmpty } from '@/utils' +import { buildLog, cutRest } from '@/utils' import DigestSentence from '@/components/DigestSentence' import { SpaceGrow } from '@/components/Common' @@ -28,36 +27,47 @@ import { TechIcon, Divider, GithubIcon, -} from './styles' +} from './styles/works_card' /* eslint-disable-next-line */ const log = buildLog('c:WorksCard:index') -const getSafeValue = (mode, value, defaultValue) => { - return mode === 'preview' && nilOrEmpty(value) ? defaultValue : value +type TProps = { + testid?: string + withBg?: boolean + mode?: 'default' | 'preview' + item: { + cover: string + title: string + desc: string + tag: { + title: string + } + platform: { + title: string + } + techStack: { + icon: string + raw: string + }[] + insertedAt: string + upvote: number + commentsCount: number + isOSS: boolean + ossAddr?: boolean + } } -const WorksCard = ({ - withBg, - testid, - mode, +const WorksCard: React.FC = ({ + testid = 'works-card', item, - defaultTitle, - defaultDesc, - defaultUpvote, - defaultCommentsCount, + withBg = false, + mode = 'default', + // item, }) => { const descLimit = mode === 'default' ? 30 : 20 - const title = getSafeValue(mode, item.title, defaultTitle) - const desc = getSafeValue(mode, item.desc, defaultDesc) - - const upvote = getSafeValue(mode, item.upvote, defaultUpvote) - const commentsCount = getSafeValue( - mode, - item.commentsCount, - defaultCommentsCount, - ) + const { title, desc, upvote, commentsCount } = item return ( @@ -71,7 +81,7 @@ const WorksCard = ({
{title} - + log}> {cutRest(desc, descLimit)}
@@ -127,47 +137,4 @@ const WorksCard = ({ ) } -WorksCard.propTypes = { - testid: T.string, - withBg: T.bool, - mode: T.oneOf(['default', 'preview']), - item: T.shape({ - cover: T.string, - title: T.string, - desc: T.string, - tag: T.shape({ - title: T.string, - }), - platform: T.shape({ - title: T.string, - }), - techStack: T.arrayOf( - T.shape({ - icon: T.string, - }), - ), - insertedAt: T.string, - upvote: T.number, - commentsCount: T.number, - isOSS: T.bool, - ossAddr: T.bool, - }).isRequired, - - defaultTitle: T.string, - defaultDesc: T.string, - defaultUpvote: T.number, - defaultCommentsCount: T.number, -} - -WorksCard.defaultProps = { - testid: 'works-card', - withBg: false, - mode: 'default', - defaultTitle: '作品名称', - defaultDesc: '作品简介', - defaultUpvote: 99, - defaultCommentsCount: 66, - // item, -} - export default React.memo(WorksCard) diff --git a/src/components/WorksCard/styles/index.ts b/src/components/Cards/styles/works_card.ts old mode 100755 new mode 100644 similarity index 89% rename from src/components/WorksCard/styles/index.ts rename to src/components/Cards/styles/works_card.ts index dcea49964..e8272049c --- a/src/components/WorksCard/styles/index.ts +++ b/src/components/Cards/styles/works_card.ts @@ -14,16 +14,24 @@ export const Wrapper = styled.div.attrs(({ testid }: TTestable) => ({ height: 118px; width: 100%; padding: 6px 20px; - padding-right: 25px; - border-radius: 8px; + padding-right: 15px; + border-radius: 3px; border-bottom: 1px solid; border-bottom-color: #0b3b4a; + border-left: 1px solid transparent; + border-right: 1px solid transparent; :last-child { border-bottom: none; } - transition: all 0.25s; + + &:hover { + background: #0d3440; + border-left-color: #0b3b4a; + border-right-color: #0b3b4a; + } + transition: all 0.1s; ` export const IntroImg = styled(Img)` ${css.size(70)}; diff --git a/src/components/CommunityStatesPad/index.js b/src/components/CommunityStatesPad/index.js index 110e93582..60e26da9d 100755 --- a/src/components/CommunityStatesPad/index.js +++ b/src/components/CommunityStatesPad/index.js @@ -36,14 +36,13 @@ const CommunityStatesPad = ({ editorsCount, subscribersCount, postsCount, - videosCount, reposCount, jobsCount, viewerHasSubscribed, } = community const { isMobile } = useDevice() - const contentsCount = postsCount + videosCount + reposCount + jobsCount + const contentsCount = postsCount + reposCount + jobsCount return ( @@ -89,7 +88,6 @@ CommunityStatesPad.propTypes = { subscribersCount: T.number, editorsCount: T.number, postsCount: T.number, - videosCount: T.number, reposCount: T.number, jobsCount: T.number, viewerHasSubscribed: T.bool, @@ -104,7 +102,6 @@ CommunityStatesPad.defaultProps = { subscribersCount: 0, editorsCount: 0, postsCount: 0, - videosCount: 0, reposCount: 0, jobsCount: 0, viewerHasSubscribed: false, diff --git a/src/components/WorksCard/tests/index.test.ts b/src/components/WorksCard/tests/index.test.ts deleted file mode 100755 index 484ed7d23..000000000 --- a/src/components/WorksCard/tests/index.test.ts +++ /dev/null @@ -1,10 +0,0 @@ -// import React from 'react' -// import { shallow } from 'enzyme' - -// import WorksCard from '../index' - -describe('TODO ', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true) - }) -}) diff --git a/src/containers/content/WorksContent/Brand.tsx b/src/containers/content/WorksContent/Brand.tsx index ef712db60..c85d8ccc1 100644 --- a/src/containers/content/WorksContent/Brand.tsx +++ b/src/containers/content/WorksContent/Brand.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { Wrapper, Title, Desc } from './styles/brand' +import { Wrapper, Title, Desc, Divider } from './styles/brand' type TProps = { testid?: string @@ -11,6 +11,7 @@ const Brand: React.FC = ({ testid = 'works-content-brand' }) => { 作品集市 by makers, for makers. + ) } diff --git a/src/containers/content/WorksContent/FilterBar.tsx b/src/containers/content/WorksContent/FilterBar.tsx index cb5193b5f..7b7afb76b 100644 --- a/src/containers/content/WorksContent/FilterBar.tsx +++ b/src/containers/content/WorksContent/FilterBar.tsx @@ -3,40 +3,23 @@ import React from 'react' import { mockNaviCatalogMenu } from '@/utils' import { Br } from '@/components/Common' -import { OrButton } from '@/components/Buttons' -import FiltersMenu from '@/components/FiltersMenu' +// import FiltersMenu from '@/components/FiltersMenu' import NaviCatalog from '@/components/NaviCatalog' -import { VIEW } from './constant' +// import { VIEW } from './constant' -import fakeFilterItems from './fakeFilterItems' +// import fakeFilterItems from './fakeFilterItems' import { Wrapper, FilterWrapper } from './styles/filter_bar' -import { changeView } from './logic' +// import { changeView } from './logic' type TProps = { - activeView: string + activeView?: string } const FilterBar: React.FC = ({ activeView }) => { return ( - -
= ({ activeView }) => { items={mockNaviCatalogMenu()} /> -
- + {/*
*/} + {/* - +
*/}
) } diff --git a/src/containers/content/WorksContent/List/Trending.tsx b/src/containers/content/WorksContent/List/Trending.tsx index 56ec791e3..3deb27903 100644 --- a/src/containers/content/WorksContent/List/Trending.tsx +++ b/src/containers/content/WorksContent/List/Trending.tsx @@ -1,9 +1,10 @@ import React from 'react' import { ICON_BASE, ASSETS_ENDPOINT } from '@/config' +import { mockWorks } from '@/utils' import { ArrowButton } from '@/components/Buttons' -import WorksCard from '@/components/WorksCard' +import WorksCard from '@/components/Cards/WorksCard' import { BEST } from '../constant' @@ -22,39 +23,7 @@ const options = [ }, ] -const item = { - cover: `${ASSETS_ENDPOINT}/works/market1.jpeg`, - title: 'coderplanets', - desc: '作品简介', - tag: { - title: '协作工具', - }, - platform: { - title: '网站', - }, - techStack: [ - { - raw: 'javascript', - icon: `${ICON_BASE}/pl/javascript.svg`, - }, - { - raw: 'java', - icon: `${ICON_BASE}/pl/java.svg`, - }, - { - raw: 'elixir', - icon: `${ICON_BASE}/pl/elxiir.svg`, - }, - { - raw: 'ruby', - icon: `${ICON_BASE}/pl/ruby.svg`, - }, - ], - upvote: 99, - commentsCount: 99, - insertedAt: '', - isOpenSource: true, -} +const item = mockWorks() const Trending: React.FC = () => { const activeKey = 'month' diff --git a/src/containers/content/WorksContent/List/index.tsx b/src/containers/content/WorksContent/List/index.tsx index e6689aa15..0377bd533 100644 --- a/src/containers/content/WorksContent/List/index.tsx +++ b/src/containers/content/WorksContent/List/index.tsx @@ -1,65 +1,31 @@ import React from 'react' -import { ICON_BASE, ASSETS_ENDPOINT } from '@/config' - -import { Br } from '@/components/Common' -import WorksCard from '@/components/WorksCard' +import { mockWorks } from '@/utils' +// import { Br } from '@/components/Common' +import WorksCard from '@/components/Cards/WorksCard' import { LAUNCH } from '../constant' - -import Trending from './Trending' +// import Trending from './Trending' import OptionTab from './OptionTab' import { Wrapper, TabWrapper } from '../styles/list' const options = [ { - title: '全部', + title: '作品', raw: LAUNCH.ALL, }, { - title: '已发布', + title: '讨论', raw: LAUNCH.PUBLISHED, }, { - title: '预发布', + title: '里程碑', raw: LAUNCH.PRE_PUBLISH, }, ] -const item = { - cover: `${ASSETS_ENDPOINT}/works/market1.jpeg`, - title: 'coderplanets', - desc: '可能是最性感的开发者社区', - tag: { - title: '协作工具', - }, - platform: { - title: '网站', - }, - techStack: [ - { - raw: 'javascript', - icon: `${ICON_BASE}/pl/javascript.svg`, - }, - { - raw: 'java', - icon: `${ICON_BASE}/pl/java.svg`, - }, - { - raw: 'elixir', - icon: `${ICON_BASE}/pl/elxiir.svg`, - }, - { - raw: 'ruby', - icon: `${ICON_BASE}/pl/ruby.svg`, - }, - ], - upvote: 99, - commentsCount: 99, - insertedAt: '3天前', - isOpenSource: true, -} +const item = mockWorks() const lists = [ { ...item, id: 1 }, @@ -74,8 +40,8 @@ const lists = [ const List: React.FC = () => { return ( - -
+ {/* */} + {/*
*/} diff --git a/src/containers/content/WorksContent/RightSidebar/index.tsx b/src/containers/content/WorksContent/RightSidebar/index.tsx index 3bf5e31bb..d1aef36be 100644 --- a/src/containers/content/WorksContent/RightSidebar/index.tsx +++ b/src/containers/content/WorksContent/RightSidebar/index.tsx @@ -16,6 +16,7 @@ import { Divider, PublishIcon, PublishBtnWrapper, + InterviewsWrapper, Footer, } from '../styles/right_sidebar/index' @@ -57,9 +58,11 @@ const RightSidebar: React.FC = ({
- 开发者访谈 - 积极发掘有趣的开发者们,了解优秀产品背后的故事。 - + + 开发者访谈 + 积极发掘有趣的开发者们,了解优秀产品背后的故事。 + +
({ @@ -20,3 +20,10 @@ export const Desc = styled.div` color: ${theme('thread.articleDigest')}; font-size: 14px; ` +export const Divider = styled.div` + height: 1px; + width: 60%; + background: #004353; + margin-top: 32px; + opacity: 0.6; +` diff --git a/src/containers/content/WorksContent/styles/filter_bar.ts b/src/containers/content/WorksContent/styles/filter_bar.ts index 689967c95..f17697644 100644 --- a/src/containers/content/WorksContent/styles/filter_bar.ts +++ b/src/containers/content/WorksContent/styles/filter_bar.ts @@ -6,7 +6,6 @@ export const Wrapper = styled.div` ${css.flexColumn()}; width: 140px; margin-right: 25px; - margin-top: 12px; ` export const FilterWrapper = styled.div` /* border: 1px solid #0a4253; */ diff --git a/src/containers/content/WorksContent/styles/list/option_tab.ts b/src/containers/content/WorksContent/styles/list/option_tab.ts index f76efa02f..9783d9ebc 100644 --- a/src/containers/content/WorksContent/styles/list/option_tab.ts +++ b/src/containers/content/WorksContent/styles/list/option_tab.ts @@ -7,29 +7,32 @@ import { css, theme } from '@/utils' export const Wrapper = styled.div` ${css.flex('align-center')}; width: 200px; - margin-top: 5px; - margin-left: 16px; + + margin-top: 6px; + margin-bottom: 12px; + margin-left: 20px; ` export const ItemWrapper = styled.div` ${css.flex('align-both')}; cursor: pointer; - background-color: ${({ active }) => (active ? '#033844' : 'transparent')}; + background-color: ${({ active }) => (active ? '#03404e' : 'transparent')}; margin-right: 2px; border-radius: 10px; - padding: ${({ active }) => (active ? '2px 12px' : '2px 8px')}; + padding: ${({ active }) => (active ? '2px 16px' : '2px 8px')}; ` export const Icon = styled(Img)` fill: ${theme('thread.articleTitle')}; display: ${({ active }) => (active ? 'block' : 'none')}; ${css.size(14)}; - margin-right: 5px; + margin-right: 12px; margin-bottom: 1px; ` export const Text = styled.div` - opacity: ${({ active }) => (active ? 1 : 0.6)}; + font-weight: ${({ active }) => (active ? 'bold' : 'normal')}; + opacity: 1; color: ${({ active }) => active ? theme('thread.articleTitle') : theme('thread.articleDigest')}; - font-size: 12px; + font-size: 13px; ${ItemWrapper}:hover & { color: ${theme('thread.articleTitle')}; diff --git a/src/containers/content/WorksContent/styles/right_sidebar/index.ts b/src/containers/content/WorksContent/styles/right_sidebar/index.ts index 34f26a70d..d670d346f 100644 --- a/src/containers/content/WorksContent/styles/right_sidebar/index.ts +++ b/src/containers/content/WorksContent/styles/right_sidebar/index.ts @@ -9,7 +9,7 @@ export const Wrapper = styled.div.attrs(({ testid }: TTestable) => ({ }))` ${css.flexColumn()}; width: 200px; - margin-left: 40px; + margin-left: 42px; color: ${theme('thread.articleDigest')}; ` export const SubDesc = styled.div` @@ -37,6 +37,9 @@ export const PublishBtnWrapper = styled.div` margin-left: 2px; margin-right: 2px; ` +export const InterviewsWrapper = styled.div` + margin-left: 3px; +` export const Footer = styled.div` ${css.flex('justify-center')}; ` diff --git a/src/containers/editor/WorksEditor/Preview.js b/src/containers/editor/WorksEditor/Preview.js index ec8afcb1f..ecd67534f 100644 --- a/src/containers/editor/WorksEditor/Preview.js +++ b/src/containers/editor/WorksEditor/Preview.js @@ -1,7 +1,7 @@ import React from 'react' // import { ICON_BASE } from '@/config' -import WorksCard from '@/components/WorksCard' +import WorksCard from '@/components/Cards/WorksCard' import { STEP } from './constant' import { Wrapper } from './styles/preview' diff --git a/src/schemas/pages/community.ts b/src/schemas/pages/community.ts index 4494ad69b..d43f53a36 100755 --- a/src/schemas/pages/community.ts +++ b/src/schemas/pages/community.ts @@ -27,7 +27,6 @@ export const community = ` editorsCount postsCount jobsCount - videosCount reposCount } } diff --git a/src/stores/SharedModel/Community.ts b/src/stores/SharedModel/Community.ts index 7d3712d4c..9afc34e17 100755 --- a/src/stores/SharedModel/Community.ts +++ b/src/stores/SharedModel/Community.ts @@ -26,7 +26,6 @@ export const Community = T.model('Community', { subscribersCount: T.optional(T.number, 0), editorsCount: T.optional(T.number, 0), postsCount: T.optional(T.number, 0), - videosCount: T.optional(T.number, 0), jobsCount: T.optional(T.number, 0), reposCount: T.optional(T.number, 0), viewerHasSubscribed: T.maybeNull(T.boolean), diff --git a/utils/index.ts b/utils/index.ts index f1606149c..df130753e 100755 --- a/utils/index.ts +++ b/utils/index.ts @@ -144,4 +144,4 @@ export { default as GA } from './analytics' export { isMobile } from './device' -export { mockImage, mockImages, mockNaviCatalogMenu } from './mock' +export { mockImage, mockImages, mockNaviCatalogMenu, mockWorks } from './mock' diff --git a/utils/mock.ts b/utils/mock.ts index 8e1014d01..6825aad10 100644 --- a/utils/mock.ts +++ b/utils/mock.ts @@ -1,4 +1,4 @@ -import { ICON_CMD } from '@/config' +import { ICON_BASE, ICON_CMD, ASSETS_ENDPOINT } from '@/config' import { uid } from '@/utils' import type { TMenuItem } from '@/components/NaviCatalog/spec' @@ -929,3 +929,40 @@ export const mockNaviCatalogMenu = (): TMenuItem[] => { }, ] } + +export const mockWorks = () => { + return { + cover: `${ASSETS_ENDPOINT}/works/market1.jpeg`, + title: 'coderplanets', + desc: '可能是最性感的开发者社区', + isOSS: true, + tag: { + title: '协作工具', + }, + platform: { + title: '网站', + }, + techStack: [ + { + raw: 'javascript', + icon: `${ICON_BASE}/pl/javascript.svg`, + }, + { + raw: 'java', + icon: `${ICON_BASE}/pl/java.svg`, + }, + { + raw: 'elixir', + icon: `${ICON_BASE}/pl/elxiir.svg`, + }, + { + raw: 'ruby', + icon: `${ICON_BASE}/pl/ruby.svg`, + }, + ], + upvote: 99, + commentsCount: 99, + insertedAt: '3天前', + isOpenSource: true, + } +} diff --git a/yarn.lock b/yarn.lock index 129949743..ebf8c3721 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2216,6 +2216,10 @@ version "14.0.5" resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-14.0.5.tgz?cache=0&sync_timestamp=1590092201933&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b" +"@types/node@^14.14.31": + version "14.14.37" + resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e" + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -2263,9 +2267,9 @@ version "0.16.1" resolved "https://registry.npm.taobao.org/@types/scheduler/download/@types/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.npm.taobao.org/@types/sinonjs__fake-timers/download/@types/sinonjs__fake-timers-6.0.2.tgz?cache=0&sync_timestamp=1613384346470&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fsinonjs__fake-timers%2Fdownload%2F%40types%2Fsinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" "@types/sizzle@^2.3.2": version "2.3.2" @@ -2859,9 +2863,9 @@ aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/arch/download/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" are-we-there-yet@~1.1.2: version "1.1.5" @@ -3403,9 +3407,9 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" + resolved "https://registry.npm.taobao.org/blob-util/download/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" bluebird@3.5.5: version "3.5.5" @@ -3983,6 +3987,10 @@ ci-info@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/ci-info/download/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.npm.taobao.org/ci-info/download/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -4831,17 +4839,18 @@ cyclist@^1.0.1: version "1.0.1" resolved "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" -cypress@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-6.2.0.tgz#1a8a7dd5bd08db3064551a9f12072963cc9337bf" +cypress@^7.0.0: + version "7.0.0" + resolved "https://registry.npm.taobao.org/cypress/download/cypress-7.0.0.tgz?cache=0&sync_timestamp=1617677917899&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcypress%2Fdownload%2Fcypress-7.0.0.tgz#78b67a87bace1b530c123ba8d779899e676ed676" dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" @@ -4849,26 +4858,26 @@ cypress@6.2.0: cli-table3 "~0.6.0" commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.4.1" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.2.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -4946,6 +4955,10 @@ dateformat@^3.0.0: version "3.0.3" resolved "https://registry.npm.taobao.org/dateformat/download/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.npm.taobao.org/dayjs/download/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + debounce@^1.1.0: version "1.2.0" resolved "https://registry.npm.taobao.org/debounce/download/debounce-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebounce%2Fdownload%2Fdebounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" @@ -4976,6 +4989,12 @@ debug@4, debug@4.1.1, debug@^4, debug@^4.0.1, debug@^4.1.0: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.npm.taobao.org/debug/download/debug-4.3.2.tgz?cache=0&sync_timestamp=1607566551397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + dependencies: + ms "2.1.2" + debug@=3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -5883,9 +5902,9 @@ event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.npm.taobao.org/eventemitter2/download/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" events@^3.0.0: version "3.1.0" @@ -5916,6 +5935,20 @@ execa@2.0.4: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@4.1.0, execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + execa@^0.8.0: version "0.8.0" resolved "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz?cache=0&sync_timestamp=1590156579845&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" @@ -5940,20 +5973,6 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.0.0, execa@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - executable@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" @@ -6487,14 +6506,14 @@ fs-extra@^7.0.0, fs-extra@~7.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-9.1.0.tgz?cache=0&sync_timestamp=1611075656220&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-extra%2Fdownload%2Ffs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -6752,11 +6771,11 @@ global-dirs@^0.1.1: dependencies: ini "^1.3.4" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/global-dirs/download/global-dirs-3.0.0.tgz?cache=0&sync_timestamp=1610454797588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobal-dirs%2Fdownload%2Fglobal-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" dependencies: - ini "^1.3.5" + ini "2.0.0" global-modules@^1.0.0: version "1.0.0" @@ -7283,7 +7302,11 @@ inherits@2.0.3: version "2.0.3" resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/ini/download/ini-2.0.0.tgz?cache=0&sync_timestamp=1607907810942&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fini%2Fdownload%2Fini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + +ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" @@ -7449,6 +7472,12 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/is-ci/download/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + dependencies: + ci-info "^3.1.1" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -7561,12 +7590,12 @@ is-in-browser@^1.0.2, is-in-browser@^1.1.3: version "1.1.3" resolved "https://registry.npm.taobao.org/is-in-browser/download/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.npm.taobao.org/is-installed-globally/download/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-lower-case@^1.1.0: version "1.1.3" @@ -7616,6 +7645,10 @@ is-path-inside@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-obj%2Fdownload%2Fis-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -8653,6 +8686,10 @@ lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17. version "4.17.19" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + log-driver@^1.2.7: version "1.2.7" resolved "https://registry.npm.taobao.org/log-driver/download/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" @@ -9202,10 +9239,6 @@ module-alias@^2.0.1: version "2.2.2" resolved "https://registry.npm.taobao.org/module-alias/download/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" -moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - moo@^0.5.0: version "0.5.1" resolved "https://registry.npm.taobao.org/moo/download/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" @@ -10376,10 +10409,14 @@ prettier@^1.18.2: version "1.19.1" resolved "https://registry.npm.taobao.org/prettier/download/prettier-1.19.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprettier%2Fdownload%2Fprettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" -pretty-bytes@^5.1.0, pretty-bytes@^5.4.1: +pretty-bytes@^5.1.0: version "5.5.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e" +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.npm.taobao.org/pretty-bytes/download/pretty-bytes-5.6.0.tgz?cache=0&sync_timestamp=1613916344909&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpretty-bytes%2Fdownload%2Fpretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + pretty-format@^26.0.0, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.npm.taobao.org/pretty-format/download/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" @@ -10592,10 +10629,14 @@ railroad-diagrams@^1.0.0: version "1.0.0" resolved "https://registry.npm.taobao.org/railroad-diagrams/download/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" -ramda@0.26.1, ramda@~0.26.1: +ramda@0.26.1: version "0.26.1" resolved "https://registry.npm.taobao.org/ramda/download/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.npm.taobao.org/ramda/download/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + randexp@0.4.6: version "0.4.6" resolved "https://registry.npm.taobao.org/randexp/download/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" @@ -12303,12 +12344,18 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-8.1.1.tgz?cache=0&sync_timestamp=1611394023277&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" @@ -12828,10 +12875,6 @@ universalify@^0.1.0: version "0.1.2" resolved "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"