├── .github
└── workflows
│ └── e2e.yml
├── .gitignore
├── LICENSE
├── README.md
├── app
├── .env.test
├── components
│ ├── AddCommentBox.js
│ ├── Comments.js
│ ├── Header.js
│ ├── Markdown.js
│ ├── PreviewBar.js
│ ├── SEO.js
│ ├── Theme.js
│ └── Youtube.js
├── lib
│ ├── mongodb.js
│ ├── use-auth.js
│ ├── use-comments.js
│ └── use-live.js
├── package.json
├── pages
│ ├── _document.js
│ ├── api
│ │ ├── auth
│ │ │ └── [...nextauth].js
│ │ ├── clear-preview.js
│ │ ├── comments.js
│ │ ├── preview.js
│ │ └── reset-db.js
│ ├── index.js
│ └── post
│ │ └── [slug].js
└── yarn.lock
└── e2e
├── cypress.json
├── cypress
├── fixtures
│ └── example.json
├── integration
│ ├── comments.js
│ └── navigation.js
├── plugins
│ └── index.js
├── support
│ ├── commands.js
│ └── index.js
└── videos
│ ├── comments.js.mp4
│ └── navigation.js.mp4
├── package.json
└── yarn.lock
/.github/workflows/e2e.yml:
--------------------------------------------------------------------------------
1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
3 |
4 | name: E2E
5 |
6 | on:
7 | pull_request:
8 | branches: [ master ]
9 |
10 | jobs:
11 | build:
12 |
13 | runs-on: ubuntu-latest
14 |
15 | steps:
16 | - uses: actions/checkout@v2
17 | - name: Use Node.js ${{ matrix.node-version }}
18 | uses: actions/setup-node@v1
19 | - name: Start MongoDB
20 | uses: supercharge/mongodb-github-action@1.3.0
21 | - run: |
22 | cd app
23 | yarn
24 | NODE_ENV=test yarn build
25 | NODE_ENV=test yarn start &
26 | - run: |
27 | cd e2e
28 | yarn
29 | npx cypress run --record --key ${{ secrets.CYPRSS_IO_TOKEN }}
30 |
31 |
32 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .next
2 | node_modules
3 | .now
4 | .env.local
5 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Arunoda Susiripala
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 | ## Next.js E2E Testing with Cypress.io
2 |
3 | This is an example Next.js application that uses Cypress for E2E testing.
4 | We build this app as a part of [this live stream](https://www.youtube.com/watch?v=6udU0T6AZK4&feature=youtu.be). Watch that if you need to learn about details.
5 |
6 | ### Test Results
7 |
8 | * This is running tests [inside a GitHub action](https://github.com/arunoda/nextjs-e2e-demo/runs/920711967)
9 | * This is how to view a test session [inside Cypress.io](https://dashboard.cypress.io/projects/y2s3h2/runs/9/specs)
10 |
11 | ### Run it locally
12 |
13 | * [Install & Run MongoDB](https://docs.mongodb.com/manual/administration/install-community/) in your machine
14 | * Run the app with the following commands:
15 |
16 | ```
17 | cd app
18 | yarn
19 | NODE_ENV=test yarn dev
20 | ```
21 |
22 | * Run tests in the CLI with
23 |
24 | ```
25 | cd e2e
26 | yarn
27 | yarn test
28 | ```
29 |
30 | * Run tests in the Dev mode
31 |
32 | ```
33 | cd e2e
34 | yarn
35 | yarn dev
36 | ```
--------------------------------------------------------------------------------
/app/.env.test:
--------------------------------------------------------------------------------
1 | NEXT_PUBLIC_SITE=http://localhost:3004
2 | NEXTAUTH_URL=http://localhost:3004
3 | SESSION_MAX_AGE=2592000
4 | JWT_SECRET=this-is-a-token
5 | GITHUB_CLIENT_ID=9ece3e372cbe6ea67b04
6 | GITHUB_CLIENT_SECRET=7939792a9d2ed33305f524278c4275e6016293a6
7 | DATA_REPO_OWNER=arunoda
8 | DATA_REPO_NAME=github-cms-demo-data
9 | MONGO_URL=mongodb://localhost
10 | MONGO_DB_NAME=blog
11 | NEXT_PUBLIC_IS_TEST=1
--------------------------------------------------------------------------------
/app/components/AddCommentBox.js:
--------------------------------------------------------------------------------
1 | import { useState } from "react"
2 | import useAuth from '../lib/use-auth'
3 |
4 | export default function AddCommentBox({onSubmit}) {
5 | const [commentText, setCommentText] = useState('')
6 | const [addingComment, setAddingComment] = useState(false)
7 | const {session, signIn} = useAuth()
8 |
9 | const handleLogin = () => {
10 | signIn(process.env.NEXT_PUBLIC_IS_TEST? 'test-auth' : 'github')
11 | }
12 |
13 | const addComment = async () => {
14 | try {
15 | setAddingComment(true)
16 | setCommentText('')
17 | await onSubmit(commentText)
18 | } finally {
19 | setAddingComment(false)
20 | }
21 | }
22 |
23 | const getCTA = () => {
24 | if (session) {
25 | return ()
26 | }
27 |
28 | return (
29 |
32 | )
33 | }
34 |
35 | return (
36 |
37 | {session? (
38 |
47 | )
48 | }
--------------------------------------------------------------------------------
/app/components/Comments.js:
--------------------------------------------------------------------------------
1 | import { useComments } from "../lib/use-comments"
2 | import Markdown from 'markdown-to-jsx'
3 | import AddCommentBox from './AddCommentBox'
4 | import ms from 'ms'
5 |
6 | export default function Comments({slug}) {
7 | const comments = useComments(slug)
8 |
9 | if (comments.loading) {
10 | return (
11 |
12 |
13 | loading...
14 |
15 |
16 | )
17 | }
18 |
19 | return (
20 |
21 | {comments.comments && comments.comments.length > 0 ? (
22 |
23 | {comments.comments.map(c => (
24 |
25 |
26 | {c.content}
27 |
28 |
29 |

30 |
{c.name} ({ms(Date.now() - c.createdAt)} ago)
31 |
32 |
33 | ))}
34 |
35 | ) : (
36 |
37 |
38 | No comments so far.
39 |
40 |
41 | )}
42 |
comments.add(content)}/>
43 |
44 | )
45 | }
--------------------------------------------------------------------------------
/app/components/Header.js:
--------------------------------------------------------------------------------
1 | import useAuth from '../lib/use-auth'
2 | import Link from 'next/link'
3 |
4 | export default function Header() {
5 | const { session, signOut, signIn } = useAuth()
6 |
7 | const handleLogin = (e) => {
8 | e.preventDefault()
9 | signIn(process.env.NEXT_PUBLIC_IS_TEST? 'test-auth' : 'github')
10 | }
11 |
12 | const handleLogout = (e) => {
13 | e.preventDefault()
14 | signOut()
15 | }
16 |
17 | return (
18 |
28 | )
29 | }
--------------------------------------------------------------------------------
/app/components/Markdown.js:
--------------------------------------------------------------------------------
1 | import MarkdownJSX, {compiler} from 'markdown-to-jsx'
2 | import Youtube from './Youtube'
3 |
4 | export default function Markdown({children}) {
5 | return (
6 |
13 | {children}
14 |
15 | )
16 | }
17 |
18 | export function findImage(markdown) {
19 | const images = []
20 | const videoIds = []
21 |
22 | compiler(markdown, {
23 | createElement(type, props) {
24 | if (type === 'img') {
25 | images.push(props.src)
26 | return
27 | }
28 |
29 | if (type === 'Youtube') {
30 | videoIds.push(props.videoId)
31 | }
32 | }
33 | })
34 |
35 | if (images.length > 0) {
36 | return images[0]
37 | }
38 |
39 | if (videoIds.length > 0) {
40 | return `https://img.youtube.com/vi/${videoIds[0]}/maxresdefault.jpg`
41 | }
42 | }
--------------------------------------------------------------------------------
/app/components/PreviewBar.js:
--------------------------------------------------------------------------------
1 | export default function PreviewBar() {
2 | const goLive = () => {
3 | location.href="/api/clear-preview"
4 | }
5 |
6 | return (
7 |
8 | Using the preview mode
9 |
10 |
11 | )
12 | }
--------------------------------------------------------------------------------
/app/components/SEO.js:
--------------------------------------------------------------------------------
1 | import Head from 'next/head'
2 | import { findImage } from './Markdown'
3 |
4 | export default function SEO({post}) {
5 | const {title, content} = post
6 | const summary = content.trim().split('.')[0]
7 | const image = findImage(post.content)
8 | const postUrl = `${process.env.NEXT_PUBLIC_SITE}/post/${post.slug}`
9 |
10 | return (
11 |
12 | {title}
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | )
28 | }
--------------------------------------------------------------------------------
/app/components/Theme.js:
--------------------------------------------------------------------------------
1 | import Header from "./Header"
2 | import { Provider as AuthProvider } from "next-auth/client"
3 |
4 | export default function Theme({children}) {
5 | return (
6 |
7 |
8 | {children}
9 |
227 |
228 | )
229 | }
--------------------------------------------------------------------------------
/app/components/Youtube.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | export default class Youtube extends React.Component {
4 | constructor (...args) {
5 | super(...args)
6 | this.state = { showVideo: false }
7 | }
8 |
9 | renderVideo (options = {}) {
10 | const { autoplay = false } = options
11 | const { videoId, width = '100%', height = 366 } = this.props
12 | const src = `https://www.youtube.com/embed/${videoId}`
13 | const videoUrl = autoplay ? `${src}?autoplay=1` : src
14 | return (
15 |
16 | )
17 | }
18 |
19 | handleShowVideo () {
20 | this.setState({ showVideo: true })
21 | }
22 |
23 | render () {
24 | const { showVideo } = this.state
25 | const { videoId } = this.props
26 |
27 | const overlay = `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`
28 |
29 | if (showVideo) {
30 | return this.renderVideo({ autoplay: true })
31 | }
32 |
33 | return (
34 |
35 |
Play Now
36 |

this.handleShowVideo()} />
37 |
38 | )
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/lib/mongodb.js:
--------------------------------------------------------------------------------
1 | import { MongoClient } from 'mongodb'
2 | import {nanoid} from 'nanoid'
3 |
4 | let cachedDatabase = null;
5 |
6 | export function getDatabase() {
7 | if (cachedDatabase) {
8 | return cachedDatabase
9 | }
10 |
11 | const client = new MongoClient(process.env.MONGO_URL, {
12 | useUnifiedTopology: true,
13 | useNewUrlParser: true
14 | })
15 |
16 | return new Promise((resolve, reject) => {
17 | client.connect(function (err) {
18 | if (err) {
19 | reject(err)
20 | }
21 |
22 | cachedDatabase = client.db(process.env.MONGO_DB_NAME)
23 | resolve(cachedDatabase)
24 | })
25 | })
26 | }
27 |
28 | export function mapPost(p) {
29 | return {
30 | slug: p.slug,
31 | title: p.title,
32 | content: p.content,
33 | id: p._id,
34 | createdAt: p.createdAt,
35 | updatedAt: p.updatedAt
36 | }
37 | }
38 |
39 | export async function getPostList() {
40 | const db = await getDatabase()
41 | const options = {
42 | sort: {
43 | createdAt: -1
44 | }
45 | }
46 | const posts = await db.collection('posts').find({}, options).toArray()
47 | return posts.map(mapPost)
48 | }
49 |
50 | export async function getPost(slug) {
51 | const db = await getDatabase()
52 | const post = await db.collection('posts').findOne({slug})
53 | return mapPost(post)
54 | }
55 |
56 | export async function addPost(post) {
57 | const { slug, title, content, createdAt } = post
58 | const db = await getDatabase()
59 | const id = nanoid(30)
60 | const result = await db.collection('posts')
61 | .findOneAndUpdate(
62 | { slug },
63 | {
64 | $set: {
65 | title,
66 | content,
67 | updatedAt: Date.now()
68 | },
69 | $setOnInsert: {
70 | _id: id,
71 | createdAt: createdAt || Date.now()
72 | }
73 | },
74 | {
75 | upsert: true,
76 | returnOriginal: false
77 | }
78 | )
79 |
80 | return result.value
81 | }
82 |
83 | export async function getComments(slug) {
84 | const db = await getDatabase()
85 | const options = {
86 | sort: {
87 | createdAt: 1
88 | }
89 | }
90 |
91 | const comments = await db.collection('comments')
92 | .find({ slug }, options)
93 | .toArray()
94 |
95 | return comments.map(c => {
96 | const newComment = {...c};
97 | newComment.id = c._id
98 | delete newComment._id
99 | return newComment
100 | })
101 | }
102 |
103 | export async function addComment(slug, comment) {
104 | const { ownerId, name, avatar, content, createdAt } = comment
105 | const db = await getDatabase()
106 | const id = nanoid(30)
107 | const result = await db.collection('comments')
108 | .insertOne({
109 | _id: id,
110 | slug,
111 | ownerId,
112 | name,
113 | avatar,
114 | content,
115 | createdAt
116 | })
117 |
118 | return result.value
119 | }
--------------------------------------------------------------------------------
/app/lib/use-auth.js:
--------------------------------------------------------------------------------
1 | import {signIn, signOut} from 'next-auth/client'
2 | import useSWR from 'swr'
3 |
4 | async function fetcher(path) {
5 | const fetchRes = await fetch(path)
6 | return fetchRes.json()
7 | }
8 |
9 | export default function auth() {
10 | const {data} = useSWR('/api/auth/session', fetcher)
11 |
12 | const getSession = () => {
13 | if (data && data.user) {
14 | return data
15 | }
16 |
17 | return null
18 | }
19 |
20 | return {
21 | signIn,
22 | signOut,
23 | session: getSession()
24 | }
25 | }
--------------------------------------------------------------------------------
/app/lib/use-comments.js:
--------------------------------------------------------------------------------
1 | import useSWR, { mutate } from 'swr'
2 | import {useSession} from 'next-auth/client'
3 | import { nanoid } from 'nanoid'
4 |
5 | const fetcher = async (...args) => {
6 | const res = await fetch(...args)
7 | return res.json()
8 | }
9 |
10 | export function useComments(slug) {
11 | const [session] = useSession()
12 | const dataPath = `/api/comments?slug=${encodeURIComponent(slug)}`
13 | const {data: comments} = useSWR(
14 | dataPath,
15 | fetcher,
16 | {
17 | refreshInterval: 1000 * 60,
18 | revalidateOnFocus: false
19 | }
20 | )
21 |
22 | async function add(content) {
23 | // optimistic UI
24 | mutate(dataPath, data => {
25 | return [
26 | ...data,
27 | {
28 | id: nanoid(30),
29 | avatar: session.user.image,
30 | name: session.user.name,
31 | content,
32 | clientOnly: true,
33 | createdAt: Date.now()
34 | }
35 | ]
36 | }, false)
37 | const res = await fetch(`/api/comments?slug=${encodeURIComponent(slug)}`, {
38 | method: 'POST',
39 | headers: {
40 | 'Content-Type': 'application/json'
41 | },
42 | body: JSON.stringify({content})
43 | })
44 | const data = await res.json()
45 | mutate(dataPath, () => data, false)
46 | }
47 |
48 | return {
49 | loading: !Boolean(comments),
50 | add,
51 | comments,
52 | }
53 | }
--------------------------------------------------------------------------------
/app/lib/use-live.js:
--------------------------------------------------------------------------------
1 | import { useEffect } from "react";
2 | import { useRouter } from 'next/router'
3 |
4 | export function useLive(options = {}) {
5 | const interval = options.interval || 1000;
6 | const { asPath } = useRouter()
7 |
8 | useEffect(() => {
9 | const buildId = __NEXT_DATA__['buildId']
10 | let currentPage = null;
11 | let timeoutHandler = null;
12 |
13 | if (buildId === 'development') {
14 | return
15 | }
16 |
17 | const checkEtag = () => {
18 | const pageUrl = `${location.origin}${asPath}`
19 | const dataUrl = `${location.origin}/_next/data/${buildId}${asPath}.json`
20 | fetch(pageUrl)
21 | .then(res => res.text())
22 | .then(html => {
23 | if (!currentPage) {
24 | currentPage = html
25 | }
26 |
27 | if (currentPage !== html) {
28 | console.log('Reloading')
29 | // This is clear the cache in the local for the data file
30 | // This is due to stale-while-revalidate cache header
31 | fetch(dataUrl)
32 | location.reload();
33 | }
34 |
35 | timeoutHandler = setTimeout(checkEtag, interval)
36 | })
37 | }
38 |
39 | checkEtag()
40 |
41 | return () => clearTimeout(timeoutHandler)
42 | }, [asPath])
43 | }
--------------------------------------------------------------------------------
/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "lesson-nextjs-static-regeneration",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "dev": "next -p 3004",
8 | "build": "next build",
9 | "start": "next start -p 3004"
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "git+https://github.com/arunoda/nextjs-blog-with-github-cms"
14 | },
15 | "author": "",
16 | "license": "MIT",
17 | "bugs": {
18 | "url": "https://github.com/arunoda/nextjs-blog-with-github-cms/issues"
19 | },
20 | "homepage": "https://github.com/arunoda/nextjs-blog-with-github-cms#readme",
21 | "dependencies": {
22 | "@octokit/rest": "^18.0.0",
23 | "markdown-to-jsx": "^6.11.4",
24 | "mongodb": "^3.5.9",
25 | "ms": "^2.1.2",
26 | "nanoid": "^3.1.11",
27 | "next": "latest",
28 | "next-auth": "^3.0.0",
29 | "react": "^16.13.1",
30 | "react-dom": "^16.13.1",
31 | "swr": "^0.2.3"
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/pages/_document.js:
--------------------------------------------------------------------------------
1 | import Document, { Head, Main, NextScript } from 'next/document'
2 |
3 | export default class MyDocument extends Document {
4 | static getInitialProps (ctx) {
5 | return Document.getInitialProps(ctx)
6 | }
7 |
8 | render () {
9 | return (
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | )
20 | }
21 | }
--------------------------------------------------------------------------------
/app/pages/api/auth/[...nextauth].js:
--------------------------------------------------------------------------------
1 | import NextAuth from 'next-auth'
2 | import Providers from 'next-auth/providers'
3 |
4 | const providers = [
5 | Providers.GitHub({
6 | clientId: process.env.GITHUB_CLIENT_ID,
7 | clientSecret: process.env.GITHUB_CLIENT_SECRET
8 | })
9 | ]
10 |
11 | if (process.env.NEXT_PUBLIC_IS_TEST) {
12 | providers.push(
13 | Providers.Credentials({
14 | name: 'test-auth',
15 | credentials: {
16 | username: {label: 'Username', type: 'text'}
17 | },
18 |
19 | async authorize({ username }) {
20 | const userId = username || String(Math.ceil(Math.random() * 9999999))
21 | return {
22 | id: userId,
23 | name: userId,
24 | email: `${userId}@email.com`,
25 | image: `https://api.adorable.io/avatars/128/${userId}.png`
26 | }
27 | }
28 | })
29 | )
30 | }
31 |
32 | const options = {
33 | providers,
34 |
35 | session: {
36 | jwt: true,
37 | maxAge: parseInt(process.env.SESSION_MAX_AGE, 10)
38 | },
39 |
40 | jwt: {
41 | secret: process.env.JWT_SECRET
42 | },
43 |
44 | callbacks: {
45 | async signIn(account, profile, metadata) {
46 | // TODO: Fetch the real email from GitHub
47 | if (profile.provider === 'github') {
48 | account.email = `${metadata.id}@github.com`
49 | }
50 |
51 | return true;
52 | }
53 | }
54 | }
55 |
56 | export default (req, res) => NextAuth(req, res, options)
--------------------------------------------------------------------------------
/app/pages/api/clear-preview.js:
--------------------------------------------------------------------------------
1 | export default function preview(req, res) {
2 | res.clearPreviewData()
3 | res.writeHead(307, {
4 | Location: '/'
5 | })
6 | res.end();
7 | }
--------------------------------------------------------------------------------
/app/pages/api/comments.js:
--------------------------------------------------------------------------------
1 | import { getSession } from 'next-auth/client'
2 | import { getComments, addComment } from '../../lib/mongodb'
3 |
4 | export default async function comments(req, res) {
5 | const slug = req.query.slug
6 |
7 | if (req.method === 'GET') {
8 | const comments = await getComments(slug)
9 | return res.send(comments)
10 | }
11 |
12 | if (req.method === 'POST') {
13 | const session = await getSession({ req })
14 |
15 | if (!session) {
16 | res.status(401).send('Unauthorized')
17 | return;
18 | }
19 |
20 | const comment = {
21 | ownerId: session.user.email,
22 | name: session.user.name,
23 | avatar: session.user.image,
24 | content: req.body.content,
25 | createdAt: Date.now()
26 | }
27 |
28 | // fake slow to show optimistic UI
29 | await new Promise((r) => setTimeout(r, 600))
30 |
31 | await addComment(slug, comment)
32 | const comments = await getComments(slug)
33 | return res.send(comments)
34 | }
35 |
36 | res.status(404).send('Unsupported Method')
37 | }
--------------------------------------------------------------------------------
/app/pages/api/preview.js:
--------------------------------------------------------------------------------
1 | export default function preview(req, res) {
2 | const {sha} = req.query
3 | if (!sha) {
4 | res.status(400).send('Query param sha is missing.')
5 | return
6 | }
7 |
8 | res.setPreviewData({sha})
9 | res.writeHead(307, {
10 | Location: '/'
11 | })
12 | res.end();
13 | }
--------------------------------------------------------------------------------
/app/pages/api/reset-db.js:
--------------------------------------------------------------------------------
1 | import { addPost, getDatabase } from '../../lib/mongodb'
2 | import ms from 'ms'
3 |
4 | export default async function resetDB(req, res) {
5 | if (!process.env.NEXT_PUBLIC_IS_TEST) {
6 | res.status(400).send('Bad Request')
7 | return
8 | }
9 |
10 | const db = await getDatabase()
11 | try {
12 | await db.collection('posts').drop()
13 | await db.collection('comments').drop()
14 | } catch (err) {}
15 |
16 | await addPost({
17 | slug: 'hello-world',
18 | title: 'Hello World',
19 | content: `
20 | This is my first blog post using the GitHub as a CMS.
21 |
22 | Amazing 🚀 🚀
23 | `,
24 | createdAt: Date.now() - ms('2d')
25 | })
26 |
27 | await addPost({
28 | slug: 'introducing-getstarted',
29 | title: 'Introducing GetStarted',
30 | content: `
31 | It's the place for Getting Started guides.
32 | `,
33 | createdAt: Date.now() - ms('1d')
34 | })
35 |
36 | res.send({})
37 | }
--------------------------------------------------------------------------------
/app/pages/index.js:
--------------------------------------------------------------------------------
1 | import { getPostList } from '../lib/mongodb'
2 | import Link from 'next/link'
3 | import Theme from '../components/Theme'
4 | import ms from 'ms'
5 | import PreviewBar from '../components/PreviewBar'
6 |
7 | export default function Home({ postList, previewData }) {
8 | return (
9 |
10 |
11 | {postList.map(post => (
12 |
20 | ))}
21 |
22 | {previewData? () : null}
23 |
24 | )
25 | }
26 |
27 | export async function getStaticProps({previewData = null}) {
28 | const postList = await getPostList()
29 |
30 | return {
31 | props: {
32 | postList,
33 | previewData
34 | },
35 | unstable_revalidate: 1
36 | }
37 | }
--------------------------------------------------------------------------------
/app/pages/post/[slug].js:
--------------------------------------------------------------------------------
1 | import { useRouter } from 'next/router'
2 | import { getPost, getPostList } from '../../lib/mongodb'
3 | import { useState } from 'react'
4 | import { useLive } from '../../lib/use-live'
5 |
6 | import Markdown from '../../components/Markdown'
7 | import Comments from '../../components/Comments'
8 | import Theme from '../../components/Theme'
9 | import ms from 'ms'
10 | import PreviewBar from '../../components/PreviewBar'
11 | import SEO from '../../components/SEO'
12 |
13 | export default function Post({post, previewData}) {
14 | const [showComments, setShowComments] = useState(false)
15 | const router = useRouter()
16 | useLive()
17 |
18 | if (router.isFallback) {
19 | return null;
20 | }
21 |
22 | return (
23 |
24 |
25 |
26 |
Published {ms(Date.now() - post.createdAt, { long: true })} ago
27 |
{post.title}
28 |
29 | {post.content}
30 |
31 |
34 | {showComments? (
) : null}
35 | {previewData? () : null}
36 |
37 |
38 | )
39 | }
40 |
41 | export async function getStaticPaths() {
42 | const postList = await getPostList()
43 |
44 | return {
45 | paths: postList.map(p => ({
46 | params: {slug: p.slug}
47 | })),
48 | fallback: true
49 | }
50 | }
51 |
52 | export async function getStaticProps({params, previewData = null}) {
53 | const post = await getPost(params.slug, {
54 | sha: previewData && previewData.sha
55 | })
56 |
57 | return {
58 | props: {
59 | post,
60 | previewData
61 | },
62 | unstable_revalidate: 1
63 | }
64 | }
--------------------------------------------------------------------------------
/e2e/cypress.json:
--------------------------------------------------------------------------------
1 | {
2 | "projectId": "y2s3h2"
3 | }
4 |
--------------------------------------------------------------------------------
/e2e/cypress/fixtures/example.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Using fixtures to represent data",
3 | "email": "hello@cypress.io",
4 | "body": "Fixtures are a great way to mock data for responses to routes"
5 | }
--------------------------------------------------------------------------------
/e2e/cypress/integration/comments.js:
--------------------------------------------------------------------------------
1 | describe('Navigation', () => {
2 | beforeEach(() => {
3 | cy.visit('http://localhost:3004')
4 | cy.exec('curl http://localhost:3004/api/reset-db')
5 | cy.wait(2000)
6 | cy.visit('http://localhost:3004')
7 | cy.wait(1000)
8 | cy.visit('http://localhost:3004')
9 | })
10 |
11 | it('should be able to add comment', () => {
12 | cy.contains('Introducing GetStarted').click()
13 | cy.contains('Show Comments').click()
14 | cy.contains('Login to Add Comment').click()
15 |
16 | const username = String(Math.random())
17 | const commentText = String(Math.random())
18 |
19 | cy.get('#input-username-for-credentials-provider').type(username)
20 | cy.contains('test-auth').click()
21 | cy.contains('Show Comments').click()
22 | cy.get('textarea').type(commentText)
23 |
24 | cy.contains('Add Comment').click()
25 |
26 | cy.get('.comment-content').contains(commentText)
27 | cy.get('.comment-author').contains(username)
28 |
29 | cy.get('a').contains('Logout').click()
30 |
31 | const username2 = String(Math.random())
32 | const commentText2 = String(Math.random())
33 |
34 | cy.contains('Show Comments').click()
35 | cy.contains('Login to Add Comment').click()
36 |
37 | cy.get('#input-username-for-credentials-provider').type(username2)
38 | cy.contains('test-auth').click()
39 | cy.contains('Show Comments').click()
40 | cy.get('textarea').type(commentText2)
41 | cy.contains('Add Comment').click()
42 |
43 | cy.get('.comment-content').contains(commentText2)
44 | cy.get('.comment-author').contains(username2)
45 | })
46 | })
--------------------------------------------------------------------------------
/e2e/cypress/integration/navigation.js:
--------------------------------------------------------------------------------
1 | describe('Navigation', () => {
2 | beforeEach(() => {
3 | cy.visit('http://localhost:3004')
4 | cy.exec('curl http://localhost:3004/api/reset-db')
5 | cy.wait(2000)
6 | cy.visit('http://localhost:3004')
7 | cy.wait(1000)
8 | cy.visit('http://localhost:3004')
9 | })
10 |
11 | it('should open the homepage', () => {
12 | cy.contains('Introducing GetStarted')
13 | })
14 |
15 | it('should go to the post page', () => {
16 | cy.get('a').contains('Hello World').click()
17 | cy.contains('Amazing 🚀 🚀')
18 | })
19 |
20 | it('should allow to login', () => {
21 | cy.get('a').contains('Login').click()
22 | })
23 | })
--------------------------------------------------------------------------------
/e2e/cypress/plugins/index.js:
--------------------------------------------------------------------------------
1 | ///
2 | // ***********************************************************
3 | // This example plugins/index.js can be used to load plugins
4 | //
5 | // You can change the location of this file or turn off loading
6 | // the plugins file with the 'pluginsFile' configuration option.
7 | //
8 | // You can read more here:
9 | // https://on.cypress.io/plugins-guide
10 | // ***********************************************************
11 |
12 | // This function is called when a project is opened or re-opened (e.g. due to
13 | // the project's config changing)
14 |
15 | /**
16 | * @type {Cypress.PluginConfig}
17 | */
18 | module.exports = (on, config) => {
19 | // `on` is used to hook into various events Cypress emits
20 | // `config` is the resolved Cypress config
21 | }
22 |
--------------------------------------------------------------------------------
/e2e/cypress/support/commands.js:
--------------------------------------------------------------------------------
1 | // ***********************************************
2 | // This example commands.js shows you how to
3 | // create various custom commands and overwrite
4 | // existing commands.
5 | //
6 | // For more comprehensive examples of custom
7 | // commands please read more here:
8 | // https://on.cypress.io/custom-commands
9 | // ***********************************************
10 | //
11 | //
12 | // -- This is a parent command --
13 | // Cypress.Commands.add("login", (email, password) => { ... })
14 | //
15 | //
16 | // -- This is a child command --
17 | // Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
18 | //
19 | //
20 | // -- This is a dual command --
21 | // Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
22 | //
23 | //
24 | // -- This will overwrite an existing command --
25 | // Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
26 |
--------------------------------------------------------------------------------
/e2e/cypress/support/index.js:
--------------------------------------------------------------------------------
1 | // ***********************************************************
2 | // This example support/index.js is processed and
3 | // loaded automatically before your test files.
4 | //
5 | // This is a great place to put global configuration and
6 | // behavior that modifies Cypress.
7 | //
8 | // You can change the location of this file or turn off
9 | // automatically serving support files with the
10 | // 'supportFile' configuration option.
11 | //
12 | // You can read more here:
13 | // https://on.cypress.io/configuration
14 | // ***********************************************************
15 |
16 | // Import commands.js using ES2015 syntax:
17 | import './commands'
18 |
19 | // Alternatively you can use CommonJS syntax:
20 | // require('./commands')
21 |
--------------------------------------------------------------------------------
/e2e/cypress/videos/comments.js.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arunoda/nextjs-e2e-demo/89c094d890da6f98a22879761c2a58415410def6/e2e/cypress/videos/comments.js.mp4
--------------------------------------------------------------------------------
/e2e/cypress/videos/navigation.js.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arunoda/nextjs-e2e-demo/89c094d890da6f98a22879761c2a58415410def6/e2e/cypress/videos/navigation.js.mp4
--------------------------------------------------------------------------------
/e2e/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nextjs-e2e-demo",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "repository": "git@github.com:arunoda/nextjs-e2e-demo.git",
6 | "author": "Arunoda Susiripal <50838+arunoda@users.noreply.github.com>",
7 | "license": "MIT",
8 | "dependencies": {
9 | "cypress": "^4.11.0"
10 | },
11 | "scripts": {
12 | "dev": "cypress open",
13 | "test": "cypress run"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/e2e/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@cypress/listr-verbose-renderer@0.4.1":
6 | version "0.4.1"
7 | resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a"
8 | integrity sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=
9 | dependencies:
10 | chalk "^1.1.3"
11 | cli-cursor "^1.0.2"
12 | date-fns "^1.27.2"
13 | figures "^1.7.0"
14 |
15 | "@cypress/request@2.88.5":
16 | version "2.88.5"
17 | resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.5.tgz#8d7ecd17b53a849cfd5ab06d5abe7d84976375d7"
18 | integrity sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==
19 | dependencies:
20 | aws-sign2 "~0.7.0"
21 | aws4 "^1.8.0"
22 | caseless "~0.12.0"
23 | combined-stream "~1.0.6"
24 | extend "~3.0.2"
25 | forever-agent "~0.6.1"
26 | form-data "~2.3.2"
27 | har-validator "~5.1.3"
28 | http-signature "~1.2.0"
29 | is-typedarray "~1.0.0"
30 | isstream "~0.1.2"
31 | json-stringify-safe "~5.0.1"
32 | mime-types "~2.1.19"
33 | oauth-sign "~0.9.0"
34 | performance-now "^2.1.0"
35 | qs "~6.5.2"
36 | safe-buffer "^5.1.2"
37 | tough-cookie "~2.5.0"
38 | tunnel-agent "^0.6.0"
39 | uuid "^3.3.2"
40 |
41 | "@cypress/xvfb@1.2.4":
42 | version "1.2.4"
43 | resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a"
44 | integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==
45 | dependencies:
46 | debug "^3.1.0"
47 | lodash.once "^4.1.1"
48 |
49 | "@samverschueren/stream-to-observable@^0.3.0":
50 | version "0.3.0"
51 | resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
52 | integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==
53 | dependencies:
54 | any-observable "^0.3.0"
55 |
56 | "@types/sinonjs__fake-timers@6.0.1":
57 | version "6.0.1"
58 | resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e"
59 | integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA==
60 |
61 | "@types/sizzle@2.3.2":
62 | version "2.3.2"
63 | resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47"
64 | integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==
65 |
66 | ajv@^6.5.5:
67 | version "6.12.3"
68 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706"
69 | integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==
70 | dependencies:
71 | fast-deep-equal "^3.1.1"
72 | fast-json-stable-stringify "^2.0.0"
73 | json-schema-traverse "^0.4.1"
74 | uri-js "^4.2.2"
75 |
76 | ansi-escapes@^3.0.0:
77 | version "3.2.0"
78 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
79 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
80 |
81 | ansi-regex@^2.0.0:
82 | version "2.1.1"
83 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
84 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
85 |
86 | ansi-regex@^3.0.0:
87 | version "3.0.0"
88 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
89 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
90 |
91 | ansi-styles@^2.2.1:
92 | version "2.2.1"
93 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
94 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
95 |
96 | ansi-styles@^3.2.1:
97 | version "3.2.1"
98 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
99 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
100 | dependencies:
101 | color-convert "^1.9.0"
102 |
103 | any-observable@^0.3.0:
104 | version "0.3.0"
105 | resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
106 | integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
107 |
108 | arch@2.1.2:
109 | version "2.1.2"
110 | resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf"
111 | integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==
112 |
113 | asn1@~0.2.3:
114 | version "0.2.4"
115 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
116 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
117 | dependencies:
118 | safer-buffer "~2.1.0"
119 |
120 | assert-plus@1.0.0, assert-plus@^1.0.0:
121 | version "1.0.0"
122 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
123 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
124 |
125 | async@^3.2.0:
126 | version "3.2.0"
127 | resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720"
128 | integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==
129 |
130 | asynckit@^0.4.0:
131 | version "0.4.0"
132 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
133 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
134 |
135 | aws-sign2@~0.7.0:
136 | version "0.7.0"
137 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
138 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
139 |
140 | aws4@^1.8.0:
141 | version "1.10.0"
142 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2"
143 | integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==
144 |
145 | balanced-match@^1.0.0:
146 | version "1.0.0"
147 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
148 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
149 |
150 | bcrypt-pbkdf@^1.0.0:
151 | version "1.0.2"
152 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
153 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
154 | dependencies:
155 | tweetnacl "^0.14.3"
156 |
157 | bluebird@3.7.2:
158 | version "3.7.2"
159 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
160 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
161 |
162 | brace-expansion@^1.1.7:
163 | version "1.1.11"
164 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
165 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
166 | dependencies:
167 | balanced-match "^1.0.0"
168 | concat-map "0.0.1"
169 |
170 | buffer-crc32@~0.2.3:
171 | version "0.2.13"
172 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
173 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
174 |
175 | buffer-from@^1.0.0:
176 | version "1.1.1"
177 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
178 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
179 |
180 | cachedir@2.3.0:
181 | version "2.3.0"
182 | resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8"
183 | integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==
184 |
185 | caseless@~0.12.0:
186 | version "0.12.0"
187 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
188 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
189 |
190 | chalk@2.4.2, chalk@^2.4.1, chalk@^2.4.2:
191 | version "2.4.2"
192 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
193 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
194 | dependencies:
195 | ansi-styles "^3.2.1"
196 | escape-string-regexp "^1.0.5"
197 | supports-color "^5.3.0"
198 |
199 | chalk@^1.0.0, chalk@^1.1.3:
200 | version "1.1.3"
201 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
202 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
203 | dependencies:
204 | ansi-styles "^2.2.1"
205 | escape-string-regexp "^1.0.2"
206 | has-ansi "^2.0.0"
207 | strip-ansi "^3.0.0"
208 | supports-color "^2.0.0"
209 |
210 | check-more-types@2.24.0:
211 | version "2.24.0"
212 | resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
213 | integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=
214 |
215 | ci-info@^2.0.0:
216 | version "2.0.0"
217 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
218 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
219 |
220 | cli-cursor@^1.0.2:
221 | version "1.0.2"
222 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
223 | integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=
224 | dependencies:
225 | restore-cursor "^1.0.1"
226 |
227 | cli-cursor@^2.0.0, cli-cursor@^2.1.0:
228 | version "2.1.0"
229 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
230 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
231 | dependencies:
232 | restore-cursor "^2.0.0"
233 |
234 | cli-table3@0.5.1:
235 | version "0.5.1"
236 | resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202"
237 | integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==
238 | dependencies:
239 | object-assign "^4.1.0"
240 | string-width "^2.1.1"
241 | optionalDependencies:
242 | colors "^1.1.2"
243 |
244 | cli-truncate@^0.2.1:
245 | version "0.2.1"
246 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
247 | integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=
248 | dependencies:
249 | slice-ansi "0.0.4"
250 | string-width "^1.0.1"
251 |
252 | code-point-at@^1.0.0:
253 | version "1.1.0"
254 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
255 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
256 |
257 | color-convert@^1.9.0:
258 | version "1.9.3"
259 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
260 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
261 | dependencies:
262 | color-name "1.1.3"
263 |
264 | color-name@1.1.3:
265 | version "1.1.3"
266 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
267 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
268 |
269 | colors@^1.1.2:
270 | version "1.4.0"
271 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
272 | integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
273 |
274 | combined-stream@^1.0.6, combined-stream@~1.0.6:
275 | version "1.0.8"
276 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
277 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
278 | dependencies:
279 | delayed-stream "~1.0.0"
280 |
281 | commander@4.1.1:
282 | version "4.1.1"
283 | resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
284 | integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
285 |
286 | common-tags@1.8.0:
287 | version "1.8.0"
288 | resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937"
289 | integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==
290 |
291 | concat-map@0.0.1:
292 | version "0.0.1"
293 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
294 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
295 |
296 | concat-stream@^1.6.2:
297 | version "1.6.2"
298 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
299 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
300 | dependencies:
301 | buffer-from "^1.0.0"
302 | inherits "^2.0.3"
303 | readable-stream "^2.2.2"
304 | typedarray "^0.0.6"
305 |
306 | core-util-is@1.0.2, core-util-is@~1.0.0:
307 | version "1.0.2"
308 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
309 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
310 |
311 | cross-spawn@^6.0.0:
312 | version "6.0.5"
313 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
314 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
315 | dependencies:
316 | nice-try "^1.0.4"
317 | path-key "^2.0.1"
318 | semver "^5.5.0"
319 | shebang-command "^1.2.0"
320 | which "^1.2.9"
321 |
322 | cypress@^4.11.0:
323 | version "4.11.0"
324 | resolved "https://registry.yarnpkg.com/cypress/-/cypress-4.11.0.tgz#054b0b85fd3aea793f186249ee1216126d5f0a7e"
325 | integrity sha512-6Yd598+KPATM+dU1Ig0g2hbA+R/o1MAKt0xIejw4nZBVLSplCouBzqeKve6XsxGU6n4HMSt/+QYsWfFcoQeSEw==
326 | dependencies:
327 | "@cypress/listr-verbose-renderer" "0.4.1"
328 | "@cypress/request" "2.88.5"
329 | "@cypress/xvfb" "1.2.4"
330 | "@types/sinonjs__fake-timers" "6.0.1"
331 | "@types/sizzle" "2.3.2"
332 | arch "2.1.2"
333 | bluebird "3.7.2"
334 | cachedir "2.3.0"
335 | chalk "2.4.2"
336 | check-more-types "2.24.0"
337 | cli-table3 "0.5.1"
338 | commander "4.1.1"
339 | common-tags "1.8.0"
340 | debug "4.1.1"
341 | eventemitter2 "6.4.2"
342 | execa "1.0.0"
343 | executable "4.1.1"
344 | extract-zip "1.7.0"
345 | fs-extra "8.1.0"
346 | getos "3.2.1"
347 | is-ci "2.0.0"
348 | is-installed-globally "0.3.2"
349 | lazy-ass "1.6.0"
350 | listr "0.14.3"
351 | lodash "4.17.19"
352 | log-symbols "3.0.0"
353 | minimist "1.2.5"
354 | moment "2.26.0"
355 | ospath "1.2.2"
356 | pretty-bytes "5.3.0"
357 | ramda "0.26.1"
358 | request-progress "3.0.0"
359 | supports-color "7.1.0"
360 | tmp "0.1.0"
361 | untildify "4.0.0"
362 | url "0.11.0"
363 | yauzl "2.10.0"
364 |
365 | dashdash@^1.12.0:
366 | version "1.14.1"
367 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
368 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
369 | dependencies:
370 | assert-plus "^1.0.0"
371 |
372 | date-fns@^1.27.2:
373 | version "1.30.1"
374 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
375 | integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
376 |
377 | debug@4.1.1:
378 | version "4.1.1"
379 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
380 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
381 | dependencies:
382 | ms "^2.1.1"
383 |
384 | debug@^2.6.9:
385 | version "2.6.9"
386 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
387 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
388 | dependencies:
389 | ms "2.0.0"
390 |
391 | debug@^3.1.0:
392 | version "3.2.6"
393 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
394 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
395 | dependencies:
396 | ms "^2.1.1"
397 |
398 | delayed-stream@~1.0.0:
399 | version "1.0.0"
400 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
401 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
402 |
403 | ecc-jsbn@~0.1.1:
404 | version "0.1.2"
405 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
406 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
407 | dependencies:
408 | jsbn "~0.1.0"
409 | safer-buffer "^2.1.0"
410 |
411 | elegant-spinner@^1.0.1:
412 | version "1.0.1"
413 | resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
414 | integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
415 |
416 | end-of-stream@^1.1.0:
417 | version "1.4.4"
418 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
419 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
420 | dependencies:
421 | once "^1.4.0"
422 |
423 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
424 | version "1.0.5"
425 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
426 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
427 |
428 | eventemitter2@6.4.2:
429 | version "6.4.2"
430 | resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.2.tgz#f31f8b99d45245f0edbc5b00797830ff3b388970"
431 | integrity sha512-r/Pwupa5RIzxIHbEKCkNXqpEQIIT4uQDxmP4G/Lug/NokVUWj0joz/WzWl3OxRpC5kDrH/WdiUJoR+IrwvXJEw==
432 |
433 | execa@1.0.0:
434 | version "1.0.0"
435 | resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
436 | integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
437 | dependencies:
438 | cross-spawn "^6.0.0"
439 | get-stream "^4.0.0"
440 | is-stream "^1.1.0"
441 | npm-run-path "^2.0.0"
442 | p-finally "^1.0.0"
443 | signal-exit "^3.0.0"
444 | strip-eof "^1.0.0"
445 |
446 | executable@4.1.1:
447 | version "4.1.1"
448 | resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c"
449 | integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==
450 | dependencies:
451 | pify "^2.2.0"
452 |
453 | exit-hook@^1.0.0:
454 | version "1.1.1"
455 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
456 | integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=
457 |
458 | extend@~3.0.2:
459 | version "3.0.2"
460 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
461 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
462 |
463 | extract-zip@1.7.0:
464 | version "1.7.0"
465 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927"
466 | integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==
467 | dependencies:
468 | concat-stream "^1.6.2"
469 | debug "^2.6.9"
470 | mkdirp "^0.5.4"
471 | yauzl "^2.10.0"
472 |
473 | extsprintf@1.3.0:
474 | version "1.3.0"
475 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
476 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
477 |
478 | extsprintf@^1.2.0:
479 | version "1.4.0"
480 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
481 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
482 |
483 | fast-deep-equal@^3.1.1:
484 | version "3.1.3"
485 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
486 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
487 |
488 | fast-json-stable-stringify@^2.0.0:
489 | version "2.1.0"
490 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
491 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
492 |
493 | fd-slicer@~1.1.0:
494 | version "1.1.0"
495 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
496 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
497 | dependencies:
498 | pend "~1.2.0"
499 |
500 | figures@^1.7.0:
501 | version "1.7.0"
502 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
503 | integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
504 | dependencies:
505 | escape-string-regexp "^1.0.5"
506 | object-assign "^4.1.0"
507 |
508 | figures@^2.0.0:
509 | version "2.0.0"
510 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
511 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
512 | dependencies:
513 | escape-string-regexp "^1.0.5"
514 |
515 | forever-agent@~0.6.1:
516 | version "0.6.1"
517 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
518 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
519 |
520 | form-data@~2.3.2:
521 | version "2.3.3"
522 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
523 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
524 | dependencies:
525 | asynckit "^0.4.0"
526 | combined-stream "^1.0.6"
527 | mime-types "^2.1.12"
528 |
529 | fs-extra@8.1.0:
530 | version "8.1.0"
531 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
532 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
533 | dependencies:
534 | graceful-fs "^4.2.0"
535 | jsonfile "^4.0.0"
536 | universalify "^0.1.0"
537 |
538 | fs.realpath@^1.0.0:
539 | version "1.0.0"
540 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
541 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
542 |
543 | get-stream@^4.0.0:
544 | version "4.1.0"
545 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
546 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
547 | dependencies:
548 | pump "^3.0.0"
549 |
550 | getos@3.2.1:
551 | version "3.2.1"
552 | resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5"
553 | integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==
554 | dependencies:
555 | async "^3.2.0"
556 |
557 | getpass@^0.1.1:
558 | version "0.1.7"
559 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
560 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
561 | dependencies:
562 | assert-plus "^1.0.0"
563 |
564 | glob@^7.1.3:
565 | version "7.1.6"
566 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
567 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
568 | dependencies:
569 | fs.realpath "^1.0.0"
570 | inflight "^1.0.4"
571 | inherits "2"
572 | minimatch "^3.0.4"
573 | once "^1.3.0"
574 | path-is-absolute "^1.0.0"
575 |
576 | global-dirs@^2.0.1:
577 | version "2.0.1"
578 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201"
579 | integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==
580 | dependencies:
581 | ini "^1.3.5"
582 |
583 | graceful-fs@^4.1.6, graceful-fs@^4.2.0:
584 | version "4.2.4"
585 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
586 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
587 |
588 | har-schema@^2.0.0:
589 | version "2.0.0"
590 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
591 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
592 |
593 | har-validator@~5.1.3:
594 | version "5.1.3"
595 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
596 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
597 | dependencies:
598 | ajv "^6.5.5"
599 | har-schema "^2.0.0"
600 |
601 | has-ansi@^2.0.0:
602 | version "2.0.0"
603 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
604 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
605 | dependencies:
606 | ansi-regex "^2.0.0"
607 |
608 | has-flag@^3.0.0:
609 | version "3.0.0"
610 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
611 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
612 |
613 | has-flag@^4.0.0:
614 | version "4.0.0"
615 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
616 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
617 |
618 | http-signature@~1.2.0:
619 | version "1.2.0"
620 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
621 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
622 | dependencies:
623 | assert-plus "^1.0.0"
624 | jsprim "^1.2.2"
625 | sshpk "^1.7.0"
626 |
627 | indent-string@^3.0.0:
628 | version "3.2.0"
629 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
630 | integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
631 |
632 | inflight@^1.0.4:
633 | version "1.0.6"
634 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
635 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
636 | dependencies:
637 | once "^1.3.0"
638 | wrappy "1"
639 |
640 | inherits@2, inherits@^2.0.3, inherits@~2.0.3:
641 | version "2.0.4"
642 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
643 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
644 |
645 | ini@^1.3.5:
646 | version "1.3.5"
647 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
648 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
649 |
650 | is-ci@2.0.0:
651 | version "2.0.0"
652 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
653 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
654 | dependencies:
655 | ci-info "^2.0.0"
656 |
657 | is-fullwidth-code-point@^1.0.0:
658 | version "1.0.0"
659 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
660 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
661 | dependencies:
662 | number-is-nan "^1.0.0"
663 |
664 | is-fullwidth-code-point@^2.0.0:
665 | version "2.0.0"
666 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
667 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
668 |
669 | is-installed-globally@0.3.2:
670 | version "0.3.2"
671 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141"
672 | integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==
673 | dependencies:
674 | global-dirs "^2.0.1"
675 | is-path-inside "^3.0.1"
676 |
677 | is-observable@^1.1.0:
678 | version "1.1.0"
679 | resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e"
680 | integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==
681 | dependencies:
682 | symbol-observable "^1.1.0"
683 |
684 | is-path-inside@^3.0.1:
685 | version "3.0.2"
686 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017"
687 | integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==
688 |
689 | is-promise@^2.1.0:
690 | version "2.2.2"
691 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1"
692 | integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==
693 |
694 | is-stream@^1.1.0:
695 | version "1.1.0"
696 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
697 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
698 |
699 | is-typedarray@~1.0.0:
700 | version "1.0.0"
701 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
702 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
703 |
704 | isarray@~1.0.0:
705 | version "1.0.0"
706 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
707 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
708 |
709 | isexe@^2.0.0:
710 | version "2.0.0"
711 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
712 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
713 |
714 | isstream@~0.1.2:
715 | version "0.1.2"
716 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
717 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
718 |
719 | jsbn@~0.1.0:
720 | version "0.1.1"
721 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
722 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
723 |
724 | json-schema-traverse@^0.4.1:
725 | version "0.4.1"
726 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
727 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
728 |
729 | json-schema@0.2.3:
730 | version "0.2.3"
731 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
732 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
733 |
734 | json-stringify-safe@~5.0.1:
735 | version "5.0.1"
736 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
737 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
738 |
739 | jsonfile@^4.0.0:
740 | version "4.0.0"
741 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
742 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
743 | optionalDependencies:
744 | graceful-fs "^4.1.6"
745 |
746 | jsprim@^1.2.2:
747 | version "1.4.1"
748 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
749 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
750 | dependencies:
751 | assert-plus "1.0.0"
752 | extsprintf "1.3.0"
753 | json-schema "0.2.3"
754 | verror "1.10.0"
755 |
756 | lazy-ass@1.6.0:
757 | version "1.6.0"
758 | resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
759 | integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM=
760 |
761 | listr-silent-renderer@^1.1.1:
762 | version "1.1.1"
763 | resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
764 | integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=
765 |
766 | listr-update-renderer@^0.5.0:
767 | version "0.5.0"
768 | resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2"
769 | integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==
770 | dependencies:
771 | chalk "^1.1.3"
772 | cli-truncate "^0.2.1"
773 | elegant-spinner "^1.0.1"
774 | figures "^1.7.0"
775 | indent-string "^3.0.0"
776 | log-symbols "^1.0.2"
777 | log-update "^2.3.0"
778 | strip-ansi "^3.0.1"
779 |
780 | listr-verbose-renderer@^0.5.0:
781 | version "0.5.0"
782 | resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db"
783 | integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==
784 | dependencies:
785 | chalk "^2.4.1"
786 | cli-cursor "^2.1.0"
787 | date-fns "^1.27.2"
788 | figures "^2.0.0"
789 |
790 | listr@0.14.3:
791 | version "0.14.3"
792 | resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586"
793 | integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==
794 | dependencies:
795 | "@samverschueren/stream-to-observable" "^0.3.0"
796 | is-observable "^1.1.0"
797 | is-promise "^2.1.0"
798 | is-stream "^1.1.0"
799 | listr-silent-renderer "^1.1.1"
800 | listr-update-renderer "^0.5.0"
801 | listr-verbose-renderer "^0.5.0"
802 | p-map "^2.0.0"
803 | rxjs "^6.3.3"
804 |
805 | lodash.once@^4.1.1:
806 | version "4.1.1"
807 | resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
808 | integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
809 |
810 | lodash@4.17.19:
811 | version "4.17.19"
812 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
813 | integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
814 |
815 | log-symbols@3.0.0:
816 | version "3.0.0"
817 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4"
818 | integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==
819 | dependencies:
820 | chalk "^2.4.2"
821 |
822 | log-symbols@^1.0.2:
823 | version "1.0.2"
824 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
825 | integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=
826 | dependencies:
827 | chalk "^1.0.0"
828 |
829 | log-update@^2.3.0:
830 | version "2.3.0"
831 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
832 | integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg=
833 | dependencies:
834 | ansi-escapes "^3.0.0"
835 | cli-cursor "^2.0.0"
836 | wrap-ansi "^3.0.1"
837 |
838 | mime-db@1.44.0:
839 | version "1.44.0"
840 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
841 | integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
842 |
843 | mime-types@^2.1.12, mime-types@~2.1.19:
844 | version "2.1.27"
845 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
846 | integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
847 | dependencies:
848 | mime-db "1.44.0"
849 |
850 | mimic-fn@^1.0.0:
851 | version "1.2.0"
852 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
853 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
854 |
855 | minimatch@^3.0.4:
856 | version "3.0.4"
857 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
858 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
859 | dependencies:
860 | brace-expansion "^1.1.7"
861 |
862 | minimist@1.2.5, minimist@^1.2.5:
863 | version "1.2.5"
864 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
865 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
866 |
867 | mkdirp@^0.5.4:
868 | version "0.5.5"
869 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
870 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
871 | dependencies:
872 | minimist "^1.2.5"
873 |
874 | moment@2.26.0:
875 | version "2.26.0"
876 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.26.0.tgz#5e1f82c6bafca6e83e808b30c8705eed0dcbd39a"
877 | integrity sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==
878 |
879 | ms@2.0.0:
880 | version "2.0.0"
881 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
882 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
883 |
884 | ms@^2.1.1:
885 | version "2.1.2"
886 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
887 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
888 |
889 | nice-try@^1.0.4:
890 | version "1.0.5"
891 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
892 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
893 |
894 | npm-run-path@^2.0.0:
895 | version "2.0.2"
896 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
897 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
898 | dependencies:
899 | path-key "^2.0.0"
900 |
901 | number-is-nan@^1.0.0:
902 | version "1.0.1"
903 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
904 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
905 |
906 | oauth-sign@~0.9.0:
907 | version "0.9.0"
908 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
909 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
910 |
911 | object-assign@^4.1.0:
912 | version "4.1.1"
913 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
914 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
915 |
916 | once@^1.3.0, once@^1.3.1, once@^1.4.0:
917 | version "1.4.0"
918 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
919 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
920 | dependencies:
921 | wrappy "1"
922 |
923 | onetime@^1.0.0:
924 | version "1.1.0"
925 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
926 | integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=
927 |
928 | onetime@^2.0.0:
929 | version "2.0.1"
930 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
931 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
932 | dependencies:
933 | mimic-fn "^1.0.0"
934 |
935 | ospath@1.2.2:
936 | version "1.2.2"
937 | resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b"
938 | integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=
939 |
940 | p-finally@^1.0.0:
941 | version "1.0.0"
942 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
943 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
944 |
945 | p-map@^2.0.0:
946 | version "2.1.0"
947 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
948 | integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
949 |
950 | path-is-absolute@^1.0.0:
951 | version "1.0.1"
952 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
953 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
954 |
955 | path-key@^2.0.0, path-key@^2.0.1:
956 | version "2.0.1"
957 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
958 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
959 |
960 | pend@~1.2.0:
961 | version "1.2.0"
962 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
963 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
964 |
965 | performance-now@^2.1.0:
966 | version "2.1.0"
967 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
968 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
969 |
970 | pify@^2.2.0:
971 | version "2.3.0"
972 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
973 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
974 |
975 | pretty-bytes@5.3.0:
976 | version "5.3.0"
977 | resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2"
978 | integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==
979 |
980 | process-nextick-args@~2.0.0:
981 | version "2.0.1"
982 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
983 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
984 |
985 | psl@^1.1.28:
986 | version "1.8.0"
987 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
988 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
989 |
990 | pump@^3.0.0:
991 | version "3.0.0"
992 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
993 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
994 | dependencies:
995 | end-of-stream "^1.1.0"
996 | once "^1.3.1"
997 |
998 | punycode@1.3.2:
999 | version "1.3.2"
1000 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
1001 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
1002 |
1003 | punycode@^2.1.0, punycode@^2.1.1:
1004 | version "2.1.1"
1005 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1006 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1007 |
1008 | qs@~6.5.2:
1009 | version "6.5.2"
1010 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
1011 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
1012 |
1013 | querystring@0.2.0:
1014 | version "0.2.0"
1015 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
1016 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
1017 |
1018 | ramda@0.26.1:
1019 | version "0.26.1"
1020 | resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06"
1021 | integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==
1022 |
1023 | readable-stream@^2.2.2:
1024 | version "2.3.7"
1025 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
1026 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
1027 | dependencies:
1028 | core-util-is "~1.0.0"
1029 | inherits "~2.0.3"
1030 | isarray "~1.0.0"
1031 | process-nextick-args "~2.0.0"
1032 | safe-buffer "~5.1.1"
1033 | string_decoder "~1.1.1"
1034 | util-deprecate "~1.0.1"
1035 |
1036 | request-progress@3.0.0:
1037 | version "3.0.0"
1038 | resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe"
1039 | integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=
1040 | dependencies:
1041 | throttleit "^1.0.0"
1042 |
1043 | restore-cursor@^1.0.1:
1044 | version "1.0.1"
1045 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
1046 | integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=
1047 | dependencies:
1048 | exit-hook "^1.0.0"
1049 | onetime "^1.0.0"
1050 |
1051 | restore-cursor@^2.0.0:
1052 | version "2.0.0"
1053 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
1054 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
1055 | dependencies:
1056 | onetime "^2.0.0"
1057 | signal-exit "^3.0.2"
1058 |
1059 | rimraf@^2.6.3:
1060 | version "2.7.1"
1061 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
1062 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
1063 | dependencies:
1064 | glob "^7.1.3"
1065 |
1066 | rxjs@^6.3.3:
1067 | version "6.6.0"
1068 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84"
1069 | integrity sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==
1070 | dependencies:
1071 | tslib "^1.9.0"
1072 |
1073 | safe-buffer@^5.0.1, safe-buffer@^5.1.2:
1074 | version "5.2.1"
1075 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1076 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1077 |
1078 | safe-buffer@~5.1.0, safe-buffer@~5.1.1:
1079 | version "5.1.2"
1080 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
1081 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
1082 |
1083 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
1084 | version "2.1.2"
1085 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1086 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
1087 |
1088 | semver@^5.5.0:
1089 | version "5.7.1"
1090 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
1091 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
1092 |
1093 | shebang-command@^1.2.0:
1094 | version "1.2.0"
1095 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
1096 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
1097 | dependencies:
1098 | shebang-regex "^1.0.0"
1099 |
1100 | shebang-regex@^1.0.0:
1101 | version "1.0.0"
1102 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
1103 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
1104 |
1105 | signal-exit@^3.0.0, signal-exit@^3.0.2:
1106 | version "3.0.3"
1107 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
1108 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
1109 |
1110 | slice-ansi@0.0.4:
1111 | version "0.0.4"
1112 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
1113 | integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=
1114 |
1115 | sshpk@^1.7.0:
1116 | version "1.16.1"
1117 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
1118 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
1119 | dependencies:
1120 | asn1 "~0.2.3"
1121 | assert-plus "^1.0.0"
1122 | bcrypt-pbkdf "^1.0.0"
1123 | dashdash "^1.12.0"
1124 | ecc-jsbn "~0.1.1"
1125 | getpass "^0.1.1"
1126 | jsbn "~0.1.0"
1127 | safer-buffer "^2.0.2"
1128 | tweetnacl "~0.14.0"
1129 |
1130 | string-width@^1.0.1:
1131 | version "1.0.2"
1132 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
1133 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
1134 | dependencies:
1135 | code-point-at "^1.0.0"
1136 | is-fullwidth-code-point "^1.0.0"
1137 | strip-ansi "^3.0.0"
1138 |
1139 | string-width@^2.1.1:
1140 | version "2.1.1"
1141 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
1142 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
1143 | dependencies:
1144 | is-fullwidth-code-point "^2.0.0"
1145 | strip-ansi "^4.0.0"
1146 |
1147 | string_decoder@~1.1.1:
1148 | version "1.1.1"
1149 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
1150 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
1151 | dependencies:
1152 | safe-buffer "~5.1.0"
1153 |
1154 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
1155 | version "3.0.1"
1156 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1157 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
1158 | dependencies:
1159 | ansi-regex "^2.0.0"
1160 |
1161 | strip-ansi@^4.0.0:
1162 | version "4.0.0"
1163 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
1164 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
1165 | dependencies:
1166 | ansi-regex "^3.0.0"
1167 |
1168 | strip-eof@^1.0.0:
1169 | version "1.0.0"
1170 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
1171 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
1172 |
1173 | supports-color@7.1.0:
1174 | version "7.1.0"
1175 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1"
1176 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==
1177 | dependencies:
1178 | has-flag "^4.0.0"
1179 |
1180 | supports-color@^2.0.0:
1181 | version "2.0.0"
1182 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
1183 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
1184 |
1185 | supports-color@^5.3.0:
1186 | version "5.5.0"
1187 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1188 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1189 | dependencies:
1190 | has-flag "^3.0.0"
1191 |
1192 | symbol-observable@^1.1.0:
1193 | version "1.2.0"
1194 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
1195 | integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
1196 |
1197 | throttleit@^1.0.0:
1198 | version "1.0.0"
1199 | resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
1200 | integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=
1201 |
1202 | tmp@0.1.0:
1203 | version "0.1.0"
1204 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877"
1205 | integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==
1206 | dependencies:
1207 | rimraf "^2.6.3"
1208 |
1209 | tough-cookie@~2.5.0:
1210 | version "2.5.0"
1211 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
1212 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
1213 | dependencies:
1214 | psl "^1.1.28"
1215 | punycode "^2.1.1"
1216 |
1217 | tslib@^1.9.0:
1218 | version "1.13.0"
1219 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
1220 | integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
1221 |
1222 | tunnel-agent@^0.6.0:
1223 | version "0.6.0"
1224 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
1225 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
1226 | dependencies:
1227 | safe-buffer "^5.0.1"
1228 |
1229 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
1230 | version "0.14.5"
1231 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
1232 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
1233 |
1234 | typedarray@^0.0.6:
1235 | version "0.0.6"
1236 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
1237 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
1238 |
1239 | universalify@^0.1.0:
1240 | version "0.1.2"
1241 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
1242 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
1243 |
1244 | untildify@4.0.0:
1245 | version "4.0.0"
1246 | resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
1247 | integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
1248 |
1249 | uri-js@^4.2.2:
1250 | version "4.2.2"
1251 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
1252 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
1253 | dependencies:
1254 | punycode "^2.1.0"
1255 |
1256 | url@0.11.0:
1257 | version "0.11.0"
1258 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
1259 | integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
1260 | dependencies:
1261 | punycode "1.3.2"
1262 | querystring "0.2.0"
1263 |
1264 | util-deprecate@~1.0.1:
1265 | version "1.0.2"
1266 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1267 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
1268 |
1269 | uuid@^3.3.2:
1270 | version "3.4.0"
1271 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
1272 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
1273 |
1274 | verror@1.10.0:
1275 | version "1.10.0"
1276 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
1277 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
1278 | dependencies:
1279 | assert-plus "^1.0.0"
1280 | core-util-is "1.0.2"
1281 | extsprintf "^1.2.0"
1282 |
1283 | which@^1.2.9:
1284 | version "1.3.1"
1285 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
1286 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
1287 | dependencies:
1288 | isexe "^2.0.0"
1289 |
1290 | wrap-ansi@^3.0.1:
1291 | version "3.0.1"
1292 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
1293 | integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=
1294 | dependencies:
1295 | string-width "^2.1.1"
1296 | strip-ansi "^4.0.0"
1297 |
1298 | wrappy@1:
1299 | version "1.0.2"
1300 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1301 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1302 |
1303 | yauzl@2.10.0, yauzl@^2.10.0:
1304 | version "2.10.0"
1305 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
1306 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
1307 | dependencies:
1308 | buffer-crc32 "~0.2.3"
1309 | fd-slicer "~1.1.0"
1310 |
--------------------------------------------------------------------------------