diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..c8a6fa5a --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,22 @@ + +# 이 Pull Request가 BREAKING CHANGE를 포함하고 있나요? +BREAKING CHANGE가 포함된 PR이라면 Base를 Beta로 잡아주셔야 합니다 ! +확인 후 이 내용은 지워주셔도 됩니다. + + +## 주요 변경사항 + + +## 링크 +- 디자인 시안 링크: +- 슬랙 링크: + +## 시급한 정도 + +--- +⚠︎ 긴급 : 선 어프루브 후 리뷰를 부탁드립니다. (리뷰는 추후 반영) +🏃‍♂️ 보통 : 최대한 빠르게 리뷰 부탁드립니다. +🐢 천천히 : 급하지 않습니다. + +## 중점적으로 봐주었으면 하는 부분 + diff --git a/.github/workflows/deploy-ui-kit-lib.yml b/.github/workflows/deploy-ui-kit-lib.yml index e9a2cfe8..62a62004 100644 --- a/.github/workflows/deploy-ui-kit-lib.yml +++ b/.github/workflows/deploy-ui-kit-lib.yml @@ -4,10 +4,12 @@ on: push: branches: - master + - alpha + - beta jobs: ui-kit-publish: - if: "! contains(toJSON(github.event.commits.*.msg), '[skip ci]')" + if: "!contains(toJSON(github.event.commits.*.msg), '[skip ci]') && contains(toJSON(github.event.commits.*.msg), '(ui-kit)')" runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 @@ -20,7 +22,6 @@ jobs: run: yarn - name: Build run: yarn workspace @lubycon/ui-kit build - - run: yarn workspace @lubycon/ui-kit copy-version - name: Publish id: publish uses: codfish/semantic-release-action@master diff --git a/.github/workflows/publish-storybook.yml b/.github/workflows/publish-storybook.yml new file mode 100644 index 00000000..80aacd66 --- /dev/null +++ b/.github/workflows/publish-storybook.yml @@ -0,0 +1,21 @@ +name: Publish Dev Storybook + +on: [workflow_dispatch] + +jobs: + storybook-publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Install depedencies + run: yarn + - name: Build Storybook + run: yarn workspace @lubycon/ui-kit build-stories + - name: Publish + run: yarn workspace @lubycon/ui-kit publish-stories + env: + ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} + \ No newline at end of file diff --git a/.gitignore b/.gitignore index a7181ef6..cc98647f 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ out/ # production build dist +storybook-static # misc .DS_Store diff --git a/.releaserc.js b/.releaserc.js index 33b52d0e..3cdae983 100644 --- a/.releaserc.js +++ b/.releaserc.js @@ -5,6 +5,16 @@ module.exports = { branches: [ { "name": "master" + }, + { + "name": "beta", + "channel": "beta", + "prerelease": "beta" + }, + { + "name": "alpha", + "channel": "alpha", + "prerelease": "alpha" } ], plugins: [ @@ -23,6 +33,12 @@ module.exports = { ["@semantic-release/npm", { "pkgRoot": "./ui-kit/dist" }], + [ + "@semantic-release/exec", + { + "prepareCmd": "yarn workspace @lubycon/ui-kit copy-version", + } + ], [ "@semantic-release/git", { diff --git a/package.json b/package.json index 7d6ba11f..0c55f2a3 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "sideEffects": false, "devDependencies": { "@semantic-release/commit-analyzer": "^8.0.1", + "@semantic-release/exec": "^5.0.0", "@semantic-release/git": "^9.0.0", "@semantic-release/github": "^7.2.0", "@semantic-release/npm": "^7.0.8", diff --git a/ui-kit/.storybook/deploy.js b/ui-kit/.storybook/deploy.js new file mode 100644 index 00000000..e977e214 --- /dev/null +++ b/ui-kit/.storybook/deploy.js @@ -0,0 +1,19 @@ +const ghpages = require('gh-pages'); +const path = require('path'); +const token = process.env.ACCESS_TOKEN; + +console.log('📦 개발용 스토리북 배포를 준비 중 입니다...'); + +ghpages.publish(path.join(__dirname, '../storybook-static'), { + branch: 'master', + remote: 'origin', + repo: `https://${token}@github.com/Lubycon/lubycon-ui-kit-storybook.git`, + message: `개발용 스토리북 배포`, +}, (err) => { + if (err) { + console.log('😢 배포에 실패하였습니다.'); + console.error(err); + } else { + console.log('🚀 개발용 스토리북 배포가 완료되었습니다!') + } +}); diff --git a/ui-kit/.storybook/preview.js b/ui-kit/.storybook/preview.js new file mode 100644 index 00000000..c378d0e6 --- /dev/null +++ b/ui-kit/.storybook/preview.js @@ -0,0 +1,6 @@ +import '../src/sass/index.scss'; +import React from 'react'; + +export const decorators = [(Story => ( + +))] diff --git a/ui-kit/package.json b/ui-kit/package.json index 39121257..6b7c215b 100644 --- a/ui-kit/package.json +++ b/ui-kit/package.json @@ -20,14 +20,20 @@ "lubycon" ], "author": "Lubycon", - "dependencies": {}, + "dependencies": { + "@types/classnames": "^2.2.11", + "classnames": "^2.2.6" + }, "scripts": { "start": "start-storybook -p 6006 --no-dll", "build": "yarn clean && rollup -c && yarn copy && tsc --emitDeclarationOnly -p ./tsconfig.build.json", + "build-stories": "yarn build-storybook -o ./storybook-static", + "publish-stories": "node ./.storybook/deploy.js", "test": "react-scripts test", "eject": "react-scripts eject", "clean": "rm -rf dist && mkdir dist", - "copy": "ncp src/sass/modules dist/sass && ncp package.json dist/package.json", + "copy": "ncp package.json dist/package.json", + "copy-sass": "ncp src/sass/modules dist/sass", "copy-version": "ncp dist/package.json package.json" }, "eslintConfig": { @@ -67,6 +73,7 @@ "@types/react-dom": "^16.9.8", "autoprefixer": "^9.0.0", "babel-loader": "^8.2.1", + "gh-pages": "^3.1.0", "postcss": "^7.0.2", "react": "^17.0.1", "react-dom": "^17.0.1", diff --git a/ui-kit/rollup.config.js b/ui-kit/rollup.config.js index f20015a4..0cc7c49a 100644 --- a/ui-kit/rollup.config.js +++ b/ui-kit/rollup.config.js @@ -12,8 +12,8 @@ const extensions = ['.js', '.jsx', '.ts', '.tsx']; export default [ buildCJS('src/components/index.ts'), buildESM('src/components/index.ts'), - buildCSS('src/components/index.scss', 'css/lubycon-ui-kit.css'), - buildCSS('src/components/index.scss', 'css/lubycon-ui-kit.min.css', { + buildCSS('src/sass/index.scss', 'css/lubycon-ui-kit.css'), + buildCSS('src/sass/index.scss', 'css/lubycon-ui-kit.min.css', { minimize: { preset: ['default'], }, diff --git a/ui-kit/src/components/Text/index.stories.tsx b/ui-kit/src/components/Text/index.stories.tsx new file mode 100644 index 00000000..06e380bc --- /dev/null +++ b/ui-kit/src/components/Text/index.stories.tsx @@ -0,0 +1,68 @@ +import React from 'react'; +import Text from './index'; +import { Meta } from '@storybook/react/types-6-0'; +import { typographys, Typographys, FontWeights, fontWeights } from './types'; + +export default { + title: 'Lubycon UI Kit/Text', + component: Text, +} as Meta; + +const typographyNames: { [key in Typographys]: string } = { + h1: '머릿말 1', + h2: '머릿말 2', + h3: '머릿말 3', + h4: '머릿말 4', + h5: '머릿말 5', + h6: '머릿말 6', + subtitle: '부제', + button: '버튼', + content: '본문 1', + content2: '본문 2', + caption: '캡션', +}; + +const fontWeightNames: { [key in FontWeights]: string } = { + light: '노토 산스 KR Light', + regular: '노토 산스 KR Regular', + bold: '노토 산스 KR Bold', + black: '노토 산스 KR Black', +}; + +export const Default = () => { + return ( + + ); +}; + +export const FontWeight = () => { + return ( + + ); +}; + +export const As = () => { + return ( + + ); +}; diff --git a/ui-kit/src/components/Text/index.tsx b/ui-kit/src/components/Text/index.tsx new file mode 100644 index 00000000..93a8f07f --- /dev/null +++ b/ui-kit/src/components/Text/index.tsx @@ -0,0 +1,31 @@ +import React, { ElementType, Ref } from 'react'; +import { DEFAULT_ELEMENT, FontWeights, Typographys } from './types'; +import { forwardRef } from 'react'; +import { OverridableProps } from 'types/OverridableProps'; +import clxs from 'classnames'; + +interface TextBaseProps { + typography?: Typographys; + fontWeight?: FontWeights; +} +type TextProps = OverridableProps; + +const Text = ( + { typography = 'content', fontWeight, as, ...props }: TextProps, + ref: Ref +) => { + const target = as ?? DEFAULT_ELEMENT; + const Component = target; + return ( + + ); +}; + +export default forwardRef(Text) as typeof Text; diff --git a/ui-kit/src/components/Text/types.ts b/ui-kit/src/components/Text/types.ts new file mode 100644 index 00000000..48400e62 --- /dev/null +++ b/ui-kit/src/components/Text/types.ts @@ -0,0 +1,19 @@ +export const typographys = [ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'subtitle', + 'button', + 'content', + 'content2', + 'caption', +] as const; +export type Typographys = typeof typographys[number]; + +export const fontWeights = ['light', 'regular', 'bold', 'black'] as const; +export type FontWeights = typeof fontWeights[number]; + +export const DEFAULT_ELEMENT = 'span' as const; diff --git a/ui-kit/src/components/index.scss b/ui-kit/src/components/index.scss deleted file mode 100644 index ed38bfe5..00000000 --- a/ui-kit/src/components/index.scss +++ /dev/null @@ -1 +0,0 @@ -@import './Button/style.scss'; diff --git a/ui-kit/src/components/index.ts b/ui-kit/src/components/index.ts index eae9c8e3..d769a324 100644 --- a/ui-kit/src/components/index.ts +++ b/ui-kit/src/components/index.ts @@ -1 +1,2 @@ export { default as Button } from './Button'; +export { default as Text } from './Text'; diff --git a/ui-kit/src/components/Button/style.scss b/ui-kit/src/sass/components/_Button.scss similarity index 100% rename from ui-kit/src/components/Button/style.scss rename to ui-kit/src/sass/components/_Button.scss diff --git a/ui-kit/src/sass/components/_Text.scss b/ui-kit/src/sass/components/_Text.scss new file mode 100644 index 00000000..8f98f01e --- /dev/null +++ b/ui-kit/src/sass/components/_Text.scss @@ -0,0 +1,7 @@ +.lubycon-text { + @each $name, $value in $font-weights { + &.lubycon-text--font-weight--#{$name} { + @include font-weight($name, map-get($font-weights, $name)); + } + } +} diff --git a/ui-kit/src/sass/components/_index.scss b/ui-kit/src/sass/components/_index.scss new file mode 100644 index 00000000..881cb8a9 --- /dev/null +++ b/ui-kit/src/sass/components/_index.scss @@ -0,0 +1,2 @@ +@import './Button'; +@import './Text'; diff --git a/ui-kit/src/sass/functions/_index.scss b/ui-kit/src/sass/functions/_index.scss new file mode 100644 index 00000000..0e8d1292 --- /dev/null +++ b/ui-kit/src/sass/functions/_index.scss @@ -0,0 +1 @@ +@import './strip-unit'; diff --git a/ui-kit/src/sass/functions/_strip-unit.scss b/ui-kit/src/sass/functions/_strip-unit.scss new file mode 100644 index 00000000..7d5322e8 --- /dev/null +++ b/ui-kit/src/sass/functions/_strip-unit.scss @@ -0,0 +1,7 @@ +@function strip-unit($number) { + @if type-of($number) == 'number' and not unitless($number) { + @return $number / ($number * 0 + 1); + } + + @return $number; +} diff --git a/ui-kit/src/sass/index.scss b/ui-kit/src/sass/index.scss new file mode 100644 index 00000000..93cd0915 --- /dev/null +++ b/ui-kit/src/sass/index.scss @@ -0,0 +1,3 @@ +@import './functions/index'; +@import './utils/index'; +@import './components/index.scss'; diff --git a/ui-kit/src/sass/modules/_test.scss b/ui-kit/src/sass/modules/_test.scss deleted file mode 100644 index 34e76bef..00000000 --- a/ui-kit/src/sass/modules/_test.scss +++ /dev/null @@ -1 +0,0 @@ -// SASS 모듈은 여기에 작성 diff --git a/ui-kit/src/sass/utils/_font-weights.scss b/ui-kit/src/sass/utils/_font-weights.scss new file mode 100644 index 00000000..ab1a9530 --- /dev/null +++ b/ui-kit/src/sass/utils/_font-weights.scss @@ -0,0 +1,24 @@ +$font-weights: ( + 'light': 300, + 'regular': 400, + 'bold': 700, + 'black': 900, +); + +@mixin font-weight($name, $value) { + font-weight: $value; + font-weight: var(--lubycon-font-weight-#{$name}); +} + +@mixin global-font-weight($name, $value) { + :root { + --lubycon-font-weight-#{$name}: #{$value}; + } + .lubycon-font-weight--#{$name} { + @include font-weight($name, $value); + } +} + +@each $name, $value in $font-weights { + @include global-font-weight($name, $value); +} diff --git a/ui-kit/src/sass/utils/_font.scss b/ui-kit/src/sass/utils/_font.scss new file mode 100644 index 00000000..43685e6e --- /dev/null +++ b/ui-kit/src/sass/utils/_font.scss @@ -0,0 +1,5 @@ +@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;700;900&display=swap'); + +html { + font-family: 'Noto Sans KR', sans-serif; +} diff --git a/ui-kit/src/sass/utils/_index.scss b/ui-kit/src/sass/utils/_index.scss new file mode 100644 index 00000000..c8277559 --- /dev/null +++ b/ui-kit/src/sass/utils/_index.scss @@ -0,0 +1,3 @@ +@import './font'; +@import './font-weights'; +@import './typography'; diff --git a/ui-kit/src/sass/utils/_typography.scss b/ui-kit/src/sass/utils/_typography.scss new file mode 100644 index 00000000..06738646 --- /dev/null +++ b/ui-kit/src/sass/utils/_typography.scss @@ -0,0 +1,33 @@ +@mixin _typography($name, $font-size, $font-weight, $line-height) { + $font-size-number: strip-unit($font-size); + + :root { + --lubycon-font-size-#{$font-size-number}: #{$font-size}; + --lubycon-line-height-#{$font-size-number}: #{$line-height}; + } + + .lubycon-font-size--#{$font-size-number} { + font-size: $font-size; + font-size: var(--lubycon-font-size-#{$font-size-number}); + line-height: $line-height; + line-height: var(--lubycon-line-height-#{$font-size-number}); + } + + .lubycon-typography--#{$name} { + @extend .lubycon-font-size--#{$font-size-number}; + @extend .lubycon-font-weight--#{$font-weight}; + } +} + +@include _typography('h1', 42px, 'light', 63px); +@include _typography('h2', 32px, 'light', 48px); +@include _typography('h3', 28px, 'regular', 42px); +@include _typography('h4', 26px, 'regular', 40px); +@include _typography('h5', 24px, 'bold', 40px); +@include _typography('h6', 20px, 'bold', 40px); + +@include _typography('subtitle', 18px, 'regular', 31px); +@include _typography('button', 16px, 'bold', 28px); +@include _typography('content', 15px, 'regular', 26px); +@include _typography('content2', 13px, 'regular', 22px); +@include _typography('caption', 12px, 'regular', 21px); diff --git a/ui-kit/src/types/OverridableProps.ts b/ui-kit/src/types/OverridableProps.ts new file mode 100644 index 00000000..90d6c8a9 --- /dev/null +++ b/ui-kit/src/types/OverridableProps.ts @@ -0,0 +1,9 @@ +import { ElementType } from 'react'; +import { CombineElementProps } from './utils'; + +/** + * @desc 원하는 엘리먼트로 렌더링할 수 있는 as 프로퍼티와 커스텀 Props를 병합합니다. + */ +export type OverridableProps = { + as?: E; +} & CombineElementProps; diff --git a/ui-kit/src/types/utils.ts b/ui-kit/src/types/utils.ts new file mode 100644 index 00000000..a9109e79 --- /dev/null +++ b/ui-kit/src/types/utils.ts @@ -0,0 +1,11 @@ +import { ComponentPropsWithoutRef, ElementType } from 'react'; + +/** + * @description T와 K에서 T의 프로퍼티를 제거한 타입을 병합합니다. + */ +export type Combine = T & Omit; + +export type CombineElementProps = Combine< + P, + ComponentPropsWithoutRef +>; diff --git a/ui-kit/tsconfig.json b/ui-kit/tsconfig.json index 8861e58a..a94a6da4 100644 --- a/ui-kit/tsconfig.json +++ b/ui-kit/tsconfig.json @@ -1,9 +1,11 @@ { "extends": "../tsconfig.common.json", "compilerOptions": { - "baseUrl": "./src", + "baseUrl": ".", "paths": { - "src/*": ["./src/*"] - }, + "src/*": ["./src/*"], + "components/*": ["./src/components/*"], + "types/*": ["./src/types/*"], + } } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index f9648aa6..7d9248b8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1995,6 +1995,18 @@ resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.2.0.tgz#ee9d5a09c9969eade1ec864776aeda5c5cddbbf0" integrity sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg== +"@semantic-release/exec@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@semantic-release/exec/-/exec-5.0.0.tgz#69c253107a755dabf7c262d417269d099f714356" + integrity sha512-t7LWXIvDJQbuGCy2WmMG51WyaGSLTvZBv9INvcI4S0kn+QjnnVVUMhcioIqhb0r3yqqarMzHVcABFug0q0OXjw== + dependencies: + "@semantic-release/error" "^2.1.0" + aggregate-error "^3.0.0" + debug "^4.0.0" + execa "^4.0.0" + lodash "^4.17.4" + parse-json "^5.0.0" + "@semantic-release/git@^9.0.0": version "9.0.0" resolved "https://registry.yarnpkg.com/@semantic-release/git/-/git-9.0.0.tgz#304c4883c87d095b1faaae93300f1f1e0466e9a5" @@ -2856,6 +2868,11 @@ resolved "https://registry.yarnpkg.com/@types/braces/-/braces-3.0.0.tgz#7da1c0d44ff1c7eb660a36ec078ea61ba7eb42cb" integrity sha512-TbH79tcyi9FHwbyboOKeRachRq63mSuWYXOflsNO9ZyE5ClQ/JaozNKl+aWUq87qPNsXasXxi2AbgfwIJ+8GQw== +"@types/classnames@^2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.11.tgz#2521cc86f69d15c5b90664e4829d84566052c1cf" + integrity sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw== + "@types/eslint@^7.2.4": version "7.2.5" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.5.tgz#92172ecf490c2fce4b076739693d75f30376d610" @@ -3974,7 +3991,7 @@ async@0.9.x: resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= -async@^2.6.2: +async@^2.6.1, async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== @@ -5238,7 +5255,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@2.2.6, classnames@^2.2.5: +classnames@2.2.6, classnames@^2.2.5, classnames@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== @@ -5487,7 +5504,7 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@^2.19.0, commander@^2.20.0: +commander@^2.18.0, commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -6941,6 +6958,11 @@ elliptic@^6.5.3: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +email-addresses@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/email-addresses/-/email-addresses-3.1.0.tgz#cabf7e085cbdb63008a70319a74e6136188812fb" + integrity sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg== + emittery@^0.7.1: version "0.7.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" @@ -7858,6 +7880,28 @@ filelist@^1.0.1: dependencies: minimatch "^3.0.4" +filename-reserved-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4" + integrity sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q= + +filenamify-url@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/filenamify-url/-/filenamify-url-1.0.0.tgz#b32bd81319ef5863b73078bed50f46a4f7975f50" + integrity sha1-syvYExnvWGO3MHi+1Q9GpPeXX1A= + dependencies: + filenamify "^1.0.0" + humanize-url "^1.0.0" + +filenamify@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5" + integrity sha1-qfL/0RxQO+0wABUCknI3jx8TZaU= + dependencies: + filename-reserved-regex "^1.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + filesize@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" @@ -8322,6 +8366,19 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +gh-pages@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-3.1.0.tgz#ec3ed0f6a6e3fc3d888758fa018f08191c96bd55" + integrity sha512-3b1rly9kuf3/dXsT8+ZxP0UhNLOo1CItj+3e31yUVcaph/yDsJ9RzD7JOw5o5zpBTJVQLlJAASNkUfepi9fe2w== + dependencies: + async "^2.6.1" + commander "^2.18.0" + email-addresses "^3.0.1" + filenamify-url "^1.0.0" + find-cache-dir "^3.3.1" + fs-extra "^8.1.0" + globby "^6.1.0" + git-log-parser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/git-log-parser/-/git-log-parser-1.2.0.tgz#2e6a4c1b13fc00028207ba795a7ac31667b9fd4a" @@ -9046,6 +9103,14 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" +humanize-url@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/humanize-url/-/humanize-url-1.0.1.tgz#f4ab99e0d288174ca4e1e50407c55fbae464efff" + integrity sha1-9KuZ4NKIF0yk4eUEB8VfuuRk7/8= + dependencies: + normalize-url "^1.0.0" + strip-url-auth "^1.0.0" + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -12010,7 +12075,7 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@1.9.1: +normalize-url@1.9.1, normalize-url@^1.0.0: version "1.9.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= @@ -16359,6 +16424,18 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-outer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== + dependencies: + escape-string-regexp "^1.0.2" + +strip-url-auth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-url-auth/-/strip-url-auth-1.0.1.tgz#22b0fa3a41385b33be3f331551bbb837fa0cd7ae" + integrity sha1-IrD6OkE4WzO+PzMVUbu4N/oM164= + style-inject@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" @@ -16906,6 +16983,13 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= + dependencies: + escape-string-regexp "^1.0.2" + trim-trailing-lines@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0"