├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── Runpkg-Hero.png
├── components
├── AlgoliaLogo.js
├── Article.js
├── Editor.js
├── FileIcon.js
├── FileOverview.js
├── FolderIcon.js
├── Footer.js
├── FormidableLogo.js
├── GitHubLogo.js
├── Link.js
├── Main.js
├── Nav.js
├── NotFoundIcon.js
├── NpmLogo.js
├── PackageIcon.js
├── PackageOverview.js
├── PrettierIcon.js
├── RadioGroup.js
├── RegistryOverview.js
├── RunpkgIcon.js
├── SearchIcon.js
├── SearchInput.js
├── Spinner.js
├── Template.js
└── TreeView.js
├── favicon.ico
├── index.html
├── index.js
├── netlify.toml
├── package.json
├── reset.css
├── sw.js
├── utils
├── analyzeFile.js
├── es-module-shim.js
├── formatBytes.js
├── globalState.js
├── parseUrl.js
└── rplus.js
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .vscode
3 | /node_modules
4 | yarn-error.log
5 | cypress/screenshots
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | Thank you for looking into contributing to runpkg!
4 |
5 | ## Setup
6 |
7 | ### Clone this repo
8 |
9 | ```bash
10 | # HTTPS
11 | git clone https://github.com/FormidableLabs/runpkg.git && cd runpkg
12 |
13 | # or use SSH
14 | git clone git@github.com:FormidableLabs/runpkg.git && cd runpkg
15 | ```
16 |
17 | ### Install dev dependencies
18 |
19 | ```bash
20 | yarn
21 | # or
22 | npm i
23 | ```
24 |
25 | ### Run locally
26 |
27 | After installing the dependencies, you can run the `start` script, which will open the app in your default browser:
28 |
29 | ```bash
30 | yarn start
31 | # or
32 | npm start
33 | ```
34 |
35 | > Live reload is enabled by default with [servor](https://github.com/lukejacksonn/servor), so when you make changes to your code the browser will automatically reload the tab to reflect the saved changes.
36 |
37 | ## Contributor Covenant Code of Conduct
38 |
39 | ### Our Pledge
40 |
41 | In the interest of fostering an open and welcoming environment, we as
42 | contributors and maintainers pledge to making participation in our project and
43 | our community a harassment-free experience for everyone, regardless of age, body
44 | size, disability, ethnicity, gender identity and expression, level of experience,
45 | nationality, personal appearance, race, religion, or sexual identity and
46 | orientation.
47 |
48 | ### Our Standards
49 |
50 | Examples of behavior that contributes to creating a positive environment
51 | include:
52 |
53 | - Using welcoming and inclusive language
54 | - Being respectful of differing viewpoints and experiences
55 | - Gracefully accepting constructive criticism
56 | - Focusing on what is best for the community
57 | - Showing empathy towards other community members
58 |
59 | Examples of unacceptable behavior by participants include:
60 |
61 | - The use of sexualized language or imagery and unwelcome sexual attention or
62 | advances
63 | - Trolling, insulting/derogatory comments, and personal or political attacks
64 | - Public or private harassment
65 | - Publishing others' private information, such as a physical or electronic
66 | address, without explicit permission
67 | - Other conduct which could reasonably be considered inappropriate in a
68 | professional setting
69 |
70 | ### Our Responsibilities
71 |
72 | Project maintainers are responsible for clarifying the standards of acceptable
73 | behavior and are expected to take appropriate and fair corrective action in
74 | response to any instances of unacceptable behavior.
75 |
76 | Project maintainers have the right and responsibility to remove, edit, or
77 | reject comments, commits, code, wiki edits, issues, and other contributions
78 | that are not aligned to this Code of Conduct, or to ban temporarily or
79 | permanently any contributor for other behaviors that they deem inappropriate,
80 | threatening, offensive, or harmful.
81 |
82 | ### Scope
83 |
84 | This Code of Conduct applies both within project spaces and in public spaces
85 | when an individual is representing the project or its community. Examples of
86 | representing a project or community include using an official project e-mail
87 | address, posting via an official social media account, or acting as an appointed
88 | representative at an online or offline event. Representation of a project may be
89 | further defined and clarified by project maintainers.
90 |
91 | ### Enforcement
92 |
93 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
94 | reported by contacting the project team at coc@formidable.com. All
95 | complaints will be reviewed and investigated and will result in a response that
96 | is deemed necessary and appropriate to the circumstances. The project team is
97 | obligated to maintain confidentiality with regard to the reporter of an incident.
98 | Further details of specific enforcement policies may be posted separately.
99 |
100 | Project maintainers who do not follow or enforce the Code of Conduct in good
101 | faith may face temporary or permanent repercussions as determined by other
102 | members of the project's leadership.
103 |
104 | ### Attribution
105 |
106 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
107 | available at [http://contributor-covenant.org/version/1/4][version]
108 |
109 | [homepage]: http://contributor-covenant.org
110 | [version]: http://contributor-covenant.org/version/1/4/
111 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2019 Formidable
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://formidable.com/open-source/)
2 |
3 | [![Maintenance Status][maintenance-image]](#maintenance-status)
4 |
5 | > the online package explorer
6 |
7 | Runpkg turns a static file into an interactive and informative browsing experience. It lets you navigate any JavaScript package on npm thanks to [unpkg.com](https://unpkg.com), a popular and reliable CDN mirror of the npm registry. You can use this tool to learn more about the inner workings of your project's dependencies; find out how modules work, what they depend on, the size of specific imports as well as other useful metadata.
8 |
9 | ---
10 |
11 | 
12 |
13 | ## Features
14 |
15 | - 🔭 Navigable project directory listing
16 | - 🎨 Syntax highlighted file contents
17 | - 📝 Insights through static analysis
18 |
19 | ## Usage
20 |
21 | To view a package or module in the browser with runpkg, prepend any unpkg url with: `r`. For example:
22 |
23 | | Source | URL |
24 | | ------ | ---------------------------------------------------------------------------------------------- |
25 | | unpkg | [`https://unpkg.com/es-react@16.8.30/index.js`](https://unpkg.com/es-react@16.8.30/index.js) |
26 | | runpkg | [`https://runpkg.com/es-react@16.8.30/index.js`](https://runpkg.com/es-react@16.8.30/index.js) |
27 |
28 | You will be redirected to runpkg which will display the relevant package and file. You can navigate around the package using the 'Package' panel which contains a directory listing. The 'File' tab will also display any information uncovered during static analysis.
29 |
30 | > Note if browsing a directory then runpkg will ignore the trailing `/` and take you to the entry point.
31 |
32 | ## Development
33 |
34 | See [CONTRIBUTING.md](./CONTRIBUTING.md) for instructions on how to run this project locally, contribute, and to see our code of conduct.
35 |
36 | ## Local URLs
37 |
38 | As we're not using Netlify to redirect URLs locally, you have to pass in the package or file part of the request in as a search param. Notice the `?` in the local URL. For example:
39 |
40 | | Source | URL |
41 | | --------- | -------------------------------------------------- |
42 | | unpkg | `https://unpkg.com/es-react@16.8.30/index.js` |
43 | | localhost | `http://localhost:8080/?es-react@16.8.30/index.js` |
44 |
45 | ## Browsers Supported
46 |
47 | | Browser | Supported | Versions |
48 | | ----------------- | --------- | ----------- |
49 | | Chrome | Yes | 73+ |
50 | | Chrome (Android) | Yes | 73+ |
51 | | Firefox | Yes | 66+ |
52 | | Firefox (Android) | Yes | 66+ |
53 | | Safari | Yes | 11+ |
54 | | Safari (iOS) | Yes | 11+ |
55 | | Opera | Yes | 59+ |
56 | | Edge (Blink) | Yes | Dev, Canary |
57 | | Edge (EdgeHTML) | No | |
58 | | IE 11 | No | |
59 |
60 | ## Testing
61 |
62 | We're currently doing end to end tests via Cypress, you can run them using the following:
63 |
64 | ```bash
65 | yarn test
66 | # or
67 | npm run test
68 | ```
69 |
70 | ## Maintenance Status
71 |
72 | **Active:** Formidable is actively working on this project, and we expect to continue for work for the foreseeable future. Bug reports, feature requests and pull requests are welcome.
73 |
74 | ## Licence
75 |
76 | MIT
77 |
78 | [maintenance-image]: https://img.shields.io/badge/maintenance-active-green.svg?color=brightgreen&style=flat
79 |
--------------------------------------------------------------------------------
/Runpkg-Hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FormidableLabs/runpkg/6344f7c8c0184da2f3d74224dde38d84545ce0ad/Runpkg-Hero.png
--------------------------------------------------------------------------------
/components/AlgoliaLogo.js:
--------------------------------------------------------------------------------
1 | import { html, css } from '../utils/rplus.js';
2 |
3 | const styles = {
4 | algoliaLogo: css`
5 | margin-top: 1em;
6 | height: 1.2em;
7 | `,
8 | };
9 |
10 | export default html`
11 |
17 |
18 |
22 |
26 |
30 |
34 |
35 |
36 | `;
37 |
--------------------------------------------------------------------------------
/components/Article.js:
--------------------------------------------------------------------------------
1 | /* global prettier, prettierPlugins, marked */
2 | import { html, css } from '../utils/rplus.js';
3 |
4 | import Editor from './Editor.js';
5 | import FileIcon from './FileIcon.js';
6 | import PrettierIcon from './PrettierIcon.js';
7 | import FormidableLogo from './FormidableLogo.js';
8 | import RunpkgIcon from './RunpkgIcon.js';
9 | import NotFoundIcon from './NotFoundIcon.js';
10 | import { useStateValue } from '../utils/globalState.js';
11 |
12 | export default () => {
13 | const [{ noUrlPackageFound, request, cache }, dispatch] = useStateValue();
14 | const fileData = cache['https://unpkg.com/' + request.path] || {};
15 | return noUrlPackageFound
16 | ? html`
17 |
18 |
19 |
20 | ${FormidableLogo}
21 |
22 | ${NotFoundIcon}
23 |
24 | Please make sure you typed your package name correctly in the url,
25 | or use our Registry search first.
26 |
27 |
28 |
31 |
32 |
33 |
34 | `
35 | : html`
36 |
37 | ${request.path
38 | ? html`
39 |
40 |
41 | ${FileIcon}
42 |
43 | ${request.path}
44 |
45 |
46 | {
48 | const code = prettier.format(fileData.code, {
49 | parser: 'babylon',
50 | plugins: prettierPlugins,
51 | });
52 | dispatch({
53 | type: 'setCache',
54 | payload: {
55 | ['https://unpkg.com/' + request.path]: {
56 | ...fileData,
57 | code,
58 | },
59 | },
60 | });
61 | }}
62 | >
63 | ${PrettierIcon}
64 | Format Code
65 |
66 |
67 | `
68 | : html`
69 |
87 | `}
88 | ${fileData.extension === 'md'
89 | ? html`
90 |
97 | `
98 | : html`
99 | <${Editor} key="editor" />
100 | `}
101 |
102 | `;
103 | };
104 |
105 | const styles = {
106 | header: css`
107 | display: flex;
108 | align-items: center;
109 | padding: 1rem 1.38rem;
110 | background: rgba(0, 0, 0, 0.162);
111 | > h1 {
112 | display: flex;
113 | align-items: center;
114 | color: rgba(255, 255, 255, 0.62);
115 | overflow: hidden;
116 | > svg {
117 | flex: none;
118 | width: 1.38rem;
119 | height: 1.38rem;
120 | margin-right: 1rem;
121 | fill: rgba(255, 255, 255, 0.38);
122 | }
123 | > span {
124 | overflow: hidden;
125 | text-overflow: ellipsis;
126 | white-space: nowrap;
127 | }
128 | }
129 | > button {
130 | display: flex;
131 | align-items: center;
132 | background: none;
133 | border: 1px solid rgba(0, 0, 0, 0.2);
134 | padding: 1rem;
135 | margin-left: auto;
136 | color: rgba(255, 255, 255, 0.8);
137 | font-size: 1rem;
138 | > span {
139 | white-space: nowrap;
140 | }
141 | > svg {
142 | width: 1rem;
143 | height: 1rem;
144 | }
145 | > * + * {
146 | margin-left: 0.62rem;
147 | }
148 | }
149 | `,
150 | container: css`
151 | grid-area: article;
152 | overflow: hidden;
153 | flex: 1 0 62%;
154 | display: flex;
155 | flex-direction: column;
156 |
157 | @media screen and (max-width: 800px) {
158 | height: 62vh;
159 | }
160 |
161 | pre {
162 | color: rgba(255, 255, 255, 0.9);
163 | }
164 | `,
165 | welcome: css`
166 | display: flex;
167 | align-items: center;
168 | justify-content: center;
169 | flex-direction: column;
170 | padding: 1rem;
171 | width: 100%;
172 | height: 100%;
173 | color: rgba(255, 255, 255, 0.62);
174 | flex: none;
175 | svg {
176 | margin-bottom: 2rem;
177 | width: calc(10rem + 5vw);
178 | .abbr {
179 | font-size: 230px;
180 | font-family: 'Helvetica';
181 | }
182 | .desc {
183 | font-size: 44px;
184 | font-family: 'Helvetica-Bold', 'Helvetica', sans-serif;
185 | font-weight: bold;
186 | }
187 | }
188 | p {
189 | font-size: calc(1rem + 0.5vw);
190 | width: 30ex;
191 | text-align: center;
192 | line-height: 138%;
193 | }
194 | `,
195 | formidaLogo: css`
196 | position: absolute;
197 | top: 2vw;
198 | left: 2vw;
199 | fill: rgba(255, 255, 255, 0.1);
200 | svg {
201 | width: calc(5rem + 5vw);
202 | }
203 | `,
204 | netlifyLogo: css`
205 | margin-top: 2rem;
206 | `,
207 | markdown: css`
208 | color: #fff;
209 | line-height: 1.5;
210 | line-height: 1.5;
211 | word-wrap: break-word;
212 | padding: 3rem 3rem 4rem;
213 | width: 100%;
214 | height: 100vh;
215 | margin: 0 auto;
216 | overflow-y: scroll;
217 | -webkit-overflow-scrolling: touch;
218 | color: rgba(255, 255, 255, 0.8);
219 |
220 | > div {
221 | max-width: 960px;
222 | margin: 0 auto;
223 | }
224 |
225 | > div > * + * {
226 | margin-top: 1rem;
227 | }
228 |
229 | @media screen and (max-width: 400px) {
230 | padding: 2rem;
231 | }
232 |
233 | li {
234 | list-style: disc;
235 | list-style-position: inside;
236 | }
237 | h1,
238 | h2,
239 | h3,
240 | h4,
241 | strong {
242 | font-weight: bold;
243 | }
244 | h1 {
245 | text-align: left;
246 | font-size: 2rem;
247 | border-bottom: 1px solid rgba(255, 255, 255, 0.2);
248 | padding-bottom: 1rem;
249 | }
250 | h2 {
251 | font-size: 1.62rem;
252 | border-bottom: 1px solid rgba(255, 255, 255, 0.2);
253 | padding-bottom: 0.62rem;
254 | margin-bottom: 1rem;
255 | }
256 | h3 {
257 | font-size: 1rem;
258 | border-bottom: 1px solid rgba(255, 255, 255, 0.2);
259 | padding-bottom: 0.62rem;
260 | margin-bottom: 1rem;
261 | }
262 | img {
263 | display: block;
264 | max-width: 100%;
265 | }
266 | pre {
267 | background: rgba(0, 0, 0, 0.2);
268 | padding: 1rem;
269 | border-radius: 0.38rem;
270 | overflow-x: scroll;
271 | }
272 |
273 | a {
274 | display: inline-block;
275 | color: #f8b1f1;
276 | margin-top: 0;
277 | }
278 | table {
279 | border-collapse: collapse;
280 | color: inherit;
281 | td,
282 | th,
283 | tr {
284 | border: 1px solid rgba(255, 255, 255, 0.38);
285 | padding: 0.62rem;
286 | }
287 | }
288 | `,
289 | };
290 |
--------------------------------------------------------------------------------
/components/Editor.js:
--------------------------------------------------------------------------------
1 | import { react, html, css } from '../utils/rplus.js';
2 | import { Prism, Highlight } from 'prism-react-renderer';
3 | import { useStateValue } from '../utils/globalState.js';
4 | import Link from './Link.js';
5 |
6 | const getSelectedLineNumberFromUrl = () =>
7 | location.hash && parseInt(location.hash.substr(1), 10);
8 |
9 | const handleLineNumberClick = lineNo =>
10 | history.pushState(null, null, `#${lineNo}`);
11 |
12 | const removeQuotes = packageName => packageName.replace(/['"]+/g, '');
13 |
14 | function useLastGoodState(value) {
15 | const ref = react.useRef();
16 | react.useEffect(() => {
17 | ref.current = value || ref.current;
18 | }, [value]);
19 | return ref.current;
20 | }
21 |
22 | const languages = {
23 | html: 'markup',
24 | sh: 'bash',
25 | c: 'c',
26 | h: 'c',
27 | cpp: 'cpp',
28 | hpp: 'cpp',
29 | css: 'css',
30 | mjs: 'javascript',
31 | js: 'javascript',
32 | flow: 'javascript',
33 | jsx: 'jsx',
34 | coffee: 'coffeescript',
35 | diff: 'diff',
36 | go: 'go',
37 | gql: 'graphql',
38 | graphql: 'graphql',
39 | hbs: 'handlebars',
40 | json: 'json',
41 | less: 'less',
42 | md: 'markdown',
43 | m: 'objectivec',
44 | ml: 'ocaml',
45 | mli: 'ocaml',
46 | py: 'python',
47 | re: 'reason',
48 | rei: 'reason',
49 | sass: 'sass',
50 | scss: 'scss',
51 | sql: 'sql',
52 | tsx: 'tsx',
53 | ts: 'typescript',
54 | wasm: 'wasm',
55 | yml: 'yaml',
56 | };
57 |
58 | const UNPKG = 'https://unpkg.com/';
59 |
60 | export default () => {
61 | const [{ cache, request }] = useStateValue();
62 | const selectedLine = getSelectedLineNumberFromUrl();
63 | const container = react.useRef();
64 | const lastGoodState = useLastGoodState(cache[UNPKG + request.path]);
65 | const fileData = cache[UNPKG + request.path] || lastGoodState;
66 | const loading = !fileData || request.path !== fileData.url.replace(UNPKG, '');
67 |
68 | const scrollToLine = () => {
69 | const selectedLineEl = document.getElementById(`L-${selectedLine}`);
70 | if (selectedLineEl) {
71 | selectedLineEl.scrollIntoView();
72 | container.current.scrollBy(0, -38);
73 | }
74 | };
75 |
76 | react.useEffect(() => {
77 | if (container.current && !loading) {
78 | container.current.scrollTop = 0;
79 | scrollToLine();
80 | }
81 | }, [loading, container.current]);
82 |
83 | return (
84 | !!fileData &&
85 | html`
86 | <${Highlight}
87 | Prism=${Prism}
88 | code=${fileData.code.slice(0, 100000)}
89 | language=${languages[fileData.extension.split('.').pop()]}
90 | theme=${undefined}
91 | >
92 | ${({ className, style, tokens, getLineProps, getTokenProps }) => html`
93 |
100 |
101 | ${tokens.map((line, i) => {
102 | return html`
103 |
108 |
113 | ${line.map(token => {
114 | const dep =
115 | fileData.dependencies[removeQuotes(token.content)];
116 | return dep && typeof dep === 'string'
117 | ? html`
118 | <${Link}
119 | href=${`/?${dep.replace('https://unpkg.com/', '')}`}
120 | className=${styles.link}
121 | >
122 |
123 | />
124 | `
125 | : html`
126 |
127 | `;
128 | })}
129 |
130 | `;
131 | })}
132 |
133 |
134 | `}
135 | />
136 | `
137 | );
138 | };
139 |
140 | const styles = {
141 | container: css`
142 | flex: 1;
143 | line-height: 138%;
144 | padding: 2rem 1rem;
145 | transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
146 | overflow-y: scroll;
147 | overflow-x: auto;
148 | -webkit-overflow-scrolling: touch;
149 | `,
150 | loading: css`
151 | opacity: 0.5;
152 | transition-delay: 0.2s;
153 | `,
154 | link: css`
155 | text-decoration: underline;
156 | text-decoration-color: #f8b1f1;
157 | `,
158 | lineActive: css`
159 | background: #ffff000f;
160 | outline: 1px solid #ffff001c;
161 | `,
162 | lineNo: css`
163 | display: inline-block;
164 | text-align: right;
165 | width: 2rem;
166 | margin-right: 2rem;
167 | opacity: 0.6;
168 | cursor: pointer;
169 | ::before {
170 | content: attr(data-linenumber);
171 | }
172 | `,
173 | code: css`
174 | line-height: 150%;
175 | `,
176 | };
177 |
--------------------------------------------------------------------------------
/components/FileIcon.js:
--------------------------------------------------------------------------------
1 | import { html } from '../utils/rplus.js';
2 | export default html`
3 |
4 |
7 |
10 |
11 | `;
12 |
--------------------------------------------------------------------------------
/components/FileOverview.js:
--------------------------------------------------------------------------------
1 | import { react, css, html } from '../utils/rplus.js';
2 | import Link from './Link.js';
3 | import formatBytes from '../utils/formatBytes.js';
4 | import { useStateValue } from '../utils/globalState.js';
5 | import FileIcon from './FileIcon.js';
6 | import PackageIcon from './PackageIcon.js';
7 | import { SearchInput } from './SearchInput.js';
8 |
9 | const FileList = ({ title, files, packageName, filter }) => html`
10 | <${react.Fragment}>
11 |
12 |
${title}
13 | ${Object.entries(files).length} Files
14 |
15 |
16 | ${Object.entries(files).map(
17 | ([key, url]) =>
18 | url.match(filter) &&
19 | html`
20 |
21 | <${Link} href=${url.replace('https://unpkg.com/', '/?')}>
22 | ${url.includes(packageName) ? FileIcon : PackageIcon}
23 | ${url
24 | .replace(`https://unpkg.com/`, '')
25 | .replace(packageName, '')}
26 | />
27 |
28 | `
29 | )}
30 |
31 | ${react.Fragment}>
32 | `;
33 |
34 | export const FileOverview = () => {
35 | const [{ request, cache, dependencySearchTerm }, dispatch] = useStateValue();
36 | const file = cache['https://unpkg.com/' + request.path];
37 | return (
38 | !!file &&
39 | html`
40 | <${react.Fragment}>
41 | <${SearchInput}
42 | placeholder="Search for dependencies.."
43 | value=${dependencySearchTerm}
44 | onChange=${val =>
45 | dispatch({ type: 'setDependencySearchTerm', payload: val })}
46 | />
47 |
48 | ${FileIcon}
49 |
50 | ${file.url.split('/').pop()}
51 |
52 | ${formatBytes(file.size)}
53 |
54 |
55 | <${FileList}
56 | title="Dependencies"
57 | files=${file.dependencies}
58 | packageName=${`${request.name}@${request.version}`}
59 | filter=${dependencySearchTerm}
60 | />
61 |
62 | ${react.Fragment}>
63 | `
64 | );
65 | };
66 |
67 | const styles = {
68 | container: css`
69 | > div {
70 | display: flex;
71 | align-items: center;
72 | justify-content: space-between;
73 | padding: 0.62rem 1rem 1.62rem 1rem;
74 | small {
75 | margin-left: auto;
76 | }
77 | }
78 | > * + *,
79 | ul > * + * {
80 | border-top: 1px solid rgba(0, 0, 0, 0.2);
81 | }
82 | > *:empty {
83 | display: none;
84 | }
85 | a {
86 | display: flex;
87 | align-items: center;
88 | padding: 1rem;
89 | color: rgba(255, 255, 255, 0.8);
90 | text-decoration: none;
91 | svg {
92 | flex: none;
93 | width: 1.2rem;
94 | height: 1.2rem;
95 | fill: rgba(255, 255, 255, 0.38);
96 | margin: 0 0.62rem 0 0.2rem;
97 | }
98 | &:hover {
99 | background: rgba(0, 0, 0, 0.1);
100 | }
101 | }
102 | h2 {
103 | font-size: 1.38rem;
104 | font-weight: bold;
105 | color: rgba(255, 255, 255, 0.8);
106 | }
107 | `,
108 | file: css`
109 | padding: 1.38rem;
110 | border: 1px solid rgba(0, 0, 0, 0.2);
111 | display: flex;
112 | align-items: center;
113 | font-size: 1rem;
114 | color: rgba(255, 255, 255, 0.8);
115 | font-weight: bold;
116 | span {
117 | word-break: break-word;
118 | padding-right: 1rem;
119 | line-height: 138%;
120 | }
121 | small {
122 | font-size: 1rem;
123 | font-weight: normal;
124 | margin-left: auto;
125 | white-space: nowrap;
126 | }
127 | svg {
128 | flex: none;
129 | width: 1.62rem;
130 | height: 1.62rem;
131 | fill: rgba(255, 255, 255, 0.38);
132 | margin: 0 1rem 0 0rem;
133 | }
134 | `,
135 | };
136 |
--------------------------------------------------------------------------------
/components/FolderIcon.js:
--------------------------------------------------------------------------------
1 | import { html } from '../utils/rplus.js';
2 |
3 | export default html`
4 |
5 |
8 |
11 |
12 | `;
13 |
--------------------------------------------------------------------------------
/components/Footer.js:
--------------------------------------------------------------------------------
1 | import { html, css } from '../utils/rplus.js';
2 |
3 | import FormidableIcon from './FormidableLogo.js';
4 | import GitHubLogo from './GitHubLogo.js';
5 |
6 | export default () => html`
7 |
17 | `;
18 |
19 | const styles = css`
20 | background: rgba(0, 0, 0, 0.2);
21 | color: rgba(255, 255, 255, 0.6);
22 | padding: 1.38rem 1.62rem;
23 | display: flex;
24 | align-items: center;
25 |
26 | a {
27 | text-decoration: none;
28 | color: inherit;
29 | display: flex;
30 | align-items: center;
31 | justify-content: space-between;
32 | &:first-child {
33 | width: 100%;
34 | }
35 | }
36 |
37 | svg {
38 | width: 1.62rem;
39 | height: 1.62rem;
40 | fill: currentColor;
41 | margin-left: 1rem;
42 | }
43 |
44 | a > span {
45 | position: absolute;
46 | height: 1px;
47 | width: 1px;
48 | overflow: hidden;
49 | clip: rect(0, 0, 0, 0);
50 | white-space: nowrap;
51 | }
52 | `;
53 |
--------------------------------------------------------------------------------
/components/FormidableLogo.js:
--------------------------------------------------------------------------------
1 | import { html } from '../utils/rplus.js';
2 |
3 | export default html`
4 |
13 | Formidable logo
14 |
15 |
45 |
46 |
47 |
48 |
49 | `;
50 |
--------------------------------------------------------------------------------
/components/GitHubLogo.js:
--------------------------------------------------------------------------------
1 | import { html } from '../utils/rplus.js';
2 |
3 | export default html`
4 |
5 | Visit the runpkg GitHub repo
6 |
9 |
10 | `;
11 |
--------------------------------------------------------------------------------
/components/Link.js:
--------------------------------------------------------------------------------
1 | import { html } from '../utils/rplus.js';
2 |
3 | const pushState = url => history.pushState(null, null, url);
4 |
5 | const getOrigin = loc =>
6 | loc.protocol + '//' + loc.hostname + (loc.port ? ':' + loc.port : '');
7 |
8 | const isExternal = anchorElement =>
9 | getOrigin(location) !== getOrigin(anchorElement);
10 |
11 | const shouldPreventDefault = e => {
12 | if (
13 | e.button !== 0 ||
14 | e.altKey ||
15 | e.metaKey ||
16 | e.ctrlKey ||
17 | e.shiftKey ||
18 | e.target.target === '_blank' ||
19 | isExternal(e.currentTarget)
20 | ) {
21 | return false;
22 | } else {
23 | return true;
24 | }
25 | };
26 |
27 | export default ({ href, children, ...rest }) => {
28 | return html`
29 | {
32 | if (shouldPreventDefault(e)) {
33 | e.preventDefault();
34 | if (href.startsWith('/')) {
35 | pushState(`?${href.replace(/^\/\?/, '')}`);
36 | }
37 | } else {
38 | window.location = href;
39 | }
40 | }}
41 | ...${rest}
42 | >
43 | ${children}
44 |
45 | `;
46 | };
47 |
--------------------------------------------------------------------------------
/components/Main.js:
--------------------------------------------------------------------------------
1 | import { react, html, css, npm } from '../utils/rplus.js';
2 | import { useStateValue } from '../utils/globalState.js';
3 | import { parseUrl } from '../utils/parseUrl.js';
4 |
5 | import Nav from './Nav.js';
6 | import Article from './Article.js';
7 |
8 | const replaceState = url => history.replaceState(null, null, url);
9 | const worker = new Worker('./utils/analyzeFile.js');
10 |
11 | export default () => {
12 | const [state, dispatch] = useStateValue();
13 | const { cache, request, packagesSearchTerm } = state;
14 |
15 | // Update the request on user navigation
16 | react.useEffect(() => {
17 | const updateRequest = () => {
18 | dispatch({ type: 'setRequest', payload: parseUrl() });
19 | };
20 | addEventListener('popstate', updateRequest);
21 | const pushState = window.history.pushState;
22 | window.history.pushState = function() {
23 | pushState.apply(history, arguments);
24 | updateRequest();
25 | };
26 | worker.addEventListener('message', e =>
27 | dispatch({ type: 'setCache', payload: { [e.data.url]: e.data } })
28 | );
29 | }, []);
30 |
31 | // Update the page title when the request changes
32 | react.useEffect(() => {
33 | const setTitle = title => (document.title = title);
34 | if (state.fetchError) setTitle('404 | runpkg');
35 | else if (request.name && request.version)
36 | setTitle(request.name + '@' + request.version + ' | runpkg');
37 | else setTitle('runpkg | the package explorer');
38 | }, [request.name, request.version]);
39 |
40 | // Resolve full path for incomplete urls
41 | react.useEffect(() => {
42 | if (request.name && (!request.version || !request.file))
43 | fetch(`https://unpkg.com/${request.path}`)
44 | .then(response => {
45 | const { ok, url } = response;
46 | dispatch({ type: 'setRequest', payload: parseUrl(url) });
47 | replaceState(
48 | `/?${url.replace('https://unpkg.com/', '')}${location.hash}`
49 | );
50 | if (!ok && !request.version) {
51 | dispatch({ type: 'setNoURLPackageFound', payload: true });
52 | }
53 | })
54 | .catch(console.error);
55 | }, [request.path]);
56 |
57 | // Fetch directory listings for requested package
58 | react.useEffect(() => {
59 | if (request.name && request.version)
60 | fetch(`https://unpkg.com/${request.name}@${request.version}/?meta`)
61 | .then(res => res.json())
62 | .then(res => dispatch({ type: 'setDirectory', payload: res }))
63 | .catch(console.error);
64 | }, [request.name, request.version]);
65 |
66 | // Fetch package meta data for all versions
67 | react.useEffect(() => {
68 | if (request.name) {
69 | dispatch({ type: 'setMode', payload: 'package' });
70 | fetch(`https://registry.npmjs.org/${request.name}/`)
71 | .then(res => res.json())
72 | .then(json => {
73 | dispatch({ type: 'setVersions', payload: json.versions });
74 | })
75 | .catch(console.error);
76 | }
77 | }, [request.name]);
78 |
79 | // Parse dependencies for the current code
80 | react.useEffect(() => {
81 | if (request.file && !cache['https://unpkg.com/' + request.path])
82 | worker.postMessage('https://unpkg.com/' + request.path);
83 | }, [request.path]);
84 |
85 | // Fetch packages by search term
86 | react.useEffect(() => {
87 | npm
88 | .search([
89 | {
90 | analyticsTags: ['runpkg'],
91 | indexName: 'npm-search',
92 | attributesToRetrieve: ['name', 'version', 'description'],
93 | params: { query: packagesSearchTerm },
94 | },
95 | ])
96 | .then(res => res.results[0].hits)
97 | .then(res => dispatch({ type: 'setPackages', payload: res }));
98 | }, [packagesSearchTerm]);
99 |
100 | return html`
101 |
102 | <${Article} />
103 | <${Nav} />
104 |
105 | `;
106 | };
107 |
108 | const styles = css`
109 | width: 100%;
110 | min-height: 100vh;
111 | overflow: auto;
112 | background: #2f3138;
113 | @media screen and (min-width: 800px) {
114 | display: grid;
115 | grid-template-columns: 1fr 25rem;
116 | grid-template-areas: 'article nav';
117 | overflow: hidden;
118 | height: 100vh;
119 | }
120 | @media screen and (min-width: 1000px) {
121 | display: grid;
122 | grid-template-areas: 'article nav';
123 | grid-template-columns: 1fr 30rem;
124 | overflow: hidden;
125 | height: 100vh;
126 | }
127 | `;
128 |
--------------------------------------------------------------------------------
/components/Nav.js:
--------------------------------------------------------------------------------
1 | import { html, css } from '../utils/rplus.js';
2 | import { RadioGroup } from './RadioGroup.js';
3 | import { PackageOverview } from './PackageOverview.js';
4 | import { RegistryOverview } from './RegistryOverview.js';
5 | import { FileOverview } from './FileOverview.js';
6 | import { useStateValue } from '../utils/globalState.js';
7 |
8 | export default () => {
9 | const [{ mode, noUrlPackageFound }, dispatch] = useStateValue();
10 | const modeOptions = {
11 | registry: mode === 'registry' || noUrlPackageFound,
12 | package: mode === 'package' && !noUrlPackageFound,
13 | file: mode === 'file' && !noUrlPackageFound,
14 | };
15 | return html`
16 |
17 | <${RadioGroup}
18 | options=${modeOptions}
19 | onClick=${val => dispatch({ type: 'setMode', payload: val })}
20 | />
21 | ${mode === 'package' && !noUrlPackageFound
22 | ? html`
23 | <${PackageOverview} />
24 | `
25 | : mode === 'registry' || noUrlPackageFound
26 | ? html`
27 | <${RegistryOverview} />
28 | `
29 | : mode === 'file'
30 | ? html`
31 | <${FileOverview} />
32 | `
33 | : null}
34 |
35 | `;
36 | };
37 |
38 | const styles = css`
39 | width: 100%;
40 | grid-area: nav;
41 | background: #26272c;
42 | color: #fff;
43 | padding: 2rem;
44 | overflow-x: hidden;
45 | > * + * {
46 | margin-top: 1.38rem;
47 | }
48 | @media screen and (min-width: 800px) {
49 | height: 100vh;
50 | overflow-y: scroll;
51 | transform: translateX(0%);
52 | }
53 | @media screen and (max-width: 400px) {
54 | padding: 1.38rem;
55 | > * + * {
56 | margin-top: 1rem;
57 | }
58 | }
59 | `;
60 |
--------------------------------------------------------------------------------
/components/NotFoundIcon.js:
--------------------------------------------------------------------------------
1 | import { html } from '../utils/rplus.js';
2 |
3 | export default html`
4 |
5 |
10 |
15 |
20 |
25 |
32 |
33 | `;
34 |
--------------------------------------------------------------------------------
/components/NpmLogo.js:
--------------------------------------------------------------------------------
1 | import { html } from '../utils/rplus.js';
2 |
3 | export default html`
4 |
5 | NPM repo link
6 |
10 |
11 | `;
12 |
--------------------------------------------------------------------------------
/components/PackageIcon.js:
--------------------------------------------------------------------------------
1 | import { html } from '../utils/rplus.js';
2 |
3 | export default html`
4 |
5 |
8 |
11 |
12 | `;
13 |
--------------------------------------------------------------------------------
/components/PackageOverview.js:
--------------------------------------------------------------------------------
1 | import { react, html, css } from '../utils/rplus.js';
2 | import { SearchInput } from './SearchInput.js';
3 | import FolderIcon from './FolderIcon.js';
4 | import FileIcon from './FileIcon.js';
5 | import Link from './Link.js';
6 | import { useStateValue } from '../utils/globalState.js';
7 | import { Package } from './RegistryOverview.js';
8 | import formatBytes from '../utils/formatBytes.js';
9 |
10 | import { TreeView, TreeItem } from './TreeView.js';
11 |
12 | const SEARCH_FILES_RENDER_LIMIT = 100;
13 |
14 | const pushState = url => history.pushState(null, null, url);
15 |
16 | const flatten = arr =>
17 | arr.reduce(
18 | (acc, cur) => [...acc, ...(cur.files ? flatten(cur.files) : [cur])],
19 | []
20 | );
21 |
22 | const File = ({ packageName, packageVersion, meta, displayFullPath = false }) =>
23 | html`
24 | <${Link}
25 | href=${`/?${packageName}@${packageVersion}${meta.path}`}
26 | className=${styles.item}
27 | >
28 |
29 | ${FileIcon}
30 | ${meta.path.split('/').pop()}
31 | ${
32 | displayFullPath
33 | ? html`
34 | ${meta.path.substring(0, meta.path.lastIndexOf('/'))}
37 | `
38 | : null
39 | }
40 |
41 | ${formatBytes(meta.size)}
42 | ${Link}>
43 | `;
44 |
45 | const Node = ({ meta, packageName, packageVersion }) => {
46 | const directory = meta.type === 'directory';
47 |
48 | const directoryFileSize = react.useMemo(() => {
49 | if (directory) {
50 | const files = flatten(meta.files);
51 | const totalSize = files.reduce((acc, cur) => acc + cur.size, 0);
52 | return formatBytes(totalSize);
53 | }
54 | }, [directory, meta]);
55 |
56 | return html`
57 | <${TreeItem}
58 | label=${!directory
59 | ? html`
60 | <${File}
61 | packageName=${packageName}
62 | packageVersion=${packageVersion}
63 | meta=${meta}
64 | />
65 | `
66 | : html`
67 |
68 |
69 | ${FolderIcon}
70 | ${meta.path.split('/').pop()}
71 |
72 |
${directoryFileSize} (${meta.files.length} Files)
73 |
74 | `}
75 | >
76 | ${directory &&
77 | meta.files.map(
78 | node => html`
79 | <${Node}
80 | key=${node.path}
81 | meta=${node}
82 | packageName=${packageName}
83 | packageVersion=${packageVersion}
84 | />
85 | `
86 | )}
87 | />
88 | `;
89 | };
90 |
91 | export const PackageOverview = () => {
92 | const [
93 | { versions, request, directory, fileSearchTerm },
94 | dispatch,
95 | ] = useStateValue();
96 |
97 | const [
98 | searchStringForShowAllResults,
99 | setSearchStringForShowAllResults,
100 | ] = react.useState(null);
101 |
102 | const flatFiles = react.useMemo(
103 | () => (directory && directory.files ? flatten(directory.files) : []),
104 | [directory]
105 | );
106 |
107 | const search = react.useCallback(
108 | file =>
109 | file.path
110 | .toLowerCase()
111 | .match(
112 | fileSearchTerm.toLowerCase().replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1')
113 | ),
114 | [fileSearchTerm]
115 | );
116 |
117 | react.useEffect(() => {
118 | if (
119 | searchStringForShowAllResults !== null &&
120 | fileSearchTerm !== searchStringForShowAllResults
121 | ) {
122 | setSearchStringForShowAllResults(null);
123 | }
124 | }, [fileSearchTerm, searchStringForShowAllResults]);
125 |
126 | if (!versions || !directory || !versions[request.version] || !directory.files)
127 | return null;
128 |
129 | const { name, version, description } = versions[request.version];
130 | const handleVersionChange = v => pushState(`?${name}@${v}`);
131 | const VersionOption = x =>
132 | html`
133 | ${x}
134 | `;
135 |
136 | const matchingFiles = fileSearchTerm ? flatFiles.filter(search) : [];
137 | const expandableFilesCount = matchingFiles.length - SEARCH_FILES_RENDER_LIMIT;
138 |
139 | const canShowMoreSearchFiles =
140 | searchStringForShowAllResults !== fileSearchTerm &&
141 | expandableFilesCount > 0;
142 | const searchFilesToRender = canShowMoreSearchFiles
143 | ? matchingFiles.slice(0, SEARCH_FILES_RENDER_LIMIT)
144 | : matchingFiles;
145 |
146 | return html`
147 | <${react.Fragment}>
148 | <${SearchInput}
149 | placeholder="Search for files.."
150 | value=${fileSearchTerm}
151 | onChange=${val => dispatch({ type: 'setFileSearchTerm', payload: val })}
152 | />
153 | <${Package} name=${name} version=${version} description=${description} />
154 | handleVersionChange(e.target.value)}
158 | >
159 | ${Object.keys(versions).map(VersionOption)}
161 | ${
162 | fileSearchTerm
163 | ? html`
164 |
165 | ${searchFilesToRender.map(
166 | file => html`
167 | <${File}
168 | key=${file.path}
169 | meta=${file}
170 | packageName=${name}
171 | packageVersion=${version}
172 | displayFullPath=${true}
173 | />
174 | `
175 | )}
176 | ${canShowMoreSearchFiles
177 | ? html`
178 |
180 | setSearchStringForShowAllResults(fileSearchTerm)}
181 | className=${styles.item}
182 | >
183 |
184 | Show${` ${expandableFilesCount} `}more search${' '}
186 | ${expandableFilesCount === 1
187 | ? 'result'
188 | : 'results'}...
190 |
191 |
192 | `
193 | : null}
194 |
195 | `
196 | : html`
197 | <${TreeView}>
198 | ${directory.files.map(
199 | node =>
200 | html`
201 | <${Node}
202 | key=${node.path}
203 | meta=${node}
204 | packageName=${name}
205 | packageVersion=${version}
206 | />
207 | `
208 | )}
209 | />
210 | `
211 | }
212 | ${react.Fragment}>
213 | `;
214 | };
215 |
216 | export const styles = {
217 | item: css`
218 | position: relative;
219 | display: flex;
220 | align-items: center;
221 | justify-content: space-between;
222 | width: 100%;
223 | padding: 1rem;
224 | font-size: 1rem;
225 | line-height: 1.38;
226 | color: rgba(255, 255, 255, 0.8);
227 |
228 | text-decoration: none;
229 | background: none;
230 | cursor: pointer;
231 | &:hover,
232 | &:focus {
233 | color: #fff;
234 | }
235 |
236 | svg {
237 | flex: none;
238 | width: 1.2rem;
239 | height: 1.2rem;
240 | fill: rgba(255, 255, 255, 0.38);
241 | margin: 0 0.62rem 0 0.2rem;
242 | }
243 |
244 | div {
245 | display: flex;
246 | align-items: center;
247 | overflow: hidden;
248 | }
249 |
250 | small {
251 | white-space: nowrap;
252 | margin-left: 1rem;
253 | font-size: 1rem;
254 | }
255 |
256 | strong {
257 | font-size: 1rem;
258 | font-weight: bold;
259 | }
260 |
261 | span {
262 | white-space: nowrap;
263 | text-overflow: ellipsis;
264 | overflow: hidden;
265 |
266 | &:nth-of-type(2) {
267 | flex: 1;
268 | margin-left: 0.2rem;
269 | opacity: 0.5;
270 | font-size: 0.9rem;
271 | }
272 | }
273 | `,
274 | };
275 |
--------------------------------------------------------------------------------
/components/PrettierIcon.js:
--------------------------------------------------------------------------------
1 | import { html } from '../utils/rplus.js';
2 |
3 | export default html`
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | `;
32 |
--------------------------------------------------------------------------------
/components/RadioGroup.js:
--------------------------------------------------------------------------------
1 | import { html, css } from '../utils/rplus.js';
2 |
3 | export const RadioGroup = ({ options, onClick }) => html`
4 |
5 | ${Object.entries(options).map(
6 | ([key, selected]) => html`
7 | onClick(key)}
10 | onClick=${() => onClick(key)}
11 | disabled=${selected}
12 | >
13 | ${key}
14 |
15 | `
16 | )}
17 |
18 | `;
19 |
20 | const styles = css`
21 | display: flex;
22 | background: rgba(0, 0, 0, 0.1);
23 | border-radius: 0.38rem;
24 | overflow: hidden;
25 | > button {
26 | padding: 1.38rem 1rem;
27 | font-size: 1rem;
28 | flex: 1 1 100%;
29 | border: 0;
30 | color: #fff;
31 | text-transform: capitalize;
32 | background: rgba(0, 0, 0, 0.1);
33 | &:not(:disabled) {
34 | opacity: 0.38;
35 | background: transparent;
36 | }
37 | &:hover {
38 | background: rgba(0, 0, 0, 0.1);
39 | }
40 | }
41 | > * + * {
42 | border-left: 1px solid rgba(0, 0, 0, 0.2) !important;
43 | }
44 | `;
45 |
--------------------------------------------------------------------------------
/components/RegistryOverview.js:
--------------------------------------------------------------------------------
1 | import { html, css } from '../utils/rplus.js';
2 |
3 | import { SearchInput } from './SearchInput.js';
4 | import PackageIcon from './PackageIcon.js';
5 | import { useStateValue } from '../utils/globalState.js';
6 | import AlgoliaLogo from './AlgoliaLogo.js';
7 |
8 | const pushState = url => history.pushState(null, null, url);
9 |
10 | export const RegistryOverview = () => {
11 | const [{ packages, packagesSearchTerm }, dispatch] = useStateValue();
12 | return html`
13 |
14 | <${SearchInput}
15 | placeholder="Search for packages.."
16 | value=${packagesSearchTerm}
17 | onChange=${val =>
18 | dispatch({ type: 'setPackagesSearchTerm', payload: val })}
19 | />
20 | ${AlgoliaLogo}
21 |
22 | ${packages.map(Package)}
23 |
24 |
25 | `;
26 | };
27 |
28 | export const Package = ({ name, version, description }) => html`
29 |
30 | {
34 | e.preventDefault();
35 | pushState(`?${name}@${version}`);
36 | }}
37 | >
38 |
39 | ${PackageIcon}
40 |
${name}
41 | v${version}
42 |
43 | ${description}
44 |
45 |
46 | `;
47 |
48 | const styles = {
49 | container: css`
50 | > * + * {
51 | margin-top: 1rem;
52 | }
53 | `,
54 | item: css`
55 | position: relative;
56 | cursor: pointer;
57 | text-decoration: none;
58 | color: rgba(255, 255, 255, 0.62);
59 | border: 1px solid rgba(0, 0, 0, 0.2);
60 | display: flex;
61 | flex-direction: column;
62 | align-items: flex-start;
63 | padding: 1.38rem 1.62rem;
64 | > div {
65 | display: flex;
66 | align-items: center;
67 | }
68 | small {
69 | position: absolute;
70 | top: 0rem;
71 | right: 0rem;
72 | display: block;
73 | font-size: 0.8rem;
74 | padding-top: 0.38rem;
75 | background: rgba(0, 0, 0, 0.1);
76 | padding: 0.38rem;
77 | }
78 | svg {
79 | width: 1.8rem;
80 | height: 1.8rem;
81 | margin-right: 0.8rem;
82 | fill: rgba(255, 255, 255, 0.38);
83 | }
84 | > * + *:not(:empty) {
85 | margin-top: 0.62rem;
86 | }
87 | &:hover {
88 | background: rgba(0, 0, 0, 0.1);
89 | }
90 | > p {
91 | line-height: 162%;
92 | }
93 | h2 {
94 | font-size: 1.2rem;
95 | font-weight: bold;
96 | color: rgba(255, 255, 255, 0.8);
97 | word-break: break-word;
98 | }
99 | `,
100 | };
101 |
--------------------------------------------------------------------------------
/components/RunpkgIcon.js:
--------------------------------------------------------------------------------
1 | import { html } from '../utils/rplus.js';
2 |
3 | export default html`
4 |
5 |
6 |
11 |
18 |
25 |
33 | Rp
34 |
35 |
43 | RUNPKG
44 |
45 |
46 |
47 | `;
48 |
--------------------------------------------------------------------------------
/components/SearchIcon.js:
--------------------------------------------------------------------------------
1 | import { html } from '../utils/rplus.js';
2 |
3 | export default html`
4 |
5 | Search for packages
6 |
7 |
11 |
12 | `;
13 |
--------------------------------------------------------------------------------
/components/SearchInput.js:
--------------------------------------------------------------------------------
1 | import { html, css } from '../utils/rplus.js';
2 | import SearchIcon from './SearchIcon.js';
3 |
4 | export const SearchInput = ({ placeholder, value, onChange }) => html`
5 |
6 | onChange(e.target.value)}
10 | placeholder=${placeholder}
11 | />
12 | ${SearchIcon}
13 |
14 | `;
15 |
16 | const styles = css`
17 | display: flex;
18 | align-items: center;
19 | width: 100%;
20 | background: rgba(0, 0, 0, 0.2);
21 | > input {
22 | width: 100%;
23 | padding: 1.38rem;
24 | border: 0;
25 | font-size: 1.38rem;
26 | background: transparent;
27 | color: rgba(255, 255, 255, 0.62);
28 | }
29 | > svg {
30 | width: 2.8rem;
31 | height: 2.8rem;
32 | fill: rgba(255, 255, 255, 0.2);
33 | margin: 0 1rem;
34 | }
35 | `;
36 |
--------------------------------------------------------------------------------
/components/Spinner.js:
--------------------------------------------------------------------------------
1 | import { html, css } from '../utils/rplus.js';
2 |
3 | export default html`
4 |
65 | `;
66 |
--------------------------------------------------------------------------------
/components/Template.js:
--------------------------------------------------------------------------------
1 | import { html, css } from '../utils/rplus.js';
2 | import { useStateValue } from '../utils/globalState.js';
3 |
4 | export const TemplateComponent = (props = {}) => {
5 | const [state, dispatch] = useStateValue();
6 | return html`
7 | dispatch({ type: 'action', payload: state + 1 })}
10 | >
11 | ${props.children}
12 |
13 | `;
14 | };
15 |
16 | const styles = {
17 | container: css`
18 | background: red;
19 | `,
20 | };
21 |
--------------------------------------------------------------------------------
/components/TreeView.js:
--------------------------------------------------------------------------------
1 | import { react, html, css } from '../utils/rplus.js';
2 |
3 | const TreeView = ({ children }) =>
4 | html`
5 |
6 | ${react.Children.map(children, child =>
7 | react.cloneElement(child, { root: true })
8 | )}
9 |
10 | `;
11 |
12 | const TreeItem = ({ children, label, root = false }) => {
13 | const expandable = children && react.Children.count(children) > 0;
14 | const [expanded, setExpanded] = react.useState(root);
15 |
16 | return expandable
17 | ? html`
18 |
19 |
20 | setExpanded(!expanded)}
22 | className=${styles.button}
23 | >
24 |
29 | \u25ba
30 |
31 | ${label}
32 |
33 |
34 | ${expanded ? children : null}
35 |
36 | `
37 | : html`
38 | ${label}
39 | `;
40 | };
41 |
42 | export const styles = {
43 | root: css`
44 | margin-left: -1.38rem;
45 | border-left: none;
46 |
47 | li {
48 | position: relative;
49 | }
50 | `,
51 | branch: css`
52 | position: relative;
53 | word-break: break-word;
54 | margin-left: 1.5rem;
55 |
56 | &:before {
57 | display: block;
58 | content: '';
59 | position: absolute;
60 | top: 0;
61 | left: 0;
62 | height: 100%;
63 | border-right: 2px dotted #4b4b4e;
64 | }
65 | `,
66 | button: css`
67 | padding: 0;
68 | margin: 0;
69 | background: none;
70 | border: none;
71 | width: 100%;
72 | cursor: pointer;
73 | `,
74 | chevron: css`
75 | position: absolute;
76 | top: 0;
77 | left: 0px;
78 | top: 50%;
79 | font-size: 0.8rem;
80 | padding: 0.2rem;
81 | z-index: 2;
82 | background: #26272d;
83 | color: #9c9c9c;
84 | transform: translate(-50%, -50%);
85 | `,
86 | expanded: css`
87 | transform: translate(-50%, -50%) rotate(90deg);
88 | `,
89 | leaf: css`
90 | position: relative;
91 | margin-left: 1.5rem;
92 |
93 | &:before,
94 | &:after {
95 | display: block;
96 | content: '';
97 | position: absolute;
98 | left: 0;
99 | border-color: ;
100 | }
101 |
102 | &:after {
103 | top: 50%;
104 | width: 1rem;
105 | border-bottom: 2px solid #4b4b4e;
106 | }
107 |
108 | &:before {
109 | top: 0;
110 | height: 100%;
111 | border-left: 2px solid #4b4b4e;
112 | }
113 | &:last-child {
114 | &:before {
115 | height: 50%;
116 | }
117 | }
118 | `,
119 | };
120 |
121 | export { TreeView, TreeItem };
122 |
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FormidableLabs/runpkg/6344f7c8c0184da2f3d74224dde38d84545ce0ad/favicon.ico
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | runpkg | the package explorer
6 |
10 |
11 |
16 |
17 |
18 |
41 |
42 |
46 |
50 |
51 |
52 |
53 |
57 |
61 |
65 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | import { react, html } from '../utils/rplus.js';
2 | import { StateProvider } from './utils/globalState.js';
3 | import { parseUrl } from './utils/parseUrl.js';
4 |
5 | import Main from './components/Main.js';
6 |
7 | if ('serviceWorker' in navigator) {
8 | navigator.serviceWorker
9 | .register('./sw.js')
10 | .then(() => console.log('[runpkg] service worker registered'))
11 | .catch(err => console.log(err));
12 | }
13 |
14 | const initialState = {
15 | packages: [],
16 | packagesSearchTerm: '',
17 | fileSearchTerm: '',
18 | noUrlPackageFound: '',
19 | dependencySearchTerm: '',
20 | request: parseUrl(),
21 | directory: {},
22 | versions: {},
23 | cache: {},
24 | mode: 'registry',
25 | };
26 |
27 | function reducer(state, action) {
28 | switch (action.type) {
29 | case 'setMode':
30 | return { ...state, mode: action.payload };
31 | case 'setPackages':
32 | return { ...state, packages: action.payload };
33 | case 'setPackagesSearchTerm':
34 | return { ...state, packagesSearchTerm: action.payload };
35 | case 'setFileSearchTerm':
36 | return { ...state, fileSearchTerm: action.payload };
37 | case 'setDependencySearchTerm':
38 | return { ...state, dependencySearchTerm: action.payload };
39 | case 'setRequest':
40 | return {
41 | ...state,
42 | noUrlPackageFound: '',
43 | request: action.payload,
44 | mode: !action.payload.name ? 'registry' : state.mode,
45 | };
46 | case 'setNoURLPackageFound':
47 | return { ...state, noUrlPackageFound: action.payload };
48 | case 'setDirectory':
49 | return { ...state, directory: action.payload };
50 | case 'setFile':
51 | return { ...state, file: action.payload };
52 | case 'setVersions':
53 | return { ...state, versions: action.payload };
54 | case 'setCache':
55 | return {
56 | ...state,
57 | cache: { ...state.cache, ...action.payload },
58 | };
59 | default:
60 | return { ...state };
61 | }
62 | }
63 |
64 | const App = () => html`
65 | <${StateProvider} initialState=${initialState} reducer=${reducer}>
66 | <${Main} />
67 | />
68 | `;
69 |
70 | react.render(
71 | html`
72 | <${App} />
73 | `,
74 | document.body
75 | );
76 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [[redirects]]
2 | from = "/*"
3 | to = "/index.html"
4 | status = 200
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "runpkg",
3 | "version": "1.0.0",
4 | "description": "The online javascript package explorer",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "servor --reload --browse",
8 | "prettier": "prettier --config .prettierrc --write \"./**/*.{css,html,json,md,yml}\"",
9 | "lint": "eslint \"./**/*.js\""
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "git+https://github.com/FormidableLabs/runpkg.git"
14 | },
15 | "author": "Luke Jackson <@lukejacksonn>",
16 | "contributors": [
17 | "Alex Saunders <@alex-saunders>",
18 | "Kara Stubbs <@kiraarghy>"
19 | ],
20 | "license": "MIT",
21 | "bugs": {
22 | "url": "https://github.com/FormidableLabs/runpkg/issues"
23 | },
24 | "homepage": "https://runpkg.com",
25 | "devDependencies": {
26 | "eslint": "^5.16.0",
27 | "eslint-config-prettier": "^2.9.0",
28 | "husky": "^2.3.0",
29 | "lint-staged": "^8.1.6",
30 | "prettier": "^1.17.0",
31 | "servor": "^3.0.0"
32 | },
33 | "husky": {
34 | "hooks": {
35 | "pre-commit": "lint-staged"
36 | }
37 | },
38 | "lint-staged": {
39 | "*.js": [
40 | "eslint --fix",
41 | "prettier --write",
42 | "git add"
43 | ],
44 | "*.{css,html,json,md,yml}": [
45 | "prettier --write",
46 | "git add"
47 | ]
48 | },
49 | "prettier": {
50 | "tabWidth": 2,
51 | "useTabs": false,
52 | "semi": true,
53 | "singleQuote": true,
54 | "trailingComma": "es5"
55 | },
56 | "eslintConfig": {
57 | "root": true,
58 | "extends": [
59 | "eslint:recommended",
60 | "prettier",
61 | "prettier/react"
62 | ],
63 | "env": {
64 | "browser": true,
65 | "es6": true
66 | },
67 | "parserOptions": {
68 | "ecmaVersion": 10,
69 | "sourceType": "module"
70 | },
71 | "rules": {
72 | "no-useless-escape": "off",
73 | "no-console": "off"
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/reset.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | border: 0;
5 | font-size: 100%;
6 | line-height: 1;
7 | font: inherit;
8 | vertical-align: baseline;
9 | box-sizing: border-box;
10 | }
11 | ol,
12 | ul {
13 | list-style: none;
14 | }
15 | body {
16 | width: 100%;
17 | margin: 0;
18 | padding: 0;
19 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
20 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
21 | sans-serif;
22 | -webkit-font-smoothing: antialiased;
23 | -moz-osx-font-smoothing: grayscale;
24 | background: #2f3138;
25 | min-height: 100vh;
26 | }
27 | code {
28 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
29 | monospace;
30 | }
31 | pre {
32 | font-size: 16px;
33 | }
34 |
35 | .token.comment,
36 | .token.prolog,
37 | .token.doctype,
38 | .token.cdata {
39 | color: #6272a4;
40 | }
41 |
42 | .token.punctuation {
43 | color: #f8f8f2;
44 | }
45 |
46 | .namespace {
47 | opacity: 0.7;
48 | }
49 |
50 | .token.property,
51 | .token.tag,
52 | .token.constant,
53 | .token.symbol,
54 | .token.deleted {
55 | color: #ff79c6;
56 | }
57 |
58 | .token.boolean,
59 | .token.number {
60 | color: #bd93f9;
61 | }
62 |
63 | .token.selector,
64 | .token.attr-name,
65 | .token.string,
66 | .token.char,
67 | .token.builtin,
68 | .token.inserted {
69 | color: #f8b1f1;
70 | }
71 |
72 | .token.operator,
73 | .token.entity,
74 | .token.url,
75 | .language-css .token.string,
76 | .style .token.string,
77 | .token.variable {
78 | color: #f8f8f2;
79 | }
80 |
81 | .token.atrule,
82 | .token.attr-value,
83 | .token.function,
84 | .token.class-name {
85 | color: #f1fa8c;
86 | }
87 |
88 | .token.keyword {
89 | color: #80eac7;
90 | }
91 |
92 | .token.regex,
93 | .token.important {
94 | color: #ffb86c;
95 | }
96 |
97 | .token.important,
98 | .token.bold {
99 | font-weight: bold;
100 | }
101 |
102 | .token.italic {
103 | font-style: italic;
104 | }
105 |
106 | .token.entity {
107 | cursor: help;
108 | }
109 |
110 | li {
111 | list-style: none;
112 | }
113 |
114 | select {
115 | font-size: 1.38rem;
116 | width: 100%;
117 | height: 3.6rem;
118 | text-indent: 1rem;
119 | background: rgba(0, 0, 0, 0.1);
120 | border: 0;
121 | border-right: 1rem solid transparent;
122 | color: rgba(255, 255, 255, 0.8);
123 | -webkit-appearance: none;
124 | appearance: none;
125 | border: 1px solid rgba(0, 0, 0, 0.1);
126 | border-radius: 0.38rem;
127 | }
128 |
129 | option {
130 | color: rgba(0, 0, 0, 0.8);
131 | }
132 |
133 | ::-webkit-scrollbar {
134 | width: 16px;
135 | }
136 |
137 | ::-webkit-scrollbar-track {
138 | border-radius: 0;
139 | background: rgba(0, 0, 0, 0.1);
140 | }
141 |
142 | ::-webkit-scrollbar-thumb {
143 | border-radius: 0;
144 | background: rgba(0, 0, 0, 0.2);
145 | }
146 |
147 | ::-webkit-scrollbar-thumb:hover {
148 | background: rgba(0, 0, 0, 0.38);
149 | }
150 |
151 | ::-webkit-scrollbar-thumb:window-inactive {
152 | background: rgba(0, 0, 0, 0.05);
153 | }
154 |
155 | ::-webkit-scrollbar-corner {
156 | background: rgba(0, 0, 0, 0.38);
157 | }
158 |
--------------------------------------------------------------------------------
/sw.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable max-nested-callbacks */
2 | const cacheName = 'www.runpkg.com';
3 |
4 | self.addEventListener('activate', () => {
5 | console.log('service worker activated');
6 | });
7 |
8 | self.addEventListener('fetch', event => {
9 | if (
10 | event.request.url.includes('https://unpkg') &&
11 | !event.request.referrer.includes('https://unpkg.com/')
12 | ) {
13 | event.respondWith(
14 | caches.open(cacheName).then(cache =>
15 | cache.match(event.request).then(
16 | response =>
17 | response ||
18 | fetch(event.request).then(networkResponse => {
19 | cache.put(event.request, networkResponse.clone());
20 | return networkResponse;
21 | })
22 | )
23 | )
24 | );
25 | }
26 | return;
27 | });
28 |
--------------------------------------------------------------------------------
/utils/analyzeFile.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable no-eval */
2 | const UNPKG = 'https://unpkg.com/';
3 |
4 | const fileNameRegEx = /\/[^\/@]+[\.][^\/]+$/;
5 |
6 | // Hack to get ESM into webworker as 21/Nov/2019 ESM is not supported by webworkers
7 | const getParseUrl = () =>
8 | fetch('/utils/parseUrl.js')
9 | .then(x => x.text())
10 | .then(x =>
11 | x.replace(/\s*export {[^}]+\};/g, '').replace(/^const\s[^=]+=/, '')
12 | );
13 |
14 | // Handles paths like "../../some-file.js"
15 | const handleDoubleDot = (pathEnd, base) => {
16 | const howFarBack = -1 * pathEnd.match(/\.\.\//g).length;
17 | const strippedPathEnd = pathEnd.replace(/\.\./g, '').replace(/\/+/g, '/');
18 | const strippedBase = base
19 | .split('/')
20 | .slice(0, howFarBack)
21 | .join('/');
22 | return strippedBase + strippedPathEnd;
23 | };
24 |
25 | // Handles cases like Svelte, where - on runpkg - the index url doesn't have a file ext
26 | const getCurrentdir = currentPath =>
27 | currentPath.match(fileNameRegEx)
28 | ? currentPath.replace(fileNameRegEx, '')
29 | : currentPath.replace(/\/[^\/]+$/, '');
30 |
31 | // Makes an unpkg path for the supplied file
32 | const makePath = url => x => {
33 | const base = getCurrentdir(url);
34 | if (x.startsWith('./')) return base + x.replace('./', '/');
35 | if (x.startsWith('../')) return handleDoubleDot(x, base);
36 | if (x.startsWith('https://')) return x;
37 | return UNPKG + x;
38 | };
39 |
40 | const isExternalPath = str => !str.startsWith('.');
41 | const isLocalFile = str => !isExternalPath(str);
42 | const isListedInDependencies = (pkgName, pkgJson) =>
43 | ['dependencies', 'devDependencies', 'peerDependencies'].find(depType => {
44 | const matcher = self.parseUrl(pkgName);
45 | return Object.keys(pkgJson[depType] || {}).includes(matcher.name);
46 | });
47 |
48 | const stripComments = str =>
49 | str.replace(/^[\t ]*\/\*(.|\r|\n)*?\*\/|^[\t ]*\/\/.*/gm, '');
50 |
51 | const importExportRegex = /(from|import)[ \n]?['"](.*?)['"];?/;
52 | const requireRegex = /(require\(['"])([^)\n\r]*)(['"]\))/;
53 |
54 | const packageJsonUrl = (name, version) => {
55 | return `${UNPKG}${name}@${version}/package.json`;
56 | };
57 |
58 | const directoriesUrl = (name, version) => {
59 | return `${UNPKG}${name}@${version}/?meta`;
60 | };
61 |
62 | const flatten = arr =>
63 | arr.reduce(
64 | (acc, cur) => [...acc, ...(cur.files ? flatten(cur.files) : [cur.path])],
65 | []
66 | );
67 |
68 | const extractDependencies = (input, packageJson) => {
69 | const code = stripComments(input).slice(0, 100000);
70 | const imports = (code.match(new RegExp(importExportRegex, 'gm')) || []).map(
71 | x => x.match(new RegExp(importExportRegex))[2]
72 | );
73 | const requires = (code.match(new RegExp(requireRegex, 'gm')) || []).map(
74 | x => x.match(new RegExp(requireRegex))[2]
75 | );
76 | return [...new Set([...imports, ...requires])].filter(
77 | x =>
78 | isLocalFile(x) ||
79 | isListedInDependencies(x, packageJson) ||
80 | x.startsWith('https://')
81 | );
82 | };
83 |
84 | const needsExtension = entry =>
85 | !entry
86 | .split('/')
87 | .pop()
88 | .includes('.');
89 |
90 | const visitedPaths = new Set();
91 |
92 | /** Parses the dependency tree for the package
93 | * if recursive it does it recursively
94 | * if not recursive, it does one level of the dependency tree
95 | * it then dispatches the result back to runpkg
96 | */
97 |
98 | const setupParseUrl = async () => {
99 | self.parseUrl = eval(await getParseUrl());
100 | };
101 |
102 | const parseDependencies = async path => {
103 | if (!visitedPaths.has(path)) {
104 | visitedPaths.add(path);
105 | const { url, code } = await fetch(path).then(async res => ({
106 | url: res.url,
107 | code: await res.text(),
108 | }));
109 | const { name, version } = self.parseUrl(url);
110 | const dir = await fetch(directoriesUrl(name, version)).then(res =>
111 | res.json()
112 | );
113 | const pkg = await fetch(packageJsonUrl(name, version)).then(res =>
114 | res.json()
115 | );
116 | const files = flatten(dir.files);
117 | const ext = url
118 | .split('/')
119 | .pop()
120 | .match(/\.(.*)/);
121 | const dependencies = extractDependencies(code, pkg).reduce((all, entry) => {
122 | const packageUrl = `${UNPKG}${pkg.name}@${pkg.version}`;
123 | let match = makePath(url)(entry);
124 | if (isExternalPath(entry)) {
125 | if (entry.startsWith('https://')) match = entry;
126 | else {
127 | const version_ = pkg[isListedInDependencies(entry, pkg)][entry];
128 | match = version_ ? `${match}@${version_}` : match;
129 | }
130 | }
131 | if (isLocalFile(entry) && needsExtension(entry)) {
132 | const options = files.filter(x =>
133 | x.match(new RegExp(`${match.replace(packageUrl, '')}(/index)?\\..*`))
134 | );
135 | match =
136 | packageUrl +
137 | (options
138 | .sort((a, b) => a.length - b.length || a.localeCompare(b))
139 | .find(x => x.endsWith(ext[0])) || options[0]);
140 | }
141 | return { ...all, [entry]: match };
142 | }, {});
143 | self.postMessage({
144 | url,
145 | code,
146 | dependencies,
147 | size: code.length,
148 | extension: ext ? ext[1] : '',
149 | });
150 | }
151 | };
152 |
153 | self.onmessage = async event => {
154 | const { data } = event;
155 | await setupParseUrl();
156 | try {
157 | await parseDependencies(data);
158 | } catch (e) {
159 | // This is a truly awful hack to get around random CORS errors
160 | parseDependencies(data);
161 | }
162 | };
163 |
--------------------------------------------------------------------------------
/utils/es-module-shim.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | /* ES Module Shims 0.4.2 */
3 | (function() {
4 | let baseUrl;
5 |
6 | function createBlob(source) {
7 | return URL.createObjectURL(
8 | new Blob([source], { type: 'application/javascript' })
9 | );
10 | }
11 |
12 | const hasDocument = typeof document !== 'undefined';
13 |
14 | if (hasDocument) {
15 | const baseEl = document.querySelector('base[href]');
16 | if (baseEl) baseUrl = baseEl.href;
17 | }
18 |
19 | if (!baseUrl && typeof location !== 'undefined') {
20 | baseUrl = location.href.split('#')[0].split('?')[0];
21 | const lastSepIndex = baseUrl.lastIndexOf('/');
22 | if (lastSepIndex !== -1) baseUrl = baseUrl.slice(0, lastSepIndex + 1);
23 | }
24 |
25 | let esModuleShimsSrc;
26 | if (hasDocument) {
27 | esModuleShimsSrc = document.currentScript && document.currentScript.src;
28 | }
29 |
30 | const backslashRegEx = /\\/g;
31 | function resolveIfNotPlainOrUrl(relUrl, parentUrl) {
32 | // strip off any trailing query params or hashes
33 | parentUrl = parentUrl && parentUrl.split('#')[0].split('?')[0];
34 | if (relUrl.indexOf('\\') !== -1)
35 | relUrl = relUrl.replace(backslashRegEx, '/');
36 | // protocol-relative
37 | if (relUrl[0] === '/' && relUrl[1] === '/') {
38 | return parentUrl.slice(0, parentUrl.indexOf(':') + 1) + relUrl;
39 | }
40 | // relative-url
41 | else if (
42 | (relUrl[0] === '.' &&
43 | (relUrl[1] === '/' ||
44 | (relUrl[1] === '.' &&
45 | (relUrl[2] === '/' || (relUrl.length === 2 && (relUrl += '/')))) ||
46 | (relUrl.length === 1 && (relUrl += '/')))) ||
47 | relUrl[0] === '/'
48 | ) {
49 | const parentProtocol = parentUrl.slice(0, parentUrl.indexOf(':') + 1);
50 | // Disabled, but these cases will give inconsistent results for deep backtracking
51 | //if (parentUrl[parentProtocol.length] !== '/')
52 | // throw new Error('Cannot resolve');
53 | // read pathname from parent URL
54 | // pathname taken to be part after leading "/"
55 | let pathname;
56 | if (parentUrl[parentProtocol.length + 1] === '/') {
57 | // resolving to a :// so we need to read out the auth and host
58 | if (parentProtocol !== 'file:') {
59 | pathname = parentUrl.slice(parentProtocol.length + 2);
60 | pathname = pathname.slice(pathname.indexOf('/') + 1);
61 | } else {
62 | pathname = parentUrl.slice(8);
63 | }
64 | } else {
65 | // resolving to :/ so pathname is the /... part
66 | pathname = parentUrl.slice(
67 | parentProtocol.length + (parentUrl[parentProtocol.length] === '/')
68 | );
69 | }
70 |
71 | if (relUrl[0] === '/')
72 | return (
73 | parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl
74 | );
75 |
76 | // join together and split for removal of .. and . segments
77 | // looping the string instead of anything fancy for perf reasons
78 | // '../../../../../z' resolved to 'x/y' is just 'z'
79 | const segmented =
80 | pathname.slice(0, pathname.lastIndexOf('/') + 1) + relUrl;
81 |
82 | const output = [];
83 | let segmentIndex = -1;
84 | for (let i = 0; i < segmented.length; i++) {
85 | // busy reading a segment - only terminate on '/'
86 | if (segmentIndex !== -1) {
87 | if (segmented[i] === '/') {
88 | output.push(segmented.slice(segmentIndex, i + 1));
89 | segmentIndex = -1;
90 | }
91 | }
92 |
93 | // new segment - check if it is relative
94 | else if (segmented[i] === '.') {
95 | // ../ segment
96 | if (
97 | segmented[i + 1] === '.' &&
98 | (segmented[i + 2] === '/' || i + 2 === segmented.length)
99 | ) {
100 | output.pop();
101 | i += 2;
102 | }
103 | // ./ segment
104 | else if (segmented[i + 1] === '/' || i + 1 === segmented.length) {
105 | i += 1;
106 | } else {
107 | // the start of a new segment as below
108 | segmentIndex = i;
109 | }
110 | }
111 | // it is the start of a new segment
112 | else {
113 | segmentIndex = i;
114 | }
115 | }
116 | // finish reading out the last segment
117 | if (segmentIndex !== -1) output.push(segmented.slice(segmentIndex));
118 | return (
119 | parentUrl.slice(0, parentUrl.length - pathname.length) + output.join('')
120 | );
121 | }
122 | }
123 |
124 | /*
125 | * Import maps implementation
126 | *
127 | * To make lookups fast we pre-resolve the entire import map
128 | * and then match based on backtracked hash lookups
129 | *
130 | */
131 | const emptyImportMap = { imports: {}, scopes: {} };
132 |
133 | function resolveUrl(relUrl, parentUrl) {
134 | return (
135 | resolveIfNotPlainOrUrl(relUrl, parentUrl) ||
136 | (relUrl.indexOf(':') !== -1
137 | ? relUrl
138 | : resolveIfNotPlainOrUrl('./' + relUrl, parentUrl))
139 | );
140 | }
141 |
142 | function objectAssign(to, from) {
143 | for (const p in from) to[p] = from[p];
144 | return to;
145 | }
146 |
147 | function resolveAndComposePackages(
148 | packages,
149 | outPackages,
150 | baseUrl,
151 | parentMap,
152 | parentUrl,
153 | stdModules
154 | ) {
155 | outer: for (const p in packages) {
156 | let target = packages[p];
157 | if (typeof target === 'string') target = [target];
158 | else if (!Array.isArray(target)) continue;
159 |
160 | for (const rhs of target) {
161 | if (typeof rhs !== 'string') continue;
162 | const mapped = resolveImportMap(
163 | parentMap,
164 | resolveIfNotPlainOrUrl(rhs, baseUrl) || rhs,
165 | parentUrl
166 | );
167 | if (mapped && (!mapped.startsWith('std:') || stdModules.has(mapped))) {
168 | outPackages[p] = mapped;
169 | continue outer;
170 | }
171 | }
172 | targetWarning(p, packages[p], 'bare specifier did not resolve');
173 | }
174 | }
175 |
176 | function resolveAndComposeImportMap(json, baseUrl, parentMap, stdModules) {
177 | const outMap = {
178 | imports: objectAssign({}, parentMap.imports),
179 | scopes: objectAssign({}, parentMap.scopes),
180 | };
181 |
182 | if (json.imports)
183 | resolveAndComposePackages(
184 | json.imports,
185 | outMap.imports,
186 | baseUrl,
187 | parentMap,
188 | null,
189 | stdModules
190 | );
191 |
192 | if (json.scopes)
193 | for (const s in json.scopes) {
194 | const resolvedScope = resolveUrl(s, baseUrl);
195 | resolveAndComposePackages(
196 | json.scopes[s],
197 | outMap.scopes[resolvedScope] || (outMap.scopes[resolvedScope] = {}),
198 | baseUrl,
199 | parentMap,
200 | resolvedScope,
201 | stdModules
202 | );
203 | }
204 |
205 | return outMap;
206 | }
207 |
208 | function getMatch(path, matchObj) {
209 | if (matchObj[path]) return path;
210 | let sepIndex = path.length;
211 | do {
212 | const segment = path.slice(0, sepIndex + 1);
213 | if (segment in matchObj) return segment;
214 | } while ((sepIndex = path.lastIndexOf('/', sepIndex - 1)) !== -1);
215 | }
216 |
217 | function applyPackages(id, packages) {
218 | const pkgName = getMatch(id, packages);
219 | if (pkgName) {
220 | const pkg = packages[pkgName];
221 | if (pkg === null) return;
222 | if (id.length > pkgName.length && pkg[pkg.length - 1] !== '/')
223 | targetWarning(pkgName, pkg, "should have a trailing '/'");
224 | else return pkg + id.slice(pkgName.length);
225 | }
226 | }
227 |
228 | function targetWarning(match, target, msg) {
229 | console.warn(
230 | 'Package target ' +
231 | msg +
232 | ", resolving target '" +
233 | target +
234 | "' for " +
235 | match
236 | );
237 | }
238 |
239 | function resolveImportMap(importMap, resolvedOrPlain, parentUrl) {
240 | let scopeUrl = parentUrl && getMatch(parentUrl, importMap.scopes);
241 | while (scopeUrl) {
242 | const packageResolution = applyPackages(
243 | resolvedOrPlain,
244 | importMap.scopes[scopeUrl]
245 | );
246 | if (packageResolution) return packageResolution;
247 | scopeUrl = getMatch(
248 | scopeUrl.slice(0, scopeUrl.lastIndexOf('/')),
249 | importMap.scopes
250 | );
251 | }
252 | return (
253 | applyPackages(resolvedOrPlain, importMap.imports) ||
254 | (resolvedOrPlain.indexOf(':') !== -1 && resolvedOrPlain)
255 | );
256 | }
257 |
258 | /* es-module-lexer 0.3.13 */
259 | function parse(Q, B = '@') {
260 | if (!A) return init.then(() => parse(Q));
261 | const C =
262 | (A.__heap_base.value || A.__heap_base) +
263 | 4 * Q.length +
264 | -A.memory.buffer.byteLength;
265 | if (
266 | (C > 0 && A.memory.grow(Math.ceil(C / 65536)),
267 | (function(A, Q) {
268 | const B = A.length;
269 | let C = 0;
270 | for (; C < B; ) Q[C] = A.charCodeAt(C++);
271 | })(Q, new Uint16Array(A.memory.buffer, A.sa(Q.length), Q.length + 1)),
272 | !A.parse())
273 | )
274 | throw Object.assign(
275 | new Error(
276 | `Parse error ${B}:${Q.slice(0, A.e()).split('\n').length}:${A.e() -
277 | Q.lastIndexOf('\n', A.e() - 1)}`
278 | ),
279 | { idx: A.e() }
280 | );
281 | const E = [];
282 | const g = [];
283 | for (; A.ri(); ) E.push({ s: A.is(), e: A.ie(), d: A.id() });
284 | for (; A.re(); ) g.push(Q.slice(A.es(), A.ee()));
285 | return [E, g];
286 | }
287 | let A;
288 | const init = WebAssembly.compile(
289 | (A =>
290 | typeof atob === 'function'
291 | ? Uint8Array.from(atob(A), A => A.charCodeAt(0))
292 | : Buffer.from(A, 'base64'))(
293 | 'AGFzbQEAAAABTwxgAABgAX8Bf2ADf39/AGACf38AYAABf2AGf39/f39/AX9gBH9/f38Bf2ADf39/AX9gB39/f39/f38Bf2ACf38Bf2AFf39/f38Bf2ABfwADKyoBAgMEBAQEBAQEBAEBBQAAAAAAAAABAQEBAAABBQYHCAkBCgQLAQEACAEFAwEAAQYVA38BQeDIAAt/AEHgyAALfwBB3AgLB1kNBm1lbW9yeQIAC19faGVhcF9iYXNlAwEKX19kYXRhX2VuZAMCAnNhAAABZQADAmlzAAQCaWUABQJpZAAGAmVzAAcCZWUACAJyaQAJAnJlAAoFcGFyc2UACwrlKCpoAQF/QbQIIAA2AgBBjAgoAgAiASAAQQF0aiIAQQA7AQBBuAggAEECaiIANgIAQbwIIAA2AgBBlAhBADYCAEGkCEEANgIAQZwIQQA2AgBBmAhBADYCAEGsCEEANgIAQaAIQQA2AgAgAQtXAQJ/QaQIKAIAIgRBDGpBlAggBBtBvAgoAgAiAzYCAEGkCCADNgIAQagIIAQ2AgBBvAggA0EQajYCACADQQA2AgwgAyACNgIIIAMgATYCBCADIAA2AgALSAEBf0GsCCgCACICQQhqQZgIIAIbQbwIKAIAIgI2AgBBrAggAjYCAEG8CCACQQxqNgIAIAJBADYCCCACIAE2AgQgAiAANgIACwgAQcAIKAIACxUAQZwIKAIAKAIAQYwIKAIAa0EBdQsVAEGcCCgCACgCBEGMCCgCAGtBAXULOQEBfwJAQZwIKAIAKAIIIgBBgAgoAgBHBEAgAEGECCgCAEYNASAAQYwIKAIAa0EBdQ8LQX8PC0F+CxUAQaAIKAIAKAIAQYwIKAIAa0EBdQsVAEGgCCgCACgCBEGMCCgCAGtBAXULJQEBf0GcCEGcCCgCACIAQQxqQZQIIAAbKAIAIgA2AgAgAEEARwslAQF/QaAIQaAIKAIAIgBBCGpBmAggABsoAgAiADYCACAAQQBHC4cHAQR/IwBBgChrIgMkAEHGCEH/AToAAEHICEGICCgCADYCAEHUCEGMCCgCAEF+aiIANgIAQdgIIABBtAgoAgBBAXRqIgE2AgBBxQhBADoAAEHECEEAOgAAQcAIQQA2AgBBsAhBADoAAEHMCCADQYAgajYCAEHQCCADNgIAA0BB1AggAEECaiICNgIAAkACQAJAAn8CQCAAIAFJBEAgAi8BACIBQXdqQQVJDQUCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUFgaiIEQQlLBEAgAUEvRg0BIAFB4ABGDQMgAUH9AEYNAiABQekARg0EIAFB+wBGDQUgAUHlAEcNEUHFCC0AAA0RIAIQDEUNESAAQQRqQfgAQfAAQe8AQfIAQfQAEA1FDREQDgwRCwJAAkACQAJAIARBAWsOCRQAFBQUFAECAxULEA8MEwsQEAwSC0HFCEHFCCwAACIAQQFqOgAAQdAIKAIAIABBAnRqQcgIKAIANgIADBELQcUILQAAIgBFDQ1BxQggAEF/aiIBOgAAQaQIKAIAIgBFDRAgACgCCEHQCCgCACABQRh0QRh1QQJ0aigCAEcNECAAIAI2AgQMEAsgAC8BBCIAQSpGDQUgAEEvRw0GEBEMEAtBxQhBxQgtAAAiAEF/aiIBOgAAIABBxggsAAAiAkH/AXFHDQNBxAhBxAgtAABBf2oiADoAAEHGCEHMCCgCACAAQRh0QRh1ai0AADoAAAsQEgwNCyACEAxFDQwgAEEEakHtAEHwAEHvAEHyAEH0ABANRQ0MEBMMDAtByAgoAgAiAC8BAEEpRw0EQaQIKAIAIgFFDQQgASgCBCAARw0EQaQIQagIKAIAIgE2AgAgAUUNAyABQQA2AgwMBAsgAUEYdEEYdSACTg0KDAcLEBQMCgtByAgoAgAiAS8BACIAEBUNByAAQf0ARg0CIABBKUcNA0HQCCgCAEHFCCwAAEECdGooAgAQFg0HDAMLQZQIQQA2AgALQcUIQcUILAAAIgFBAWo6AABB0AgoAgAgAUECdGogADYCAAwGC0HQCCgCAEHFCCwAAEECdGooAgAQFw0ECyABEBggAEUNA0UNBAwDC0GwCC0AAEHFCC0AAHJFQcYILQAAQf8BRnEMAQsQGUEACyADQYAoaiQADwsQGgtByAhB1AgoAgA2AgALQdgIKAIAIQFB1AgoAgAhAAwACwALGwAgAEGMCCgCAEcEQCAAQX5qLwEAEBsPC0EBCzsBAX8CQCAALwEIIAVHDQAgAC8BBiAERw0AIAAvAQQgA0cNACAALwECIAJHDQAgAC8BACABRiEGCyAGC6wFAQN/QdQIQdQIKAIAQQxqIgE2AgAQIyECAkACQAJAIAFB1AgoAgAiAEYEQCACECVFDQELAkACQAJAAkAgAkGff2oiAUELTQRAAkACQCABQQFrDgsHAwQHAQcHBwcHBgALQdQIIABBCmo2AgAQIxpB1AgoAgAhAAtB1AggAEEQajYCABAjIgBBKkYEQEHUCEHUCCgCAEECajYCABAjIQALDAcLAkAgAkEqRg0AIAJB9gBGDQQgAkH7AEcNBUHUCCAAQQJqNgIAECMhAkHUCCgCACEBA0AgAkH//wNxECYaQdQIKAIAIQAQIyICQeEARgRAQdQIQdQIKAIAQQRqNgIAECNB1AgoAgAhARAmGkHUCCgCACEAECMhAgsgAkEsRgRAQdQIQdQIKAIAQQJqNgIAECMhAgsgASAAEAJB1AgoAgAhACACQf0ARg0BIAAgAUcEQCAAIgFB2AgoAgBNDQELCxAZDAULQdQIIABBAmo2AgAQI0HmAEcNBEHUCCgCACIBLwEGQe0ARw0EIAEvAQRB7wBHDQQgAUECai8BAEHyAEcNBEHUCCABQQhqNgIAECMQJA8LIAAvAQhB8wBHDQEgAC8BBkHzAEcNASAALwEEQeEARw0BIABBAmovAQBB7ABHDQEgAC8BChAbRQ0BQdQIIABBCmo2AgAQIyEADAULIAAgAEEOahACDwtB1AggAEEEaiIANgIAC0HUCCAAQQRqIgA2AgADQEHUCCAAQQJqNgIAECNB1AgoAgAhABAmQSByQfsARg0CQdQIKAIAIgEgAEYNASAAIAEQAhAjQdQIKAIAIQBBLEYNAAtB1AggAEF+ajYCAA8LDwtB1AhB1AgoAgBBfmo2AgAPC0HUCCgCACAAECYaQdQIKAIAEAJB1AhB1AgoAgBBfmo2AgALcQEEf0HUCCgCACEAQdgIKAIAIQMCQANAAkAgAEECaiEBIAAgA08NACABLwEAIgJB3ABHBEAgAkEKRiACQQ1Gcg0BIAEhACACQSJHDQIMAwUgAEEEaiEADAILAAsLQdQIIAE2AgAQGQ8LQdQIIAA2AgALcQEEf0HUCCgCACEAQdgIKAIAIQMCQANAAkAgAEECaiEBIAAgA08NACABLwEAIgJB3ABHBEAgAkEKRiACQQ1Gcg0BIAEhACACQSdHDQIMAwUgAEEEaiEADAILAAsLQdQIIAE2AgAQGQ8LQdQIIAA2AgALSwEEf0HUCCgCAEECaiEBQdgIKAIAIQIDQAJAIAEiAEF+aiACTw0AIAAvAQAiA0ENRg0AIABBAmohASADQQpHDQELC0HUCCAANgIAC7wBAQR/QdQIKAIAIQFB2AgoAgAhAwJAAkADQCABIgBBAmohASAAIANPDQEgAS8BACICQSRHBEAgAkHcAEcEQCACQeAARw0CDAQLIABBBGohAQwBCyAALwEEQfsARw0AC0HUCCAAQQRqNgIAQcQIQcQILAAAIgBBAWo6AAAgAEHMCCgCAGpBxggtAAA6AABBxghBxQgtAABBAWoiADoAAEHFCCAAOgAADwtB1AggATYCABAZDwtB1AggATYCAAvfAgEEf0HUCEHUCCgCACIBQQxqIgI2AgACQAJAAkACQAJAAkAQIyIAQVlqIgNBB00EQAJAIANBAWsOBwACAwICAgQDC0HQCCgCAEHFCCwAACIAQQJ0aiABNgIAQcUIIABBAWo6AABByAgoAgAvAQBBLkYNBEHUCCgCAEECakEAIAEQAQ8LIABBIkYgAEH7AEZyDQELQdQIKAIAIAJGDQILQcUILQAABEBB1AhB1AgoAgBBfmo2AgAPC0HUCCgCACEBQdgIKAIAIQIDQCABIAJJBEAgAS8BACIAQSdGIABBIkZyDQRB1AggAUECaiIBNgIADAELCxAZDwtB1AhB1AgoAgBBAmo2AgAQI0HtAEcNAEHUCCgCACIALwEGQeEARw0AIAAvAQRB9ABHDQAgAEECai8BAEHlAEcNAEHICCgCAC8BAEEuRw0CCw8LIAAQJA8LIAEgAEEIakGECCgCABABC3UBAn9B1AhB1AgoAgAiAEECajYCACAAQQZqIQBB2AgoAgAhAQJAAkADQCAAQXxqIAFJBEAgAEF+ai8BAEEqRgRAIAAvAQBBL0YNAwsgAEECaiEADAELCyAAQX5qIQAMAQtB1AggAEF+ajYCAAtB1AggADYCAAtlAQF/IABBKUcgAEFYakH//wNxQQdJcSAAQUZqQf//A3FBBklyIABBX2oiAUEFTUEAQQEgAXRBMXEbciAAQdsARiAAQd4ARnJyRQRAIABB/QBHIABBhX9qQf//A3FBBElxDwtBAQs9AQF/QQEhAQJAIABB9wBB6ABB6QBB7ABB5QAQHA0AIABB5gBB7wBB8gAQHQ0AIABB6QBB5gAQHiEBCyABCz8BAX8gAC8BACIBQSlGIAFBO0ZyBH9BAQUgAUH5AEYEQCAAQX5qQeYAQekAQe4AQeEAQewAQewAEB8PC0EACwvKAwECfwJAAkACQAJAIAAvAQBBnH9qIgFBE0sNAAJAAkACQAJAAkACQAJAAkACQAJAIAFBAWsOEwEDCgoKCgoKCgQFCgoCCgYKCgcACyAAQX5qLwEAIgFB7ABGDQogAUHpAEcNCSAAQXxqQfYAQe8AEB4PCyAAQX5qLwEAIgFB9ABGDQYgAUHzAEcNCCAAQXxqLwEAIgFB4QBGDQogAUHsAEcNCCAAQXpqQeUAECAPCyAAQX5qECEPCyAAQX5qLwEAQe8ARw0GIABBfGovAQBB5QBHDQYgAEF6ai8BACIBQfAARg0JIAFB4wBHDQYgAEF4akHpAEHuAEHzAEH0AEHhAEHuABAfDwtBASECIABBfmoiAEHpABAgDQUgAEHyAEHlAEH0AEH1AEHyABAcDwsgAEF+akHkABAgDwsgAEF+akHhAEH3AEHhAEHpABAiDwsgAEF+ai8BACIBQe8ARg0BIAFB5QBHDQIgAEF8akHuABAgDwsgAEF8akHkAEHlAEHsAEHlABAiDwsgAEF8akH0AEHoAEHyABAdIQILIAIPCyAAQXxqQfkAQekAQeUAEB0PCyAAQXpqQeMAECAPCyAAQXhqQfQAQfkAEB4LNQEBf0GwCEEBOgAAQdQIKAIAIQBB1AhB2AgoAgBBAmo2AgBBwAggAEGMCCgCAGtBAXU2AgALbQECfwJAA0ACQEHUCEHUCCgCACIBQQJqIgA2AgAgAUHYCCgCAE8NAAJAIAAvAQAiAEHbAEcEQCAAQdwARg0BIABBCkYgAEENRnINAiAAQS9HDQMMBAsQJwwCC0HUCCABQQRqNgIADAELCxAZCwsyAQF/IABBd2pB//8DcSIBQRhJQQBBn4CABCABdkEBcRtFBEAgABAlIABBLkdxDwtBAQtFAQN/AkACQCAAQXhqIgZBjAgoAgAiB0kNACAGIAEgAiADIAQgBRANRQ0AIAYgB0YNASAAQXZqLwEAEBshCAsgCA8LQQELVQEDfwJAAkAgAEF8aiIEQYwIKAIAIgVJDQAgAC8BACADRw0AIABBfmovAQAgAkcNACAELwEAIAFHDQAgBCAFRg0BIABBemovAQAQGyEGCyAGDwtBAQtIAQN/AkACQCAAQX5qIgNBjAgoAgAiBEkNACAALwEAIAJHDQAgAy8BACABRw0AIAMgBEYNASAAQXxqLwEAEBshBQsgBQ8LQQELRwEDfwJAAkAgAEF2aiIHQYwIKAIAIghJDQAgByABIAIgAyAEIAUgBhAoRQ0AIAcgCEYNASAAQXRqLwEAEBshCQsgCQ8LQQELOQECfwJAAkBBjAgoAgAiAiAASw0AIAAvAQAgAUcNACAAIAJGDQEgAEF+ai8BABAbIQMLIAMPC0EBCzsBA38CQAJAIABBdGoiAUGMCCgCACICSQ0AIAEQKUUNACABIAJGDQEgAEFyai8BABAbIQMLIAMPC0EBC2IBA38CQAJAIABBemoiBUGMCCgCACIGSQ0AIAAvAQAgBEcNACAAQX5qLwEAIANHDQAgAEF8ai8BACACRw0AIAUvAQAgAUcNACAFIAZGDQEgAEF4ai8BABAbIQcLIAcPC0EBC2sBA39B1AgoAgAhAANAAkACQCAALwEAIgFBd2pBBUkgAUEgRnINACABQS9HDQEgAC8BAiIAQSpHBEAgAEEvRw0CEBEMAQsQFAtB1AhB1AgoAgAiAkECaiIANgIAIAJB2AgoAgBJDQELCyABC1QAAkACQCAAQSJHBEAgAEEnRw0BQdQIQdQIKAIAQQJqIgA2AgAQEAwCC0HUCEHUCCgCAEECaiIANgIAEA8MAQsQGQ8LIABB1AgoAgBBgAgoAgAQAQtdAQF/AkAgAEH4/wNxQShGIABBRmpB//8DcUEGSXIgAEFfaiIBQQVNQQBBASABdEExcRtyDQAgAEGlf2oiAUEDTUEAIAFBAUcbDQAgAEGFf2pB//8DcUEESQ8LQQELYgECfwJAA0AgAEH//wNxIgJBd2oiAUEXTUEAQQEgAXRBn4CABHEbRQRAIAAhASACECUNAkEAIQFB1AhB1AgoAgAiAEECajYCACAALwECIgANAQwCCwsgACEBCyABQf//A3ELcgEEf0HUCCgCACEAQdgIKAIAIQMCQANAAkAgAEECaiEBIAAgA08NACABLwEAIgJB3ABHBEAgAkEKRiACQQ1Gcg0BIAEhACACQd0ARw0CDAMFIABBBGohAAwCCwALC0HUCCABNgIAEBkPC0HUCCAANgIAC0UBAX8CQCAALwEKIAZHDQAgAC8BCCAFRw0AIAAvAQYgBEcNACAALwEEIANHDQAgAC8BAiACRw0AIAAvAQAgAUYhBwsgBwtWAQF/AkAgAC8BDEHlAEcNACAALwEKQecARw0AIAAvAQhB5wBHDQAgAC8BBkH1AEcNACAALwEEQeIARw0AIAAvAQJB5QBHDQAgAC8BAEHkAEYhAQsgAQsLFQEAQYAICw4BAAAAAgAAABAEAABgJA=='
294 | )
295 | )
296 | .then(WebAssembly.instantiate)
297 | .then(({ exports: Q }) => {
298 | A = Q;
299 | });
300 |
301 | class WorkerShim {
302 | constructor(aURL, options = {}) {
303 | if (options.type !== 'module') return new Worker(aURL, options);
304 |
305 | if (!esModuleShimsSrc)
306 | throw new Error(
307 | 'es-module-shims.js must be loaded with a script tag for WorkerShim support.'
308 | );
309 |
310 | options.importMap = options.importMap || emptyImportMap;
311 |
312 | const workerScriptUrl = createBlob(
313 | `importScripts('${esModuleShimsSrc}');importShim.map=${JSON.stringify(
314 | options.importMap
315 | )};importShim('${
316 | new URL(aURL, baseUrl).href
317 | }').catch(e=>setTimeout(()=>{throw e}))`
318 | );
319 |
320 | return new Worker(
321 | workerScriptUrl,
322 | Object.assign({}, options, { type: undefined })
323 | );
324 | }
325 | }
326 |
327 | let id = 0;
328 | const registry = {};
329 |
330 | // support browsers without dynamic import support (eg Firefox 6x)
331 | let dynamicImport;
332 | try {
333 | dynamicImport = (0, eval)('u=>import(u)');
334 | } catch (e) {
335 | if (hasDocument) {
336 | self.addEventListener('error', e => (importShim.e = e.error));
337 | dynamicImport = blobUrl => {
338 | const topLevelBlobUrl = createBlob(
339 | `import*as m from'${blobUrl}';self.importShim.l=m;self.importShim.e=null`
340 | );
341 | const s = document.createElement('script');
342 | s.type = 'module';
343 | s.src = topLevelBlobUrl;
344 | document.head.appendChild(s);
345 | return new Promise((resolve, reject) => {
346 | s.addEventListener('load', () => {
347 | document.head.removeChild(s);
348 | importShim.e
349 | ? reject(importShim.e)
350 | : resolve(importShim.l, baseUrl);
351 | });
352 | });
353 | };
354 | }
355 | }
356 |
357 | async function loadAll(load, seen) {
358 | if (load.b || seen[load.u]) return;
359 | seen[load.u] = 1;
360 | await load.L;
361 | return Promise.all(load.d.map(dep => loadAll(dep, seen)));
362 | }
363 |
364 | async function topLevelLoad(url, source) {
365 | await init;
366 | const load = getOrCreateLoad(url, source);
367 | const seen = {};
368 | await loadAll(load, seen);
369 | lastLoad = undefined;
370 | resolveDeps(load, seen);
371 | const module = await dynamicImport(load.b);
372 | // if the top-level load is a shell, run its update function
373 | if (load.s) (await dynamicImport(load.s)).u$_(module);
374 | return module;
375 | }
376 |
377 | async function importShim(id, parentUrl) {
378 | return topLevelLoad(await resolve(id, parentUrl || baseUrl));
379 | }
380 |
381 | self.importShim = importShim;
382 |
383 | const meta = {};
384 | const wasmModules = {};
385 |
386 | const edge = navigator.userAgent.match(/Edge\/\d\d\.\d+$/);
387 |
388 | Object.defineProperties(importShim, {
389 | map: { value: emptyImportMap, writable: true },
390 | m: { value: meta },
391 | w: { value: wasmModules },
392 | l: { value: undefined, writable: true },
393 | e: { value: undefined, writable: true },
394 | });
395 |
396 | let lastLoad;
397 | function resolveDeps(load, seen) {
398 | if (load.b || !seen[load.u]) return;
399 | seen[load.u] = 0;
400 |
401 | for (const dep of load.d) resolveDeps(dep, seen);
402 |
403 | // "execution"
404 | const source = load.S;
405 | // edge doesnt execute sibling in order, so we fix this up by ensuring all previous executions are explicit dependencies
406 | let resolvedSource = edge && lastLoad ? `import '${lastLoad}';` : '';
407 |
408 | const [imports] = load.a;
409 |
410 | if (!imports.length) {
411 | resolvedSource += source;
412 | } else {
413 | // once all deps have loaded we can inline the dependency resolution blobs
414 | // and define this blob
415 | let lastIndex = 0;
416 | let depIndex = 0;
417 | for (const { s: start, e: end, d: dynamicImportIndex } of imports) {
418 | // dependency source replacements
419 | if (dynamicImportIndex === -1) {
420 | const depLoad = load.d[depIndex++];
421 | let blobUrl = depLoad.b;
422 | if (!blobUrl) {
423 | // circular shell creation
424 | if (!(blobUrl = depLoad.s)) {
425 | blobUrl = depLoad.s = createBlob(
426 | `export function u$_(m){${depLoad.a[1]
427 | .map(name =>
428 | name === 'default'
429 | ? `$_default=m.default`
430 | : `${name}=m.${name}`
431 | )
432 | .join(',')}}${depLoad.a[1]
433 | .map(name =>
434 | name === 'default'
435 | ? `let $_default;export{$_default as default}`
436 | : `export let ${name}`
437 | )
438 | .join(';')}\n//# sourceURL=${depLoad.r}?cycle`
439 | );
440 | }
441 | }
442 | // circular shell execution
443 | else if (depLoad.s) {
444 | resolvedSource +=
445 | source.slice(lastIndex, start - 1) +
446 | '/*' +
447 | source.slice(start - 1, end + 1) +
448 | '*/' +
449 | source.slice(start - 1, start) +
450 | blobUrl +
451 | source[end] +
452 | `;import*as m$_${depIndex} from'${
453 | depLoad.b
454 | }';import{u$_ as u$_${depIndex}}from'${
455 | depLoad.s
456 | }';u$_${depIndex}(m$_${depIndex})`;
457 | lastIndex = end + 1;
458 | depLoad.s = undefined;
459 | continue;
460 | }
461 | resolvedSource +=
462 | source.slice(lastIndex, start - 1) +
463 | '/*' +
464 | source.slice(start - 1, end + 1) +
465 | '*/' +
466 | source.slice(start - 1, start) +
467 | blobUrl;
468 | lastIndex = end;
469 | }
470 | // import.meta
471 | else if (dynamicImportIndex === -2) {
472 | meta[load.r] = { url: load.r };
473 | resolvedSource +=
474 | source.slice(lastIndex, start) +
475 | 'importShim.m[' +
476 | JSON.stringify(load.r) +
477 | ']';
478 | lastIndex = end;
479 | }
480 | // dynamic import
481 | else {
482 | resolvedSource +=
483 | source.slice(lastIndex, dynamicImportIndex + 6) +
484 | 'Shim(' +
485 | source.slice(start, end) +
486 | ', ' +
487 | JSON.stringify(load.r);
488 | lastIndex = end;
489 | }
490 | }
491 |
492 | resolvedSource += source.slice(lastIndex);
493 | }
494 |
495 | const lastNonEmptyLine = resolvedSource.slice(
496 | resolvedSource.lastIndexOf('\n') + 1
497 | );
498 | load.b = lastLoad = createBlob(
499 | resolvedSource +
500 | (lastNonEmptyLine.startsWith('//# sourceMappingURL=')
501 | ? '\n//# sourceMappingURL=' +
502 | resolveUrl(lastNonEmptyLine.slice(21), load.r)
503 | : '') +
504 | '\n//# sourceURL=' +
505 | load.r
506 | );
507 | load.S = undefined;
508 | }
509 |
510 | function getOrCreateLoad(url, source) {
511 | let load = registry[url];
512 | if (load) return load;
513 |
514 | load = registry[url] = {
515 | // url
516 | u: url,
517 | // response url
518 | r: undefined,
519 | // fetchPromise
520 | f: undefined,
521 | // source
522 | S: undefined,
523 | // linkPromise
524 | L: undefined,
525 | // analysis
526 | a: undefined,
527 | // deps
528 | d: undefined,
529 | // blobUrl
530 | b: undefined,
531 | // shellUrl
532 | s: undefined,
533 | };
534 |
535 | load.f = (async () => {
536 | if (!source) {
537 | const res = await fetch(url);
538 | if (!res.ok)
539 | throw new Error(`${res.status} ${res.statusText} ${res.url}`);
540 |
541 | load.r = res.url;
542 |
543 | const contentType = res.headers.get('content-type');
544 | if (contentType.match(/^(text|application)\/(x-)?javascript(;|$)/)) {
545 | source = await res.text();
546 | } else if (contentType.match(/^application\/json(;|$)/)) {
547 | source = `export default JSON.parse(${JSON.stringify(
548 | await res.text()
549 | )})`;
550 | } else if (contentType.match(/^text\/css(;|$)/)) {
551 | source = `const s=new CSSStyleSheet();s.replaceSync(${JSON.stringify(
552 | await res.text()
553 | )});export default s`;
554 | } else if (contentType.match(/^application\/wasm(;|$)/)) {
555 | const module = (wasmModules[url] = await WebAssembly.compile(
556 | await res.arrayBuffer()
557 | ));
558 | const deps = WebAssembly.Module.imports
559 | ? WebAssembly.Module.imports(module).map(impt => impt.module)
560 | : [];
561 |
562 | const aDeps = [];
563 | load.a = [
564 | aDeps,
565 | WebAssembly.Module.exports(module).map(expt => expt.name),
566 | ];
567 |
568 | const depStrs = deps.map(dep => JSON.stringify(dep));
569 |
570 | let curIndex = 0;
571 | load.S =
572 | depStrs
573 | .map((depStr, idx) => {
574 | const index = idx.toString();
575 | const strStart = curIndex + 17 + index.length;
576 | const strEnd = strStart + depStr.length - 2;
577 | aDeps.push({
578 | s: strStart,
579 | e: strEnd,
580 | d: -1,
581 | });
582 | curIndex += strEnd + 3;
583 | return `import*as m${index} from${depStr};`;
584 | })
585 | .join('') +
586 | `const module=importShim.w[${JSON.stringify(
587 | url
588 | )}],exports=new WebAssembly.Instance(module,{` +
589 | depStrs.map((depStr, idx) => `${depStr}:m${idx},`).join('') +
590 | `}).exports;` +
591 | load.a[1]
592 | .map(name =>
593 | name === 'default'
594 | ? `export default exports.${name}`
595 | : `export const ${name}=exports.${name}`
596 | )
597 | .join(';');
598 | return deps;
599 | } else {
600 | throw new Error(`Unknown Content-Type "${contentType}"`);
601 | }
602 | }
603 | try {
604 | load.a = parse(source, load.u);
605 | } catch (e) {
606 | console.warn(e);
607 | load.a = [[], []];
608 | }
609 | load.S = source;
610 | return load.a[0].filter(d => d.d === -1).map(d => source.slice(d.s, d.e));
611 | })();
612 |
613 | load.L = load.f.then(async deps => {
614 | load.d = await Promise.all(
615 | deps.map(async depId => {
616 | const depLoad = getOrCreateLoad(
617 | await resolve(depId, load.r || load.u)
618 | );
619 | await depLoad.f;
620 | return depLoad;
621 | })
622 | );
623 | });
624 |
625 | return load;
626 | }
627 |
628 | let importMapPromise;
629 |
630 | if (hasDocument) {
631 | // preload import maps
632 | for (const script of document.querySelectorAll(
633 | 'script[type="importmap-shim"][src]'
634 | ))
635 | script._f = fetch(script.src);
636 | // load any module scripts
637 | for (const script of document.querySelectorAll(
638 | 'script[type="module-shim"]'
639 | ))
640 | topLevelLoad(
641 | script.src || `${baseUrl}?${id++}`,
642 | script.src ? null : script.innerHTML
643 | );
644 | }
645 |
646 | async function resolve(id, parentUrl) {
647 | if (!importMapPromise) {
648 | const stdModules = new Set();
649 | importMapPromise = (async () => {})();
650 | if (hasDocument)
651 | for (const script of document.querySelectorAll(
652 | 'script[type="importmap-shim"]'
653 | )) {
654 | importMapPromise = importMapPromise.then(async () => {
655 | importShim.map = resolveAndComposeImportMap(
656 | script.src
657 | ? await (await (script._f || fetch(script.src))).json()
658 | : JSON.parse(script.innerHTML),
659 | script.src || baseUrl,
660 | importShim.map,
661 | stdModules
662 | );
663 | });
664 | }
665 | }
666 | await importMapPromise;
667 | return (
668 | resolveImportMap(
669 | importShim.map,
670 | resolveIfNotPlainOrUrl(id, parentUrl) || id,
671 | parentUrl
672 | ) || throwUnresolved(id, parentUrl)
673 | );
674 | }
675 |
676 | function throwUnresolved(id, parentUrl) {
677 | throw Error(
678 | "Unable to resolve specifier '" +
679 | id +
680 | (parentUrl ? "' from " + parentUrl : "'")
681 | );
682 | }
683 |
684 | self.WorkerShim = WorkerShim;
685 | })();
686 |
--------------------------------------------------------------------------------
/utils/formatBytes.js:
--------------------------------------------------------------------------------
1 | export default (bytes, decimals = 0) => {
2 | if (bytes === 0) return '0 B';
3 | const k = 1024;
4 | const dm = decimals < 0 ? 0 : decimals;
5 | const sizes = ['B', 'KB', 'MB', 'GB'];
6 | const i = Math.floor(Math.log(bytes) / Math.log(k));
7 | return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
8 | };
9 |
--------------------------------------------------------------------------------
/utils/globalState.js:
--------------------------------------------------------------------------------
1 | import { react, html } from '../utils/rplus.js';
2 |
3 | const { createContext, useContext, useReducer } = react;
4 |
5 | export const StateContext = createContext();
6 | export const StateProvider = ({ reducer, initialState, children }) => html`
7 | <${StateContext.Provider} value=${useReducer(reducer, initialState)}>
8 | ${children}
9 | />
10 | `;
11 |
12 | export const useStateValue = () => useContext(StateContext);
13 |
--------------------------------------------------------------------------------
/utils/parseUrl.js:
--------------------------------------------------------------------------------
1 | const parseUrl = (url = window.location.search.slice(1).replace(/\/$/, '')) => {
2 | const parts = url
3 | .trim()
4 | .replace('https://unpkg.com', '')
5 | .split('/')
6 | .map(part => part.trim())
7 | .filter(Boolean);
8 |
9 | if (parts[0]) {
10 | // checks if scoped packaged
11 | if (parts[0].startsWith('@')) {
12 | const nameVersion = parts[1].split('@');
13 | return {
14 | name: `${parts[0]}/${nameVersion[0]}` || null,
15 | version: nameVersion[1] || null,
16 | path: parts.join('/') || null,
17 | file: (parts.length > 2 && parts.slice(parts.length - 1)[0]) || null,
18 | directory: parts.slice(2, parts.length - 1).join('/') || null,
19 | };
20 | } else {
21 | const nameVersion = parts[0].split('@');
22 | return {
23 | name: nameVersion[0] || null,
24 | version: nameVersion[1] || null,
25 | path: parts.join('/') || null,
26 | file: (parts.length > 1 && parts.slice(parts.length - 1)[0]) || null,
27 | directory: parts.slice(1, parts.length - 1).join('/') || null,
28 | };
29 | }
30 | } else {
31 | return {
32 | name: null,
33 | version: null,
34 | path: null,
35 | file: null,
36 | directory: null,
37 | };
38 | }
39 | };
40 |
41 | export { parseUrl };
42 |
--------------------------------------------------------------------------------
/utils/rplus.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | import React from 'react';
3 | import ReactDOM from 'react-dom';
4 | import htm from 'htm';
5 | import css from 'csz';
6 | import search from 'algolia';
7 |
8 | // https://www.algolia.com/doc/faq/accounts-billing/do-i-need-to-display-the-algolia-logo-when-i-am-on-the-free-plan/
9 | const npm = search('OFCNCOG2CU', '86ebd6a34c7fbb7988d5ba5c75d5da34');
10 |
11 | const html = htm.bind(React.createElement);
12 | const react = {
13 | ...React,
14 | render: ReactDOM.render,
15 | };
16 |
17 | export { react, html, css, npm };
18 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.0.0":
6 | version "7.0.0"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
8 | integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
9 | dependencies:
10 | "@babel/highlight" "^7.0.0"
11 |
12 | "@babel/highlight@^7.0.0":
13 | version "7.0.0"
14 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
15 | integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==
16 | dependencies:
17 | chalk "^2.0.0"
18 | esutils "^2.0.2"
19 | js-tokens "^4.0.0"
20 |
21 | "@babel/runtime@^7.0.0":
22 | version "7.4.4"
23 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d"
24 | integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==
25 | dependencies:
26 | regenerator-runtime "^0.13.2"
27 |
28 | "@samverschueren/stream-to-observable@^0.3.0":
29 | version "0.3.0"
30 | resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
31 | integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==
32 | dependencies:
33 | any-observable "^0.3.0"
34 |
35 | "@types/normalize-package-data@^2.4.0":
36 | version "2.4.0"
37 | resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
38 | integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
39 |
40 | acorn-jsx@^5.0.0:
41 | version "5.0.1"
42 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
43 | integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
44 |
45 | acorn@^6.0.7:
46 | version "6.4.2"
47 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
48 | integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
49 |
50 | ajv@^6.9.1:
51 | version "6.10.0"
52 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
53 | integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
54 | dependencies:
55 | fast-deep-equal "^2.0.1"
56 | fast-json-stable-stringify "^2.0.0"
57 | json-schema-traverse "^0.4.1"
58 | uri-js "^4.2.2"
59 |
60 | ansi-escapes@^3.0.0, ansi-escapes@^3.2.0:
61 | version "3.2.0"
62 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
63 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
64 |
65 | ansi-regex@^2.0.0:
66 | version "2.1.1"
67 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
68 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
69 |
70 | ansi-regex@^3.0.0:
71 | version "3.0.0"
72 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
73 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
74 |
75 | ansi-regex@^4.1.0:
76 | version "4.1.0"
77 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
78 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
79 |
80 | ansi-styles@^2.2.1:
81 | version "2.2.1"
82 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
83 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
84 |
85 | ansi-styles@^3.2.0, ansi-styles@^3.2.1:
86 | version "3.2.1"
87 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
88 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
89 | dependencies:
90 | color-convert "^1.9.0"
91 |
92 | any-observable@^0.3.0:
93 | version "0.3.0"
94 | resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
95 | integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
96 |
97 | argparse@^1.0.7:
98 | version "1.0.10"
99 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
100 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
101 | dependencies:
102 | sprintf-js "~1.0.2"
103 |
104 | arr-diff@^4.0.0:
105 | version "4.0.0"
106 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
107 | integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
108 |
109 | arr-flatten@^1.1.0:
110 | version "1.1.0"
111 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
112 | integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
113 |
114 | arr-union@^3.1.0:
115 | version "3.1.0"
116 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
117 | integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
118 |
119 | array-union@^1.0.1:
120 | version "1.0.2"
121 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
122 | integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
123 | dependencies:
124 | array-uniq "^1.0.1"
125 |
126 | array-uniq@^1.0.1:
127 | version "1.0.3"
128 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
129 | integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
130 |
131 | array-unique@^0.3.2:
132 | version "0.3.2"
133 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
134 | integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
135 |
136 | arrify@^1.0.1:
137 | version "1.0.1"
138 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
139 | integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
140 |
141 | assign-symbols@^1.0.0:
142 | version "1.0.0"
143 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
144 | integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
145 |
146 | astral-regex@^1.0.0:
147 | version "1.0.0"
148 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
149 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
150 |
151 | atob@^2.1.1:
152 | version "2.1.2"
153 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
154 | integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
155 |
156 | balanced-match@^1.0.0:
157 | version "1.0.0"
158 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
159 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
160 |
161 | base@^0.11.1:
162 | version "0.11.2"
163 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
164 | integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
165 | dependencies:
166 | cache-base "^1.0.1"
167 | class-utils "^0.3.5"
168 | component-emitter "^1.2.1"
169 | define-property "^1.0.0"
170 | isobject "^3.0.1"
171 | mixin-deep "^1.2.0"
172 | pascalcase "^0.1.1"
173 |
174 | brace-expansion@^1.1.7:
175 | version "1.1.11"
176 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
177 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
178 | dependencies:
179 | balanced-match "^1.0.0"
180 | concat-map "0.0.1"
181 |
182 | braces@^2.3.1:
183 | version "2.3.2"
184 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
185 | integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
186 | dependencies:
187 | arr-flatten "^1.1.0"
188 | array-unique "^0.3.2"
189 | extend-shallow "^2.0.1"
190 | fill-range "^4.0.0"
191 | isobject "^3.0.1"
192 | repeat-element "^1.1.2"
193 | snapdragon "^0.8.1"
194 | snapdragon-node "^2.0.1"
195 | split-string "^3.0.2"
196 | to-regex "^3.0.1"
197 |
198 | cache-base@^1.0.1:
199 | version "1.0.1"
200 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
201 | integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
202 | dependencies:
203 | collection-visit "^1.0.0"
204 | component-emitter "^1.2.1"
205 | get-value "^2.0.6"
206 | has-value "^1.0.0"
207 | isobject "^3.0.1"
208 | set-value "^2.0.0"
209 | to-object-path "^0.3.0"
210 | union-value "^1.0.0"
211 | unset-value "^1.0.0"
212 |
213 | caller-callsite@^2.0.0:
214 | version "2.0.0"
215 | resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
216 | integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
217 | dependencies:
218 | callsites "^2.0.0"
219 |
220 | caller-path@^2.0.0:
221 | version "2.0.0"
222 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
223 | integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
224 | dependencies:
225 | caller-callsite "^2.0.0"
226 |
227 | callsites@^2.0.0:
228 | version "2.0.0"
229 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
230 | integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
231 |
232 | callsites@^3.0.0:
233 | version "3.1.0"
234 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
235 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
236 |
237 | chalk@^1.0.0, chalk@^1.1.3:
238 | version "1.1.3"
239 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
240 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
241 | dependencies:
242 | ansi-styles "^2.2.1"
243 | escape-string-regexp "^1.0.2"
244 | has-ansi "^2.0.0"
245 | strip-ansi "^3.0.0"
246 | supports-color "^2.0.0"
247 |
248 | chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2:
249 | version "2.4.2"
250 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
251 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
252 | dependencies:
253 | ansi-styles "^3.2.1"
254 | escape-string-regexp "^1.0.5"
255 | supports-color "^5.3.0"
256 |
257 | chardet@^0.7.0:
258 | version "0.7.0"
259 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
260 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
261 |
262 | ci-info@^2.0.0:
263 | version "2.0.0"
264 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
265 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
266 |
267 | class-utils@^0.3.5:
268 | version "0.3.6"
269 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
270 | integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
271 | dependencies:
272 | arr-union "^3.1.0"
273 | define-property "^0.2.5"
274 | isobject "^3.0.0"
275 | static-extend "^0.1.1"
276 |
277 | cli-cursor@^2.0.0, cli-cursor@^2.1.0:
278 | version "2.1.0"
279 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
280 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
281 | dependencies:
282 | restore-cursor "^2.0.0"
283 |
284 | cli-truncate@^0.2.1:
285 | version "0.2.1"
286 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
287 | integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=
288 | dependencies:
289 | slice-ansi "0.0.4"
290 | string-width "^1.0.1"
291 |
292 | cli-width@^2.0.0:
293 | version "2.2.0"
294 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
295 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
296 |
297 | code-point-at@^1.0.0:
298 | version "1.1.0"
299 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
300 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
301 |
302 | collection-visit@^1.0.0:
303 | version "1.0.0"
304 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
305 | integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
306 | dependencies:
307 | map-visit "^1.0.0"
308 | object-visit "^1.0.0"
309 |
310 | color-convert@^1.9.0:
311 | version "1.9.3"
312 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
313 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
314 | dependencies:
315 | color-name "1.1.3"
316 |
317 | color-name@1.1.3:
318 | version "1.1.3"
319 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
320 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
321 |
322 | commander@^2.14.1, commander@^2.9.0:
323 | version "2.20.0"
324 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
325 | integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
326 |
327 | component-emitter@^1.2.1:
328 | version "1.3.0"
329 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
330 | integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
331 |
332 | concat-map@0.0.1:
333 | version "0.0.1"
334 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
335 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
336 |
337 | copy-descriptor@^0.1.0:
338 | version "0.1.1"
339 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
340 | integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
341 |
342 | cosmiconfig@^5.0.2, cosmiconfig@^5.2.0:
343 | version "5.2.0"
344 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.0.tgz#45038e4d28a7fe787203aede9c25bca4a08b12c8"
345 | integrity sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==
346 | dependencies:
347 | import-fresh "^2.0.0"
348 | is-directory "^0.3.1"
349 | js-yaml "^3.13.0"
350 | parse-json "^4.0.0"
351 |
352 | cross-spawn@^6.0.0, cross-spawn@^6.0.5:
353 | version "6.0.5"
354 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
355 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
356 | dependencies:
357 | nice-try "^1.0.4"
358 | path-key "^2.0.1"
359 | semver "^5.5.0"
360 | shebang-command "^1.2.0"
361 | which "^1.2.9"
362 |
363 | date-fns@^1.27.2:
364 | version "1.30.1"
365 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
366 | integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
367 |
368 | debug@^2.2.0, debug@^2.3.3:
369 | version "2.6.9"
370 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
371 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
372 | dependencies:
373 | ms "2.0.0"
374 |
375 | debug@^3.1.0:
376 | version "3.2.6"
377 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
378 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
379 | dependencies:
380 | ms "^2.1.1"
381 |
382 | debug@^4.0.1:
383 | version "4.1.1"
384 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
385 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
386 | dependencies:
387 | ms "^2.1.1"
388 |
389 | decode-uri-component@^0.2.0:
390 | version "0.2.0"
391 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
392 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
393 |
394 | dedent@^0.7.0:
395 | version "0.7.0"
396 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
397 | integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
398 |
399 | deep-is@~0.1.3:
400 | version "0.1.3"
401 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
402 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
403 |
404 | define-property@^0.2.5:
405 | version "0.2.5"
406 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
407 | integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
408 | dependencies:
409 | is-descriptor "^0.1.0"
410 |
411 | define-property@^1.0.0:
412 | version "1.0.0"
413 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
414 | integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
415 | dependencies:
416 | is-descriptor "^1.0.0"
417 |
418 | define-property@^2.0.2:
419 | version "2.0.2"
420 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
421 | integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
422 | dependencies:
423 | is-descriptor "^1.0.2"
424 | isobject "^3.0.1"
425 |
426 | del@^3.0.0:
427 | version "3.0.0"
428 | resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
429 | integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=
430 | dependencies:
431 | globby "^6.1.0"
432 | is-path-cwd "^1.0.0"
433 | is-path-in-cwd "^1.0.0"
434 | p-map "^1.1.1"
435 | pify "^3.0.0"
436 | rimraf "^2.2.8"
437 |
438 | doctrine@^3.0.0:
439 | version "3.0.0"
440 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
441 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
442 | dependencies:
443 | esutils "^2.0.2"
444 |
445 | elegant-spinner@^1.0.1:
446 | version "1.0.1"
447 | resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
448 | integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
449 |
450 | emoji-regex@^7.0.1:
451 | version "7.0.3"
452 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
453 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
454 |
455 | end-of-stream@^1.1.0:
456 | version "1.4.1"
457 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
458 | integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
459 | dependencies:
460 | once "^1.4.0"
461 |
462 | error-ex@^1.3.1:
463 | version "1.3.2"
464 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
465 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
466 | dependencies:
467 | is-arrayish "^0.2.1"
468 |
469 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5:
470 | version "1.0.5"
471 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
472 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
473 |
474 | eslint-config-prettier@^2.9.0:
475 | version "2.10.0"
476 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.10.0.tgz#ec07bc1d01f87d09f61d3840d112dc8a9791e30b"
477 | integrity sha512-Mhl90VLucfBuhmcWBgbUNtgBiK955iCDK1+aHAz7QfDQF6wuzWZ6JjihZ3ejJoGlJWIuko7xLqNm8BA5uenKhA==
478 | dependencies:
479 | get-stdin "^5.0.1"
480 |
481 | eslint-scope@^4.0.3:
482 | version "4.0.3"
483 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
484 | integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
485 | dependencies:
486 | esrecurse "^4.1.0"
487 | estraverse "^4.1.1"
488 |
489 | eslint-utils@^1.3.1:
490 | version "1.4.3"
491 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
492 | integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
493 | dependencies:
494 | eslint-visitor-keys "^1.1.0"
495 |
496 | eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
497 | version "1.1.0"
498 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
499 | integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
500 |
501 | eslint@^5.16.0:
502 | version "5.16.0"
503 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea"
504 | integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==
505 | dependencies:
506 | "@babel/code-frame" "^7.0.0"
507 | ajv "^6.9.1"
508 | chalk "^2.1.0"
509 | cross-spawn "^6.0.5"
510 | debug "^4.0.1"
511 | doctrine "^3.0.0"
512 | eslint-scope "^4.0.3"
513 | eslint-utils "^1.3.1"
514 | eslint-visitor-keys "^1.0.0"
515 | espree "^5.0.1"
516 | esquery "^1.0.1"
517 | esutils "^2.0.2"
518 | file-entry-cache "^5.0.1"
519 | functional-red-black-tree "^1.0.1"
520 | glob "^7.1.2"
521 | globals "^11.7.0"
522 | ignore "^4.0.6"
523 | import-fresh "^3.0.0"
524 | imurmurhash "^0.1.4"
525 | inquirer "^6.2.2"
526 | js-yaml "^3.13.0"
527 | json-stable-stringify-without-jsonify "^1.0.1"
528 | levn "^0.3.0"
529 | lodash "^4.17.11"
530 | minimatch "^3.0.4"
531 | mkdirp "^0.5.1"
532 | natural-compare "^1.4.0"
533 | optionator "^0.8.2"
534 | path-is-inside "^1.0.2"
535 | progress "^2.0.0"
536 | regexpp "^2.0.1"
537 | semver "^5.5.1"
538 | strip-ansi "^4.0.0"
539 | strip-json-comments "^2.0.1"
540 | table "^5.2.3"
541 | text-table "^0.2.0"
542 |
543 | espree@^5.0.1:
544 | version "5.0.1"
545 | resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a"
546 | integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==
547 | dependencies:
548 | acorn "^6.0.7"
549 | acorn-jsx "^5.0.0"
550 | eslint-visitor-keys "^1.0.0"
551 |
552 | esprima@^4.0.0:
553 | version "4.0.1"
554 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
555 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
556 |
557 | esquery@^1.0.1:
558 | version "1.0.1"
559 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
560 | integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
561 | dependencies:
562 | estraverse "^4.0.0"
563 |
564 | esrecurse@^4.1.0:
565 | version "4.2.1"
566 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
567 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
568 | dependencies:
569 | estraverse "^4.1.0"
570 |
571 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
572 | version "4.2.0"
573 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
574 | integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
575 |
576 | esutils@^2.0.2:
577 | version "2.0.2"
578 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
579 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
580 |
581 | execa@^1.0.0:
582 | version "1.0.0"
583 | resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
584 | integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
585 | dependencies:
586 | cross-spawn "^6.0.0"
587 | get-stream "^4.0.0"
588 | is-stream "^1.1.0"
589 | npm-run-path "^2.0.0"
590 | p-finally "^1.0.0"
591 | signal-exit "^3.0.0"
592 | strip-eof "^1.0.0"
593 |
594 | expand-brackets@^2.1.4:
595 | version "2.1.4"
596 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
597 | integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
598 | dependencies:
599 | debug "^2.3.3"
600 | define-property "^0.2.5"
601 | extend-shallow "^2.0.1"
602 | posix-character-classes "^0.1.0"
603 | regex-not "^1.0.0"
604 | snapdragon "^0.8.1"
605 | to-regex "^3.0.1"
606 |
607 | extend-shallow@^2.0.1:
608 | version "2.0.1"
609 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
610 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
611 | dependencies:
612 | is-extendable "^0.1.0"
613 |
614 | extend-shallow@^3.0.0, extend-shallow@^3.0.2:
615 | version "3.0.2"
616 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
617 | integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
618 | dependencies:
619 | assign-symbols "^1.0.0"
620 | is-extendable "^1.0.1"
621 |
622 | external-editor@^3.0.3:
623 | version "3.0.3"
624 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27"
625 | integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==
626 | dependencies:
627 | chardet "^0.7.0"
628 | iconv-lite "^0.4.24"
629 | tmp "^0.0.33"
630 |
631 | extglob@^2.0.4:
632 | version "2.0.4"
633 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
634 | integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
635 | dependencies:
636 | array-unique "^0.3.2"
637 | define-property "^1.0.0"
638 | expand-brackets "^2.1.4"
639 | extend-shallow "^2.0.1"
640 | fragment-cache "^0.2.1"
641 | regex-not "^1.0.0"
642 | snapdragon "^0.8.1"
643 | to-regex "^3.0.1"
644 |
645 | fast-deep-equal@^2.0.1:
646 | version "2.0.1"
647 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
648 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
649 |
650 | fast-json-stable-stringify@^2.0.0:
651 | version "2.0.0"
652 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
653 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
654 |
655 | fast-levenshtein@~2.0.4:
656 | version "2.0.6"
657 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
658 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
659 |
660 | figures@^1.7.0:
661 | version "1.7.0"
662 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
663 | integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
664 | dependencies:
665 | escape-string-regexp "^1.0.5"
666 | object-assign "^4.1.0"
667 |
668 | figures@^2.0.0:
669 | version "2.0.0"
670 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
671 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
672 | dependencies:
673 | escape-string-regexp "^1.0.5"
674 |
675 | file-entry-cache@^5.0.1:
676 | version "5.0.1"
677 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
678 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
679 | dependencies:
680 | flat-cache "^2.0.1"
681 |
682 | fill-range@^4.0.0:
683 | version "4.0.0"
684 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
685 | integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
686 | dependencies:
687 | extend-shallow "^2.0.1"
688 | is-number "^3.0.0"
689 | repeat-string "^1.6.1"
690 | to-regex-range "^2.1.0"
691 |
692 | find-parent-dir@^0.3.0:
693 | version "0.3.0"
694 | resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54"
695 | integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=
696 |
697 | find-up@^3.0.0:
698 | version "3.0.0"
699 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
700 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
701 | dependencies:
702 | locate-path "^3.0.0"
703 |
704 | flat-cache@^2.0.1:
705 | version "2.0.1"
706 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
707 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
708 | dependencies:
709 | flatted "^2.0.0"
710 | rimraf "2.6.3"
711 | write "1.0.3"
712 |
713 | flatted@^2.0.0:
714 | version "2.0.0"
715 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916"
716 | integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==
717 |
718 | fn-name@~2.0.1:
719 | version "2.0.1"
720 | resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
721 | integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=
722 |
723 | for-in@^1.0.2:
724 | version "1.0.2"
725 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
726 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
727 |
728 | fragment-cache@^0.2.1:
729 | version "0.2.1"
730 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
731 | integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
732 | dependencies:
733 | map-cache "^0.2.2"
734 |
735 | fs.realpath@^1.0.0:
736 | version "1.0.0"
737 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
738 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
739 |
740 | functional-red-black-tree@^1.0.1:
741 | version "1.0.1"
742 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
743 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
744 |
745 | g-status@^2.0.2:
746 | version "2.0.2"
747 | resolved "https://registry.yarnpkg.com/g-status/-/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97"
748 | integrity sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==
749 | dependencies:
750 | arrify "^1.0.1"
751 | matcher "^1.0.0"
752 | simple-git "^1.85.0"
753 |
754 | get-own-enumerable-property-symbols@^3.0.0:
755 | version "3.0.0"
756 | resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203"
757 | integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==
758 |
759 | get-stdin@^5.0.1:
760 | version "5.0.1"
761 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
762 | integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=
763 |
764 | get-stdin@^7.0.0:
765 | version "7.0.0"
766 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6"
767 | integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==
768 |
769 | get-stream@^4.0.0:
770 | version "4.1.0"
771 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
772 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
773 | dependencies:
774 | pump "^3.0.0"
775 |
776 | get-value@^2.0.3, get-value@^2.0.6:
777 | version "2.0.6"
778 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
779 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
780 |
781 | glob@^7.0.3:
782 | version "7.1.4"
783 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
784 | integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
785 | dependencies:
786 | fs.realpath "^1.0.0"
787 | inflight "^1.0.4"
788 | inherits "2"
789 | minimatch "^3.0.4"
790 | once "^1.3.0"
791 | path-is-absolute "^1.0.0"
792 |
793 | glob@^7.1.2, glob@^7.1.3:
794 | version "7.1.3"
795 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
796 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
797 | dependencies:
798 | fs.realpath "^1.0.0"
799 | inflight "^1.0.4"
800 | inherits "2"
801 | minimatch "^3.0.4"
802 | once "^1.3.0"
803 | path-is-absolute "^1.0.0"
804 |
805 | globals@^11.7.0:
806 | version "11.11.0"
807 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e"
808 | integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==
809 |
810 | globby@^6.1.0:
811 | version "6.1.0"
812 | resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
813 | integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
814 | dependencies:
815 | array-union "^1.0.1"
816 | glob "^7.0.3"
817 | object-assign "^4.0.1"
818 | pify "^2.0.0"
819 | pinkie-promise "^2.0.0"
820 |
821 | has-ansi@^2.0.0:
822 | version "2.0.0"
823 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
824 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
825 | dependencies:
826 | ansi-regex "^2.0.0"
827 |
828 | has-flag@^3.0.0:
829 | version "3.0.0"
830 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
831 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
832 |
833 | has-value@^0.3.1:
834 | version "0.3.1"
835 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
836 | integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
837 | dependencies:
838 | get-value "^2.0.3"
839 | has-values "^0.1.4"
840 | isobject "^2.0.0"
841 |
842 | has-value@^1.0.0:
843 | version "1.0.0"
844 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
845 | integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
846 | dependencies:
847 | get-value "^2.0.6"
848 | has-values "^1.0.0"
849 | isobject "^3.0.0"
850 |
851 | has-values@^0.1.4:
852 | version "0.1.4"
853 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
854 | integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
855 |
856 | has-values@^1.0.0:
857 | version "1.0.0"
858 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
859 | integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
860 | dependencies:
861 | is-number "^3.0.0"
862 | kind-of "^4.0.0"
863 |
864 | hosted-git-info@^2.1.4:
865 | version "2.8.9"
866 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
867 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
868 |
869 | husky@^2.3.0:
870 | version "2.3.0"
871 | resolved "https://registry.yarnpkg.com/husky/-/husky-2.3.0.tgz#8b78ed24d763042df7fd899991985d65a976dd13"
872 | integrity sha512-A/ZQSEILoq+mQM3yC3RIBSaw1bYXdkKnyyKVSUiJl+iBjVZc5LQEXdGY1ZjrDxC4IzfRPiJ0IqzEQGCN5TQa/A==
873 | dependencies:
874 | cosmiconfig "^5.2.0"
875 | execa "^1.0.0"
876 | find-up "^3.0.0"
877 | get-stdin "^7.0.0"
878 | is-ci "^2.0.0"
879 | pkg-dir "^4.1.0"
880 | please-upgrade-node "^3.1.1"
881 | read-pkg "^5.1.1"
882 | run-node "^1.0.0"
883 | slash "^3.0.0"
884 |
885 | iconv-lite@^0.4.24:
886 | version "0.4.24"
887 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
888 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
889 | dependencies:
890 | safer-buffer ">= 2.1.2 < 3"
891 |
892 | ignore@^4.0.6:
893 | version "4.0.6"
894 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
895 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
896 |
897 | import-fresh@^2.0.0:
898 | version "2.0.0"
899 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
900 | integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
901 | dependencies:
902 | caller-path "^2.0.0"
903 | resolve-from "^3.0.0"
904 |
905 | import-fresh@^3.0.0:
906 | version "3.0.0"
907 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390"
908 | integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==
909 | dependencies:
910 | parent-module "^1.0.0"
911 | resolve-from "^4.0.0"
912 |
913 | imurmurhash@^0.1.4:
914 | version "0.1.4"
915 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
916 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
917 |
918 | indent-string@^3.0.0:
919 | version "3.2.0"
920 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
921 | integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
922 |
923 | inflight@^1.0.4:
924 | version "1.0.6"
925 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
926 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
927 | dependencies:
928 | once "^1.3.0"
929 | wrappy "1"
930 |
931 | inherits@2:
932 | version "2.0.3"
933 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
934 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
935 |
936 | inquirer@^6.2.2:
937 | version "6.3.1"
938 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7"
939 | integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==
940 | dependencies:
941 | ansi-escapes "^3.2.0"
942 | chalk "^2.4.2"
943 | cli-cursor "^2.1.0"
944 | cli-width "^2.0.0"
945 | external-editor "^3.0.3"
946 | figures "^2.0.0"
947 | lodash "^4.17.11"
948 | mute-stream "0.0.7"
949 | run-async "^2.2.0"
950 | rxjs "^6.4.0"
951 | string-width "^2.1.0"
952 | strip-ansi "^5.1.0"
953 | through "^2.3.6"
954 |
955 | is-accessor-descriptor@^0.1.6:
956 | version "0.1.6"
957 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
958 | integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
959 | dependencies:
960 | kind-of "^3.0.2"
961 |
962 | is-accessor-descriptor@^1.0.0:
963 | version "1.0.0"
964 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
965 | integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
966 | dependencies:
967 | kind-of "^6.0.0"
968 |
969 | is-arrayish@^0.2.1:
970 | version "0.2.1"
971 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
972 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
973 |
974 | is-buffer@^1.1.5:
975 | version "1.1.6"
976 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
977 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
978 |
979 | is-ci@^2.0.0:
980 | version "2.0.0"
981 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
982 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
983 | dependencies:
984 | ci-info "^2.0.0"
985 |
986 | is-data-descriptor@^0.1.4:
987 | version "0.1.4"
988 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
989 | integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
990 | dependencies:
991 | kind-of "^3.0.2"
992 |
993 | is-data-descriptor@^1.0.0:
994 | version "1.0.0"
995 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
996 | integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
997 | dependencies:
998 | kind-of "^6.0.0"
999 |
1000 | is-descriptor@^0.1.0:
1001 | version "0.1.6"
1002 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
1003 | integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
1004 | dependencies:
1005 | is-accessor-descriptor "^0.1.6"
1006 | is-data-descriptor "^0.1.4"
1007 | kind-of "^5.0.0"
1008 |
1009 | is-descriptor@^1.0.0, is-descriptor@^1.0.2:
1010 | version "1.0.2"
1011 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
1012 | integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
1013 | dependencies:
1014 | is-accessor-descriptor "^1.0.0"
1015 | is-data-descriptor "^1.0.0"
1016 | kind-of "^6.0.2"
1017 |
1018 | is-directory@^0.3.1:
1019 | version "0.3.1"
1020 | resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
1021 | integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
1022 |
1023 | is-extendable@^0.1.0, is-extendable@^0.1.1:
1024 | version "0.1.1"
1025 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
1026 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
1027 |
1028 | is-extendable@^1.0.1:
1029 | version "1.0.1"
1030 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
1031 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
1032 | dependencies:
1033 | is-plain-object "^2.0.4"
1034 |
1035 | is-extglob@^2.1.1:
1036 | version "2.1.1"
1037 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1038 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
1039 |
1040 | is-fullwidth-code-point@^1.0.0:
1041 | version "1.0.0"
1042 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
1043 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
1044 | dependencies:
1045 | number-is-nan "^1.0.0"
1046 |
1047 | is-fullwidth-code-point@^2.0.0:
1048 | version "2.0.0"
1049 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
1050 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
1051 |
1052 | is-glob@^4.0.0:
1053 | version "4.0.1"
1054 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
1055 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
1056 | dependencies:
1057 | is-extglob "^2.1.1"
1058 |
1059 | is-number@^3.0.0:
1060 | version "3.0.0"
1061 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
1062 | integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
1063 | dependencies:
1064 | kind-of "^3.0.2"
1065 |
1066 | is-obj@^1.0.1:
1067 | version "1.0.1"
1068 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
1069 | integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
1070 |
1071 | is-observable@^1.1.0:
1072 | version "1.1.0"
1073 | resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e"
1074 | integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==
1075 | dependencies:
1076 | symbol-observable "^1.1.0"
1077 |
1078 | is-path-cwd@^1.0.0:
1079 | version "1.0.0"
1080 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
1081 | integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=
1082 |
1083 | is-path-in-cwd@^1.0.0:
1084 | version "1.0.1"
1085 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
1086 | integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==
1087 | dependencies:
1088 | is-path-inside "^1.0.0"
1089 |
1090 | is-path-inside@^1.0.0:
1091 | version "1.0.1"
1092 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
1093 | integrity sha1-jvW33lBDej/cprToZe96pVy0gDY=
1094 | dependencies:
1095 | path-is-inside "^1.0.1"
1096 |
1097 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
1098 | version "2.0.4"
1099 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
1100 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
1101 | dependencies:
1102 | isobject "^3.0.1"
1103 |
1104 | is-promise@^2.1.0:
1105 | version "2.1.0"
1106 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
1107 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
1108 |
1109 | is-regexp@^1.0.0:
1110 | version "1.0.0"
1111 | resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
1112 | integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
1113 |
1114 | is-stream@^1.1.0:
1115 | version "1.1.0"
1116 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
1117 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
1118 |
1119 | is-windows@^1.0.2:
1120 | version "1.0.2"
1121 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
1122 | integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
1123 |
1124 | isarray@1.0.0:
1125 | version "1.0.0"
1126 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1127 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
1128 |
1129 | isexe@^2.0.0:
1130 | version "2.0.0"
1131 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1132 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
1133 |
1134 | isobject@^2.0.0:
1135 | version "2.1.0"
1136 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
1137 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
1138 | dependencies:
1139 | isarray "1.0.0"
1140 |
1141 | isobject@^3.0.0, isobject@^3.0.1:
1142 | version "3.0.1"
1143 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
1144 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
1145 |
1146 | js-tokens@^4.0.0:
1147 | version "4.0.0"
1148 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1149 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
1150 |
1151 | js-yaml@^3.13.0:
1152 | version "3.13.1"
1153 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
1154 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
1155 | dependencies:
1156 | argparse "^1.0.7"
1157 | esprima "^4.0.0"
1158 |
1159 | json-parse-better-errors@^1.0.1:
1160 | version "1.0.2"
1161 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
1162 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
1163 |
1164 | json-schema-traverse@^0.4.1:
1165 | version "0.4.1"
1166 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1167 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1168 |
1169 | json-stable-stringify-without-jsonify@^1.0.1:
1170 | version "1.0.1"
1171 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
1172 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
1173 |
1174 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
1175 | version "3.2.2"
1176 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
1177 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
1178 | dependencies:
1179 | is-buffer "^1.1.5"
1180 |
1181 | kind-of@^4.0.0:
1182 | version "4.0.0"
1183 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
1184 | integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
1185 | dependencies:
1186 | is-buffer "^1.1.5"
1187 |
1188 | kind-of@^5.0.0:
1189 | version "5.1.0"
1190 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
1191 | integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
1192 |
1193 | kind-of@^6.0.0, kind-of@^6.0.2:
1194 | version "6.0.2"
1195 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
1196 | integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
1197 |
1198 | levn@^0.3.0, levn@~0.3.0:
1199 | version "0.3.0"
1200 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
1201 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
1202 | dependencies:
1203 | prelude-ls "~1.1.2"
1204 | type-check "~0.3.2"
1205 |
1206 | lint-staged@^8.1.6:
1207 | version "8.1.6"
1208 | resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.6.tgz#128a9bc5effbf69a359fb8f7eeb2da71a998daf6"
1209 | integrity sha512-QT13AniHN6swAtTjsrzxOfE4TVCiQ39xESwLmjGVNCMMZ/PK5aopwvbxLrzw+Zf9OxM3cQG6WCx9lceLzETOnQ==
1210 | dependencies:
1211 | chalk "^2.3.1"
1212 | commander "^2.14.1"
1213 | cosmiconfig "^5.0.2"
1214 | debug "^3.1.0"
1215 | dedent "^0.7.0"
1216 | del "^3.0.0"
1217 | execa "^1.0.0"
1218 | find-parent-dir "^0.3.0"
1219 | g-status "^2.0.2"
1220 | is-glob "^4.0.0"
1221 | is-windows "^1.0.2"
1222 | listr "^0.14.2"
1223 | listr-update-renderer "^0.5.0"
1224 | lodash "^4.17.11"
1225 | log-symbols "^2.2.0"
1226 | micromatch "^3.1.8"
1227 | npm-which "^3.0.1"
1228 | p-map "^1.1.1"
1229 | path-is-inside "^1.0.2"
1230 | pify "^3.0.0"
1231 | please-upgrade-node "^3.0.2"
1232 | staged-git-files "1.1.2"
1233 | string-argv "^0.0.2"
1234 | stringify-object "^3.2.2"
1235 | yup "^0.27.0"
1236 |
1237 | listr-silent-renderer@^1.1.1:
1238 | version "1.1.1"
1239 | resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
1240 | integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=
1241 |
1242 | listr-update-renderer@^0.5.0:
1243 | version "0.5.0"
1244 | resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2"
1245 | integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==
1246 | dependencies:
1247 | chalk "^1.1.3"
1248 | cli-truncate "^0.2.1"
1249 | elegant-spinner "^1.0.1"
1250 | figures "^1.7.0"
1251 | indent-string "^3.0.0"
1252 | log-symbols "^1.0.2"
1253 | log-update "^2.3.0"
1254 | strip-ansi "^3.0.1"
1255 |
1256 | listr-verbose-renderer@^0.5.0:
1257 | version "0.5.0"
1258 | resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db"
1259 | integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==
1260 | dependencies:
1261 | chalk "^2.4.1"
1262 | cli-cursor "^2.1.0"
1263 | date-fns "^1.27.2"
1264 | figures "^2.0.0"
1265 |
1266 | listr@^0.14.2:
1267 | version "0.14.3"
1268 | resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586"
1269 | integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==
1270 | dependencies:
1271 | "@samverschueren/stream-to-observable" "^0.3.0"
1272 | is-observable "^1.1.0"
1273 | is-promise "^2.1.0"
1274 | is-stream "^1.1.0"
1275 | listr-silent-renderer "^1.1.1"
1276 | listr-update-renderer "^0.5.0"
1277 | listr-verbose-renderer "^0.5.0"
1278 | p-map "^2.0.0"
1279 | rxjs "^6.3.3"
1280 |
1281 | locate-path@^3.0.0:
1282 | version "3.0.0"
1283 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
1284 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
1285 | dependencies:
1286 | p-locate "^3.0.0"
1287 | path-exists "^3.0.0"
1288 |
1289 | lodash@^4.17.11:
1290 | version "4.17.21"
1291 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
1292 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
1293 |
1294 | log-symbols@^1.0.2:
1295 | version "1.0.2"
1296 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
1297 | integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=
1298 | dependencies:
1299 | chalk "^1.0.0"
1300 |
1301 | log-symbols@^2.2.0:
1302 | version "2.2.0"
1303 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
1304 | integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
1305 | dependencies:
1306 | chalk "^2.0.1"
1307 |
1308 | log-update@^2.3.0:
1309 | version "2.3.0"
1310 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
1311 | integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg=
1312 | dependencies:
1313 | ansi-escapes "^3.0.0"
1314 | cli-cursor "^2.0.0"
1315 | wrap-ansi "^3.0.1"
1316 |
1317 | map-cache@^0.2.2:
1318 | version "0.2.2"
1319 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
1320 | integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
1321 |
1322 | map-visit@^1.0.0:
1323 | version "1.0.0"
1324 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
1325 | integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
1326 | dependencies:
1327 | object-visit "^1.0.0"
1328 |
1329 | matcher@^1.0.0:
1330 | version "1.1.1"
1331 | resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2"
1332 | integrity sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==
1333 | dependencies:
1334 | escape-string-regexp "^1.0.4"
1335 |
1336 | micromatch@^3.1.8:
1337 | version "3.1.10"
1338 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
1339 | integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
1340 | dependencies:
1341 | arr-diff "^4.0.0"
1342 | array-unique "^0.3.2"
1343 | braces "^2.3.1"
1344 | define-property "^2.0.2"
1345 | extend-shallow "^3.0.2"
1346 | extglob "^2.0.4"
1347 | fragment-cache "^0.2.1"
1348 | kind-of "^6.0.2"
1349 | nanomatch "^1.2.9"
1350 | object.pick "^1.3.0"
1351 | regex-not "^1.0.0"
1352 | snapdragon "^0.8.1"
1353 | to-regex "^3.0.2"
1354 |
1355 | mimic-fn@^1.0.0:
1356 | version "1.2.0"
1357 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
1358 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
1359 |
1360 | minimatch@^3.0.4:
1361 | version "3.0.4"
1362 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
1363 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
1364 | dependencies:
1365 | brace-expansion "^1.1.7"
1366 |
1367 | minimist@0.0.8:
1368 | version "0.0.8"
1369 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
1370 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
1371 |
1372 | mixin-deep@^1.2.0:
1373 | version "1.3.2"
1374 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
1375 | integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
1376 | dependencies:
1377 | for-in "^1.0.2"
1378 | is-extendable "^1.0.1"
1379 |
1380 | mkdirp@^0.5.1:
1381 | version "0.5.1"
1382 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
1383 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
1384 | dependencies:
1385 | minimist "0.0.8"
1386 |
1387 | ms@2.0.0:
1388 | version "2.0.0"
1389 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1390 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
1391 |
1392 | ms@^2.1.1:
1393 | version "2.1.1"
1394 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
1395 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
1396 |
1397 | mute-stream@0.0.7:
1398 | version "0.0.7"
1399 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
1400 | integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
1401 |
1402 | nanomatch@^1.2.9:
1403 | version "1.2.13"
1404 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
1405 | integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
1406 | dependencies:
1407 | arr-diff "^4.0.0"
1408 | array-unique "^0.3.2"
1409 | define-property "^2.0.2"
1410 | extend-shallow "^3.0.2"
1411 | fragment-cache "^0.2.1"
1412 | is-windows "^1.0.2"
1413 | kind-of "^6.0.2"
1414 | object.pick "^1.3.0"
1415 | regex-not "^1.0.0"
1416 | snapdragon "^0.8.1"
1417 | to-regex "^3.0.1"
1418 |
1419 | natural-compare@^1.4.0:
1420 | version "1.4.0"
1421 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1422 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
1423 |
1424 | nice-try@^1.0.4:
1425 | version "1.0.5"
1426 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
1427 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
1428 |
1429 | normalize-package-data@^2.5.0:
1430 | version "2.5.0"
1431 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
1432 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
1433 | dependencies:
1434 | hosted-git-info "^2.1.4"
1435 | resolve "^1.10.0"
1436 | semver "2 || 3 || 4 || 5"
1437 | validate-npm-package-license "^3.0.1"
1438 |
1439 | npm-path@^2.0.2:
1440 | version "2.0.4"
1441 | resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64"
1442 | integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==
1443 | dependencies:
1444 | which "^1.2.10"
1445 |
1446 | npm-run-path@^2.0.0:
1447 | version "2.0.2"
1448 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
1449 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
1450 | dependencies:
1451 | path-key "^2.0.0"
1452 |
1453 | npm-which@^3.0.1:
1454 | version "3.0.1"
1455 | resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
1456 | integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=
1457 | dependencies:
1458 | commander "^2.9.0"
1459 | npm-path "^2.0.2"
1460 | which "^1.2.10"
1461 |
1462 | number-is-nan@^1.0.0:
1463 | version "1.0.1"
1464 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1465 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
1466 |
1467 | object-assign@^4.0.1, object-assign@^4.1.0:
1468 | version "4.1.1"
1469 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1470 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
1471 |
1472 | object-copy@^0.1.0:
1473 | version "0.1.0"
1474 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
1475 | integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
1476 | dependencies:
1477 | copy-descriptor "^0.1.0"
1478 | define-property "^0.2.5"
1479 | kind-of "^3.0.3"
1480 |
1481 | object-visit@^1.0.0:
1482 | version "1.0.1"
1483 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
1484 | integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
1485 | dependencies:
1486 | isobject "^3.0.0"
1487 |
1488 | object.pick@^1.3.0:
1489 | version "1.3.0"
1490 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
1491 | integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
1492 | dependencies:
1493 | isobject "^3.0.1"
1494 |
1495 | once@^1.3.0, once@^1.3.1, once@^1.4.0:
1496 | version "1.4.0"
1497 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1498 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
1499 | dependencies:
1500 | wrappy "1"
1501 |
1502 | onetime@^2.0.0:
1503 | version "2.0.1"
1504 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
1505 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
1506 | dependencies:
1507 | mimic-fn "^1.0.0"
1508 |
1509 | optionator@^0.8.2:
1510 | version "0.8.2"
1511 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
1512 | integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
1513 | dependencies:
1514 | deep-is "~0.1.3"
1515 | fast-levenshtein "~2.0.4"
1516 | levn "~0.3.0"
1517 | prelude-ls "~1.1.2"
1518 | type-check "~0.3.2"
1519 | wordwrap "~1.0.0"
1520 |
1521 | os-tmpdir@~1.0.2:
1522 | version "1.0.2"
1523 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
1524 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
1525 |
1526 | p-finally@^1.0.0:
1527 | version "1.0.0"
1528 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
1529 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
1530 |
1531 | p-limit@^2.0.0:
1532 | version "2.2.0"
1533 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
1534 | integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
1535 | dependencies:
1536 | p-try "^2.0.0"
1537 |
1538 | p-locate@^3.0.0:
1539 | version "3.0.0"
1540 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
1541 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
1542 | dependencies:
1543 | p-limit "^2.0.0"
1544 |
1545 | p-map@^1.1.1:
1546 | version "1.2.0"
1547 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
1548 | integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==
1549 |
1550 | p-map@^2.0.0:
1551 | version "2.1.0"
1552 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
1553 | integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
1554 |
1555 | p-try@^2.0.0:
1556 | version "2.2.0"
1557 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
1558 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1559 |
1560 | parent-module@^1.0.0:
1561 | version "1.0.1"
1562 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1563 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1564 | dependencies:
1565 | callsites "^3.0.0"
1566 |
1567 | parse-json@^4.0.0:
1568 | version "4.0.0"
1569 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
1570 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
1571 | dependencies:
1572 | error-ex "^1.3.1"
1573 | json-parse-better-errors "^1.0.1"
1574 |
1575 | pascalcase@^0.1.1:
1576 | version "0.1.1"
1577 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
1578 | integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
1579 |
1580 | path-exists@^3.0.0:
1581 | version "3.0.0"
1582 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
1583 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
1584 |
1585 | path-is-absolute@^1.0.0:
1586 | version "1.0.1"
1587 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1588 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
1589 |
1590 | path-is-inside@^1.0.1, path-is-inside@^1.0.2:
1591 | version "1.0.2"
1592 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
1593 | integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
1594 |
1595 | path-key@^2.0.0, path-key@^2.0.1:
1596 | version "2.0.1"
1597 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
1598 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
1599 |
1600 | path-parse@^1.0.6:
1601 | version "1.0.7"
1602 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1603 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1604 |
1605 | pify@^2.0.0:
1606 | version "2.3.0"
1607 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
1608 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
1609 |
1610 | pify@^3.0.0:
1611 | version "3.0.0"
1612 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
1613 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
1614 |
1615 | pinkie-promise@^2.0.0:
1616 | version "2.0.1"
1617 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
1618 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
1619 | dependencies:
1620 | pinkie "^2.0.0"
1621 |
1622 | pinkie@^2.0.0:
1623 | version "2.0.4"
1624 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
1625 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
1626 |
1627 | pkg-dir@^4.1.0:
1628 | version "4.1.0"
1629 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.1.0.tgz#aaeb91c0d3b9c4f74a44ad849f4de34781ae01de"
1630 | integrity sha512-55k9QN4saZ8q518lE6EFgYiu95u3BWkSajCifhdQjvLvmr8IpnRbhI+UGpWJQfa0KzDguHeeWT1ccO1PmkOi3A==
1631 | dependencies:
1632 | find-up "^3.0.0"
1633 |
1634 | please-upgrade-node@^3.0.2, please-upgrade-node@^3.1.1:
1635 | version "3.1.1"
1636 | resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac"
1637 | integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==
1638 | dependencies:
1639 | semver-compare "^1.0.0"
1640 |
1641 | posix-character-classes@^0.1.0:
1642 | version "0.1.1"
1643 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
1644 | integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
1645 |
1646 | prelude-ls@~1.1.2:
1647 | version "1.1.2"
1648 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
1649 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
1650 |
1651 | prettier@^1.17.0:
1652 | version "1.17.0"
1653 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.17.0.tgz#53b303676eed22cc14a9f0cec09b477b3026c008"
1654 | integrity sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw==
1655 |
1656 | progress@^2.0.0:
1657 | version "2.0.3"
1658 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
1659 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
1660 |
1661 | property-expr@^1.5.0:
1662 | version "1.5.1"
1663 | resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f"
1664 | integrity sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==
1665 |
1666 | pump@^3.0.0:
1667 | version "3.0.0"
1668 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
1669 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
1670 | dependencies:
1671 | end-of-stream "^1.1.0"
1672 | once "^1.3.1"
1673 |
1674 | punycode@^2.1.0:
1675 | version "2.1.1"
1676 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1677 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1678 |
1679 | read-pkg@^5.1.1:
1680 | version "5.1.1"
1681 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.1.1.tgz#5cf234dde7a405c90c88a519ab73c467e9cb83f5"
1682 | integrity sha512-dFcTLQi6BZ+aFUaICg7er+/usEoqFdQxiEBsEMNGoipenihtxxtdrQuBXvyANCEI8VuUIVYFgeHGx9sLLvim4w==
1683 | dependencies:
1684 | "@types/normalize-package-data" "^2.4.0"
1685 | normalize-package-data "^2.5.0"
1686 | parse-json "^4.0.0"
1687 | type-fest "^0.4.1"
1688 |
1689 | regenerator-runtime@^0.13.2:
1690 | version "0.13.2"
1691 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447"
1692 | integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==
1693 |
1694 | regex-not@^1.0.0, regex-not@^1.0.2:
1695 | version "1.0.2"
1696 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
1697 | integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
1698 | dependencies:
1699 | extend-shallow "^3.0.2"
1700 | safe-regex "^1.1.0"
1701 |
1702 | regexpp@^2.0.1:
1703 | version "2.0.1"
1704 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
1705 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
1706 |
1707 | repeat-element@^1.1.2:
1708 | version "1.1.3"
1709 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
1710 | integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
1711 |
1712 | repeat-string@^1.6.1:
1713 | version "1.6.1"
1714 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
1715 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
1716 |
1717 | resolve-from@^3.0.0:
1718 | version "3.0.0"
1719 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
1720 | integrity sha1-six699nWiBvItuZTM17rywoYh0g=
1721 |
1722 | resolve-from@^4.0.0:
1723 | version "4.0.0"
1724 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
1725 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1726 |
1727 | resolve-url@^0.2.1:
1728 | version "0.2.1"
1729 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
1730 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
1731 |
1732 | resolve@^1.10.0:
1733 | version "1.10.1"
1734 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18"
1735 | integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==
1736 | dependencies:
1737 | path-parse "^1.0.6"
1738 |
1739 | restore-cursor@^2.0.0:
1740 | version "2.0.0"
1741 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
1742 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
1743 | dependencies:
1744 | onetime "^2.0.0"
1745 | signal-exit "^3.0.2"
1746 |
1747 | ret@~0.1.10:
1748 | version "0.1.15"
1749 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
1750 | integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
1751 |
1752 | rimraf@2.6.3, rimraf@^2.2.8:
1753 | version "2.6.3"
1754 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
1755 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
1756 | dependencies:
1757 | glob "^7.1.3"
1758 |
1759 | run-async@^2.2.0:
1760 | version "2.3.0"
1761 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
1762 | integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
1763 | dependencies:
1764 | is-promise "^2.1.0"
1765 |
1766 | run-node@^1.0.0:
1767 | version "1.0.0"
1768 | resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e"
1769 | integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==
1770 |
1771 | rxjs@^6.3.3, rxjs@^6.4.0:
1772 | version "6.5.1"
1773 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.1.tgz#f7a005a9386361921b8524f38f54cbf80e5d08f4"
1774 | integrity sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==
1775 | dependencies:
1776 | tslib "^1.9.0"
1777 |
1778 | safe-regex@^1.1.0:
1779 | version "1.1.0"
1780 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
1781 | integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
1782 | dependencies:
1783 | ret "~0.1.10"
1784 |
1785 | "safer-buffer@>= 2.1.2 < 3":
1786 | version "2.1.2"
1787 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1788 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
1789 |
1790 | semver-compare@^1.0.0:
1791 | version "1.0.0"
1792 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
1793 | integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
1794 |
1795 | "semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.5.1:
1796 | version "5.7.0"
1797 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
1798 | integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
1799 |
1800 | servor@^3.0.0:
1801 | version "3.0.7"
1802 | resolved "https://registry.yarnpkg.com/servor/-/servor-3.0.7.tgz#82b86bcdc3516e55e398a5f2b8d460ddc61d0596"
1803 | integrity sha512-09+FJMHzMFlDclkQ+3Rc+BFlfa6cRbpyjY5TH7uj8QC4PMvP2V7CCzRXfIiATHtQ4HFuQ44ESacdsxbG/mPBJw==
1804 |
1805 | set-value@^0.4.3:
1806 | version "0.4.3"
1807 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
1808 | integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
1809 | dependencies:
1810 | extend-shallow "^2.0.1"
1811 | is-extendable "^0.1.1"
1812 | is-plain-object "^2.0.1"
1813 | to-object-path "^0.3.0"
1814 |
1815 | set-value@^2.0.0:
1816 | version "2.0.0"
1817 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
1818 | integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
1819 | dependencies:
1820 | extend-shallow "^2.0.1"
1821 | is-extendable "^0.1.1"
1822 | is-plain-object "^2.0.3"
1823 | split-string "^3.0.1"
1824 |
1825 | shebang-command@^1.2.0:
1826 | version "1.2.0"
1827 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
1828 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
1829 | dependencies:
1830 | shebang-regex "^1.0.0"
1831 |
1832 | shebang-regex@^1.0.0:
1833 | version "1.0.0"
1834 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
1835 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
1836 |
1837 | signal-exit@^3.0.0, signal-exit@^3.0.2:
1838 | version "3.0.2"
1839 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
1840 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
1841 |
1842 | simple-git@^1.85.0:
1843 | version "1.113.0"
1844 | resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.113.0.tgz#668989728a1e9cf4ec6c72b69ea2eecc93489bea"
1845 | integrity sha512-i9WVsrK2u0G/cASI9nh7voxOk9mhanWY9eGtWBDSYql6m49Yk5/Fan6uZsDr/xmzv8n+eQ8ahKCoEr8cvU3h+g==
1846 | dependencies:
1847 | debug "^4.0.1"
1848 |
1849 | slash@^3.0.0:
1850 | version "3.0.0"
1851 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
1852 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
1853 |
1854 | slice-ansi@0.0.4:
1855 | version "0.0.4"
1856 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
1857 | integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=
1858 |
1859 | slice-ansi@^2.1.0:
1860 | version "2.1.0"
1861 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
1862 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
1863 | dependencies:
1864 | ansi-styles "^3.2.0"
1865 | astral-regex "^1.0.0"
1866 | is-fullwidth-code-point "^2.0.0"
1867 |
1868 | snapdragon-node@^2.0.1:
1869 | version "2.1.1"
1870 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
1871 | integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
1872 | dependencies:
1873 | define-property "^1.0.0"
1874 | isobject "^3.0.0"
1875 | snapdragon-util "^3.0.1"
1876 |
1877 | snapdragon-util@^3.0.1:
1878 | version "3.0.1"
1879 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
1880 | integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
1881 | dependencies:
1882 | kind-of "^3.2.0"
1883 |
1884 | snapdragon@^0.8.1:
1885 | version "0.8.2"
1886 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
1887 | integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
1888 | dependencies:
1889 | base "^0.11.1"
1890 | debug "^2.2.0"
1891 | define-property "^0.2.5"
1892 | extend-shallow "^2.0.1"
1893 | map-cache "^0.2.2"
1894 | source-map "^0.5.6"
1895 | source-map-resolve "^0.5.0"
1896 | use "^3.1.0"
1897 |
1898 | source-map-resolve@^0.5.0:
1899 | version "0.5.2"
1900 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
1901 | integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
1902 | dependencies:
1903 | atob "^2.1.1"
1904 | decode-uri-component "^0.2.0"
1905 | resolve-url "^0.2.1"
1906 | source-map-url "^0.4.0"
1907 | urix "^0.1.0"
1908 |
1909 | source-map-url@^0.4.0:
1910 | version "0.4.0"
1911 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
1912 | integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
1913 |
1914 | source-map@^0.5.6:
1915 | version "0.5.7"
1916 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
1917 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
1918 |
1919 | spdx-correct@^3.0.0:
1920 | version "3.1.0"
1921 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
1922 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
1923 | dependencies:
1924 | spdx-expression-parse "^3.0.0"
1925 | spdx-license-ids "^3.0.0"
1926 |
1927 | spdx-exceptions@^2.1.0:
1928 | version "2.2.0"
1929 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
1930 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
1931 |
1932 | spdx-expression-parse@^3.0.0:
1933 | version "3.0.0"
1934 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
1935 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
1936 | dependencies:
1937 | spdx-exceptions "^2.1.0"
1938 | spdx-license-ids "^3.0.0"
1939 |
1940 | spdx-license-ids@^3.0.0:
1941 | version "3.0.4"
1942 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1"
1943 | integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==
1944 |
1945 | split-string@^3.0.1, split-string@^3.0.2:
1946 | version "3.1.0"
1947 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
1948 | integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
1949 | dependencies:
1950 | extend-shallow "^3.0.0"
1951 |
1952 | sprintf-js@~1.0.2:
1953 | version "1.0.3"
1954 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
1955 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
1956 |
1957 | staged-git-files@1.1.2:
1958 | version "1.1.2"
1959 | resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.2.tgz#4326d33886dc9ecfa29a6193bf511ba90a46454b"
1960 | integrity sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==
1961 |
1962 | static-extend@^0.1.1:
1963 | version "0.1.2"
1964 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
1965 | integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
1966 | dependencies:
1967 | define-property "^0.2.5"
1968 | object-copy "^0.1.0"
1969 |
1970 | string-argv@^0.0.2:
1971 | version "0.0.2"
1972 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736"
1973 | integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY=
1974 |
1975 | string-width@^1.0.1:
1976 | version "1.0.2"
1977 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
1978 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
1979 | dependencies:
1980 | code-point-at "^1.0.0"
1981 | is-fullwidth-code-point "^1.0.0"
1982 | strip-ansi "^3.0.0"
1983 |
1984 | string-width@^2.1.0, string-width@^2.1.1:
1985 | version "2.1.1"
1986 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
1987 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
1988 | dependencies:
1989 | is-fullwidth-code-point "^2.0.0"
1990 | strip-ansi "^4.0.0"
1991 |
1992 | string-width@^3.0.0:
1993 | version "3.1.0"
1994 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
1995 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
1996 | dependencies:
1997 | emoji-regex "^7.0.1"
1998 | is-fullwidth-code-point "^2.0.0"
1999 | strip-ansi "^5.1.0"
2000 |
2001 | stringify-object@^3.2.2:
2002 | version "3.3.0"
2003 | resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
2004 | integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
2005 | dependencies:
2006 | get-own-enumerable-property-symbols "^3.0.0"
2007 | is-obj "^1.0.1"
2008 | is-regexp "^1.0.0"
2009 |
2010 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
2011 | version "3.0.1"
2012 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
2013 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
2014 | dependencies:
2015 | ansi-regex "^2.0.0"
2016 |
2017 | strip-ansi@^4.0.0:
2018 | version "4.0.0"
2019 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
2020 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
2021 | dependencies:
2022 | ansi-regex "^3.0.0"
2023 |
2024 | strip-ansi@^5.1.0:
2025 | version "5.2.0"
2026 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
2027 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
2028 | dependencies:
2029 | ansi-regex "^4.1.0"
2030 |
2031 | strip-eof@^1.0.0:
2032 | version "1.0.0"
2033 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
2034 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
2035 |
2036 | strip-json-comments@^2.0.1:
2037 | version "2.0.1"
2038 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
2039 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
2040 |
2041 | supports-color@^2.0.0:
2042 | version "2.0.0"
2043 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
2044 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
2045 |
2046 | supports-color@^5.3.0:
2047 | version "5.5.0"
2048 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
2049 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
2050 | dependencies:
2051 | has-flag "^3.0.0"
2052 |
2053 | symbol-observable@^1.1.0:
2054 | version "1.2.0"
2055 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
2056 | integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
2057 |
2058 | synchronous-promise@^2.0.6:
2059 | version "2.0.7"
2060 | resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.7.tgz#3574b3d2fae86b145356a4b89103e1577f646fe3"
2061 | integrity sha512-16GbgwTmFMYFyQMLvtQjvNWh30dsFe1cAW5Fg1wm5+dg84L9Pe36mftsIRU95/W2YsISxsz/xq4VB23sqpgb/A==
2062 |
2063 | table@^5.2.3:
2064 | version "5.2.3"
2065 | resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2"
2066 | integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==
2067 | dependencies:
2068 | ajv "^6.9.1"
2069 | lodash "^4.17.11"
2070 | slice-ansi "^2.1.0"
2071 | string-width "^3.0.0"
2072 |
2073 | text-table@^0.2.0:
2074 | version "0.2.0"
2075 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
2076 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
2077 |
2078 | through@^2.3.6:
2079 | version "2.3.8"
2080 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
2081 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
2082 |
2083 | tmp@^0.0.33:
2084 | version "0.0.33"
2085 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
2086 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
2087 | dependencies:
2088 | os-tmpdir "~1.0.2"
2089 |
2090 | to-object-path@^0.3.0:
2091 | version "0.3.0"
2092 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
2093 | integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
2094 | dependencies:
2095 | kind-of "^3.0.2"
2096 |
2097 | to-regex-range@^2.1.0:
2098 | version "2.1.1"
2099 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
2100 | integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
2101 | dependencies:
2102 | is-number "^3.0.0"
2103 | repeat-string "^1.6.1"
2104 |
2105 | to-regex@^3.0.1, to-regex@^3.0.2:
2106 | version "3.0.2"
2107 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
2108 | integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
2109 | dependencies:
2110 | define-property "^2.0.2"
2111 | extend-shallow "^3.0.2"
2112 | regex-not "^1.0.2"
2113 | safe-regex "^1.1.0"
2114 |
2115 | toposort@^2.0.2:
2116 | version "2.0.2"
2117 | resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330"
2118 | integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=
2119 |
2120 | tslib@^1.9.0:
2121 | version "1.9.3"
2122 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
2123 | integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
2124 |
2125 | type-check@~0.3.2:
2126 | version "0.3.2"
2127 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
2128 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
2129 | dependencies:
2130 | prelude-ls "~1.1.2"
2131 |
2132 | type-fest@^0.4.1:
2133 | version "0.4.1"
2134 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8"
2135 | integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==
2136 |
2137 | union-value@^1.0.0:
2138 | version "1.0.0"
2139 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
2140 | integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
2141 | dependencies:
2142 | arr-union "^3.1.0"
2143 | get-value "^2.0.6"
2144 | is-extendable "^0.1.1"
2145 | set-value "^0.4.3"
2146 |
2147 | unset-value@^1.0.0:
2148 | version "1.0.0"
2149 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
2150 | integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
2151 | dependencies:
2152 | has-value "^0.3.1"
2153 | isobject "^3.0.0"
2154 |
2155 | uri-js@^4.2.2:
2156 | version "4.2.2"
2157 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
2158 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
2159 | dependencies:
2160 | punycode "^2.1.0"
2161 |
2162 | urix@^0.1.0:
2163 | version "0.1.0"
2164 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
2165 | integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
2166 |
2167 | use@^3.1.0:
2168 | version "3.1.1"
2169 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
2170 | integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
2171 |
2172 | validate-npm-package-license@^3.0.1:
2173 | version "3.0.4"
2174 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
2175 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
2176 | dependencies:
2177 | spdx-correct "^3.0.0"
2178 | spdx-expression-parse "^3.0.0"
2179 |
2180 | which@^1.2.10, which@^1.2.9:
2181 | version "1.3.1"
2182 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
2183 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
2184 | dependencies:
2185 | isexe "^2.0.0"
2186 |
2187 | wordwrap@~1.0.0:
2188 | version "1.0.0"
2189 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
2190 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
2191 |
2192 | wrap-ansi@^3.0.1:
2193 | version "3.0.1"
2194 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
2195 | integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=
2196 | dependencies:
2197 | string-width "^2.1.1"
2198 | strip-ansi "^4.0.0"
2199 |
2200 | wrappy@1:
2201 | version "1.0.2"
2202 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2203 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
2204 |
2205 | write@1.0.3:
2206 | version "1.0.3"
2207 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
2208 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
2209 | dependencies:
2210 | mkdirp "^0.5.1"
2211 |
2212 | yup@^0.27.0:
2213 | version "0.27.0"
2214 | resolved "https://registry.yarnpkg.com/yup/-/yup-0.27.0.tgz#f8cb198c8e7dd2124beddc2457571329096b06e7"
2215 | integrity sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==
2216 | dependencies:
2217 | "@babel/runtime" "^7.0.0"
2218 | fn-name "~2.0.1"
2219 | lodash "^4.17.11"
2220 | property-expr "^1.5.0"
2221 | synchronous-promise "^2.0.6"
2222 | toposort "^2.0.2"
2223 |
--------------------------------------------------------------------------------