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 (
+
+ {typographys.map((typography) => (
+ -
+ {typographyNames[typography]}
+
+ ))}
+
+ );
+};
+
+export const FontWeight = () => {
+ return (
+
+ {fontWeights.map((fontWeight) => (
+ -
+ {fontWeightNames[fontWeight]}
+
+ ))}
+
+ );
+};
+
+export const As = () => {
+ return (
+
+ -
+
+ 앵커 태그를 사용해보자
+
+ h1으로 렌더해도 기본적으로는 Typography: content가 적용됩니다
+ 버튼도 가능하기는 함
+
+
+ );
+};
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"