diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index b2435ac..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,136 +0,0 @@ -# Contributing to the ProjectWise app - -We'd love for you to contribute to our source code and to make the ProjectWise app even better than it is today! Here are the guidelines we'd like you to follow: - - - [Code of Conduct](#coc) - - [Question or Problem?](#question) - - [Issues and Bugs](#issue) - - [Feature Requests](#feature) - - [Submission Guidelines](#submit) - - [Coding Rules](#rules) - -## Code of Conduct - -As contributors and maintainers of the ProjectWise app project, we pledge to respect everyone who contributes by posting issues, updating documentation, submitting pull requests, providing feedback in comments, and any other activities. - -Communication through github must be constructive and never resort to personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. - -We promise to extend courtesy and respect to everyone involved in this project regardless of gender, gender identity, sexual orientation, disability, age, race, ethnicity, religion, or level of experience. We expect anyone contributing to the project to do the same. - -If any member of the community violates this code of conduct, the maintainers of the ProjectWise app project may take action, removing issues, comments, and PRs or blocking accounts as deemed appropriate. - -## Got a Question or Problem? - -If you have questions please use GitHub issues. - -If you feel that we're missing an important bit of documentation, feel free to -file an issue so we can help. Here's an example to get you started: - -``` -What are you trying to do or find out more about? - -Where have you looked? - -Where did you expect to find this information? -``` - -## Found an Issue? -If you find a bug in the source code or a mistake in the documentation, you can help us by -submitting an issue to our [GitHub Repository][github]. Even better you can submit a Pull Request -with a fix. - -See [below](#submit) for some guidelines. - -## Submission Guidelines - -### Submitting an Issue -Before you submit your issue search the archive, maybe your question was already answered. - -If your issue appears to be a bug, and hasn't been reported, open a new issue. -Help us to maximize the effort we can spend fixing issues and adding new -features, by not reporting duplicate issues. - -**If you get help, help others. Good karma rulez!** - - -### Submitting a Pull Request -Before you submit your pull request consider the following guidelines: - -* Search [GitHub](https://github.com/Projectwise/projectwise-app/pulls) for an open or closed Pull Request - that relates to your submission. You don't want to duplicate effort. -* Make your changes in a new git branch: - - ```shell - git checkout -b my-fix-branch master - ``` - -* Create your patch, **including appropriate test cases**. -* Follow our [Coding Rules](#rules). -* Avoid checking in files that shouldn't be tracked (e.g `node_modules`, `gulp-cache`, `.tmp`, `.idea`). We recommend using a [global](#global-gitignore) gitignore for this. -* Commit your changes using a descriptive commit message. - - ```shell - git commit -a - ``` - Note: the optional commit `-a` command line option will automatically "add" and "rm" edited files. - -* Build your changes locally to ensure all the tests pass: - - ```shell - npm test - ``` - -* Push your branch to GitHub: - - ```shell - git push origin my-fix-branch - ``` - -* In GitHub, send a pull request to `projectwise-app:master`. -* If we suggest changes then: - * Make the required updates. - * Rebase your branch and force push to your GitHub repository (this will update your Pull Request): - - ```shell - git rebase master -i - git push origin my-fix-branch -f - ``` - -That's it! Thank you for your contribution! - -#### After your pull request is merged - -After your pull request is merged, you can safely delete your branch and pull the changes -from the main (upstream) repository: - -* Delete the remote branch on GitHub either through the GitHub web UI or your local shell as follows: - - ```shell - git push origin --delete my-fix-branch - ``` - -* Check out the master branch: - - ```shell - git checkout master -f - ``` - -* Delete the local branch: - - ```shell - git branch -D my-fix-branch - ``` - -* Update your master with the latest upstream version: - - ```shell - git pull --ff upstream master - ``` - -## Coding Rules - -We generally follow the [ESLint standard JavaScript style guide][js-style-guide]. - -*This guide was inspired by the [AngularJS contribution guidelines](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md).* - -[global-gitignore]: https://help.github.com/articles/ignoring-files/#create-a-global-gitignore diff --git a/README.md b/README.md index 0bbf1ff..9a42fa3 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,249 @@ -## Projectwise - Frontend +# Projectwise.ai -#### Get Started +> Build a business on open source. A directory of commercial-ready OSS projects with AI setup prompts, curated stacks, and a showcase of real businesses built on open source. + +**Domain:** projectwise.ai (preferred) / projectwise.io (fallback) +**Stack:** Next.js 15 + Payload CMS 3.0 + PostgreSQL (Neon) + Vercel +**Twitter:** [@projectwise_in](https://twitter.com/projectwise_in) + +--- + +## Documentation + +| Doc | Description | +|-----|-------------| +| [Vision & Problem Statement](./docs/01-vision.md) | Why this exists, who it's for | +| [Market Research](./docs/02-market-research.md) | WordPress ecosystem, competitor analysis | +| [Architecture](./docs/03-architecture.md) | Tech stack, data models, API design | +| [Roadmap](./docs/04-roadmap.md) | Phased V1-V4 plan with weekly tasks | +| [Content Strategy](./docs/05-content-strategy.md) | SEO, social media, launch playbook | +| [Project Seed List](./docs/06-project-seed-list.md) | 100 curated OSS projects | +| [New Features](./docs/07-new-features.md) | AI Prompts, Showcase, Stacks specs | + +--- + +## Implementation Plan + +> Each item links to a GitHub issue with full details. Agents update both the issue and this checklist. +> +> **Status:** `[ ]` pending · `[~]` in progress · `[x]` done + +### Setup + +- [ ] **Initialize Next.js 15 + Payload CMS 3.0** · [#7](https://github.com/Projectwise/projectwise-app/issues/7) + - [ ] Create Next.js 15 project with TypeScript and Tailwind CSS + - [ ] Install and configure Payload CMS 3.0 inside `/app` + - [ ] Set up PostgreSQL connection (Neon) + - [ ] Configure ESLint, Prettier, project structure + - [ ] Add `CLAUDE.md` / `AGENTS.md` for AI-assisted development + +- [ ] **Configure Deployment** · [#8](https://github.com/Projectwise/projectwise-app/issues/8) + - [ ] Vercel project setup with environment variables + - [ ] Neon PostgreSQL provisioning (dev + production branches) + - [ ] Custom domain configuration + - [ ] CI/CD: build + lint on PR, deploy on merge to main + +- [ ] **Define Core Payload Collections** · [#9](https://github.com/Projectwise/projectwise-app/issues/9) + - [ ] Projects collection (name, slug, tagline, description, logo, tier, license, URLs, flags) + - [ ] Categories collection (name, slug, description, icon) + - [ ] Seed script for initial data + - [ ] Admin panel configuration and access roles + +### V1: MVP Directory + +- [ ] **Build Project Listing Page** · [#10](https://github.com/Projectwise/projectwise-app/issues/10) + - [ ] `/projects` route with grid/list view toggle + - [ ] Filter by category, tier, license type + - [ ] Search by project name + - [ ] Pagination or infinite scroll + - [ ] Sort by: featured, name, newest + +- [ ] **Build Project Detail Page** · [#11](https://github.com/Projectwise/projectwise-app/issues/11) + - [ ] `/projects/[slug]` route + - [ ] Hero section: logo, name, tagline, tier badge, links + - [ ] Overview: description, license, key features + - [ ] Commercial readiness section (tier explanation) + - [ ] Sidebar: quick stats, GitHub stars, links + - [ ] SEO: meta tags, Open Graph, JSON-LD schema + +- [ ] **Build Category Pages** · [#12](https://github.com/Projectwise/projectwise-app/issues/12) + - [ ] `/categories/[slug]` route + - [ ] Category description and icon + - [ ] Filtered project grid for that category + - [ ] Cross-links to related categories + +- [ ] **Build Homepage** · [#13](https://github.com/Projectwise/projectwise-app/issues/13) + - [ ] Hero section with value proposition + - [ ] Featured projects (3-6 staff picks) + - [ ] Category grid with project counts + - [ ] "How it works" section + - [ ] CTA for experts and operators + - [ ] Latest additions section + +- [ ] **Site-Wide Layout and Navigation** · [#14](https://github.com/Projectwise/projectwise-app/issues/14) + - [ ] Responsive header with nav links and search + - [ ] Footer with links, newsletter signup placeholder + - [ ] Mobile hamburger menu + - [ ] Breadcrumbs on inner pages + - [ ] Dark/light mode toggle + - [ ] 404 and error pages + +- [ ] **Seed 20 Projects** · [#15](https://github.com/Projectwise/projectwise-app/issues/15) + - [ ] Select top 20 from seed list (balanced across categories) + - [ ] Write descriptions, taglines, feature lists for each + - [ ] Collect logos and screenshots + - [ ] Assign tiers (Tier 1, 2, or 3) + - [ ] Create seed script or Payload migration + +- [ ] **Programmatic SEO Pages** · [#16](https://github.com/Projectwise/projectwise-app/issues/16) + - [ ] `/alternatives/[slug]` — "Open source alternative to [Product]" + - [ ] Dynamic sitemap.xml generation + - [ ] Meta tags and OG images for all page types + - [ ] JSON-LD structured data (SoftwareApplication schema) + - [ ] Robots.txt configuration + +### V2: Contributors + Forms + AI Prompts + +- [ ] **Expert Interest Form + Collection** · [#17](https://github.com/Projectwise/projectwise-app/issues/17) + - [ ] Experts Payload collection (name, email, GitHub, skills, rate, availability) + - [ ] "I can help with this project" form on project detail page + - [ ] Form validation and submission handling + - [ ] Admin review workflow (pending → verified → rejected) + - [ ] Email notification on new submission + +- [ ] **Operator Interest Form + Collection** · [#18](https://github.com/Projectwise/projectwise-app/issues/18) + - [ ] Interests Payload collection (name, email, project, budget, timeline, message) + - [ ] "I want to run this as SaaS" form on project detail page + - [ ] Form validation and submission handling + - [ ] Admin notification on new submission + - [ ] Thank you / next steps page + +- [ ] **AI Setup Prompts** · [#19](https://github.com/Projectwise/projectwise-app/issues/19) + - [ ] Prompts Payload collection (project, type, title, prompt text, tested flag) + - [ ] "Deploy with AI" section on project detail page + - [ ] Three prompt types: Quick Start, Business Setup, Full Stack + - [ ] Copy-to-clipboard functionality + - [ ] Write and test prompts for all 20 seed projects + +- [ ] **GitHub Contributors Integration** · [#20](https://github.com/Projectwise/projectwise-app/issues/20) + - [ ] Fetch contributors via GitHub API for each project + - [ ] Display contributor avatars on project detail page + - [ ] Cache results to avoid rate limits + - [ ] Link to contributor GitHub profiles + +- [ ] **Newsletter Signup** · [#21](https://github.com/Projectwise/projectwise-app/issues/21) + - [ ] Integrate Buttondown or ConvertKit + - [ ] Email capture in footer and homepage CTA + - [ ] Welcome email automation + - [ ] Double opt-in flow + +### V3: Ideas, Showcase, Stacks + +- [ ] **Business Ideas Collection + Pages** · [#22](https://github.com/Projectwise/projectwise-app/issues/22) + - [ ] Ideas Payload collection (title, project, description, target market, pricing, competitors, difficulty, MRR potential) + - [ ] Ideas section on project detail page (3-5 per project) + - [ ] `/ideas` index page with filtering + - [ ] `/ideas/[slug]` detail page + - [ ] Write 60-100 ideas across seed projects + +- [ ] **Project Showcase + Submissions** · [#23](https://github.com/Projectwise/projectwise-app/issues/23) + - [ ] Showcases Payload collection (name, URL, screenshot, project, industry, revenue, status) + - [ ] "Built with [Project]" section on project detail page + - [ ] Showcase submission form with screenshot upload + - [ ] Admin review workflow (pending → approved → rejected) + - [ ] `/showcase` global index page + - [ ] `/projects/[slug]/showcase` per-project showcase page + - [ ] "Staff Pick" featured badge + +- [ ] **Curated Stacks + Pages** · [#24](https://github.com/Projectwise/projectwise-app/issues/24) + - [ ] Stacks Payload collection (name, projects with roles, use case, cost, deploy prompt) + - [ ] `/stacks` index page + - [ ] `/stacks/[slug]` detail page with project list and deploy prompt + - [ ] "Part of these stacks" section on project detail page + - [ ] Create 5 initial stacks (E-commerce, SaaS Starter, Agency, Community, DevOps) + +- [ ] **Project Interlinking + Relationships** · [#25](https://github.com/Projectwise/projectwise-app/issues/25) + - [ ] ProjectRelationships Payload collection (projectA, projectB, type, description) + - [ ] Relationship types: works-with, depends-on, alternative-to, extends + - [ ] "Works Well With" section on project detail page + - [ ] "Alternatives" section on project detail page + - [ ] Bidirectional display (if A works-with B, show on both pages) + +- [ ] **Seed Showcase Data** · [#26](https://github.com/Projectwise/projectwise-app/issues/26) + - [ ] Collect 3-5 showcase entries per Tier 1 project from existing showcases + - [ ] Sources: Next.js showcase, Tailwind showcase, Strapi showcase, Ghost explore + - [ ] Screenshots and descriptions for each entry + - [ ] Import via seed script or Payload admin + +### V4: Launch Campaign + +- [ ] **Seed 50 Projects + Full Content** · [#27](https://github.com/Projectwise/projectwise-app/issues/27) + - [ ] Expand from 20 to 50 projects + - [ ] AI prompts for all 50 projects + - [ ] Business ideas for all 50 projects + - [ ] Relationship mappings between all projects + - [ ] Quality pass: descriptions, logos, screenshots + +- [ ] **Analytics Setup** · [#28](https://github.com/Projectwise/projectwise-app/issues/28) + - [ ] Integrate Plausible or Umami (self-hosted) + - [ ] Track page views, top pages, referrers + - [ ] Custom events: form submissions, prompt copies, search queries + - [ ] Dashboard access for team + +- [ ] **Performance Optimization + Launch Prep** · [#29](https://github.com/Projectwise/projectwise-app/issues/29) + - [ ] Lighthouse score > 90 on all page types + - [ ] Core Web Vitals: LCP < 2.5s, FID < 100ms, CLS < 0.1 + - [ ] Image optimization (Next.js Image, WebP, lazy loading) + - [ ] Bundle analysis and code splitting + - [ ] Load testing with 100 concurrent users + - [ ] Final QA pass across devices + +--- + +## Dependency Graph + +``` +#7 Setup +├── #8 Deployment +└── #9 Collections + ├── #10 Listings ─────┐ + ├── #11 Detail Page ──┤ + ├── #12 Categories ───┤── #13 Homepage + ├── #14 Layout │ + ├── #15 Seed 20 ──────┘ + └── #16 SEO Pages + V1 COMPLETE + ├── #17 Experts ┐ + ├── #18 Operators │ + ├── #19 AI Prompts ├── parallel + ├── #20 GitHub API │ + └── #21 Newsletter ┘ + V2 COMPLETE + ├── #22 Ideas ┐ + ├── #23 Showcase │ + ├── #24 Stacks ├── parallel + ├── #25 Interlinking │ + └── #26 Seed Showcase ┘ + V3 COMPLETE + ├── #27 Seed 50 ┐ + ├── #28 Analytics ├── parallel + └── #29 Performance ┘ + V4 LAUNCH +``` + +--- + +## For Claude Code Agents + +When picking up an issue: + +1. **Read the linked issue** for full requirements and acceptance criteria +2. **Create a feature branch** from `main`: `git checkout -b feat/issue-N-short-name` +3. **Reference docs** in `/docs` for architecture decisions and data models +4. **Update this README** — mark your item `[~]` when starting, `[x]` when PR is merged +5. **Comment on the issue** with progress updates +6. **PR description** should reference the issue: `Closes #N` + +--- + +*Last updated: January 2026* diff --git a/database.rules.json b/database.rules.json deleted file mode 100644 index ecdbb39..0000000 --- a/database.rules.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "rules": { - ".read": true, - ".write": "auth != null" - } -} diff --git a/docs/01-vision.md b/docs/01-vision.md new file mode 100644 index 0000000..8008096 --- /dev/null +++ b/docs/01-vision.md @@ -0,0 +1,211 @@ +# Vision & Problem Statement + +> **Mission:** Enable anyone to build a sustainable business on open source software. + +--- + +## The Problem + +### 1. Open Source Maintainers Are Burning Out + +| Statistic | Source | +|-----------|--------| +| **60%** of maintainers are unpaid | [ByteIota 2025](https://byteiota.com/open-source-maintainer-crisis-60-unpaid-burnout-hits-44/) | +| **60%** have quit or considered quitting | ByteIota 2025 | +| **44%** cite burnout as reason for leaving | ByteIota 2025 | +| **45%** say burnout is top challenge | Intel Survey 2023 | + +**Real-world impact:** +- Kubernetes Ingress NGINX retired due to maintainer burnout +- External Secrets Operator has only ONE active maintainer left +- Asahi Linux lead quit citing burnout + +### 2. AI Is Disrupting Developer Education + +Traditional income streams for developers are drying up: +- Stack Overflow traffic declining (AI answers questions) +- Tutorial/course creators losing to AI-generated content +- Documentation writers being replaced + +**Result:** Skilled developers need new ways to monetize their expertise. + +### 3. The "Commercialization Gap" + +Open source projects exist on a spectrum: + +``` +FREE PAID +│ │ +│ Self-hosted White-label Managed Enterprise │ +│ (DIY) (Resellable) Hosting Licenses │ +│ │ +└─────────────────────────────────────────────────────────────┘ + ▲ + │ + THE GAP + + No platform helps people navigate this spectrum + or connects them with implementation help. +``` + +--- + +## The Opportunity + +### WordPress Proved the Model + +The WordPress ecosystem is worth **$600+ billion** with clear layers: + +| Layer | Example | Value | +|-------|---------|-------| +| **Platform** | WordPress.org | Free, open source | +| **Managed Hosting** | WP Engine, Kinsta | $156B+ market | +| **Agencies** | 50,000+ worldwide | Implementation | +| **Freelancers** | Codeable, etc. | $20-100/hr | +| **End Customers** | Businesses | Pay for solutions | + +**Key insight:** WordPress didn't build all this. It emerged organically because the platform enabled it. + +### The Modern Equivalent Doesn't Exist + +For newer open source (Plausible, n8n, Cal.com, etc.): +- No central directory of "commercial-ready" projects +- No verified expert network for implementation +- No standardized way to find white-label options +- No connection between contributors and paid work + +--- + +## The Solution: Projectwise + +### What We're Building + +A curated directory of **commercial-ready open source software** that connects: + +``` +┌─────────────────────────────────────────────────────────────┐ +│ PROJECTWISE │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ PROJECTS EXPERTS OPERATORS │ +│ ───────── ─────── ───────── │ +│ Open source Contributors Entrepreneurs │ +│ with commercial who can deploy who run OSS │ +│ potential & customize as SaaS │ +│ │ +│ │ │ │ │ +│ └───────────────────┼────────────────────┘ │ +│ │ │ +│ PROJECTWISE.IO │ +│ Discovery + Trust │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Core Value Propositions + +| Audience | Value | +|----------|-------| +| **Projects** | Free promotion, more adoption, potential revenue share | +| **Experts** | Paid work, portfolio, verified contributor status | +| **Operators** | Curated software, trusted experts, business ideas | + +--- + +## Target Users + +### Primary: Operators (Demand Side) + +> "I want to start a SaaS business but don't want to build from scratch." + +- **Demographics:** Entrepreneurs, agency owners, technical founders +- **Geography:** Global, especially emerging markets (India, Brazil, Nigeria) +- **Budget:** $500-5,000 for implementation +- **Goal:** Launch a SaaS product quickly using proven software + +### Secondary: Experts (Supply Side) + +> "I contribute to open source. How do I get paid for my expertise?" + +- **Demographics:** Developers, former educators, Stack Overflow users +- **Skills:** Know specific OSS projects deeply (contributed code) +- **Availability:** Part-time or full-time freelance +- **Goal:** Monetize their open source knowledge + +### Tertiary: Projects (Platform Side) + +> "We want more adoption and potentially revenue from white-label." + +- **Demographics:** OSS maintainers, small teams, VC-backed startups +- **License:** MIT, Apache, BSD, or AGPL with commercial options +- **Goal:** Grow ecosystem, reduce support burden, generate revenue + +--- + +## Success Metrics + +### Phase 1 (MVP - Week 4) + +| Metric | Target | +|--------|--------| +| Projects listed | 50 | +| Weekly visitors | 500 | +| Expert signups | 20 | +| Operator interests | 10 | + +### Phase 2 (Growth - Week 8) + +| Metric | Target | +|--------|--------| +| Projects listed | 100 | +| Weekly visitors | 2,000 | +| Expert signups | 50 | +| Operator interests | 30 | +| First job posted | 1 | + +### Phase 3 (Traction - Week 12) + +| Metric | Target | +|--------|--------| +| Projects listed | 150 | +| Weekly visitors | 10,000 | +| Expert signups | 100 | +| Operator interests | 75 | +| Revenue (sponsorships) | $500/month | + +--- + +## What We're NOT Building + +| Not This | Why | +|----------|-----| +| Another "awesome list" | No curation, no commercial focus | +| GitHub alternative | We link to GitHub, not replace it | +| Hosting provider | We connect to Coolify, Railway, etc. | +| Freelance marketplace (Upwork) | Focused only on OSS implementation | +| VC-backed startup factory | Sustainable, indie-scale business | + +--- + +## The Evolution from Original Projectwise + +| Aspect | Original (2017) | New (2026) | +|--------|-----------------|------------| +| **Problem** | OSS needs design help | OSS needs sustainable business models | +| **Solution** | Connect designers | Connect projects + experts + operators | +| **Audience** | Designers | Entrepreneurs, developers | +| **Model** | Volunteer | Commercial (eventually) | +| **Tech** | React + Express + MongoDB | Next.js + Payload + PostgreSQL | + +--- + +## Long-Term Vision (2-3 Years) + +1. **The Index** — Definitive source for commercial OSS discovery +2. **The Network** — Verified experts for every major project +3. **The Marketplace** — Jobs, revenue sharing, partnerships +4. **The Standard** — "Projectwise Verified" badge for commercial-ready OSS + +--- + +*Last updated: January 2026* diff --git a/docs/02-market-research.md b/docs/02-market-research.md new file mode 100644 index 0000000..3872ed5 --- /dev/null +++ b/docs/02-market-research.md @@ -0,0 +1,374 @@ +# Market Research + +> Summary of research conducted on the open source commercialization landscape. + +--- + +## Table of Contents + +1. [Open Source Market Overview](#open-source-market-overview) +2. [The WordPress Ecosystem Model](#the-wordpress-ecosystem-model) +3. [Competitor Analysis](#competitor-analysis) +4. [Business Models in Open Source](#business-models-in-open-source) +5. [The Maintainer Crisis](#the-maintainer-crisis) +6. [AI's Impact on the Ecosystem](#ais-impact-on-the-ecosystem) +7. [Directory Site Case Study: OpenAlternative](#directory-site-case-study-openalternative) +8. [Key Insights](#key-insights) + +--- + +## Open Source Market Overview + +### Market Size + +| Metric | Value | Source | +|--------|-------|--------| +| Annual value of OSS | **$8.8 trillion** | Harvard Study | +| Organizations using OSS | **96%** increased or maintained use | OSI 2025 | +| SaaS market (2025) | **$300 billion** | Industry estimates | +| SaaS market (2032) | **$1.13 trillion** | Projected | + +### Key Trends + +1. **Open source is mission-critical** — 96% of organizations depend on it +2. **Governance lags adoption** — Most lack frameworks to manage OSS dependency +3. **Security underinvestment** — Companies take more than they give back +4. **Funding innovation** — New models emerging (Open Source Endowment, etc.) + +--- + +## The WordPress Ecosystem Model + +### Why WordPress Matters + +WordPress represents the most successful open source commercialization ever: + +| Metric | Value | +|--------|-------| +| Market share (all websites) | **43.4%** | +| Market share (CMS) | **62.8%** | +| Total websites powered | **518+ million** | +| Ecosystem value | **$596.7 billion** | +| Active plugins | **59,000+** | +| Free themes | **13,000+** | +| Agencies worldwide | **50,000+** | + +### The Layered Ecosystem + +``` +┌─────────────────────────────────────────────────────────────┐ +│ WORDPRESS ECOSYSTEM │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ Layer 1: PLATFORM (Free) │ +│ └── WordPress.org - GPL licensed, free forever │ +│ │ +│ Layer 2: MANAGED HOSTING ($156B+ market) │ +│ └── WP Engine, Kinsta, Flywheel, WordPress.com │ +│ │ +│ Layer 3: AGENCIES (50,000+) │ +│ └── WP VIP Partners, implementation specialists │ +│ │ +│ Layer 4: FREELANCERS │ +│ └── Codeable, Upwork specialists ($20-100/hr) │ +│ │ +│ Layer 5: END CUSTOMERS │ +│ └── Businesses paying $0 to $10,000+ for solutions │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Key Lesson + +WordPress.org (the foundation) didn't build hosting, agencies, or marketplaces. They emerged organically because the platform was: +- Free and open +- Easy to extend +- Had clear documentation +- Built trust over time + +**Our opportunity:** Accelerate this for modern OSS projects. + +--- + +## Competitor Analysis + +### Direct Competitors (Directories) + +| Platform | Focus | Monetization | Gap We Fill | +|----------|-------|--------------|-------------| +| [OpenAlternative](https://openalternative.co) | OSS alternatives to SaaS | Sponsored listings ($3.5k/mo) | No expert network, no commercial focus | +| [awesome-selfhosted](https://github.com/awesome-selfhosted/awesome-selfhosted) | Self-hosted software | None (GitHub list) | No curation, no commercial info | +| [AlternativeTo](https://alternativeto.net) | All software alternatives | Ads | Not OSS-focused, no implementation help | +| [Product Hunt](https://producthunt.com) | All products | Promoted listings | Not OSS-focused | + +### Adjacent Competitors (Expert Networks) + +| Platform | Focus | Model | Gap We Fill | +|----------|-------|-------|-------------| +| [Codeable](https://codeable.io) | WordPress developers | 17.5% commission | Only WordPress | +| [Toptal](https://toptal.com) | Elite freelancers | Premium pricing | Not OSS-specific | +| [Upwork](https://upwork.com) | All freelance | 5-20% commission | No OSS verification | + +### Adjacent Competitors (Hosting/Deployment) + +| Platform | Focus | Model | Gap We Fill | +|----------|-------|-------|-------------| +| [Coolify](https://coolify.io) | Self-hosting PaaS | Free + Cloud tier | No discovery, no experts | +| [Elestio](https://elest.io) | Managed OSS hosting | Per-service fees | No local operators, no revenue share | +| [Railway](https://railway.app) | App deployment | Usage-based | No OSS curation | + +### Adjacent Competitors (Funding) + +| Platform | Focus | Model | Gap We Fill | +|----------|-------|-------|-------------| +| [Open Collective](https://opencollective.com) | OSS funding | 10% of transactions | Donations, not commercial | +| [GitHub Sponsors](https://github.com/sponsors) | Developer funding | Direct donations | No business connection | +| [Tidelift](https://tidelift.com) | Enterprise subscriptions | $100-150/dev/year | B2B only, no individual operators | + +### Competitive Positioning + +``` + COMMERCIAL FOCUS + ▲ + │ + Projectwise ● + │ + Tidelift ● │ ● Codeable + │ + ──────────────────────────┼──────────────────────────► + GENERAL │ SPECIALIZED + │ + OpenAlternative ● │ + │ + awesome-selfhosted ● │ ● Coolify + │ + │ + TECHNICAL FOCUS +``` + +**Our position:** Commercial focus + Specialized (OSS only) + +--- + +## Business Models in Open Source + +### Open Core Model + +Used by: Cal.com, Dub.co, GitLab, Metabase + +``` +┌─────────────────────────────────────┐ +│ OPEN CORE MODEL │ +├─────────────────────────────────────┤ +│ │ +│ Core (99%) Enterprise (1%) │ +│ ─────────── ─────────────── │ +│ AGPL/MIT Commercial │ +│ Self-hostable SSO, SAML │ +│ Full features Multi-tenant │ +│ Community Priority support│ +│ │ +└─────────────────────────────────────┘ +``` + +### Fair Source / Business Source License + +Used by: Sentry, CockroachDB, MariaDB + +- Free for limited use +- Paid for commercial scale +- Converts to open source after time delay (e.g., 3 years) + +### Managed Hosting Model + +Used by: Ghost, Plausible, Umami + +``` +Self-hosted: Free (you run it) +Cloud/Managed: Paid (they run it) +``` + +### Support/Services Model + +Used by: Red Hat, Canonical + +- Software is free +- Pay for support, consulting, training + +### White-Label Model (Emerging) + +Used by: Dittofeed, n8n, Appsmith + +- Core is open source +- Paid license for embedding/white-labeling +- Target: SaaS companies wanting to add features + +**This is our primary focus.** + +--- + +## The Maintainer Crisis + +### Key Statistics + +| Statistic | Source | +|-----------|--------| +| 60% of maintainers are unpaid | ByteIota 2025 | +| 60% have quit or considered quitting | ByteIota 2025 | +| 44% cite burnout as reason | ByteIota 2025 | +| 45% say burnout is #1 challenge | Intel Survey | + +### Notable Burnout Cases (2024-2025) + +| Project | Impact | +|---------|--------| +| Kubernetes Ingress NGINX | Retired, no security patches after March 2026 | +| External Secrets Operator | Down to 1 active maintainer | +| Asahi Linux | Lead developer quit | +| ESLint | Funding crisis, near shutdown | + +### The Core Problem + +> "Money doesn't write code. Money doesn't review pull requests. Companies owe projects both financial resources AND engineering hours." + +### What's Being Tried + +| Solution | Approach | Limitation | +|----------|----------|------------| +| Open Collective | Donations | Not sustainable income | +| GitHub Sponsors | Direct funding | Low adoption | +| Tidelift | Enterprise subscriptions | Only works for big projects | +| Open Source Endowment | Grants up to $250k | Limited reach | + +### Our Angle + +Instead of asking companies to donate, we create a **commercial ecosystem** where: +1. Operators pay experts for implementation +2. Experts become advocates for projects +3. Projects get adoption without support burden +4. Optional: Revenue sharing back to maintainers + +--- + +## AI's Impact on the Ecosystem + +### Design/UI Generation + +| Tool | What It Does | +|------|--------------| +| [v0 by Vercel](https://v0.app) | Text → React/Tailwind components | +| [Figma AI](https://figma.com) | Prompt → Figma designs | +| [Galileo](https://usegalileo.ai) | AI-generated UI screens | + +**Impact:** "Need a designer for OSS" is less relevant. AI can generate UI. + +### Code Generation + +| Tool | Impact | +|------|--------| +| GitHub Copilot | Autocomplete, boilerplate | +| Cursor | AI-native IDE | +| Claude Code | Full implementation assistance | + +**Impact:** Building is easier, but understanding existing codebases still requires human expertise. + +### What AI CAN'T Replace (Yet) + +1. **Domain expertise** — Knowing why a project works a certain way +2. **Integration** — Connecting OSS to specific business contexts +3. **Customization** — Adapting for unique requirements +4. **Trust** — Verified humans for critical deployments + +**Our opportunity:** The "last mile" of OSS implementation still needs humans. + +--- + +## Directory Site Case Study: OpenAlternative + +### Background + +- **Founder:** Piotr Kulpinski +- **Launched:** 2024 +- **Built in:** 48 hours +- **Stack:** Astro → Next.js, Cloudflare + +### Growth Metrics + +| Metric | Value | +|--------|-------| +| Week 1 visitors | 100,000 | +| Product Hunt | 3rd place, 500+ upvotes | +| Hacker News | #1 for several hours | +| Current monthly visitors | 70,000 | +| Current monthly revenue | $3,000-3,500 | +| MRR from featured listings | $1,200 | +| Total visitors (2025) | 1M+ | + +### What Worked + +1. **Programmatic SEO** — Generated pages from Airtable data (categories, tags) +2. **Simple MVP** — No search/filtering initially, just listings +3. **Free hosting** — Cloudflare static site ($0/month) +4. **Consistency** — Daily updates, automation +5. **Community launch** — Product Hunt + HN on same day + +### Key Quote + +> "The best competitive advantage is consistency and showing up every day. With AI capable of cloning any website within minutes, the only way to maintain an edge is by being persistent." + +### What We Learn + +- Start simple (48 hours to MVP) +- Programmatic SEO works +- Featured listings = revenue +- Community launch matters +- Consistency > perfection + +--- + +## Key Insights + +### 1. The Market is Validated + +- WordPress proves the model ($600B ecosystem) +- OpenAlternative proves demand (1M+ visitors) +- Maintainer crisis proves the need + +### 2. The Gap is Real + +No platform currently: +- Focuses on **commercial** OSS +- Connects **experts** with **operators** +- Provides **business ideas** for each project +- Offers **verified** contributor status + +### 3. Timing is Right + +- AI disruption creating displaced experts +- Maintainer burnout at crisis levels +- "Build in public" culture normalized +- Remote work enables global operators + +### 4. Distribution Strategy is Key + +With 500 followers, we can't rely on audience. We must: +- Get projects to share (borrowed audience) +- Build SEO moat (programmatic pages) +- Be consistent (daily content) +- Provide genuine value first + +--- + +## Sources + +- [WordPress Economy Study - WP Engine](https://wpengine.com/resources/value-of-wordpress-worlds-first-study-of-wordpress-economy/) +- [WordPress Market Share 2025 - ThemeHunk](https://themehunk.com/wordpress-market-share/) +- [Open Source Maintainer Crisis - ByteIota](https://byteiota.com/open-source-maintainer-crisis-60-unpaid-burnout-hits-44/) +- [OpenAlternative Launch - Piotr Kulpinski](https://kulpinski.dev/posts/openalternative-launch/) +- [Headless CMS Comparison](https://www.glukhov.org/post/2025/11/headless-cms-comparison-strapi-directus-payload/) +- [Payload CMS 3.0 Announcement](https://payloadcms.com/posts/blog/payload-30-the-first-cms-that-installs-directly-into-any-nextjs-app) +- [Dittofeed - YC](https://www.ycombinator.com/companies/dittofeed) + +--- + +*Last updated: January 2026* diff --git a/docs/03-architecture.md b/docs/03-architecture.md new file mode 100644 index 0000000..50974ff --- /dev/null +++ b/docs/03-architecture.md @@ -0,0 +1,839 @@ +# Architecture & Tech Stack + +> Technical architecture for Projectwise — a Next.js 15 + Payload CMS 3.0 application. + +--- + +## Table of Contents + +1. [Architecture Overview](#architecture-overview) +2. [Tech Stack](#tech-stack) +3. [Project Structure](#project-structure) +4. [Data Models](#data-models) +5. [API Design](#api-design) +6. [Authentication](#authentication) +7. [Deployment](#deployment) +8. [External Integrations](#external-integrations) + +--- + +## Architecture Overview + +### Single-App Architecture + +Payload CMS 3.0 installs directly into Next.js, eliminating the need for separate frontend/backend repos. + +``` +┌─────────────────────────────────────────────────────────────────────┐ +│ PROJECTWISE ARCHITECTURE │ +├─────────────────────────────────────────────────────────────────────┤ +│ │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ NEXT.JS 15 APP │ │ +│ ├─────────────────────────────────────────────────────────────┤ │ +│ │ │ │ +│ │ /app │ │ +│ │ ├── (frontend)/ # Public pages (SSR/SSG) │ │ +│ │ │ ├── / # Homepage │ │ +│ │ │ ├── /projects # Project listings │ │ +│ │ │ ├── /experts # Expert profiles │ │ +│ │ │ ├── /ideas # Business ideas │ │ +│ │ │ └── /category # Category pages │ │ +│ │ │ │ │ +│ │ └── (payload)/ # CMS (admin + API) │ │ +│ │ ├── /admin # Admin panel │ │ +│ │ └── /api # REST + GraphQL │ │ +│ │ │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ PAYLOAD CMS 3.0 │ │ +│ ├─────────────────────────────────────────────────────────────┤ │ +│ │ Collections: Projects, Categories, Experts, Ideas, Users │ │ +│ │ Globals: Site Settings, Featured Projects │ │ +│ │ Auth: Built-in JWT + OAuth │ │ +│ │ Media: Image/file handling │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ POSTGRESQL (Neon) │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +### Why Single-App? + +| Benefit | Description | +|---------|-------------| +| **Simpler deployment** | One Vercel project | +| **No CORS issues** | Frontend and API same origin | +| **Shared types** | TypeScript types across app | +| **Local API** | No HTTP overhead for internal calls | +| **Faster development** | Single codebase to manage | + +--- + +## Tech Stack + +### Core Framework + +| Layer | Technology | Version | Purpose | +|-------|------------|---------|---------| +| **Framework** | Next.js | 15.x | React framework with App Router | +| **CMS** | Payload CMS | 3.x | Headless CMS, admin panel | +| **Language** | TypeScript | 5.x | Type safety | +| **Runtime** | Node.js | 20.x LTS | Server runtime | + +### Frontend + +| Layer | Technology | Purpose | +|-------|------------|---------| +| **Styling** | Tailwind CSS 4 | Utility-first CSS | +| **Components** | shadcn/ui | Pre-built accessible components | +| **Icons** | Lucide React | Icon library | +| **Forms** | React Hook Form + Zod | Form handling + validation | +| **Data Fetching** | TanStack Query | Server state management | + +### Backend/CMS + +| Layer | Technology | Purpose | +|-------|------------|---------| +| **CMS** | Payload CMS 3.0 | Content management | +| **Database** | PostgreSQL | Primary data store | +| **ORM** | Drizzle (via Payload) | Database queries | +| **Auth** | Payload Auth + Auth.js | Authentication | +| **Media** | Vercel Blob / Cloudinary | Image storage | + +### Infrastructure + +| Service | Provider | Tier | +|---------|----------|------| +| **Hosting** | Vercel | Free | +| **Database** | Neon PostgreSQL | Free (0.5GB) | +| **Media Storage** | Vercel Blob | Free (1GB) | +| **Domain** | Cloudflare | ~$10/year | +| **Analytics** | Plausible (self-hosted) | Free | + +### Development Tools + +| Tool | Purpose | +|------|---------| +| **Package Manager** | pnpm | Fast, disk-efficient | +| **Linting** | ESLint + Prettier | Code quality | +| **Testing** | Vitest + Playwright | Unit + E2E tests | +| **Git Hooks** | Husky + lint-staged | Pre-commit checks | + +--- + +## Project Structure + +``` +projectwise/ +├── app/ +│ ├── (frontend)/ # Public routes (route group) +│ │ ├── page.tsx # Homepage +│ │ ├── layout.tsx # Frontend layout +│ │ ├── projects/ +│ │ │ ├── page.tsx # /projects - listing +│ │ │ └── [slug]/ +│ │ │ ├── page.tsx # /projects/[slug] - detail +│ │ │ └── ideas/ +│ │ │ └── page.tsx # /projects/[slug]/ideas +│ │ ├── category/ +│ │ │ └── [slug]/ +│ │ │ └── page.tsx # /category/[slug] +│ │ ├── alternative/ +│ │ │ └── [slug]/ +│ │ │ └── page.tsx # /alternative/[slug] +│ │ ├── experts/ +│ │ │ ├── page.tsx # /experts - listing +│ │ │ ├── join/ +│ │ │ │ └── page.tsx # /experts/join - signup form +│ │ │ └── [username]/ +│ │ │ └── page.tsx # /experts/[username] - profile +│ │ ├── ideas/ +│ │ │ ├── page.tsx # /ideas - all ideas +│ │ │ ├── country/ +│ │ │ │ └── [country]/ +│ │ │ │ └── page.tsx # /ideas/country/[country] +│ │ │ └── industry/ +│ │ │ └── [industry]/ +│ │ │ └── page.tsx # /ideas/industry/[industry] +│ │ ├── submit/ +│ │ │ └── page.tsx # /submit - project submission +│ │ └── about/ +│ │ └── page.tsx # /about +│ │ +│ ├── (payload)/ # Payload routes (route group) +│ │ ├── admin/ +│ │ │ └── [[...segments]]/ +│ │ │ └── page.tsx # /admin - CMS admin panel +│ │ └── api/ +│ │ └── [...slug]/ +│ │ └── route.ts # /api/* - REST API +│ │ +│ ├── layout.tsx # Root layout +│ └── globals.css # Global styles +│ +├── payload/ +│ ├── collections/ +│ │ ├── Projects.ts # Projects collection +│ │ ├── Categories.ts # Categories collection +│ │ ├── Experts.ts # Experts collection +│ │ ├── Ideas.ts # Business ideas collection +│ │ ├── Contributors.ts # GitHub contributors +│ │ ├── Jobs.ts # Job postings (V3) +│ │ ├── Interests.ts # Waitlist signups +│ │ └── Users.ts # Admin users +│ ├── globals/ +│ │ ├── Settings.ts # Site-wide settings +│ │ └── Featured.ts # Featured projects +│ ├── hooks/ # Payload hooks +│ │ └── syncGitHub.ts # Sync GitHub stats +│ └── payload.config.ts # Main Payload config +│ +├── components/ +│ ├── ui/ # shadcn/ui components +│ ├── projects/ +│ │ ├── ProjectCard.tsx +│ │ ├── ProjectGrid.tsx +│ │ └── ProjectDetail.tsx +│ ├── experts/ +│ │ ├── ExpertCard.tsx +│ │ └── ExpertProfile.tsx +│ ├── ideas/ +│ │ ├── IdeaCard.tsx +│ │ └── IdeaList.tsx +│ ├── forms/ +│ │ ├── ExpertSignupForm.tsx +│ │ ├── OperatorInterestForm.tsx +│ │ └── ProjectSubmitForm.tsx +│ └── layout/ +│ ├── Header.tsx +│ ├── Footer.tsx +│ └── Sidebar.tsx +│ +├── lib/ +│ ├── payload.ts # Payload client +│ ├── github.ts # GitHub API helpers +│ ├── utils.ts # General utilities +│ └── constants.ts # App constants +│ +├── public/ +│ ├── images/ +│ └── fonts/ +│ +├── docs/ # Documentation (this folder) +│ +├── .env.example +├── .env.local +├── next.config.js +├── payload.config.ts +├── tailwind.config.ts +├── tsconfig.json +└── package.json +``` + +--- + +## Data Models + +### Projects Collection + +```typescript +// payload/collections/Projects.ts +import { CollectionConfig } from 'payload' + +export const Projects: CollectionConfig = { + slug: 'projects', + admin: { + useAsTitle: 'name', + defaultColumns: ['name', 'tier', 'status', 'stars'], + }, + fields: [ + // Basic Info + { name: 'name', type: 'text', required: true }, + { name: 'slug', type: 'text', required: true, unique: true }, + { name: 'tagline', type: 'text', required: true, maxLength: 150 }, + { name: 'description', type: 'richText', required: true }, + { name: 'logo', type: 'upload', relationTo: 'media' }, + { name: 'screenshot', type: 'upload', relationTo: 'media' }, + + // Links + { name: 'website_url', type: 'text', required: true }, + { name: 'github_url', type: 'text', required: true }, + { name: 'docs_url', type: 'text' }, + { name: 'demo_url', type: 'text' }, + + // Classification + { + name: 'categories', + type: 'relationship', + relationTo: 'categories', + hasMany: true, + required: true, + }, + { + name: 'alternatives_to', + type: 'array', + fields: [{ name: 'name', type: 'text' }], + }, + + // License + { + name: 'license', + type: 'select', + options: [ + { label: 'MIT', value: 'MIT' }, + { label: 'Apache 2.0', value: 'Apache-2.0' }, + { label: 'BSD 3-Clause', value: 'BSD-3-Clause' }, + { label: 'AGPL 3.0', value: 'AGPL-3.0' }, + { label: 'GPL 3.0', value: 'GPL-3.0' }, + { label: 'ISC', value: 'ISC' }, + { label: 'MPL 2.0', value: 'MPL-2.0' }, + { label: 'Other', value: 'Other' }, + ], + required: true, + }, + { name: 'license_url', type: 'text' }, + + // Commercial Readiness + { + name: 'tier', + type: 'select', + options: [ + { label: 'Tier 1: Reseller-Ready', value: '1' }, + { label: 'Tier 2: Operator-Friendly', value: '2' }, + { label: 'Tier 3: Technically Possible', value: '3' }, + ], + required: true, + }, + { name: 'has_white_label', type: 'checkbox', defaultValue: false }, + { name: 'has_multi_tenancy', type: 'checkbox', defaultValue: false }, + { name: 'has_official_support', type: 'checkbox', defaultValue: false }, + { name: 'has_cloud_version', type: 'checkbox', defaultValue: false }, + { name: 'pricing_url', type: 'text' }, + + // Deployment + { + name: 'deploy_options', + type: 'group', + fields: [ + { name: 'docker', type: 'checkbox', defaultValue: false }, + { name: 'docker_url', type: 'text' }, + { name: 'coolify', type: 'checkbox', defaultValue: false }, + { name: 'coolify_url', type: 'text' }, + { name: 'railway', type: 'checkbox', defaultValue: false }, + { name: 'railway_url', type: 'text' }, + { name: 'elestio', type: 'checkbox', defaultValue: false }, + { name: 'elestio_url', type: 'text' }, + ], + }, + { name: 'estimated_hosting_cost', type: 'text' }, + + // GitHub Stats (auto-synced) + { + name: 'github_stats', + type: 'group', + admin: { readOnly: true }, + fields: [ + { name: 'stars', type: 'number', defaultValue: 0 }, + { name: 'forks', type: 'number', defaultValue: 0 }, + { name: 'open_issues', type: 'number', defaultValue: 0 }, + { name: 'last_commit', type: 'date' }, + { name: 'language', type: 'text' }, + { name: 'contributors_count', type: 'number', defaultValue: 0 }, + ], + }, + + // Contributors + { + name: 'contributors', + type: 'relationship', + relationTo: 'contributors', + hasMany: true, + }, + + // Metadata + { name: 'featured', type: 'checkbox', defaultValue: false }, + { + name: 'status', + type: 'select', + options: [ + { label: 'Draft', value: 'draft' }, + { label: 'Published', value: 'published' }, + { label: 'Archived', value: 'archived' }, + ], + defaultValue: 'draft', + required: true, + }, + ], +} +``` + +### Categories Collection + +```typescript +// payload/collections/Categories.ts +export const Categories: CollectionConfig = { + slug: 'categories', + admin: { useAsTitle: 'name' }, + fields: [ + { name: 'name', type: 'text', required: true }, + { name: 'slug', type: 'text', required: true, unique: true }, + { name: 'description', type: 'textarea' }, + { name: 'icon', type: 'text' }, // Lucide icon name + { + name: 'projects_count', + type: 'number', + admin: { readOnly: true }, + defaultValue: 0, + }, + ], +} +``` + +### Ideas Collection + +```typescript +// payload/collections/Ideas.ts +export const Ideas: CollectionConfig = { + slug: 'ideas', + admin: { useAsTitle: 'title' }, + fields: [ + { name: 'title', type: 'text', required: true }, + { name: 'slug', type: 'text', required: true, unique: true }, + { name: 'description', type: 'richText', required: true }, + + // Linked project + { + name: 'project', + type: 'relationship', + relationTo: 'projects', + required: true, + }, + + // Market analysis + { name: 'target_market', type: 'text', required: true }, + { name: 'market_size', type: 'text' }, + { name: 'why_now', type: 'textarea', required: true }, + + // Execution + { name: 'suggested_pricing', type: 'text', required: true }, + { name: 'revenue_potential', type: 'text' }, + { + name: 'difficulty', + type: 'select', + options: [ + { label: 'Easy', value: 'easy' }, + { label: 'Medium', value: 'medium' }, + { label: 'Hard', value: 'hard' }, + ], + required: true, + }, + { name: 'time_to_launch', type: 'text' }, + + // Geographic + { + name: 'countries', + type: 'array', + fields: [{ name: 'country', type: 'text' }], + }, + { name: 'country_reasons', type: 'textarea' }, + + // Validation + { name: 'search_volume', type: 'number' }, + { name: 'competitor_count', type: 'number' }, + { + name: 'proof_signals', + type: 'array', + fields: [{ name: 'signal', type: 'text' }], + }, + + // SEO + { + name: 'keywords', + type: 'array', + fields: [{ name: 'keyword', type: 'text' }], + }, + + // Status + { + name: 'status', + type: 'select', + options: [ + { label: 'Draft', value: 'draft' }, + { label: 'Published', value: 'published' }, + ], + defaultValue: 'draft', + }, + ], +} +``` + +### Experts Collection + +```typescript +// payload/collections/Experts.ts +export const Experts: CollectionConfig = { + slug: 'experts', + auth: true, // Enables authentication for this collection + admin: { useAsTitle: 'name' }, + fields: [ + { name: 'name', type: 'text', required: true }, + { name: 'avatar', type: 'upload', relationTo: 'media' }, + { name: 'bio', type: 'textarea' }, + + // Links + { name: 'github_url', type: 'text', required: true }, + { name: 'linkedin_url', type: 'text' }, + { name: 'website_url', type: 'text' }, + { name: 'calendly_url', type: 'text' }, + + // Expertise + { + name: 'projects_expertise', + type: 'relationship', + relationTo: 'projects', + hasMany: true, + }, + { + name: 'experience_level', + type: 'select', + options: [ + { label: 'Contributor', value: 'contributor' }, + { label: 'Expert', value: 'expert' }, + { label: 'Maintainer', value: 'maintainer' }, + ], + }, + + // Availability + { + name: 'status', + type: 'select', + options: [ + { label: 'Available', value: 'available' }, + { label: 'Busy', value: 'busy' }, + { label: 'Not Available', value: 'not_available' }, + ], + defaultValue: 'available', + }, + { name: 'hourly_rate', type: 'number' }, + { name: 'location', type: 'text' }, + { name: 'timezone', type: 'text' }, + { + name: 'languages', + type: 'array', + fields: [{ name: 'language', type: 'text' }], + }, + + // Verification + { name: 'verified_contributor', type: 'checkbox', defaultValue: false }, + { name: 'verified_at', type: 'date' }, + + // Stats + { name: 'implementations_count', type: 'number', defaultValue: 0 }, + + // Approval + { + name: 'approval_status', + type: 'select', + options: [ + { label: 'Pending', value: 'pending' }, + { label: 'Approved', value: 'approved' }, + { label: 'Rejected', value: 'rejected' }, + ], + defaultValue: 'pending', + }, + ], +} +``` + +### Interest Forms Collection + +```typescript +// payload/collections/Interests.ts +export const Interests: CollectionConfig = { + slug: 'interests', + admin: { useAsTitle: 'email' }, + fields: [ + { + name: 'type', + type: 'select', + options: [ + { label: 'Expert', value: 'expert' }, + { label: 'Operator', value: 'operator' }, + { label: 'Project', value: 'project' }, + ], + required: true, + }, + { name: 'name', type: 'text', required: true }, + { name: 'email', type: 'email', required: true }, + { name: 'github_username', type: 'text' }, + { name: 'company', type: 'text' }, + { name: 'project_interested', type: 'text' }, + { name: 'location', type: 'text' }, + { name: 'message', type: 'textarea' }, + { + name: 'status', + type: 'select', + options: [ + { label: 'New', value: 'new' }, + { label: 'Contacted', value: 'contacted' }, + { label: 'Converted', value: 'converted' }, + { label: 'Declined', value: 'declined' }, + ], + defaultValue: 'new', + }, + ], +} +``` + +--- + +## API Design + +### REST API (Auto-generated by Payload) + +| Endpoint | Method | Description | +|----------|--------|-------------| +| `/api/projects` | GET | List all projects | +| `/api/projects/:id` | GET | Get single project | +| `/api/projects` | POST | Create project (admin) | +| `/api/categories` | GET | List all categories | +| `/api/experts` | GET | List approved experts | +| `/api/ideas` | GET | List all ideas | +| `/api/interests` | POST | Submit interest form | + +### GraphQL (Also auto-generated) + +```graphql +query GetProject($slug: String!) { + Projects(where: { slug: { equals: $slug } }) { + docs { + name + tagline + description + categories { + name + slug + } + github_stats { + stars + forks + } + contributors { + github_username + avatar_url + } + } + } +} +``` + +--- + +## Authentication + +### Payload Built-in Auth + +```typescript +// payload.config.ts +export default buildConfig({ + collections: [ + { + slug: 'users', + auth: { + tokenExpiration: 7200, // 2 hours + verify: true, + maxLoginAttempts: 5, + lockTime: 600000, // 10 minutes + }, + fields: [ + { + name: 'role', + type: 'select', + options: ['admin', 'editor'], + required: true, + defaultValue: 'editor', + }, + ], + }, + ], +}) +``` + +### GitHub OAuth (V2+) + +```typescript +// Using Auth.js plugin for Payload +import { authPlugin } from 'payload-authjs' +import GitHub from '@auth/core/providers/github' + +export default buildConfig({ + plugins: [ + authPlugin({ + providers: [ + GitHub({ + clientId: process.env.GITHUB_ID, + clientSecret: process.env.GITHUB_SECRET, + }), + ], + }), + ], +}) +``` + +--- + +## Deployment + +### Vercel Configuration + +```javascript +// next.config.js +/** @type {import('next').NextConfig} */ +const nextConfig = { + experimental: { + reactCompiler: true, + }, + images: { + remotePatterns: [ + { hostname: 'avatars.githubusercontent.com' }, + { hostname: 'github.com' }, + ], + }, +} + +export default nextConfig +``` + +### Environment Variables + +```bash +# .env.example + +# Database +DATABASE_URI=postgresql://... + +# Payload +PAYLOAD_SECRET=your-secret-key + +# GitHub OAuth (V2+) +GITHUB_ID=your-github-client-id +GITHUB_SECRET=your-github-client-secret + +# GitHub API (for stats sync) +GITHUB_TOKEN=your-github-token + +# Media storage +BLOB_READ_WRITE_TOKEN=your-vercel-blob-token + +# Analytics +NEXT_PUBLIC_PLAUSIBLE_DOMAIN=projectwise.io +``` + +### Deployment Checklist + +- [ ] Create Vercel project +- [ ] Add Neon PostgreSQL integration +- [ ] Configure environment variables +- [ ] Enable Vercel Blob storage +- [ ] Set up custom domain (projectwise.io) +- [ ] Configure Cloudflare DNS + +--- + +## External Integrations + +### GitHub API + +Purpose: Sync stars, forks, contributors for each project + +```typescript +// lib/github.ts +export async function getRepoStats(owner: string, repo: string) { + const response = await fetch( + `https://api.github.com/repos/${owner}/${repo}`, + { + headers: { + Authorization: `Bearer ${process.env.GITHUB_TOKEN}`, + }, + } + ) + return response.json() +} + +export async function getContributors(owner: string, repo: string) { + const response = await fetch( + `https://api.github.com/repos/${owner}/${repo}/contributors`, + { + headers: { + Authorization: `Bearer ${process.env.GITHUB_TOKEN}`, + }, + } + ) + return response.json() +} +``` + +### Screenshot API (V2+) + +Purpose: Auto-capture landing page screenshots + +```typescript +// lib/screenshot.ts +export async function captureScreenshot(url: string): Promise { + const apiKey = process.env.SCREENSHOTONE_API_KEY + const screenshotUrl = `https://api.screenshotone.com/take?url=${encodeURIComponent(url)}&viewport_width=1280&viewport_height=800&format=webp&access_key=${apiKey}` + + const response = await fetch(screenshotUrl) + const blob = await response.blob() + + // Upload to Vercel Blob + const { url: blobUrl } = await put(`screenshots/${Date.now()}.webp`, blob, { + access: 'public', + }) + + return blobUrl +} +``` + +--- + +## Performance Considerations + +### Static Generation + +Use `generateStaticParams` for project/category pages: + +```typescript +// app/(frontend)/projects/[slug]/page.tsx +export async function generateStaticParams() { + const payload = await getPayloadClient() + const projects = await payload.find({ + collection: 'projects', + where: { status: { equals: 'published' } }, + }) + + return projects.docs.map((project) => ({ + slug: project.slug, + })) +} +``` + +### Caching Strategy + +| Data | Cache Duration | Revalidation | +|------|----------------|--------------| +| Project listings | 1 hour | On-demand | +| Project detail | 1 hour | On-demand | +| GitHub stats | 6 hours | Cron job | +| Categories | 24 hours | On-demand | + +--- + +*Last updated: January 2026* diff --git a/docs/04-roadmap.md b/docs/04-roadmap.md new file mode 100644 index 0000000..77a35d9 --- /dev/null +++ b/docs/04-roadmap.md @@ -0,0 +1,363 @@ +# Product Roadmap + +> Phased approach to building Projectwise, from MVP to full marketplace. + +--- + +## Overview + +| Phase | Focus | Duration | Key Deliverable | +|-------|-------|----------|-----------------| +| **V1** | MVP Directory | Week 1-2 | Static project listings | +| **V2** | Contributors + Forms | Week 3-4 | Interest capture | +| **V3** | Ideas Feature | Week 5-6 | Business ideas per project | +| **V4** | Launch Campaign | Week 7-8 | Public launch, 50 projects | + +--- + +## V1: MVP Directory + +> **Goal:** Get something live. Validate interest with minimal effort. + +### Deliverables + +| Feature | Priority | Description | +|---------|----------|-------------| +| Project listings | P0 | 20 curated commercial-ready OSS projects | +| Category pages | P0 | Analytics, CRM, CMS, etc. | +| Project detail pages | P0 | Name, description, license, links, tier | +| Basic search | P1 | Filter by category, tier | +| Responsive design | P1 | Mobile-friendly | + +### Technical Tasks + +``` +Week 1: +├── Set up Next.js 15 + Payload CMS 3.0 +├── Configure PostgreSQL (Neon) +├── Deploy to Vercel +├── Create Payload collections (Projects, Categories) +└── Build basic UI components + +Week 2: +├── Add 20 seed projects +├── Create category pages +├── Add project detail pages +├── Implement basic filtering +└── Launch V1 (soft launch) +``` + +### Data Model (V1) + +```typescript +// Projects collection (minimal) +{ + name: string; + slug: string; + tagline: string; + description: richText; + logo: upload; + category: relationship; + tier: select; // Tier 1, 2, or 3 + license: string; + githubUrl: string; + websiteUrl: string; + selfHostable: boolean; + whiteLabelReady: boolean; + featured: boolean; +} + +// Categories collection +{ + name: string; + slug: string; + description: string; + icon: string; +} +``` + +### Success Criteria + +- [ ] 20 projects listed +- [ ] Site loads in < 2 seconds +- [ ] All pages indexed by Google +- [ ] 100 organic visitors in first week + +--- + +## V2: Contributors + Forms + +> **Goal:** Capture interest from experts and operators. Validate demand. + +### Deliverables + +| Feature | Priority | Description | +|---------|----------|-------------| +| Expert interest form | P0 | "I can help with this project" | +| Operator interest form | P0 | "I want to run this as SaaS" | +| AI Setup Prompts | P1 | Copy-paste prompts for Claude Code/Cursor/Codex ([details](./07-new-features.md#feature-a-ai-setup-prompts)) | +| Contributor badges | P1 | Show GitHub contributors on projects | +| Email capture | P1 | Newsletter signup | +| Admin dashboard | P1 | View submissions in Payload | + +### Technical Tasks + +``` +Week 3: +├── Add Experts collection (interest form) +├── Add Interests collection (operator form) +├── Integrate GitHub API for contributors +├── Build form UI components +└── Set up email notifications + +Week 4: +├── Add newsletter signup (ConvertKit/Buttondown) +├── Create admin views in Payload +├── Add contributor badges to project pages +├── Implement form validation +└── Launch V2 +``` + +### Data Model (V2 additions) + +```typescript +// Experts collection +{ + name: string; + email: string; + githubUsername: string; + projects: relationship[]; // Projects they can help with + skills: array; + rate: number; // $/hour (optional) + availability: select; + portfolio: string; + status: select; // pending, verified, rejected +} + +// Interests collection +{ + email: string; + name: string; + project: relationship; + type: select; // 'expert' or 'operator' + message: text; + budget: select; // $500-1k, $1k-5k, $5k+ + timeline: select; + createdAt: date; +} +``` + +### Success Criteria + +- [ ] 20 expert signups +- [ ] 10 operator interest submissions +- [ ] 50 newsletter subscribers +- [ ] At least 1 "match" (expert <-> operator) + +--- + +## V3: Ideas Feature + +> **Goal:** Add business ideas for each project. Increase engagement and SEO. + +### Deliverables + +| Feature | Priority | Description | +|---------|----------|-------------| +| Ideas collection | P0 | 3-5 business ideas per project | +| Ideas on project pages | P0 | Display ideas with details | +| Project Showcase | P0 | "Built with" gallery per project ([details](./07-new-features.md#feature-b-project-showcase)) | +| Stacks & Interlinking | P1 | Curated OSS stacks + project relationships ([details](./07-new-features.md#feature-c-stacks--interlinking)) | +| Dedicated ideas pages | P1 | /ideas, /ideas/[slug] | +| Target market tags | P1 | Countries, industries | +| Pricing suggestions | P1 | Suggested pricing tiers | + +### Technical Tasks + +``` +Week 5: +├── Add Ideas collection to Payload +├── Create idea detail pages +├── Add ideas section to project pages +├── Build ideas index page +└── Add country/market targeting + +Week 6: +├── Add 100 ideas (3-5 per project) +├── Create programmatic SEO pages +├── Add related ideas suggestions +├── Implement idea filtering +└── Launch V3 +``` + +### Data Model (V3 additions) + +```typescript +// Ideas collection +{ + title: string; + slug: string; + project: relationship; + description: richText; + targetMarket: array; // Countries, industries + suggestedPricing: group { + starter: number; + professional: number; + enterprise: number; + }; + competitors: array; // SaaS alternatives + difficulty: select; // Easy, Medium, Hard + potentialMRR: string; // "$1k-5k", "$5k-20k", etc. + requirements: array; // Technical requirements +} +``` + +### Success Criteria + +- [ ] 100 business ideas published +- [ ] Ideas pages ranking for long-tail keywords +- [ ] 5+ idea submissions from community +- [ ] Increased time on site (> 2 minutes avg) + +--- + +## V4: Launch Campaign + +> **Goal:** Public launch. Drive traffic. Generate buzz. + +### Deliverables + +| Feature | Priority | Description | +|---------|----------|-------------| +| 50 projects | P0 | Minimum for launch | +| Product Hunt launch | P0 | Coordinated launch | +| Hacker News post | P0 | "Show HN" submission | +| Twitter thread | P1 | Build in public recap | +| Featured listings | P2 | Sponsored placements (future revenue) | + +### Launch Tasks + +``` +Week 7 (Preparation): +├── Reach 50 projects +├── Write Product Hunt copy +├── Create launch graphics +├── Email projects for cross-promotion +├── Prepare Twitter thread +└── Line up "hunters" for PH + +Week 8 (Launch): +├── Monday: Soft launch to newsletter +├── Tuesday: Product Hunt launch +├── Wednesday: Hacker News "Show HN" +├── Thursday: Twitter thread recap +├── Friday: Reach out to tech newsletters +└── Weekend: Respond to feedback +``` + +### Success Criteria + +- [ ] Product Hunt: Top 10 of the day +- [ ] Hacker News: Front page (even briefly) +- [ ] 10,000 visitors in launch week +- [ ] 100 newsletter subscribers +- [ ] Media coverage (1+ article) + +--- + +## Future Phases (Post-Launch) + +### V5: Marketplace Foundations (Week 9-12) + +| Feature | Description | +|---------|-------------| +| Expert profiles | Public pages for verified experts | +| Project claiming | Maintainers claim their projects | +| Job board | Post implementation jobs | +| Reviews/ratings | Expert reviews from operators | + +### V6: Monetization (Month 3+) + +| Revenue Stream | Model | +|----------------|-------| +| Featured listings | $200-500/month per project | +| Expert verification | $50/year badge | +| Job posting fees | 10% of job value | +| White-label referrals | Affiliate commissions | + +### V7: Platform Features (Month 6+) + +| Feature | Description | +|---------|-------------| +| Escrow payments | Secure transactions | +| Project analytics | Track adoption metrics | +| Revenue sharing | Automatic splits to maintainers | +| API access | For integrations | + +--- + +## Technical Milestones + +### Infrastructure + +| Milestone | Target | Status | +|-----------|--------|--------| +| Next.js 15 + Payload 3.0 setup | Week 1 | Pending | +| PostgreSQL on Neon | Week 1 | Pending | +| Vercel deployment | Week 1 | Pending | +| Custom domain (projectwise.io) | Week 2 | Pending | +| Email setup (Resend/Postmark) | Week 3 | Pending | +| Analytics (Plausible/Umami) | Week 2 | Pending | + +### Performance Targets + +| Metric | Target | +|--------|--------| +| Lighthouse score | > 90 | +| Time to First Byte | < 200ms | +| Largest Contentful Paint | < 2.5s | +| Core Web Vitals | All green | + +--- + +## Risk Mitigation + +| Risk | Mitigation | +|------|------------| +| Low traffic at launch | Focus on SEO, borrowed audience | +| No expert signups | Personally reach out to contributors | +| No operator interest | Add more business ideas, target keywords | +| Competition copies us | Move fast, build community | +| Maintainer pushback | Always ask permission, give credit | + +--- + +## Weekly Checklist Template + +```markdown +## Week [X] Checklist + +### Development +- [ ] Feature 1 +- [ ] Feature 2 +- [ ] Bug fixes + +### Content +- [ ] Add X new projects +- [ ] Write X business ideas +- [ ] Create X SEO pages + +### Marketing +- [ ] Daily tweet +- [ ] Weekly newsletter +- [ ] Outreach to X projects + +### Metrics +- [ ] Visitors: ___ +- [ ] Signups: ___ +- [ ] Projects listed: ___ +``` + +--- + +*Last updated: January 2026* diff --git a/docs/05-content-strategy.md b/docs/05-content-strategy.md new file mode 100644 index 0000000..e4065d9 --- /dev/null +++ b/docs/05-content-strategy.md @@ -0,0 +1,490 @@ +# Content & Launch Strategy + +> How we'll grow Projectwise with limited audience through SEO, borrowed audiences, and consistent content. + +--- + +## Table of Contents + +1. [The Challenge](#the-challenge) +2. [SEO Strategy](#seo-strategy) +3. [Programmatic Pages](#programmatic-pages) +4. [Social Media Strategy](#social-media-strategy) +5. [Build in Public](#build-in-public) +6. [Launch Playbook](#launch-playbook) +7. [Content Calendar](#content-calendar) +8. [Outreach Strategy](#outreach-strategy) + +--- + +## The Challenge + +### Starting Position + +| Asset | Current State | +|-------|---------------| +| Twitter followers | ~500 | +| Email list | 0 | +| Domain authority | 0 (new domain) | +| Budget for ads | $0 | + +### What This Means + +We cannot rely on existing audience. We must: +1. **Borrow audiences** — Get projects to share when featured +2. **Build SEO moat** — Programmatic pages for long-tail keywords +3. **Be consistent** — Daily content compounds over time +4. **Provide value first** — Earn attention through usefulness + +--- + +## SEO Strategy + +### Target Keywords + +#### Primary Keywords (High Intent) + +| Keyword | Volume | Difficulty | Intent | +|---------|--------|------------|--------| +| open source saas alternatives | Medium | Medium | Commercial | +| white label software | Medium | High | Commercial | +| self hosted [category] | High | Medium | Technical | +| open source [product] alternative | Medium | Low | Commercial | + +#### Long-Tail Keywords (Low Competition) + +| Pattern | Example | +|---------|---------| +| "best open source [category] 2026" | "best open source crm 2026" | +| "[product] self hosted alternative" | "mailchimp self hosted alternative" | +| "open source [product] vs [competitor]" | "cal.com vs calendly" | +| "how to start a [category] saas" | "how to start an analytics saas" | +| "[country] saas market" | "india saas market opportunities" | + +### On-Page SEO Checklist + +```markdown +Every page should have: +- [ ] Unique title tag (< 60 chars) +- [ ] Meta description (< 160 chars) +- [ ] H1 matching search intent +- [ ] Internal links to related pages +- [ ] External links to authoritative sources +- [ ] Schema markup (Product, Organization) +- [ ] Open Graph tags for social sharing +- [ ] Alt text on all images +``` + +### Technical SEO + +| Requirement | Implementation | +|-------------|----------------| +| Sitemap | Auto-generated via Next.js | +| Robots.txt | Allow all, block admin | +| Canonical URLs | Self-referencing canonicals | +| Page speed | Target > 90 Lighthouse | +| Mobile-first | Responsive design | +| HTTPS | Enforced via Vercel | + +--- + +## Programmatic Pages + +### Category Pages + +Generate pages for each category: + +``` +/categories/analytics +/categories/crm +/categories/cms +/categories/email-marketing +/categories/ecommerce +/categories/project-management +... +``` + +**Content template:** +- H1: "Best Open Source [Category] Software (2026)" +- Intro paragraph with category overview +- List of projects in category +- Comparison table +- FAQ section + +### Alternative Pages + +Generate "alternative to" pages: + +``` +/alternatives/mailchimp +/alternatives/hubspot +/alternatives/shopify +/alternatives/calendly +... +``` + +**Content template:** +- H1: "Open Source Alternatives to [Product]" +- Why switch from [Product] +- Top 3-5 alternatives with comparison +- Feature comparison table +- Migration guide link + +### Country Pages + +Generate pages for target markets: + +``` +/markets/india +/markets/brazil +/markets/nigeria +/markets/indonesia +/markets/philippines +... +``` + +**Content template:** +- H1: "Best Open Source Software for [Country] Market" +- Market overview and opportunity +- Projects with local success stories +- Pricing considerations +- Local payment integration notes + +### Tier Pages + +``` +/tiers/reseller-ready +/tiers/operator-friendly +/tiers/technically-possible +``` + +--- + +## Social Media Strategy + +### Twitter/X (@projectwise_in) + +#### Content Pillars + +| Pillar | Percentage | Example | +|--------|------------|---------| +| Project features | 40% | "🔍 [Project] makes it easy to..." | +| Business ideas | 25% | "💡 Business idea: Run [X] as SaaS for [market]" | +| Build in public | 20% | "📊 Week 3 update: X visitors, Y signups" | +| Industry insights | 15% | "The OSS maintainer crisis is real..." | + +#### Posting Schedule + +| Day | Content Type | Time (IST) | +|-----|--------------|------------| +| Monday | Project feature | 10:00 AM | +| Tuesday | Business idea | 10:00 AM | +| Wednesday | Build in public | 10:00 AM | +| Thursday | Project feature | 10:00 AM | +| Friday | Weekly roundup | 10:00 AM | +| Saturday | Industry insight | 11:00 AM | +| Sunday | Rest / engagement | - | + +#### Tweet Templates + +**Project Feature:** +``` +🔍 Featured: [Project Name] + +[One-line description] + +✅ Self-hostable +✅ White-label ready +✅ [Key feature] + +Perfect for: [Use case] + +→ projectwise.io/projects/[slug] +``` + +**Business Idea:** +``` +💡 Business idea #[X]: + +Run [Project] as a SaaS for [market] + +Target: [Customer type] +Pricing: $[X]-[Y]/month +Competition: [Low/Medium] + +Why it works: [1 sentence] + +More ideas → projectwise.io/ideas +``` + +**Build in Public:** +``` +📊 Projectwise Week [X] Update + +Visitors: [X] (+Y%) +Projects listed: [X] +Expert signups: [X] +Operator interests: [X] + +What we shipped: +• [Feature 1] +• [Feature 2] + +Next week: [Focus] +``` + +### LinkedIn (Future) + +- Repurpose Twitter content +- Focus on business/entrepreneur angle +- Target: Agency owners, technical founders + +### Reddit (Careful) + +| Subreddit | Strategy | +|-----------|----------| +| r/selfhosted | Share genuinely useful resources | +| r/startups | Participate, don't promote | +| r/opensource | Community engagement | +| r/SaaS | Answer questions, build reputation | + +**Rule:** Never spam. Only share when genuinely helpful. + +--- + +## Build in Public + +### Why Build in Public + +1. **Accountability** — Public commitment drives action +2. **Audience building** — People follow journeys +3. **Feedback** — Early users help shape product +4. **Trust** — Transparency builds credibility + +### What to Share + +| Category | Examples | +|----------|----------| +| Metrics | Visitors, signups, revenue | +| Decisions | Tech choices, pivots | +| Struggles | Bugs, delays, challenges | +| Wins | Launches, milestones | +| Learnings | What worked, what didn't | + +### What NOT to Share + +- Sensitive user data +- Security vulnerabilities +- Internal conflicts +- Unverified claims + +### Build in Public Calendar + +| Week | Focus | Share | +|------|-------|-------| +| 1 | Setup | Stack decisions, first commit | +| 2 | V1 | Soft launch, first 20 projects | +| 3 | Forms | Interest form conversions | +| 4 | V2 | First expert signups | +| 5 | Ideas | Ideas feature launch | +| 6 | Growth | Traffic milestones | +| 7 | Prep | Launch preparation | +| 8 | Launch | Full launch metrics | + +--- + +## Launch Playbook + +### Pre-Launch (Week 7) + +#### Product Hunt Preparation + +| Task | Status | +|------|--------| +| Create maker profile | Pending | +| Prepare screenshots (5+) | Pending | +| Write tagline (< 60 chars) | Pending | +| Write description (< 260 chars) | Pending | +| Create launch GIF | Pending | +| Line up "hunter" (optional) | Pending | +| Prepare first comment | Pending | + +**Tagline ideas:** +- "Build a business on open source" +- "Commercial-ready OSS directory" +- "The WordPress model for modern OSS" + +#### Hacker News Preparation + +| Task | Status | +|------|--------| +| Write "Show HN" post | Pending | +| Prepare to answer questions | Pending | +| Have technical details ready | Pending | +| Time the post (9-10 AM EST) | Pending | + +**Show HN template:** +``` +Show HN: Projectwise – A directory of commercial-ready open source software + +Hey HN, I built Projectwise to help people discover open source projects +that can be self-hosted, white-labeled, and turned into SaaS businesses. + +The problem: There's no central place to find OSS that's actually +"commercial-ready" - meaning it has permissive licenses, self-hosting +support, and potential for white-labeling. + +Features: +- 50+ curated projects across categories (CRM, analytics, CMS, etc.) +- Commercial "tiers" (Reseller-Ready, Operator-Friendly, etc.) +- Business ideas for each project +- Connect with implementation experts + +Tech stack: Next.js 15 + Payload CMS 3.0 + PostgreSQL + +Would love feedback on what projects to add or features to build next. +``` + +### Launch Day (Week 8) + +#### Timeline + +| Time | Action | +|------|--------| +| 12:01 AM PT | Product Hunt goes live | +| 6:00 AM | Wake up, engage with comments | +| 8:00 AM | Share on Twitter | +| 9:00 AM | Post to Hacker News | +| 10:00 AM | Email newsletter | +| Throughout | Respond to ALL comments | +| Evening | Twitter thread recap | + +#### Engagement Rules + +1. **Respond to every comment** — Within 1 hour if possible +2. **Be genuine** — No fake enthusiasm +3. **Thank supporters** — Personally acknowledge upvotes +4. **Ask questions** — "What projects would you want to see?" +5. **Don't ask for upvotes** — Against PH rules + +### Post-Launch (Week 9+) + +| Task | Timeline | +|------|----------| +| Compile feedback | Day 2 | +| Prioritize feature requests | Day 3 | +| Send thank you emails | Day 3 | +| Write launch retrospective | Day 7 | +| Plan V5 based on feedback | Week 9 | + +--- + +## Content Calendar + +### Weekly Template + +| Day | Content | Platform | +|-----|---------|----------| +| Mon | Project feature | Twitter | +| Tue | Business idea | Twitter | +| Wed | Build in public | Twitter | +| Thu | Project feature | Twitter | +| Fri | Weekly newsletter | Email | +| Sat | Industry insight | Twitter | +| Sun | Engagement only | Twitter | + +### Monthly Goals + +| Month | Content Target | +|-------|----------------| +| Month 1 | 20 projects, 10 ideas, 4 newsletters | +| Month 2 | 50 projects, 50 ideas, 4 newsletters | +| Month 3 | 100 projects, 100 ideas, 4 newsletters | + +--- + +## Outreach Strategy + +### Projects Outreach + +When featuring a project, reach out to maintainers: + +**Email template:** +``` +Subject: Featured [Project Name] on Projectwise + +Hi [Name], + +I just featured [Project] on Projectwise (projectwise.io), +a directory of commercial-ready open source software. + +Here's the listing: [link] + +I highlighted [specific feature] and noted the [license] +makes it great for [use case]. + +Would love your feedback on the listing. And if you'd like +to share it with your community, that would mean a lot! + +Best, +[Your name] +``` + +### Expert Outreach + +Reach out to GitHub contributors: + +**DM template:** +``` +Hey [Name]! I noticed you've contributed to [Project]. + +I'm building Projectwise, a platform connecting OSS experts +with people who want to deploy these projects. + +Would you be interested in being listed as an expert for +[Project]? It's free and could lead to paid consulting gigs. + +Let me know if you'd like to learn more! +``` + +### Newsletter Outreach + +Pitch to relevant newsletters: + +| Newsletter | Angle | +|------------|-------| +| TLDR | New OSS discovery tool | +| Bytes | Developer-focused | +| Console | OSS curation | +| Indie Hackers | Business opportunity | + +--- + +## Metrics to Track + +### Weekly Dashboard + +| Metric | Target (Week 4) | Target (Week 8) | +|--------|-----------------|-----------------| +| Unique visitors | 500 | 10,000 | +| Page views | 2,000 | 50,000 | +| Avg. session duration | 1:30 | 2:00 | +| Bounce rate | < 60% | < 50% | +| Expert signups | 20 | 100 | +| Operator interests | 10 | 75 | +| Newsletter subscribers | 50 | 500 | +| Twitter followers | 600 | 1,000 | + +### Tools + +| Purpose | Tool | +|---------|------| +| Web analytics | Plausible or Umami | +| Social analytics | Twitter native | +| SEO tracking | Google Search Console | +| Email metrics | Buttondown/ConvertKit | +| Uptime | Vercel built-in | + +--- + +*Last updated: January 2026* diff --git a/docs/06-project-seed-list.md b/docs/06-project-seed-list.md new file mode 100644 index 0000000..9fa10ea --- /dev/null +++ b/docs/06-project-seed-list.md @@ -0,0 +1,282 @@ +# Project Seed List + +> 100 open source projects to feature on Projectwise, curated for commercial potential. + +--- + +## Tier Definitions + +| Tier | Name | Criteria | +|------|------|----------| +| **Tier 1** | Reseller-Ready | White-label support, multi-tenancy, enterprise features | +| **Tier 2** | Operator-Friendly | Self-hostable, permissive license, good docs | +| **Tier 3** | Technically Possible | Can be commercialized with effort | + +--- + +## Categories + +1. [Analytics & Business Intelligence](#analytics--business-intelligence) +2. [CRM & Sales](#crm--sales) +3. [Email & Marketing](#email--marketing) +4. [CMS & Content](#cms--content) +5. [E-commerce](#e-commerce) +6. [Project Management](#project-management) +7. [Scheduling & Booking](#scheduling--booking) +8. [Forms & Surveys](#forms--surveys) +9. [Authentication & IAM](#authentication--iam) +10. [Automation & Workflows](#automation--workflows) +11. [Communication](#communication) +12. [Developer Tools](#developer-tools) +13. [File Storage & Sharing](#file-storage--sharing) +14. [Design & Creative](#design--creative) +15. [Finance & Invoicing](#finance--invoicing) + +--- + +## Analytics & Business Intelligence + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 1 | [Plausible](https://plausible.io) | AGPL-3.0 | Tier 1 | Privacy-first analytics, SaaS-proven | +| 2 | [Umami](https://umami.is) | MIT | Tier 1 | Lightweight, multi-tenant ready | +| 3 | [Matomo](https://matomo.org) | GPL-3.0 | Tier 1 | WordPress of analytics, huge ecosystem | +| 4 | [PostHog](https://posthog.com) | MIT | Tier 1 | Product analytics, feature flags | +| 5 | [Metabase](https://metabase.com) | AGPL-3.0 | Tier 1 | BI dashboards, embedded analytics | +| 6 | [Superset](https://superset.apache.org) | Apache-2.0 | Tier 2 | Enterprise BI, data exploration | +| 7 | [Redash](https://redash.io) | BSD-2 | Tier 2 | SQL dashboards, query sharing | + +--- + +## CRM & Sales + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 8 | [Twenty](https://twenty.com) | AGPL-3.0 | Tier 1 | Modern Salesforce alternative | +| 9 | [Erxes](https://erxes.io) | AGPL-3.0 | Tier 1 | All-in-one CRM, marketing, support | +| 10 | [SuiteCRM](https://suitecrm.com) | AGPL-3.0 | Tier 1 | Enterprise CRM, SugarCRM fork | +| 11 | [EspoCRM](https://espocrm.com) | GPL-3.0 | Tier 2 | Lightweight, extensible | +| 12 | [Krayin](https://krayincrm.com) | MIT | Tier 2 | Laravel-based, modern UI | +| 13 | [Monica](https://monicahq.com) | AGPL-3.0 | Tier 3 | Personal CRM, unique niche | + +--- + +## Email & Marketing + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 14 | [Listmonk](https://listmonk.app) | AGPL-3.0 | Tier 1 | Newsletter/mailing, high performance | +| 15 | [Dittofeed](https://dittofeed.com) | MIT | Tier 1 | Customer engagement, white-label | +| 16 | [Mautic](https://mautic.org) | GPL-3.0 | Tier 1 | Marketing automation | +| 17 | [Postal](https://github.com/postalserver/postal) | MIT | Tier 2 | Mail server, transactional email | +| 18 | [Mailtrain](https://github.com/Mailtrain-org/mailtrain) | GPL-3.0 | Tier 2 | Self-hosted Mailchimp | +| 19 | [Keila](https://keila.io) | AGPL-3.0 | Tier 2 | Newsletter tool, Elixir-based | +| 20 | [Sendy](https://sendy.co) | Proprietary | Tier 2 | Low-cost email, AWS SES | + +--- + +## CMS & Content + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 21 | [Payload](https://payloadcms.com) | MIT | Tier 1 | Headless CMS, Next.js native | +| 22 | [Strapi](https://strapi.io) | MIT | Tier 1 | Most popular headless CMS | +| 23 | [Directus](https://directus.io) | GPL-3.0 | Tier 1 | Database-first CMS | +| 24 | [Ghost](https://ghost.org) | MIT | Tier 1 | Publishing platform | +| 25 | [Wagtail](https://wagtail.org) | BSD-3 | Tier 2 | Django CMS | +| 26 | [KeystoneJS](https://keystonejs.com) | MIT | Tier 2 | GraphQL headless CMS | +| 27 | [TinaCMS](https://tina.io) | Apache-2.0 | Tier 2 | Git-backed CMS | +| 28 | [Builder.io](https://builder.io) | MIT | Tier 2 | Visual CMS | + +--- + +## E-commerce + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 29 | [Medusa](https://medusajs.com) | MIT | Tier 1 | Headless commerce, Shopify alt | +| 30 | [Saleor](https://saleor.io) | BSD-3 | Tier 1 | GraphQL commerce | +| 31 | [Vendure](https://vendure.io) | MIT | Tier 1 | TypeScript commerce | +| 32 | [Bagisto](https://bagisto.com) | MIT | Tier 1 | Laravel e-commerce | +| 33 | [Sylius](https://sylius.com) | MIT | Tier 2 | PHP/Symfony commerce | +| 34 | [Solidus](https://solidus.io) | BSD-3 | Tier 2 | Ruby commerce | +| 35 | [Shuup](https://shuup.com) | AGPL-3.0 | Tier 2 | Multi-vendor marketplace | +| 36 | [WooCommerce](https://woocommerce.com) | GPL-3.0 | Tier 1 | WordPress commerce | + +--- + +## Project Management + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 37 | [Plane](https://plane.so) | AGPL-3.0 | Tier 1 | Jira/Linear alternative | +| 38 | [Focalboard](https://focalboard.com) | AGPL-3.0 | Tier 1 | Notion/Trello alternative | +| 39 | [Taiga](https://taiga.io) | MPL-2.0 | Tier 2 | Agile project management | +| 40 | [OpenProject](https://openproject.org) | GPL-3.0 | Tier 1 | Enterprise project mgmt | +| 41 | [Leantime](https://leantime.io) | AGPL-3.0 | Tier 2 | Strategic project mgmt | +| 42 | [Vikunja](https://vikunja.io) | AGPL-3.0 | Tier 2 | To-do app, Todoist alt | +| 43 | [AppFlowy](https://appflowy.io) | AGPL-3.0 | Tier 2 | Notion alternative | + +--- + +## Scheduling & Booking + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 44 | [Cal.com](https://cal.com) | AGPL-3.0 | Tier 1 | Calendly alternative, white-label | +| 45 | [Easy!Appointments](https://easyappointments.org) | GPL-3.0 | Tier 2 | Appointment scheduling | +| 46 | [Calendso](https://cal.com) | AGPL-3.0 | Tier 1 | (Now Cal.com) | +| 47 | [Alf.io](https://alf.io) | GPL-3.0 | Tier 2 | Event ticketing | + +--- + +## Forms & Surveys + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 48 | [Formbricks](https://formbricks.com) | AGPL-3.0 | Tier 1 | Experience surveys | +| 49 | [Heyform](https://heyform.net) | AGPL-3.0 | Tier 1 | Typeform alternative | +| 50 | [Typebot](https://typebot.io) | AGPL-3.0 | Tier 1 | Conversational forms | +| 51 | [LimeSurvey](https://limesurvey.org) | GPL-2.0 | Tier 2 | Survey platform | +| 52 | [OhMyForm](https://ohmyform.com) | AGPL-3.0 | Tier 2 | Form builder | +| 53 | [SurveyJS](https://surveyjs.io) | MIT | Tier 2 | Survey library | + +--- + +## Authentication & IAM + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 54 | [Keycloak](https://keycloak.org) | Apache-2.0 | Tier 1 | Enterprise IAM | +| 55 | [Authentik](https://goauthentik.io) | MIT | Tier 1 | Modern identity provider | +| 56 | [SuperTokens](https://supertokens.com) | Apache-2.0 | Tier 1 | Auth for startups | +| 57 | [Logto](https://logto.io) | MPL-2.0 | Tier 1 | Auth0 alternative | +| 58 | [Ory](https://ory.sh) | Apache-2.0 | Tier 1 | Identity infrastructure | +| 59 | [Zitadel](https://zitadel.com) | Apache-2.0 | Tier 1 | Cloud-native IAM | +| 60 | [FusionAuth](https://fusionauth.io) | Apache-2.0 | Tier 2 | Customer identity | + +--- + +## Automation & Workflows + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 61 | [n8n](https://n8n.io) | Fair Source | Tier 1 | Zapier alternative, white-label | +| 62 | [Automatisch](https://automatisch.io) | AGPL-3.0 | Tier 1 | Open Zapier alternative | +| 63 | [Activepieces](https://activepieces.com) | MIT | Tier 1 | Business automation | +| 64 | [Windmill](https://windmill.dev) | AGPL-3.0 | Tier 1 | Developer workflows | +| 65 | [Huginn](https://github.com/huginn/huginn) | MIT | Tier 3 | Agent-based automation | +| 66 | [Kestra](https://kestra.io) | Apache-2.0 | Tier 2 | Data orchestration | + +--- + +## Communication + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 67 | [Mattermost](https://mattermost.com) | MIT | Tier 1 | Slack alternative | +| 68 | [Rocket.Chat](https://rocket.chat) | MIT | Tier 1 | Team chat, omnichannel | +| 69 | [Zulip](https://zulip.com) | Apache-2.0 | Tier 2 | Topic-based chat | +| 70 | [Element](https://element.io) | Apache-2.0 | Tier 2 | Matrix client | +| 71 | [Chatwoot](https://chatwoot.com) | MIT | Tier 1 | Customer support, Intercom alt | +| 72 | [Papercups](https://papercups.io) | MIT | Tier 2 | Live chat widget | +| 73 | [Typebot](https://typebot.io) | AGPL-3.0 | Tier 1 | Chatbot builder | + +--- + +## Developer Tools + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 74 | [GitLab](https://gitlab.com) | MIT | Tier 1 | DevOps platform | +| 75 | [Gitea](https://gitea.io) | MIT | Tier 1 | Lightweight Git hosting | +| 76 | [Drone](https://drone.io) | Apache-2.0 | Tier 2 | CI/CD | +| 77 | [Coolify](https://coolify.io) | Apache-2.0 | Tier 1 | Self-hosted PaaS | +| 78 | [Dokku](https://dokku.com) | MIT | Tier 2 | Mini-Heroku | +| 79 | [Sentry](https://sentry.io) | BSL | Tier 1 | Error tracking | +| 80 | [Highlight](https://highlight.io) | Apache-2.0 | Tier 1 | Session replay | +| 81 | [Flagsmith](https://flagsmith.com) | BSD-3 | Tier 1 | Feature flags | + +--- + +## File Storage & Sharing + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 82 | [Nextcloud](https://nextcloud.com) | AGPL-3.0 | Tier 1 | Google Workspace alt | +| 83 | [ownCloud](https://owncloud.com) | AGPL-3.0 | Tier 1 | File sync & share | +| 84 | [Seafile](https://seafile.com) | GPL-3.0 | Tier 2 | File hosting | +| 85 | [MinIO](https://min.io) | AGPL-3.0 | Tier 1 | S3-compatible storage | +| 86 | [Paperless-ngx](https://docs.paperless-ngx.com) | GPL-3.0 | Tier 2 | Document management | +| 87 | [Documenso](https://documenso.com) | AGPL-3.0 | Tier 1 | DocuSign alternative | + +--- + +## Design & Creative + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 88 | [Penpot](https://penpot.app) | MPL-2.0 | Tier 1 | Figma alternative | +| 89 | [Excalidraw](https://excalidraw.com) | MIT | Tier 2 | Whiteboard tool | +| 90 | [Blender](https://blender.org) | GPL-3.0 | Tier 2 | 3D creation | +| 91 | [GIMP](https://gimp.org) | GPL-3.0 | Tier 3 | Image editing | +| 92 | [Inkscape](https://inkscape.org) | GPL-3.0 | Tier 3 | Vector graphics | + +--- + +## Finance & Invoicing + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 93 | [Invoice Ninja](https://invoiceninja.com) | AAL | Tier 1 | Invoicing, white-label | +| 94 | [Crater](https://crater.financial) | AGPL-3.0 | Tier 1 | Invoice & accounting | +| 95 | [Kill Bill](https://killbill.io) | Apache-2.0 | Tier 2 | Billing platform | +| 96 | [Akaunting](https://akaunting.com) | GPL-3.0 | Tier 2 | Accounting software | +| 97 | [Firefly III](https://firefly-iii.org) | AGPL-3.0 | Tier 2 | Personal finance | +| 98 | [Maybe](https://maybe.co) | AGPL-3.0 | Tier 2 | Personal finance (now open source) | + +--- + +## Bonus: Emerging Projects + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 99 | [Dub.co](https://dub.co) | AGPL-3.0 | Tier 1 | Link management, white-label | +| 100 | [Inbox Zero](https://getinboxzero.com) | AGPL-3.0 | Tier 2 | Email productivity | + +--- + +## Selection Criteria + +When adding new projects, evaluate: + +| Criteria | Weight | Question | +|----------|--------|----------| +| License | High | Is it permissive enough for commercial use? | +| Self-hostable | High | Can someone run it on their own server? | +| White-label | Medium | Can branding be removed/replaced? | +| Multi-tenancy | Medium | Can it serve multiple customers? | +| Documentation | Medium | Is it well-documented? | +| Community | Medium | Active development and community? | +| Business model | Low | Does the project itself have commercial offering? | + +--- + +## Projects to Research + +Future additions to investigate: + +- [ ] Outline (Notion alternative) +- [ ] Docusaurus (Documentation) +- [ ] Docmost (Documentation) +- [ ] Budibase (Low-code) +- [ ] Appsmith (Low-code) +- [ ] NocoDB (Airtable alternative) +- [ ] Baserow (Airtable alternative) +- [ ] Rallly (Doodle alternative) +- [ ] Jitsi (Video conferencing) +- [ ] BigBlueButton (Virtual classroom) + +--- + +*Last updated: January 2026* diff --git a/docs/07-new-features.md b/docs/07-new-features.md new file mode 100644 index 0000000..1720a98 --- /dev/null +++ b/docs/07-new-features.md @@ -0,0 +1,574 @@ +# New Features: AI Prompts, Showcase, Stacks + +> Three features that differentiate Projectwise from static directories like OpenAlternative. + +--- + +## Table of Contents + +1. [Feature A: AI Setup Prompts](#feature-a-ai-setup-prompts) +2. [Feature B: Project Showcase](#feature-b-project-showcase) +3. [Feature C: Stacks & Interlinking](#feature-c-stacks--interlinking) +4. [Data Models](#data-models) +5. [Page Designs](#page-designs) +6. [Phasing](#phasing) + +--- + +## Feature A: AI Setup Prompts + +### The Idea + +Every project page includes a "Deploy with AI" section — copy-paste prompts for Claude Code, Cursor, and Codex that set up the project in a local folder, ready to customize and deploy. + +This is the key differentiator: instead of just listing projects, we help people **actually start building** with them. + +### Why This Works + +- `AGENTS.md` is becoming the universal standard for AI-assisted project setup +- Cursor Directory (cursor.directory) has proven demand for framework-specific AI prompts +- Awesome CursorRules (github.com/PatrickJS/awesome-cursorrules) curates `.cursorrules` for many stacks +- The gap: nobody provides prompts scoped to **deploying OSS as a business** + +### Prompt Types + +Each project gets three prompt variants: + +#### 1. Quick Start Prompt +> "Get this running locally in 5 minutes" + +```markdown +## Quick Start — [Project Name] + +Use this prompt with Claude Code, Cursor, or Codex: + +--- + +Set up [Project Name] in a new folder called `my-[project]`. +Use Docker Compose for the application and PostgreSQL database. +Include a Caddy reverse proxy config for production. +Add a .env.example with all required environment variables documented. +Make sure the app runs on localhost:3000 after `docker compose up`. +``` + +#### 2. Business Setup Prompt +> "Deploy this as a SaaS you can sell" + +```markdown +## Deploy as SaaS — [Project Name] + +Use this prompt with Claude Code, Cursor, or Codex: + +--- + +Set up [Project Name] as a multi-tenant SaaS in a new folder called `my-[project]-saas`. + +Requirements: +- Docker Compose with [Project], PostgreSQL, Redis, and Caddy +- Multi-tenant configuration (subdomain-based routing) +- Stripe integration for billing (use test keys) +- Custom branding support (logo, colors, domain) +- Backup script for the database (daily cron) +- Production-ready .env.example with all variables documented +- README with deployment instructions for a VPS (Ubuntu 22.04) +``` + +#### 3. Full Stack Prompt +> "Complete business stack with complementary OSS" + +```markdown +## Full Stack — [Project Name] + [Related Projects] + +Use this prompt with Claude Code, Cursor, or Codex: + +--- + +Set up a complete [use case] stack in a new folder called `my-[use-case]-stack`: + +- [Project A] for [core function] +- [Project B] for [authentication] +- [Project C] for [email/notifications] +- Caddy as reverse proxy +- PostgreSQL as shared database + +All services should run via Docker Compose. +Include inter-service networking so [Project A] can authenticate via [Project B]. +Add a landing page with Next.js that connects to all services. +``` + +### Prompt Quality Standards + +Each prompt must: + +| Requirement | Why | +|-------------|-----| +| Work on first try | Trust is everything — broken prompts kill credibility | +| Be tool-agnostic | Should work with Claude Code, Cursor, Codex, or any LLM | +| Include Docker Compose | Consistent, reproducible setup | +| Have documented .env | No guessing at config | +| Be tested before publishing | We verify each prompt ourselves | + +### How Prompts Are Stored + +Prompts are content in Payload CMS, linked to projects: + +``` +Project Page +├── Overview +├── Features +├── Business Ideas +├── AI Setup Prompts ← NEW +│ ├── Quick Start +│ ├── Business Setup +│ └── Full Stack +├── Showcase +└── Related Projects +``` + +### SEO Value + +Each prompt creates targetable content: + +- "how to deploy [project] with docker" +- "set up [project] as saas" +- "[project] self hosted setup guide" +- "deploy [project] on vps" + +--- + +## Feature B: Project Showcase + +### The Idea + +A "Built With" gallery on each project page showing real businesses, sites, and apps built using that OSS project. Proves the commercial viability claim with real-world evidence. + +### Research: How Others Do It + +| Platform | Approach | Submissions | Quality | +|----------|----------|-------------|---------| +| **Next.js** | Curated by Vercel team | GitHub discussions | High (editorial) | +| **Tailwind CSS** | Curated, multiple screenshots | Invite-only | Very high | +| **Strapi** | Community via GitHub PRs | Open PRs | Medium | +| **Made with Tailwind** | Community-driven directory | Open form | Variable | + +### Our Approach: Hybrid + +1. **Seed with existing showcases** — Many OSS projects already have showcase pages. Scrape/curate the best entries as initial data. +2. **Community submissions** — Simple form: URL, screenshot, description, tech stack. +3. **Editorial quality control** — All submissions reviewed before publishing. Reject low-quality or spam. + +### Showcase Entry Data + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| name | string | Yes | Business/project name | +| url | string | Yes | Live URL | +| screenshot | upload | Yes | Full-page or hero screenshot | +| description | string | Yes | What it does (max 250 chars) | +| project | relationship | Yes | Which OSS project it uses | +| additionalProjects | relationship[] | No | Other OSS projects in the stack | +| industry | select | No | SaaS, Agency, E-commerce, etc. | +| revenue | select | No | Pre-revenue, $1-10k, $10k-100k, $100k+ MRR | +| techStack | array | No | Other technologies used | +| submittedBy | string | Yes | Name or GitHub username | +| featured | boolean | No | Staff pick | +| status | select | Yes | pending, approved, rejected | + +### Showcase Sources for Seeding + +| OSS Project | Existing Showcase URL | Est. Entries | +|-------------|----------------------|--------------| +| Next.js | nextjs.org/showcase | 100+ | +| Tailwind CSS | tailwindcss.com/showcase | 200+ | +| Strapi | strapi.io/showcases | 50+ | +| Ghost | ghost.org/explore | 100+ | +| Payload CMS | payloadcms.com/case-studies | 20+ | +| Medusa | medusajs.com/showcase | 30+ | +| Cal.com | cal.com/customers | 10+ | + +We don't copy all of these — we pick the best 3-5 per project that demonstrate commercial use. + +### Page Structure + +**Project detail page — Showcase section:** + +``` +## Built with [Project Name] + +[Grid of 3-6 showcase entries] +- Screenshot thumbnail +- Name +- One-line description +- Industry tag + +[View all →] (links to full showcase page) +``` + +**Dedicated showcase page:** `/projects/[slug]/showcase` + +``` +## Companies & Projects Built with [Project Name] + +[Filter by: Industry | Revenue | Featured] + +[Card grid with all approved entries] +``` + +**Global showcase page:** `/showcase` + +``` +## Built with Open Source + +Browse real businesses built on commercial-ready open source. + +[Filter by: Project | Industry | Revenue] + +[All showcase entries across all projects] +``` + +### Submission Flow + +``` +User clicks "Submit your project" on any project page + → Simple form (name, URL, screenshot, description) + → Submission saved with status: "pending" + → Admin reviews in Payload dashboard + → If approved: appears on project page + global showcase + → If featured: highlighted with "Staff Pick" badge +``` + +### Growth Loop + +The showcase creates a self-reinforcing growth loop: + +``` +We feature a project + → Businesses built on it submit to showcase + → We share the showcase entries on Twitter + → The businesses reshare (borrowed audience) + → More builders discover Projectwise + → More submissions +``` + +--- + +## Feature C: Stacks & Interlinking + +### The Idea + +Projects don't exist in isolation. A real deployment usually combines 3-5 OSS tools. We model these relationships and surface them as curated "stacks." + +### Relationship Types + +| Type | Description | Example | +|------|-------------|---------| +| **works-with** | Commonly used together | Medusa + MinIO (e-commerce + file storage) | +| **depends-on** | Technical dependency | Chatwoot depends on PostgreSQL + Redis | +| **alternative-to** | Same problem, different solution | Plausible ↔ Umami (both analytics) | +| **extends** | Plugin/addon relationship | WooCommerce extends WordPress | + +### Curated Stacks + +Pre-built combinations for common business use cases: + +#### Example Stacks + +**E-commerce Stack** +``` +Medusa (storefront) + MinIO (file storage) + Authentik (auth) ++ Listmonk (email) + Plausible (analytics) + +Use case: Run a headless e-commerce store +Estimated monthly cost: $20-50 (VPS) +``` + +**SaaS Starter Stack** +``` +Next.js (frontend) + Payload CMS (backend/admin) ++ Authentik (auth) + Dub.co (link management) ++ PostHog (analytics) + Resend (email) + +Use case: Launch a SaaS product +Estimated monthly cost: $15-30 (VPS) +``` + +**Agency Stack** +``` +WordPress + WooCommerce (client sites) ++ Mautic (marketing automation) + Matomo (analytics) ++ Invoice Ninja (billing) + Chatwoot (support) + +Use case: Run a digital agency on fully OSS tools +Estimated monthly cost: $30-60 (VPS) +``` + +**Community Platform Stack** +``` +Ghost (content) + Rocket.Chat (messaging) ++ Cal.com (events/booking) + Formbricks (surveys) ++ Plausible (analytics) + +Use case: Build a community with content, chat, and events +Estimated monthly cost: $25-45 (VPS) +``` + +### Stack Data Model + +```typescript +// Stacks collection +{ + name: string; // "E-commerce Stack" + slug: string; + description: richText; + useCase: string; // One-line use case + projects: array [ // Ordered list of projects in the stack + { + project: relationship; + role: string; // "Storefront", "Authentication", etc. + } + ]; + estimatedCost: string; // "$20-50/month" + difficulty: select; // Easy, Medium, Advanced + deployPrompt: text; // AI prompt to deploy the entire stack + featured: boolean; +} + +// ProjectRelationships collection +{ + projectA: relationship; + projectB: relationship; + type: select; // works-with, depends-on, alternative-to, extends + description: string; // Why they're related + bidirectional: boolean; // true for works-with and alternative-to +} +``` + +### Page Structure + +**Project detail page — Related section:** + +``` +## Works Well With +[3-4 related projects with relationship badges] + +## Part of These Stacks +[Cards for stacks that include this project] + +## Alternatives +[Other projects solving the same problem] +``` + +**Stack detail page:** `/stacks/[slug]` + +``` +## [Stack Name] + +[Description] +[Visual diagram: Project A → Project B → Project C] + +### Projects in This Stack +[Each project with its role, linked to project page] + +### Deploy This Stack +[AI prompt to set up the entire stack] + +### Estimated Cost +[Monthly VPS cost breakdown] +``` + +**Stacks index page:** `/stacks` + +``` +## Curated OSS Stacks + +Pre-built combinations of open source tools for common use cases. + +[Filter by: Use Case | Difficulty | Cost] + +[Stack cards in grid] +``` + +### Interlinking Benefits + +| Benefit | How | +|---------|-----| +| **SEO** | Internal links boost page authority; stack pages target "best open source stack for [use case]" | +| **Engagement** | Users discover more projects, spend more time on site | +| **AI Prompts** | Stack prompts are the most valuable — deploy 5 projects at once | +| **Differentiation** | No other directory offers curated, deployable stacks | + +### Data Sources for Relationships + +| Source | What We Get | +|--------|-------------| +| **Manual curation** | High-quality "works-with" relationships | +| **Docker Compose files** | What services projects depend on | +| **GitHub README** | Often mentions complementary tools | +| **Libraries.io API** | Package-level dependencies (npm, pip, etc.) | +| **awesome-selfhosted** | Cross-referenced categories | + +--- + +## Data Models + +### New Payload Collections (Summary) + +| Collection | Phase | Fields | +|------------|-------|--------| +| **Prompts** | V2 | project, type (quick/business/stack), content, tested | +| **Showcases** | V3 | name, url, screenshot, project, industry, revenue, status | +| **Stacks** | V3 | name, projects[], useCase, cost, deployPrompt | +| **ProjectRelationships** | V3 | projectA, projectB, type, description | + +### Schema Additions + +```typescript +// Prompts collection +{ + project: relationship; // Which project this prompt is for + type: select; // 'quick-start' | 'business-setup' | 'full-stack' + title: string; // "Deploy Listmonk as Email SaaS" + prompt: textarea; // The actual AI prompt + tools: select[]; // 'claude-code' | 'cursor' | 'codex' | 'any' + stack: relationship[]; // Related projects (for full-stack prompts) + tested: boolean; // Has this been verified to work? + testedDate: date; + difficulty: select; // Easy, Medium, Advanced +} + +// Showcases collection +{ + name: string; + url: string; + screenshot: upload; + description: string; // Max 250 chars + project: relationship; // Primary OSS project + additionalProjects: relationship[]; + industry: select; // SaaS, Agency, E-commerce, Education, etc. + revenue: select; // Pre-revenue, $1-10k, $10k-100k, $100k+ MRR + techStack: array; // Other technologies + submittedBy: string; + email: string; // For follow-up + featured: boolean; + status: select; // pending, approved, rejected +} + +// Stacks collection +{ + name: string; + slug: string; + description: richText; + useCase: string; + projects: array [{ + project: relationship; + role: string; + }]; + estimatedCost: string; + difficulty: select; + deployPrompt: textarea; // AI prompt for entire stack + featured: boolean; +} + +// ProjectRelationships collection +{ + projectA: relationship; + projectB: relationship; + type: select; // works-with, depends-on, alternative-to, extends + description: string; + bidirectional: boolean; +} +``` + +--- + +## Page Designs + +### Updated Project Detail Page Layout + +``` +/projects/[slug] + +├── Hero (name, logo, tagline, tier badge) +├── Overview (description, license, links) +├── Key Features +├── Commercial Readiness (tier explanation) +│ +├── 🆕 Deploy with AI +│ ├── Quick Start prompt (copy button) +│ ├── Business Setup prompt (copy button) +│ └── Full Stack prompt (copy button, links to stack) +│ +├── Business Ideas (3-5 ideas) +│ +├── 🆕 Built With [Project] +│ ├── Featured showcase entries (3-6 cards) +│ └── "View all" → /projects/[slug]/showcase +│ └── "Submit yours" → submission form +│ +├── 🆕 Works Well With +│ ├── Related projects (works-with, depends-on) +│ └── Part of stacks (link to stack pages) +│ +├── 🆕 Alternatives +│ └── Other projects solving same problem +│ +├── Contributors (GitHub) +└── Interest Forms (expert/operator) +``` + +### New Top-Level Pages + +| Page | URL | Description | +|------|-----|-------------| +| Showcase index | `/showcase` | All approved showcase entries | +| Stacks index | `/stacks` | All curated stacks | +| Stack detail | `/stacks/[slug]` | Individual stack page | +| Project showcase | `/projects/[slug]/showcase` | All showcases for one project | + +--- + +## Phasing + +### V2 Addition: AI Setup Prompts + +| Task | Priority | +|------|----------| +| Add Prompts collection to Payload | P1 | +| Build "Deploy with AI" section on project pages | P1 | +| Write + test prompts for first 20 projects (quick-start only) | P1 | +| Add copy-to-clipboard functionality | P1 | +| Write business-setup prompts for Tier 1 projects | P2 | + +### V3 Additions: Showcase + Stacks + +| Task | Priority | +|------|----------| +| Add Showcases collection to Payload | P1 | +| Build showcase submission form | P1 | +| Seed showcase with entries from existing project showcases | P1 | +| Add Stacks collection to Payload | P1 | +| Create 5 curated stacks with deploy prompts | P1 | +| Add ProjectRelationships collection | P2 | +| Build stacks index + detail pages | P2 | +| Write full-stack AI prompts for each stack | P2 | +| Build global `/showcase` page | P2 | + +--- + +## Competitive Advantage + +| Feature | OpenAlternative | Awesome-Selfhosted | **Projectwise** | +|---------|----------------|---------------------|-----------------| +| Project listings | Yes | Yes | Yes | +| AI setup prompts | No | No | **Yes** | +| Showcase gallery | No | No | **Yes** | +| Curated stacks | Has /stacks page | No | **Yes (deployable)** | +| Deploy prompts | No | No | **Yes** | +| Business ideas | No | No | Yes | +| Expert network | No | No | Yes | + +The combination of **"here's a project" + "here's proof others built with it" + "here's an AI prompt to start right now"** is unique. No other directory closes the gap from discovery to deployment. + +--- + +*Last updated: January 2026* diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..92e52d6 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,91 @@ +# Projectwise Documentation + +> **Domain:** projectwise.ai (preferred) / projectwise.io (fallback) +> **Twitter:** @projectwise_in (to be updated) +> **Tagline:** Build a business on open source + +--- + +## Quick Links + +| Document | Description | +|----------|-------------| +| [01 - Vision & Problem](./01-vision.md) | What we're building and why | +| [02 - Market Research](./02-market-research.md) | Industry analysis, competitors, opportunity | +| [03 - Architecture](./03-architecture.md) | Tech stack, data models, infrastructure | +| [04 - Roadmap](./04-roadmap.md) | V1, V2, V3 phases with deliverables | +| [05 - Content & Launch Strategy](./05-content-strategy.md) | SEO, social media, build in public | +| [06 - Project Seed List](./06-project-seed-list.md) | 100 open source projects to feature | +| [07 - New Features](./07-new-features.md) | AI Prompts, Showcase, Stacks & Interlinking | + +--- + +## Project Status + +| Phase | Status | Target | +|-------|--------|--------| +| **V1: MVP Directory** | 🔄 Planning | Week 1-2 | +| **V2: Contributors + Forms** | ⏳ Planned | Week 3-4 | +| **V3: Ideas Feature** | ⏳ Planned | Week 5-6 | +| **V4: Launch Campaign** | ⏳ Planned | Week 7-8 | + +--- + +## The Elevator Pitch + +**Projectwise** is a curated directory of commercial-ready open source software — projects you can self-host, white-label, and build a business on. + +We connect three audiences: +1. **Projects** — Open source with permissive licenses and commercial potential +2. **Experts** — Contributors who can deploy and customize these projects +3. **Operators** — Entrepreneurs who want to run OSS as SaaS businesses + +--- + +## Why Now? + +- **60% of OSS maintainers are unpaid**, 44% cite burnout +- **AI disruption** is killing traditional developer education/Stack Overflow +- **WordPress proved the model** — $600B ecosystem from open source +- **No platform exists** that connects commercial OSS with implementation experts + +--- + +## Quick Start (For Development) + +```bash +# Clone the repo +git clone https://github.com/Projectwise/projectwise-app.git +cd projectwise-app + +# Install dependencies (after migration to new stack) +pnpm install + +# Set up environment +cp .env.example .env.local + +# Run development server +pnpm dev +``` + +--- + +## Key Decisions + +| Decision | Choice | Rationale | +|----------|--------|-----------| +| **Framework** | Next.js 15 + Payload CMS 3.0 | Single deployment, TypeScript native | +| **Database** | PostgreSQL (Neon) | Free tier, Vercel integration | +| **Hosting** | Vercel | Free tier, instant deploys | +| **Domain** | projectwise.ai (preferred) | .ai aligns with AI prompt features | +| **Architecture** | Single repo | Simpler for MVP, can split later | + +--- + +## Contributing + +This project is in active development. See [04-roadmap.md](./04-roadmap.md) for current priorities. + +--- + +*Last updated: January 2026* diff --git a/firebase.json b/firebase.json deleted file mode 100644 index faa44b5..0000000 --- a/firebase.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "database": { - "rules": "database.rules.json" - }, - "hosting": { - "public": "build", - "ignore": [ - "firebase.json", - "**/.*", - "**/node_modules/**" - ], - "rewrites": [ - { - "source": "**", - "destination": "/index.html" - } - ] - }, - "storage": { - "rules": "storage.rules" - } -} diff --git a/package.json b/package.json deleted file mode 100644 index c45d4b1..0000000 --- a/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "projectwise-app", - "version": "0.1.0", - "private": true, - "devDependencies": { - "eslint": "^4.12.0", - "eslint-config-standard": "^10.2.1", - "eslint-config-standard-jsx": "^4.0.2", - "eslint-plugin-import": "^2.8.0", - "eslint-plugin-node": "^5.2.1", - "eslint-plugin-promise": "^3.6.0", - "eslint-plugin-react": "^7.5.1", - "eslint-plugin-standard": "^3.0.1", - "react-scripts": "1.0.17" - }, - "dependencies": { - "axios": "^0.17.1", - "disqus-react": "^1.0.5", - "firebase": "^4.8.1", - "jwt-decode": "^2.2.0", - "lodash": "^4.17.4", - "polished": "^1.9.0", - "postscribe": "^2.0.8", - "react": "^16.0.0", - "react-dom": "^16.0.0", - "react-redux": "^5.0.6", - "react-router-dom": "^4.2.2", - "react-select": "^1.1.0", - "reactstrap": "^5.0.0-alpha.3", - "redux": "^3.7.2", - "redux-form": "^7.1.2", - "redux-pack": "^0.1.5", - "redux-thunk": "^2.2.0", - "shortid": "^2.2.8", - "styled-components": "^2.2.3", - "validator": "^9.1.2" - }, - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test --env=jsdom", - "eject": "react-scripts eject" - } -} diff --git a/public/css/shards.css b/public/css/shards.css deleted file mode 100644 index 5a2e999..0000000 --- a/public/css/shards.css +++ /dev/null @@ -1,4339 +0,0 @@ -/* - * Shards v1.0.0 (https://designrevision.com/product/shards) - * Based on: Bootstrap v4.0.0-beta (https://getbootstrap.com) - * Copyright 2017-* DesignRevision (https://designrevision.com) - * Copyright 2017-* Catalin Vasile (http://catalin.me) - */ -@import url('https://fonts.googleapis.com/css?family=Lato:300,400,700'); -@media (max-width: 575px) { - html { - font-size: 15px; - } -} - -body { - font-size: 1rem; - font-weight: 400; - color: #5A6169; - background-color: #fff; - font-family: 'Lato', sans-serif; -} - -a { - color: #007bff; - text-decoration: none; -} - -a:hover { - color: #0056b3; - text-decoration: underline; -} - -b, strong { - font-weight: 500; -} - -h1, h2, h3, h4, h5, h6 { - margin-top: 0; - margin-bottom: .5rem; -} - -h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - margin-bottom: 0.75rem; - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - font-weight: 400; - color: #212529; -} - -h1, .h1 { - font-size: 3.052rem; - letter-spacing: -0.0625rem; - line-height: 3rem; -} - -h2, .h2 { - font-size: 2.441rem; - letter-spacing: -0.0625rem; - line-height: 2.25rem; -} - -h3, .h3 { - font-size: 1.953rem; - line-height: 2.25rem; -} - -h4, .h4 { - font-size: 1.563rem; - line-height: 2rem; -} - -h5, .h5 { - font-size: 1.25rem; - line-height: 1.5rem; -} - -h6, .h6 { - font-size: 1rem; - line-height: 1.5rem; -} - -p + h1, p + .h1, -p + h2, p + .h2, -p + h3, p + .h3, -p + h4, p + .h4, -p + h5, p + .h5, -p + h6, p + .h6 { - margin-top: 2.25rem; -} - -.lead { - line-height: 1.875rem; -} - -.display-1, -.display-2, -.display-3, -.display-4 { - margin-bottom: 0.75rem; -} - -.display-1 { - font-size: 7.451rem; - line-height: 1; -} - -.display-2 { - font-size: 5.96rem; - line-height: 1; -} - -.display-3 { - font-size: 4.768rem; - line-height: 1; -} - -.display-4 { - font-size: 3.815rem; - line-height: 1; -} - -p { - margin-bottom: 1.75rem; -} - -hr { - margin-top: 1.125rem; - margin-bottom: 1.125rem; -} - -mark, -.mark { - background-color: #fff09e; -} - -.blockquote { - margin-bottom: 0.75rem; - font-size: 1.5rem; -} - -.blockquote-footer { - font-size: 1.125rem; -} - -.img-thumbnail { - padding: 0; - border: none; - border-radius: 0.375rem; - box-shadow: none; -} - -.figure-img { - margin-bottom: 0.75rem; -} - -.figure-caption { - font-size: 1rem; -} - -code, -kbd, -pre, -samp { - font-family: "Roboto Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; -} - -code { - padding: 0.1875rem 0.8125rem; - font-size: 0.75rem; -} - -kbd { - padding: 0.1875rem 0.8125rem; - font-size: 0.75rem; - border-radius: 0.625rem; - box-shadow: none; -} - -pre { - margin-bottom: .75rem; - font-size: 0.75rem; - color: #212529; - line-height: 1.375rem; -} - -.table { - margin-bottom: 1.5rem; -} - -.table-striped tbody tr:nth-of-type(odd) { - background-color: #f7f8fb; -} - -.table-primary, -.table-primary > th, -.table-primary > td { - background-color: #b8daff; -} - -.table-hover .table-primary:hover { - background-color: #9fcdff; -} - -.table-hover .table-primary:hover > td, -.table-hover .table-primary:hover > th { - background-color: #9fcdff; -} - -.table-secondary, -.table-secondary > th, -.table-secondary > td { - background-color: #d1d3d5; -} - -.table-hover .table-secondary:hover { - background-color: #c4c6c9; -} - -.table-hover .table-secondary:hover > td, -.table-hover .table-secondary:hover > th { - background-color: #c4c6c9; -} - -.table-success, -.table-success > th, -.table-success > td { - background-color: #beefd7; -} - -.table-hover .table-success:hover { - background-color: #aaeaca; -} - -.table-hover .table-success:hover > td, -.table-hover .table-success:hover > th { - background-color: #aaeaca; -} - -.table-info, -.table-info > th, -.table-info > td { - background-color: #b8ebf4; -} - -.table-hover .table-info:hover { - background-color: #a2e5f1; -} - -.table-hover .table-info:hover > td, -.table-hover .table-info:hover > th { - background-color: #a2e5f1; -} - -.table-warning, -.table-warning > th, -.table-warning > td { - background-color: #ffeab8; -} - -.table-hover .table-warning:hover { - background-color: #ffe29f; -} - -.table-hover .table-warning:hover > td, -.table-hover .table-warning:hover > th { - background-color: #ffe29f; -} - -.table-danger, -.table-danger > th, -.table-danger > td { - background-color: #eebec8; -} - -.table-hover .table-danger:hover { - background-color: #e9aab7; -} - -.table-hover .table-danger:hover > td, -.table-hover .table-danger:hover > th { - background-color: #e9aab7; -} - -.table-light, -.table-light > th, -.table-light > td { - background-color: #f9fafb; -} - -.table-hover .table-light:hover { - background-color: #eaedf1; -} - -.table-hover .table-light:hover > td, -.table-hover .table-light:hover > th { - background-color: #eaedf1; -} - -.table-dark, -.table-dark > th, -.table-dark > td { - background-color: #c1c2c3; -} - -.table-hover .table-dark:hover { - background-color: #b4b5b6; -} - -.table-hover .table-dark:hover > td, -.table-hover .table-dark:hover > th { - background-color: #b4b5b6; -} - -.form-control { - padding: 0.664rem 1rem; - font-size: 0.95rem; - line-height: 1.125rem; - color: #495057; - border: 1px solid #becad6; - font-weight: 300; - border-radius: 3px; - transition: border-color 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06), box-shadow 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.form-control:hover { - border-color: #8fa4b8; -} - -.form-control:focus { - color: #495057; - border-color: #007bff; - box-shadow: 0 0.313rem 0.719rem rgba(0, 123, 255, 0.1), 0 0.156rem 0.125rem rgba(0, 0, 0, 0.06); -} - -.form-control:focus:hover { - border-color: #007bff; -} - -.form-control::-webkit-input-placeholder { - color: #868e96; -} - -.form-control:-ms-input-placeholder { - color: #868e96; -} - -.form-control::placeholder { - color: #868e96; -} - -.form-control:disabled, .form-control[readonly] { - background-color: #f5f6f7; -} - -.form-control:disabled:hover, .form-control[readonly]:hover { - cursor: not-allowed; -} - -select.form-control:hover { - cursor: pointer; -} - -form label, -form .col-form-label, -form .col-form-legend { - font-size: 0.95rem; -} - -form label:hover { - cursor: pointer; -} - -.col-form-label { - padding-top: calc(0.664rem - 1px * 2); - padding-bottom: calc(0.664rem - 1px * 2); -} - -.col-form-label-lg { - padding-top: calc(0.75rem - 1px * 2); - padding-bottom: calc(0.75rem - 1px * 2); - font-size: 1rem; -} - -.col-form-label-sm { - padding-top: calc(0.35rem - 1px * 2); - padding-bottom: calc(0.35rem - 1px * 2); - font-size: 0.875rem; -} - -.col-form-legend { - padding-top: 0.664rem; - padding-bottom: 0.664rem; -} - -.form-control-plaintext { - padding-top: 0.664rem; - padding-bottom: 0.664rem; - line-height: 1.1; - font-weight: 300; -} - -.form-control-sm { - padding: 0.35rem 1rem; - font-size: 0.875rem; - border-radius: 0.2rem; -} - -select.form-control-sm:not([size]):not([multiple]) { - height: calc(1.575rem + 2px); -} - -.form-control-lg { - padding: 0.75rem 1.75rem; - font-size: 1rem; - border-radius: 0.5rem; -} - -select.form-control-lg:not([size]):not([multiple]) { - height: calc(2.5rem + 2px); -} - -.form-check.disabled .form-check-label { - color: #868e96; -} - -.form-check-label { - padding-left: 1.25rem; -} - -.form-check-input { - margin-top: 0.313rem; - margin-left: -1.25rem; - margin-right: 0.313rem; -} - -.invalid-feedback { - display: none; - margin-top: .25rem; - font-size: .875rem; - color: #c4183c; -} - -.was-validated .form-control:valid, .form-control.is-valid, .was-validated -.custom-select:valid, -.custom-select.is-valid { - border-color: #17c671; - box-shadow: 0 5px 11.5px rgba(23, 198, 113, 0.1); -} - -.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated -.custom-select:valid:focus, -.custom-select.is-valid:focus { - box-shadow: 0 5px 11.5px rgba(23, 198, 113, 0.1), 0 1px 1px 0.1rem rgba(23, 198, 113, 0.2); -} - -.was-validated .form-control:valid:focus:hover, .form-control.is-valid:focus:hover, .was-validated -.custom-select:valid:focus:hover, -.custom-select.is-valid:focus:hover { - border-color: #17c671; -} - -.was-validated .form-check-input:valid + .form-check-label, .form-check-input.is-valid + .form-check-label { - color: #17c671; -} - -.was-validated .custom-control-input:valid ~ .custom-control-indicator, .custom-control-input.is-valid ~ .custom-control-indicator { - background-color: #57eca4; - border-color: #2ae68b; -} - -.was-validated .custom-control-input:valid ~ .custom-control-description, .custom-control-input.is-valid ~ .custom-control-description { - color: #17c671; -} - -.was-validated .custom-select:valid, .custom-select.is-valid { - color: #17c671; -} - -.was-validated .custom-file-input:focus:valid ~ .custom-file-control, .custom-file-input:focus.is-valid ~ .custom-file-control { - box-shadow: 0 5px 11.5px rgba(23, 198, 113, 0.1), 0 1px 1px 0.1rem rgba(23, 198, 113, 0.2); -} - -.was-validated .custom-file-input:valid ~ .custom-file-control, .custom-file-input.is-valid ~ .custom-file-control { - border-color: #17c671; - box-shadow: 0 5px 11.5px rgba(23, 198, 113, 0.1); -} - -.was-validated .custom-file-input:valid ~ .custom-file-control::before, .custom-file-input.is-valid ~ .custom-file-control::before { - background-color: #b3f6d5; - border-color: #2ae68b; - color: #17c671; -} - -.was-validated .custom-file-input:valid ~ .custom-file-control::after, .custom-file-input.is-valid ~ .custom-file-control::after { - color: #17c671; -} - -.was-validated .custom-toggle .custom-control-input:checked:valid ~ .custom-control-indicator, .custom-toggle .custom-control-input:checked.is-valid ~ .custom-control-indicator { - background: #17c671; - border-color: transparent; -} - -.was-validated .custom-toggle .custom-control-input:checked:valid ~ .custom-control-indicator:after, .custom-toggle .custom-control-input:checked.is-valid ~ .custom-control-indicator:after { - background: #fff; -} - -.was-validated .custom-toggle .custom-control-input:valid ~ .custom-control-indicator, .custom-toggle .custom-control-input.is-valid ~ .custom-control-indicator { - background: #fff; -} - -.was-validated .custom-toggle .custom-control-input:valid ~ .custom-control-indicator:after, .custom-toggle .custom-control-input.is-valid ~ .custom-control-indicator:after { - background: #eb8c95; -} - -.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated -.custom-select:invalid, -.custom-select.is-invalid { - border-color: #c4183c; - box-shadow: 0 5px 11.5px rgba(196, 24, 60, 0.1); -} - -.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated -.custom-select:invalid:focus, -.custom-select.is-invalid:focus { - box-shadow: 0 5px 11.5px rgba(196, 24, 60, 0.1), 0 1px 1px 0.1rem rgba(196, 24, 60, 0.2); -} - -.was-validated .form-control:invalid:focus:hover, .form-control.is-invalid:focus:hover, .was-validated -.custom-select:invalid:focus:hover, -.custom-select.is-invalid:focus:hover { - border-color: #c4183c; -} - -.was-validated .form-check-input:invalid + .form-check-label, .form-check-input.is-invalid + .form-check-label { - color: #c4183c; -} - -.was-validated .custom-control-input:invalid ~ .custom-control-indicator, .custom-control-input.is-invalid ~ .custom-control-indicator { - background-color: #ea5876; - border-color: #e52a51; -} - -.was-validated .custom-control-input:invalid ~ .custom-control-description, .custom-control-input.is-invalid ~ .custom-control-description { - color: #c4183c; -} - -.was-validated .custom-select:invalid, .custom-select.is-invalid { - color: #c4183c; -} - -.was-validated .custom-file-input:focus:invalid ~ .custom-file-control, .custom-file-input:focus.is-invalid ~ .custom-file-control { - box-shadow: 0 5px 11.5px rgba(196, 24, 60, 0.1), 0 1px 1px 0.1rem rgba(196, 24, 60, 0.2); -} - -.was-validated .custom-file-input:invalid ~ .custom-file-control, .custom-file-input.is-invalid ~ .custom-file-control { - border-color: #c4183c; - box-shadow: 0 5px 11.5px rgba(196, 24, 60, 0.1); -} - -.was-validated .custom-file-input:invalid ~ .custom-file-control::before, .custom-file-input.is-invalid ~ .custom-file-control::before { - background-color: #f6b2c0; - border-color: #e52a51; - color: #c4183c; -} - -.was-validated .custom-file-input:invalid ~ .custom-file-control::after, .custom-file-input.is-invalid ~ .custom-file-control::after { - color: #c4183c; -} - -.was-validated .custom-toggle .custom-control-input:checked:invalid ~ .custom-control-indicator, .custom-toggle .custom-control-input:checked.is-invalid ~ .custom-control-indicator { - background: #17c671; - border-color: transparent; -} - -.was-validated .custom-toggle .custom-control-input:checked:invalid ~ .custom-control-indicator:after, .custom-toggle .custom-control-input:checked.is-invalid ~ .custom-control-indicator:after { - background: #fff; -} - -.was-validated .custom-toggle .custom-control-input:invalid ~ .custom-control-indicator, .custom-toggle .custom-control-input.is-invalid ~ .custom-control-indicator { - background: #fff; -} - -.was-validated .custom-toggle .custom-control-input:invalid ~ .custom-control-indicator:after, .custom-toggle .custom-control-input.is-invalid ~ .custom-control-indicator:after { - background: #eb8c95; -} - -.btn { - font-weight: 300; - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - border: 1px solid transparent; - padding: 0.75rem 1.25rem; - font-size: 0.875rem; - line-height: 1.1; - border-radius: 3px; - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.btn:hover, .btn.hover { - cursor: pointer; -} - -.btn.disabled, .btn:disabled { - box-shadow: none; -} - -.btn.btn-squared { - border-radius: 0; -} - -.btn.btn-pill { - border-radius: 50px; -} - -.btn-primary { - background-color: #007bff; - border-color: #007bff; - box-shadow: none; - color: #fff; -} - -.btn-primary:hover { - color: #fff; - background-color: #006fe6; - border-color: #007bff; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(0, 123, 255, 0.25); -} - -.btn-primary:focus, .btn-primary.focus { - box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.15), 0 3px 15px rgba(0, 123, 255, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-primary.disabled, .btn-primary:disabled { - background-color: #007bff; - border-color: #007bff; - box-shadow: none; - cursor: not-allowed; -} - -.btn-primary:active, .btn-primary.active, -.show > .btn-primary.dropdown-toggle { - background-color: #006fe6; - background-image: none; - border-color: #0062cc; - box-shadow: inset 0 0.1875rem 0.625rem 0 #0062cc, inset 0 0.0625rem 0.125rem 0 #0056b3; -} - -.btn-secondary { - background-color: #5A6169; - border-color: #5A6169; - box-shadow: none; - color: #fff; -} - -.btn-secondary:hover { - color: #fff; - background-color: #4e545b; - border-color: #5A6169; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(90, 97, 105, 0.25); -} - -.btn-secondary:focus, .btn-secondary.focus { - box-shadow: 0 0 0 3px rgba(90, 97, 105, 0.15), 0 3px 15px rgba(90, 97, 105, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-secondary.disabled, .btn-secondary:disabled { - background-color: #5A6169; - border-color: #5A6169; - box-shadow: none; - cursor: not-allowed; -} - -.btn-secondary:active, .btn-secondary.active, -.show > .btn-secondary.dropdown-toggle { - background-color: #4e545b; - background-image: none; - border-color: #42484e; - box-shadow: inset 0 0.1875rem 0.625rem 0 #42484e, inset 0 0.0625rem 0.125rem 0 #373b40; -} - -.btn-success { - background-color: #17c671; - border-color: #17c671; - box-shadow: none; - color: #fff; -} - -.btn-success:hover { - color: #fff; - background-color: #14af64; - border-color: #17c671; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(23, 198, 113, 0.25); -} - -.btn-success:focus, .btn-success.focus { - box-shadow: 0 0 0 3px rgba(23, 198, 113, 0.15), 0 3px 15px rgba(23, 198, 113, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-success.disabled, .btn-success:disabled { - background-color: #17c671; - border-color: #17c671; - box-shadow: none; - cursor: not-allowed; -} - -.btn-success:active, .btn-success.active, -.show > .btn-success.dropdown-toggle { - background-color: #14af64; - background-image: none; - border-color: #129857; - box-shadow: inset 0 0.1875rem 0.625rem 0 #129857, inset 0 0.0625rem 0.125rem 0 #0f814a; -} - -.btn-info { - background-color: #00b8d8; - border-color: #00b8d8; - box-shadow: none; - color: #fff; -} - -.btn-info:hover { - color: #fff; - background-color: #00a2bf; - border-color: #00b8d8; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(0, 184, 216, 0.25); -} - -.btn-info:focus, .btn-info.focus { - box-shadow: 0 0 0 3px rgba(0, 184, 216, 0.15), 0 3px 15px rgba(0, 184, 216, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-info.disabled, .btn-info:disabled { - background-color: #00b8d8; - border-color: #00b8d8; - box-shadow: none; - cursor: not-allowed; -} - -.btn-info:active, .btn-info.active, -.show > .btn-info.dropdown-toggle { - background-color: #00a2bf; - background-image: none; - border-color: #008da5; - box-shadow: inset 0 0.1875rem 0.625rem 0 #008da5, inset 0 0.0625rem 0.125rem 0 #00778c; -} - -.btn-warning { - background-color: #ffb400; - border-color: #ffb400; - box-shadow: none; - color: black; -} - -.btn-warning:hover { - color: black; - background-color: #e6a200; - border-color: #ffb400; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(255, 180, 0, 0.25); -} - -.btn-warning:focus, .btn-warning.focus { - box-shadow: 0 0 0 3px rgba(255, 180, 0, 0.15), 0 3px 15px rgba(255, 180, 0, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-warning.disabled, .btn-warning:disabled { - background-color: #ffb400; - border-color: #ffb400; - box-shadow: none; - cursor: not-allowed; -} - -.btn-warning:active, .btn-warning.active, -.show > .btn-warning.dropdown-toggle { - background-color: #e6a200; - background-image: none; - border-color: #cc9000; - box-shadow: inset 0 0.1875rem 0.625rem 0 #cc9000, inset 0 0.0625rem 0.125rem 0 #b37e00; -} - -.btn-danger { - background-color: #c4183c; - border-color: #c4183c; - box-shadow: none; - color: #fff; -} - -.btn-danger:hover { - color: #fff; - background-color: #ad1535; - border-color: #c4183c; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(196, 24, 60, 0.25); -} - -.btn-danger:focus, .btn-danger.focus { - box-shadow: 0 0 0 3px rgba(196, 24, 60, 0.15), 0 3px 15px rgba(196, 24, 60, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-danger.disabled, .btn-danger:disabled { - background-color: #c4183c; - border-color: #c4183c; - box-shadow: none; - cursor: not-allowed; -} - -.btn-danger:active, .btn-danger.active, -.show > .btn-danger.dropdown-toggle { - background-color: #ad1535; - background-image: none; - border-color: #97122e; - box-shadow: inset 0 0.1875rem 0.625rem 0 #97122e, inset 0 0.0625rem 0.125rem 0 #801027; -} - -.btn-light { - background-color: #e9ecef; - border-color: #e9ecef; - box-shadow: none; - color: #3b4651; -} - -.btn-light:hover { - color: #3b4651; - background-color: #dadfe4; - border-color: #e9ecef; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(233, 236, 239, 0.25); -} - -.btn-light:focus, .btn-light.focus { - box-shadow: 0 0 0 3px rgba(233, 236, 239, 0.15), 0 3px 15px rgba(233, 236, 239, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-light.disabled, .btn-light:disabled { - background-color: #e9ecef; - border-color: #e9ecef; - box-shadow: none; - cursor: not-allowed; -} - -.btn-light:active, .btn-light.active, -.show > .btn-light.dropdown-toggle { - background-color: #dadfe4; - background-image: none; - border-color: #cbd3da; - box-shadow: inset 0 0.1875rem 0.625rem 0 #cbd3da, inset 0 0.0625rem 0.125rem 0 #bdc6cf; -} - -.btn-dark { - background-color: #212529; - border-color: #212529; - box-shadow: none; - color: #fff; -} - -.btn-dark:hover { - color: #fff; - background-color: #16181b; - border-color: #212529; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(33, 37, 41, 0.25); -} - -.btn-dark:focus, .btn-dark.focus { - box-shadow: 0 0 0 3px rgba(33, 37, 41, 0.15), 0 3px 15px rgba(33, 37, 41, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-dark.disabled, .btn-dark:disabled { - background-color: #212529; - border-color: #212529; - box-shadow: none; - cursor: not-allowed; -} - -.btn-dark:active, .btn-dark.active, -.show > .btn-dark.dropdown-toggle { - background-color: #16181b; - background-image: none; - border-color: #0a0c0d; - box-shadow: inset 0 0.1875rem 0.625rem 0 #0a0c0d, inset 0 0.0625rem 0.125rem 0 black; -} - -.btn-white { - background-color: #fff; - border-color: #fff; - box-shadow: none; - color: #595959; -} - -.btn-white:hover { - color: #595959; - background-color: #f2f2f2; - border-color: #fff; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(255, 255, 255, 0.25); -} - -.btn-white:focus, .btn-white.focus { - box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.15), 0 3px 15px rgba(255, 255, 255, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-white.disabled, .btn-white:disabled { - background-color: #fff; - border-color: #fff; - box-shadow: none; - cursor: not-allowed; -} - -.btn-white:active, .btn-white.active, -.show > .btn-white.dropdown-toggle { - background-color: #f2f2f2; - background-image: none; - border-color: #e6e6e6; - box-shadow: inset 0 0.1875rem 0.625rem 0 #e6e6e6, inset 0 0.0625rem 0.125rem 0 #d9d9d9; -} - -.btn-black { - background-color: #000; - border-color: #000; - box-shadow: none; - color: #fff; -} - -.btn-black:hover { - color: #fff; - background-color: black; - border-color: #000; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(0, 0, 0, 0.25); -} - -.btn-black:focus, .btn-black.focus { - box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15), 0 3px 15px rgba(0, 0, 0, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-black.disabled, .btn-black:disabled { - background-color: #000; - border-color: #000; - box-shadow: none; - cursor: not-allowed; -} - -.btn-black:active, .btn-black.active, -.show > .btn-black.dropdown-toggle { - background-color: black; - background-image: none; - border-color: black; - box-shadow: inset 0 0.1875rem 0.625rem 0 black, inset 0 0.0625rem 0.125rem 0 black; -} - -.btn-outline-primary { - background-color: transparent; - background-image: none; - border-color: #007bff; -} - -.btn-outline-primary:hover { - background-color: #007bff; - border-color: #007bff; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(0, 123, 255, 0.25); - color: #fff; -} - -.btn-outline-primary:focus, .btn-outline-primary.focus { - box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.15), 0 3px 15px rgba(0, 123, 255, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-outline-primary.disabled, .btn-outline-primary:disabled { - color: #007bff; - background-color: transparent; - box-shadow: none; -} - -.btn-outline-primary:active, .btn-outline-primary.active, -.show > .btn-outline-primary.dropdown-toggle { - color: #fff; - background-color: #007bff; - border-color: #007bff; -} - -.btn-outline-secondary { - background-color: transparent; - background-image: none; - border-color: #5A6169; -} - -.btn-outline-secondary:hover { - background-color: #5A6169; - border-color: #5A6169; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(90, 97, 105, 0.25); - color: #fff; -} - -.btn-outline-secondary:focus, .btn-outline-secondary.focus { - box-shadow: 0 0 0 3px rgba(90, 97, 105, 0.15), 0 3px 15px rgba(90, 97, 105, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { - color: #5A6169; - background-color: transparent; - box-shadow: none; -} - -.btn-outline-secondary:active, .btn-outline-secondary.active, -.show > .btn-outline-secondary.dropdown-toggle { - color: #fff; - background-color: #5A6169; - border-color: #5A6169; -} - -.btn-outline-success { - background-color: transparent; - background-image: none; - border-color: #17c671; -} - -.btn-outline-success:hover { - background-color: #17c671; - border-color: #17c671; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(23, 198, 113, 0.25); - color: #fff; -} - -.btn-outline-success:focus, .btn-outline-success.focus { - box-shadow: 0 0 0 3px rgba(23, 198, 113, 0.15), 0 3px 15px rgba(23, 198, 113, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-outline-success.disabled, .btn-outline-success:disabled { - color: #17c671; - background-color: transparent; - box-shadow: none; -} - -.btn-outline-success:active, .btn-outline-success.active, -.show > .btn-outline-success.dropdown-toggle { - color: #fff; - background-color: #17c671; - border-color: #17c671; -} - -.btn-outline-info { - background-color: transparent; - background-image: none; - border-color: #00b8d8; -} - -.btn-outline-info:hover { - background-color: #00b8d8; - border-color: #00b8d8; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(0, 184, 216, 0.25); - color: #fff; -} - -.btn-outline-info:focus, .btn-outline-info.focus { - box-shadow: 0 0 0 3px rgba(0, 184, 216, 0.15), 0 3px 15px rgba(0, 184, 216, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-outline-info.disabled, .btn-outline-info:disabled { - color: #00b8d8; - background-color: transparent; - box-shadow: none; -} - -.btn-outline-info:active, .btn-outline-info.active, -.show > .btn-outline-info.dropdown-toggle { - color: #fff; - background-color: #00b8d8; - border-color: #00b8d8; -} - -.btn-outline-warning { - background-color: transparent; - background-image: none; - border-color: #ffb400; -} - -.btn-outline-warning:hover { - background-color: #ffb400; - border-color: #ffb400; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(255, 180, 0, 0.25); - color: black; -} - -.btn-outline-warning:focus, .btn-outline-warning.focus { - box-shadow: 0 0 0 3px rgba(255, 180, 0, 0.15), 0 3px 15px rgba(255, 180, 0, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-outline-warning.disabled, .btn-outline-warning:disabled { - color: #ffb400; - background-color: transparent; - box-shadow: none; -} - -.btn-outline-warning:active, .btn-outline-warning.active, -.show > .btn-outline-warning.dropdown-toggle { - color: #fff; - background-color: #ffb400; - border-color: #ffb400; -} - -.btn-outline-danger { - background-color: transparent; - background-image: none; - border-color: #c4183c; -} - -.btn-outline-danger:hover { - background-color: #c4183c; - border-color: #c4183c; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(196, 24, 60, 0.25); - color: #fff; -} - -.btn-outline-danger:focus, .btn-outline-danger.focus { - box-shadow: 0 0 0 3px rgba(196, 24, 60, 0.15), 0 3px 15px rgba(196, 24, 60, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-outline-danger.disabled, .btn-outline-danger:disabled { - color: #c4183c; - background-color: transparent; - box-shadow: none; -} - -.btn-outline-danger:active, .btn-outline-danger.active, -.show > .btn-outline-danger.dropdown-toggle { - color: #fff; - background-color: #c4183c; - border-color: #c4183c; -} - -.btn-outline-light { - background-color: transparent; - background-image: none; - border-color: #e9ecef; - color: #3b4651; -} - -.btn-outline-light:hover { - background-color: #e9ecef; - border-color: #e9ecef; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(233, 236, 239, 0.25); - color: #3b4651; -} - -.btn-outline-light:focus, .btn-outline-light.focus { - box-shadow: 0 0 0 3px rgba(233, 236, 239, 0.15), 0 3px 15px rgba(233, 236, 239, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-outline-light.disabled, .btn-outline-light:disabled { - color: #e9ecef; - background-color: transparent; - box-shadow: none; -} - -.btn-outline-light:active, .btn-outline-light.active, -.show > .btn-outline-light.dropdown-toggle { - color: #fff; - background-color: #e9ecef; - border-color: #e9ecef; - color: #3b4651; -} - -.btn-outline-dark { - background-color: transparent; - background-image: none; - border-color: #212529; -} - -.btn-outline-dark:hover { - background-color: #212529; - border-color: #212529; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(33, 37, 41, 0.25); - color: #fff; -} - -.btn-outline-dark:focus, .btn-outline-dark.focus { - box-shadow: 0 0 0 3px rgba(33, 37, 41, 0.15), 0 3px 15px rgba(33, 37, 41, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-outline-dark.disabled, .btn-outline-dark:disabled { - color: #212529; - background-color: transparent; - box-shadow: none; -} - -.btn-outline-dark:active, .btn-outline-dark.active, -.show > .btn-outline-dark.dropdown-toggle { - color: #fff; - background-color: #212529; - border-color: #212529; -} - -.btn-outline-white { - background-color: transparent; - background-image: none; - border-color: #fff; - color: #fff; -} - -.btn-outline-white:hover { - background-color: #fff; - border-color: #fff; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(255, 255, 255, 0.25); - color: #595959; -} - -.btn-outline-white:focus, .btn-outline-white.focus { - box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.15), 0 3px 15px rgba(255, 255, 255, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-outline-white.disabled, .btn-outline-white:disabled { - color: #fff; - background-color: transparent; - box-shadow: none; -} - -.btn-outline-white:active, .btn-outline-white.active, -.show > .btn-outline-white.dropdown-toggle { - color: #fff; - background-color: #fff; - border-color: #fff; -} - -.btn-outline-white:active { - color: #595959; -} - -.btn-outline-black { - background-color: transparent; - background-image: none; - border-color: #000; - color: #000; -} - -.btn-outline-black:hover { - background-color: #000; - border-color: #000; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05), 0 4px 10px rgba(0, 0, 0, 0.25); - color: #fff; -} - -.btn-outline-black:focus, .btn-outline-black.focus { - box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15), 0 3px 15px rgba(0, 0, 0, 0.2), 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.btn-outline-black.disabled, .btn-outline-black:disabled { - color: #000; - background-color: transparent; - box-shadow: none; -} - -.btn-outline-black:active, .btn-outline-black.active, -.show > .btn-outline-black.dropdown-toggle { - color: #000; - background-color: #000; - border-color: #000; -} - -.btn-outline-black:active { - color: #fff; -} - -.btn-link { - font-weight: 300; - color: #007bff; -} - -.btn-link:focus, .btn-link:hover { - color: #0056b3; - text-decoration: underline; -} - -.btn-link:disabled { - color: #868e96; -} - -.btn-lg, .btn-group-lg > .btn { - padding: 0.75rem 1.75rem; - font-size: 1.125rem; - line-height: 1.5; - border-radius: 3px; -} - -.btn-sm, .btn-group-sm > .btn { - padding: 0.35rem 1rem; - font-size: 0.75rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.btn-block + .btn-block { - margin-top: 0.5rem; -} - -.fade { - transition: opacity 200ms ease-in-out; -} - -.collapsing { - transition: height 350ms ease-in-out; -} - -i.material-icons { - font-size: inherit; - position: relative; - top: 2px; -} - -.dropdown-menu { - min-width: 10rem; - padding: 0.5rem 0; - margin: 0 0 0; - font-size: 1rem; - color: #5A6169; - border: 1px solid rgba(0, 0, 0, 0.05); - border-radius: 0.375rem; - box-shadow: 0 0.5rem 4rem rgba(0, 0, 0, 0.11), 0 10px 20px rgba(0, 0, 0, 0.05), 0 2px 3px rgba(0, 0, 0, 0.06); -} - -.dropdown-divider { - height: 0; - margin: 0.75rem 0; - overflow: hidden; - border-top: 1px solid #e9ecef; -} - -.dropdown-item { - padding: 0.5rem 1.25rem; - font-weight: 300; - color: #212529; - font-size: 0.9375rem; - transition: background-color 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06), color 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.dropdown-item:focus, .dropdown-item:hover { - color: #16181b; - background-color: #eceeef; -} - -.dropdown-item.active, .dropdown-item:active { - color: #16181b; - background-color: #c3c7cc; -} - -.dropdown-item.disabled, .dropdown-item:disabled { - color: #868e96; -} - -.dropdown-header { - padding: 0.5rem 1.25rem; - font-size: 0.875rem; - color: #868e96; -} - -.btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; -} - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; -} - -.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { - padding-right: 1.3125rem; - padding-left: 1.3125rem; -} - -.btn-group.show .dropdown-toggle { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} - -.input-group[class*="with-addon-icon"] { - position: relative; -} - -.input-group[class*="with-addon-icon"] .input-group-addon { - position: absolute; - background: none; - border: none; - z-index: 100; -} - -.input-group[class*="with-addon-icon"] .form-control { - border-radius: 0.375rem; -} - -.input-group.with-addon-icon-left .form-control { - padding-left: 40px; -} - -.input-group.with-addon-icon-left .input-group-addon { - left: 0; -} - -.input-group.with-addon-icon-right .form-control { - padding-right: 40px; -} - -.input-group.with-addon-icon-right .input-group-addon { - right: 0; -} - -.input-group-addon { - padding: 12px 14px; - font-weight: 300; - line-height: 1.1; - color: #abb6bf; - background-color: #f9fafb; - border: 1px solid #becad6; - border-radius: 0.375rem; -} - -.input-group-addon.form-control-sm { - padding: 0.35rem 1rem; - font-size: 0.875rem; - border-radius: 0.2rem; -} - -.input-group-addon.form-control-lg { - padding: 0.75rem 1.75rem; - font-size: 1rem; - border-radius: 0.5rem; -} - -.input-group-addon.with-icon { - background: #fff; -} - -.input-group-addon i.material-icons { - top: 0; -} - -.input-group-btn > .btn + .btn { - margin-left: -1px; -} - -.input-group-btn:not(:last-child) > .btn, -.input-group-btn:not(:last-child) > .btn-group { - margin-right: -1px; -} - -.input-group-btn:not(:first-child) > .btn, -.input-group-btn:not(:first-child) > .btn-group { - margin-left: -1px; -} - -.custom-control { - min-height: 1.5rem; - padding-left: 1.688rem; -} - -.custom-control .custom-control-description { - transition: color 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.custom-control:hover { - cursor: pointer; -} - -.custom-control-input:checked ~ .custom-control-indicator { - color: #fff; - background-color: #007bff; - border-color: transparent; - box-shadow: none; -} - -.custom-control-input:focus ~ .custom-control-indicator { - box-shadow: none; -} - -.custom-control-input:active ~ .custom-control-indicator { - color: #fff; - background-color: #b3d7ff; - box-shadow: none; -} - -.custom-control-input:disabled ~ .custom-control-indicator { - background-color: #e9ecef; -} - -.custom-control-input:disabled ~ .custom-control-description { - color: #868e96; -} - -.custom-control-indicator { - top: 0.1875rem; - width: 1.125rem; - height: 1.125rem; - background-color: #fff; - border: 1px solid #becad6; - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.custom-checkbox .custom-control-indicator { - border-radius: 2px; -} - -.custom-checkbox .custom-control-indicator:after { - content: ''; - position: absolute; - top: 2px; - left: 6px; - width: 5px; - height: 11px; - opacity: 0; - -webkit-transform: rotate(45deg) scale(0); - transform: rotate(45deg) scale(0); - border-right: 2px solid #fff; - border-bottom: 2px solid #fff; - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); - transition-delay: 100ms; -} - -.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator { - background-image: none; -} - -.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator:after { - opacity: 1; - -webkit-transform: rotate(45deg) scale(1); - transform: rotate(45deg) scale(1); -} - -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator { - background-color: #007bff; - box-shadow: none; -} - -.custom-checkbox .custom-control-input:focus ~ .custom-control-indicator { - box-shadow: 0 0.313rem 0.719rem rgba(0, 123, 255, 0.1), 0 0.156rem 0.125rem rgba(0, 0, 0, 0.06); -} - -.custom-checkbox .custom-control-input:disabled ~ .custom-control-indicator { - border-color: #becad6; -} - -.custom-checkbox .custom-control-input:disabled ~ .custom-control-indicator:after { - border-color: #a8aeb4; -} - -.custom-radio .custom-control-indicator { - border-radius: 50%; -} - -.custom-radio .custom-control-indicator:after { - content: ''; - position: absolute; - border-radius: 50%; - background: #fff; - width: 1.125rem; - height: 1.125rem; - top: -1px; - left: -1px; - opacity: 0; - -webkit-transform: scale(0); - transform: scale(0); - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); - transition-delay: 100ms; -} - -.custom-radio .custom-control-input:checked ~ .custom-control-indicator { - background-image: none; -} - -.custom-radio .custom-control-input:checked ~ .custom-control-indicator:after { - opacity: 1; - -webkit-transform: scale(0.4); - transform: scale(0.4); -} - -.custom-radio .custom-control-input:focus ~ .custom-control-indicator { - box-shadow: 0 0.313rem 0.719rem rgba(0, 123, 255, 0.1), 0 0.156rem 0.125rem rgba(0, 0, 0, 0.06); -} - -.custom-radio .custom-control-input:disabled ~ .custom-control-indicator { - border-color: #becad6; -} - -.custom-radio .custom-control-input:disabled ~ .custom-control-indicator:after { - background: #a8aeb4; -} - -.custom-controls-stacked .custom-control { - margin-bottom: 0.25rem; -} - -.custom-select { - height: calc(2.428rem + 2px); - padding: 0.375rem 1.75rem 0.375rem 0.75rem; - line-height: 1.2; - color: #495057; - font-size: 0.95rem; - font-weight: 300; - background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center; - background-size: 8px 10px; - border: 1px solid #becad6; - transition: border-color 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06), box-shadow 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); - border-radius: 0.375rem; -} - -.custom-select:hover { - border-color: #8fa4b8; -} - -.custom-select:focus { - color: #495057; - border-color: #007bff; - box-shadow: 0 0.313rem 0.719rem rgba(0, 123, 255, 0.1), 0 0.156rem 0.125rem rgba(0, 0, 0, 0.06); -} - -.custom-select:focus:hover { - border-color: #007bff; -} - -.custom-select:focus { - border-color: #007bff; - box-shadow: 0 0.313rem 0.719rem rgba(0, 123, 255, 0.1), 0 0.156rem 0.125rem rgba(0, 0, 0, 0.06); -} - -.custom-select:focus::-ms-value { - color: #495057; - background-color: #fff; -} - -.custom-select:disabled { - color: #868e96; - background-color: #e9ecef; -} - -.custom-select:hover { - cursor: pointer; - border-color: #8fa4b8; -} - -.custom-select-sm { - height: calc(1.575rem + 2px); - padding-top: 0.375rem; - padding-bottom: 0.375rem; - font-size: 75%; -} - -.custom-file { - height: calc(2.428rem + 2px); - font-size: 0.95rem; - transition: border-color 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06), box-shadow 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.custom-file-input { - min-width: 14rem; - height: calc(2.428rem + 2px); -} - -.custom-file-input:focus ~ .custom-file-control { - color: #495057; - border-color: #007bff; - box-shadow: 0 0.313rem 0.719rem rgba(0, 123, 255, 0.1), 0 0.156rem 0.125rem rgba(0, 0, 0, 0.06); -} - -.custom-file-input:focus ~ .custom-file-control:before { - color: #007bff; - background: #e6f2ff; - border-color: #007bff; -} - -.custom-file-input:focus ~ .custom-file-control:hover { - border-color: #007bff; -} - -.custom-file-input:hover { - cursor: pointer; -} - -.custom-file-input:hover ~ .custom-file-control, -.custom-file-input:hover ~ .custom-file-control:before { - border-color: #8fa4b8; -} - -.custom-file-input:disabled + .custom-file-control { - color: #868e96; - background-color: #f8f9fa; -} - -.custom-file-control { - height: calc(2.428rem + 2px); - padding: 0.5rem 1rem; - line-height: 1.5; - color: #495057; - font-weight: 300; - background-color: #fff; - border: 1px solid #becad6; - transition: box-shadow 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06), border-color 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); - border-radius: 0.375rem; -} - -.custom-file-control::before { - top: -1px; - right: -1px; - bottom: -1px; - height: calc(2.428rem + 2px); - padding: 0.5rem 1rem; - line-height: 1.5; - color: #495057; - background-color: #e9ecef; - border: 1px solid #becad6; - border-radius: 0 0.375rem 0.375rem 0; - transition: background 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06), color 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06), border-color 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.custom-toggle { - padding-left: 60px; -} - -.custom-toggle .custom-control-indicator { - position: absolute; - top: 0; - left: 0; - width: 50px; - height: 28px; - background: #fff; - display: block; - border-radius: 100px; - border: 1px solid #becad6; -} - -.custom-toggle .custom-control-indicator:hover { - cursor: pointer; -} - -.custom-toggle .custom-control-indicator:after { - content: ''; - position: absolute; - top: 3px; - left: 3px; - width: 20px; - height: 20px; - background: #becad6; - border-radius: 100px; - transition: 0.3s; -} - -.custom-toggle .custom-control-input:disabled:active + .custom-control-indicator:after { - width: 20px; -} - -.custom-toggle .custom-control-input:disabled:checked + .custom-control-indicator, -.custom-toggle .custom-control-input:disabled:active + .custom-control-indicator { - background-color: #e9ecef; -} - -.custom-toggle .custom-control-input:active + .custom-control-indicator { - background-color: #fff; -} - -.custom-toggle .custom-control-input:checked + .custom-control-indicator { - background: #17c671; -} - -.custom-toggle .custom-control-input:checked + .custom-control-indicator:after { - background: #fff; -} - -.custom-toggle .custom-control-input:checked + .custom-control-indicator:after { - left: calc(100% - 3px); - -webkit-transform: translateX(-100%); - transform: translateX(-100%); -} - -.custom-toggle .custom-control-input:active + .custom-control-indicator:after { - width: 26px; -} - -.custom-toggle .custom-control-input:disabled:checked + .custom-control-indicator { - border-color: #becad6; -} - -.custom-toggle .custom-control-input:disabled:checked + .custom-control-indicator:after { - background: #becad6; -} - -.custom-slider-input { - display: none; -} - -.nav { - font-size: 0.875rem; - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; -} - -.nav-link { - padding: 0.625rem 1.125rem; - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.nav-tabs { - border-bottom: 1px solid #d1d4d8; -} - -.nav-tabs .nav-item { - margin-bottom: -1px; -} - -.nav-tabs .nav-link { - border-top-left-radius: 0.375rem; - border-top-right-radius: 0.375rem; -} - -.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover { - border-color: #e9ecef #e9ecef #d1d4d8; -} - -.nav-tabs .nav-link.disabled { - color: #868e96; -} - -.nav-tabs .nav-link.disabled:hover { - cursor: not-allowed; - border-color: transparent; -} - -.nav-tabs .nav-link:hover { - border-color: #e7e9ea; -} - -.nav-tabs .nav-link.active, -.nav-tabs .nav-item.show .nav-link { - color: #495057; - background-color: #fff; - border-color: #ddd #ddd #fff; -} - -.nav-pills .nav-link { - border-radius: 0.375rem; -} - -.nav-pills .nav-link.active, .nav-pills .nav-link.active:hover, -.show > .nav-pills .nav-link { - color: #fff; - background-color: #007bff; -} - -.nav-pills .nav-link:hover { - background-color: #fdfdfd; -} - -.nav-outlined-pills .nav-link { - border-radius: 0.375rem; - border: 1px solid transparent; -} - -.nav-outlined-pills .nav-link.active, -.show > .nav-outlined-pills .nav-link { - background: none; - color: #007bff; - border-color: #007bff; -} - -.nav-outlined-pills .nav-link:hover { - border-color: #e7e9ea; -} - -.nav-blue .nav-link.active { - background-color: #007bff; - border-color: #0074f0; - color: #fff; -} - -.nav-blue .nav-link { - color: #007bff; -} - -.nav-blue.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #3395ff; - color: #007bff; -} - -.nav-blue.nav-outlined-pills .nav-link.active:hover { - border-color: #3395ff; -} - -.nav-blue.nav-outlined-pills .nav-link { - color: #007bff; -} - -.nav-indigo .nav-link.active { - background-color: #674eec; - border-color: #5b40eb; - color: #fff; -} - -.nav-indigo .nav-link { - color: #674eec; -} - -.nav-indigo.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #8f7cf1; - color: #674eec; -} - -.nav-indigo.nav-outlined-pills .nav-link.active:hover { - border-color: #8f7cf1; -} - -.nav-indigo.nav-outlined-pills .nav-link { - color: #674eec; -} - -.nav-purple .nav-link.active { - background-color: #8445f7; - border-color: #7a36f6; - color: #fff; -} - -.nav-purple .nav-link { - color: #8445f7; -} - -.nav-purple.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #a476f9; - color: #8445f7; -} - -.nav-purple.nav-outlined-pills .nav-link.active:hover { - border-color: #a476f9; -} - -.nav-purple.nav-outlined-pills .nav-link { - color: #8445f7; -} - -.nav-pink .nav-link.active { - background-color: #ff4169; - border-color: #ff325d; - color: #fff; -} - -.nav-pink .nav-link { - color: #ff4169; -} - -.nav-pink.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #ff7491; - color: #ff4169; -} - -.nav-pink.nav-outlined-pills .nav-link.active:hover { - border-color: #ff7491; -} - -.nav-pink.nav-outlined-pills .nav-link { - color: #ff4169; -} - -.nav-red .nav-link.active { - background-color: #c4183c; - border-color: #b61638; - color: #fff; -} - -.nav-red .nav-link { - color: #c4183c; -} - -.nav-red.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #e52a51; - color: #c4183c; -} - -.nav-red.nav-outlined-pills .nav-link.active:hover { - border-color: #e52a51; -} - -.nav-red.nav-outlined-pills .nav-link { - color: #c4183c; -} - -.nav-orange .nav-link.active { - background-color: #fb7906; - border-color: #ee7204; - color: #fff; -} - -.nav-orange .nav-link { - color: #fb7906; -} - -.nav-orange.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #fc9438; - color: #fb7906; -} - -.nav-orange.nav-outlined-pills .nav-link.active:hover { - border-color: #fc9438; -} - -.nav-orange.nav-outlined-pills .nav-link { - color: #fb7906; -} - -.nav-yellow .nav-link.active { - background-color: #ffb400; - border-color: #f0a900; - color: black; -} - -.nav-yellow .nav-link { - color: #ffb400; -} - -.nav-yellow.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #ffc333; - color: #ffb400; -} - -.nav-yellow.nav-outlined-pills .nav-link.active:hover { - border-color: #ffc333; -} - -.nav-yellow.nav-outlined-pills .nav-link { - color: #ffb400; -} - -.nav-green .nav-link.active { - background-color: #17c671; - border-color: #15b869; - color: #fff; -} - -.nav-green .nav-link { - color: #17c671; -} - -.nav-green.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #2ae68b; - color: #17c671; -} - -.nav-green.nav-outlined-pills .nav-link.active:hover { - border-color: #2ae68b; -} - -.nav-green.nav-outlined-pills .nav-link { - color: #17c671; -} - -.nav-teal .nav-link.active { - background-color: #1adba2; - border-color: #18cd98; - color: black; -} - -.nav-teal .nav-link { - color: #1adba2; -} - -.nav-teal.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #40e8b7; - color: #1adba2; -} - -.nav-teal.nav-outlined-pills .nav-link.active:hover { - border-color: #40e8b7; -} - -.nav-teal.nav-outlined-pills .nav-link { - color: #1adba2; -} - -.nav-cyan .nav-link.active { - background-color: #00b8d8; - border-color: #00abc9; - color: #fff; -} - -.nav-cyan .nav-link { - color: #00b8d8; -} - -.nav-cyan.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #0cdbff; - color: #00b8d8; -} - -.nav-cyan.nav-outlined-pills .nav-link.active:hover { - border-color: #0cdbff; -} - -.nav-cyan.nav-outlined-pills .nav-link { - color: #00b8d8; -} - -.nav-white .nav-link.active { - background-color: #fff; - border-color: #f7f7f7; - color: #595959; -} - -.nav-white .nav-link { - color: #fff; -} - -.nav-white.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: white; - color: #fff; -} - -.nav-white.nav-outlined-pills .nav-link.active:hover { - border-color: white; -} - -.nav-white.nav-outlined-pills .nav-link { - color: #fff; -} - -.nav-gray .nav-link.active { - background-color: #868e96; - border-color: #7e868f; - color: #fff; -} - -.nav-gray .nav-link { - color: #868e96; -} - -.nav-gray.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #a1a8ae; - color: #868e96; -} - -.nav-gray.nav-outlined-pills .nav-link.active:hover { - border-color: #a1a8ae; -} - -.nav-gray.nav-outlined-pills .nav-link { - color: #868e96; -} - -.nav-gray-dark .nav-link.active { - background-color: #343a40; - border-color: #2d3238; - color: #fff; -} - -.nav-gray-dark .nav-link { - color: #343a40; -} - -.nav-gray-dark.nav-outlined-pills .nav-link.active { - background: transparent; - border-color: #4b545c; - color: #343a40; -} - -.nav-gray-dark.nav-outlined-pills .nav-link.active:hover { - border-color: #4b545c; -} - -.nav-gray-dark.nav-outlined-pills .nav-link { - color: #343a40; -} - -.navbar { - padding: 0.75rem 1.5rem; -} - -.navbar-brand { - padding-top: 0.625rem; - padding-bottom: 0.625rem; - margin-right: 1.5rem; - font-size: 1rem; - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - font-weight: 400; -} - -.navbar-text { - padding-top: 0.625rem; - padding-bottom: 0.625rem; -} - -.navbar-toggler { - padding: 0.5rem 0.5rem; - font-size: 1rem; - background: #fff; - border: 1px solid transparent; - border-radius: 0.375rem; -} - -@media (min-width: 576px) { - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: .625rem; - padding-left: .625rem; - } -} - -@media (min-width: 768px) { - .navbar-expand-md .navbar-nav .nav-link { - padding-right: .625rem; - padding-left: .625rem; - } -} - -@media (min-width: 992px) { - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: .625rem; - padding-left: .625rem; - } -} - -@media (min-width: 1200px) { - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: .625rem; - padding-left: .625rem; - } -} - -.navbar-expand .navbar-nav .nav-link { - padding-right: .625rem; - padding-left: .625rem; -} - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.5); -} - -.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover { - color: rgba(0, 0, 0, 0.7); -} - -.navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); -} - -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .active > .nav-link, -.navbar-light .navbar-nav .nav-link.show, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.5); - border-color: rgba(0, 0, 0, 0.1); - background: none; -} - -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); -} - -.navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.5); -} - -.navbar-dark .navbar-brand { - color: white; -} - -.navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover { - color: white; -} - -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, 0.5); -} - -.navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover { - color: rgba(255, 255, 255, 0.75); -} - -.navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, 0.25); -} - -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .active > .nav-link, -.navbar-dark .navbar-nav .nav-link.show, -.navbar-dark .navbar-nav .nav-link.active { - color: white; -} - -.navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, 0.5); - border-color: rgba(255, 255, 255, 0.1); - background: none; -} - -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); -} - -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, 0.5); -} - -.card { - background-color: #fff; - border: none; - border-radius: 0.625rem; - box-shadow: 0 0.46875rem 2.1875rem rgba(90, 97, 105, 0.1), 0 0.9375rem 1.40625rem rgba(90, 97, 105, 0.1), 0 0.25rem 0.53125rem rgba(90, 97, 105, 0.12), 0 0.125rem 0.1875rem rgba(90, 97, 105, 0.1); -} - -.card .card-text { - margin-bottom: 1.5625rem; -} - -.card a:hover { - text-decoration: none; -} - -.card-body { - padding: 1.875rem; -} - -.card-title { - font-weight: 500; - margin-bottom: 0.75rem; -} - -.card-link { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; -} - -.card-link + .card-link { - margin-left: 1.875rem; -} - -.card > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0.625rem; - border-top-right-radius: 0.625rem; -} - -.card > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0.625rem; - border-bottom-left-radius: 0.625rem; -} - -.card .list-group-item { - padding: 0.8125rem 1.875rem; -} - -.card-header { - padding: 1.09375rem 1.875rem; - background-color: rgba(90, 97, 105, 0.06); - border-bottom: none; -} - -.card-header:first-child { - border-radius: 0.625rem 0.625rem 0 0; -} - -.card-footer { - padding: 1.09375rem 1.875rem; - background-color: rgba(90, 97, 105, 0.06); - border-top: none; -} - -.card-footer:last-child { - border-radius: 0 0 0.625rem 0.625rem; -} - -.card-header-tabs { - margin-bottom: -1rem; - border-bottom: 0; -} - -.card-header-tabs .nav-link:hover { - border-bottom: transparent; -} - -.card-img-overlay { - padding: 1.875rem 2.1875rem; - background: rgba(90, 97, 105, 0.5); - border-radius: 0.625rem; -} - -.card-img-overlay .card-title { - color: #fff; -} - -.card-img { - border-radius: 0.625rem; -} - -.card-img-top { - border-top-left-radius: 0.625rem; - border-top-right-radius: 0.625rem; -} - -.card-img-bottom { - border-bottom-right-radius: 0.625rem; - border-bottom-left-radius: 0.625rem; -} - -@media (min-width: 576px) { - .card-deck { - margin-right: -0.9375rem; - margin-left: -0.9375rem; - } - .card-deck .card { - margin-right: 0.9375rem; - margin-left: 0.9375rem; - } -} - -@media (min-width: 576px) { - .card-group { - box-shadow: 0 0.46875rem 2.1875rem rgba(90, 97, 105, 0.1), 0 0.9375rem 1.40625rem rgba(90, 97, 105, 0.1), 0 0.25rem 0.53125rem rgba(90, 97, 105, 0.12), 0 0.125rem 0.1875rem rgba(90, 97, 105, 0.1); - border-bottom-right-radius: 0.625rem; - border-bottom-left-radius: 0.625rem; - } - .card-group .card { - box-shadow: none; - } - .card-group .card .card-body { - border-right: 1px solid #e7e9ea; - } - .card-group .card .card-footer { - border-radius: 0; - border-right: 1px solid #e7e9ea; - } - .card-group .card:first-child .card-footer { - border-bottom-left-radius: 0.625rem; - } - .card-group .card:last-child { - border-right: none; - } - .card-group .card:last-child .card-footer { - border-bottom-right-radius: 0.625rem; - border: none; - } - .card-group .card:first-child { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - .card-group .card:first-child .card-img-top { - border-top-right-radius: 0; - } - .card-group .card:first-child .card-img-bottom { - border-bottom-right-radius: 0; - } - .card-group .card:last-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - .card-group .card:last-child .card-img-top { - border-top-left-radius: 0; - } - .card-group .card:last-child .card-img-bottom { - border-bottom-left-radius: 0; - } - .card-group .card:not(:first-child):not(:last-child) { - border-radius: 0; - } - .card-group .card:not(:first-child):not(:last-child) .card-img-top, - .card-group .card:not(:first-child):not(:last-child) .card-img-bottom { - border-radius: 0; - } -} - -.card-columns .card { - margin-bottom: 2.1875rem; -} - -@media (min-width: 576px) { - .card-columns { - -webkit-column-count: 3; - column-count: 3; - -webkit-column-gap: 1.25rem; - column-gap: 1.25rem; - } -} - -.pagination { - border-radius: 0.375rem; - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - font-size: 0.875rem; -} - -.page-item { - box-shadow: 0 0.125rem 0.9375rem rgba(90, 97, 105, 0.1), 0 0.125rem 0.1875rem rgba(90, 97, 105, 0.15); -} - -.page-item:first-child { - border-top-left-radius: 0.375rem; - border-bottom-left-radius: 0.375rem; - overflow: hidden; -} - -.page-item:last-child { - border-top-right-radius: 0.375rem; - border-bottom-right-radius: 0.375rem; - overflow: hidden; -} - -.page-item:last-child .page-link { - border-right: none; -} - -.page-item.active .page-link { - color: #fff; - background-color: #007bff; - border-color: #007bff; -} - -.page-item.disabled .page-link { - color: #a8aeb4; - background-color: #fff; - border-color: #dfe1e3; -} - -.page-link { - padding: 0.5rem 0.75rem; - line-height: 1.25; - color: #007bff; - background-color: #fff; - border: none; - margin: 0; - border: none; - border-right: 1px solid #dfe1e3; - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.page-link:focus, .page-link:hover { - color: #0056b3; - background-color: #f5f5f6; - border-color: #dfe1e3; -} - -.pagination-lg .page-link { - padding: 0.9375rem 1.5625rem; - font-size: 1rem; - line-height: 1.5; -} - -.pagination-lg .page-item:first-child .page-link { - border-top-left-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; -} - -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 0.5rem; - border-bottom-right-radius: 0.5rem; -} - -.pagination-sm .page-link { - padding: 0.25rem 0.6875rem; - font-size: 0.875rem; - line-height: 1.5; -} - -.pagination-sm .page-item:first-child .page-link { - border-top-left-radius: 0.2rem; - border-bottom-left-radius: 0.2rem; -} - -.pagination-sm .page-item:last-child .page-link { - border-top-right-radius: 0.2rem; - border-bottom-right-radius: 0.2rem; -} - -.badge { - padding: 0.375rem 0.5rem; - font-size: 75%; - font-weight: 500; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - color: #fff; - border-radius: 0.375rem; -} - -a.badge { - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.badge-pill { - border-radius: 10rem; -} - -.badge-squared { - border-radius: 0; -} - -.badge-primary { - color: #fff; - background-color: #007bff; -} - -.badge-primary[href]:focus, .badge-primary[href]:hover { - color: #fff; - text-decoration: none; - background-color: #0062cc; -} - -.badge-outline-primary { - background: none; - border: 1px solid #007bff; - color: #007bff; -} - -.badge-secondary { - color: #fff; - background-color: #5A6169; -} - -.badge-secondary[href]:focus, .badge-secondary[href]:hover { - color: #fff; - text-decoration: none; - background-color: #42484e; -} - -.badge-outline-secondary { - background: none; - border: 1px solid #5A6169; - color: #5A6169; -} - -.badge-success { - color: #fff; - background-color: #17c671; -} - -.badge-success[href]:focus, .badge-success[href]:hover { - color: #fff; - text-decoration: none; - background-color: #129857; -} - -.badge-outline-success { - background: none; - border: 1px solid #17c671; - color: #17c671; -} - -.badge-info { - color: #fff; - background-color: #00b8d8; -} - -.badge-info[href]:focus, .badge-info[href]:hover { - color: #fff; - text-decoration: none; - background-color: #008da5; -} - -.badge-outline-info { - background: none; - border: 1px solid #00b8d8; - color: #00b8d8; -} - -.badge-warning { - color: black; - background-color: #ffb400; -} - -.badge-warning[href]:focus, .badge-warning[href]:hover { - color: black; - text-decoration: none; - background-color: #cc9000; -} - -.badge-outline-warning { - background: none; - border: 1px solid #ffb400; - color: #ffb400; -} - -.badge-danger { - color: #fff; - background-color: #c4183c; -} - -.badge-danger[href]:focus, .badge-danger[href]:hover { - color: #fff; - text-decoration: none; - background-color: #97122e; -} - -.badge-outline-danger { - background: none; - border: 1px solid #c4183c; - color: #c4183c; -} - -.badge-light { - color: #3b4651; - background-color: #e9ecef; -} - -.badge-light[href]:focus, .badge-light[href]:hover { - color: #3b4651; - text-decoration: none; - background-color: #cbd3da; -} - -.badge-outline-light { - background: none; - border: 1px solid #e9ecef; - color: #e9ecef; - color: #3b4651; -} - -.badge-dark { - color: #fff; - background-color: #212529; -} - -.badge-dark[href]:focus, .badge-dark[href]:hover { - color: #fff; - text-decoration: none; - background-color: #0a0c0d; -} - -.badge-outline-dark { - background: none; - border: 1px solid #212529; - color: #212529; -} - -.jumbotron { - padding: 38px 42px; - margin-bottom: 2rem; - background-color: #eceeef; - border-radius: 0.5rem; -} - -@media (min-width: 576px) { - .jumbotron { - padding: 4rem 2rem; - } -} - -.alert { - padding: 0.75rem 1.25rem; - margin-bottom: 1rem; - border: none; - border-radius: 0; -} - -.alert-link { - font-weight: 500; -} - -.alert-dismissible .close { - top: -0.75rem; - right: -1.25rem; - padding: 0.75rem 1.25rem; - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.alert-dismissible .close:hover { - cursor: pointer; -} - -.alert-primary { - color: #f5faff; - background-color: #007bff; -} - -.alert-primary .alert-link { - color: #f5faff; -} - -.alert-secondary { - color: #d9dcdf; - background-color: #5A6169; -} - -.alert-secondary .alert-link { - color: #d9dcdf; -} - -.alert-success { - color: #d7fae9; - background-color: #17c671; -} - -.alert-success .alert-link { - color: #d7fae9; -} - -.alert-info { - color: #cef8ff; - background-color: #00b8d8; -} - -.alert-info .alert-link { - color: #cef8ff; -} - -.alert-warning { - color: #fffcf5; - background-color: #ffb400; -} - -.alert-warning .alert-link { - color: #fffcf5; -} - -.alert-danger { - color: #fad7de; - background-color: #c4183c; -} - -.alert-danger .alert-link { - color: #fad7de; -} - -.alert-light { - color: white; - background-color: #e9ecef; - color: #3b4651; -} - -.alert-light .alert-link { - color: white; -} - -.alert-light .alert-link { - color: #3b4651; -} - -.alert-dark { - color: #959faa; - background-color: #212529; -} - -.alert-dark .alert-link { - color: #959faa; -} - -.progress-wrapper { - position: relative; - color: #5A6169; -} - -.progress-wrapper .progress-label { - font-size: 0.8125rem; -} - -.progress-wrapper .progress-value { - position: absolute; - top: 6px; - right: 0; - color: #5A6169; -} - -.progress { - font-size: 0.625rem; - line-height: 0.625rem; - background-color: #f5f5f6; - margin-top: 6px; - border-radius: 1.25rem; - box-shadow: inset 0 0.1rem 0.1rem rgba(90, 97, 105, 0.15); -} - -.progress-sm { - height: 0.3125rem; -} - -.progress-lg { - height: 0.9375rem; -} - -.progress-lg .progress-bar { - height: 0.9375rem; -} - -.progress-bar { - height: 0.625rem; - line-height: 0.625rem; - color: #fff; - background-color: #007bff; - transition: width 0.6s ease; -} - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 0.625rem 0.625rem; -} - -.progress-bar-animated { - -webkit-animation: progress-bar-stripes 1s linear infinite; - animation: progress-bar-stripes 1s linear infinite; -} - -.list-group-item-action { - color: #5A6169; - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.list-group-item-action:focus, .list-group-item-action:hover { - color: #5A6169; - background-color: #f7f8f8; -} - -.list-group-item-action:active { - color: #5A6169; - background-color: #eceeef; -} - -.list-group-item { - padding: 0.75rem 1.25rem; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, 0.125); -} - -.list-group-item:first-child { - border-top-left-radius: 0.375rem; - border-top-right-radius: 0.375rem; -} - -.list-group-item:last-child { - border-bottom-right-radius: 0.375rem; - border-bottom-left-radius: 0.375rem; -} - -.list-group-item.disabled, .list-group-item:disabled { - color: #868e96; - background-color: #fff; -} - -.list-group-item.active { - color: #fff; - background-color: #007bff; - border-color: #007bff; -} - -.list-group-item-primary { - color: #004085; - background-color: #b8daff; -} - -a.list-group-item-primary, -button.list-group-item-primary { - color: #004085; -} - -a.list-group-item-primary:focus, a.list-group-item-primary:hover, -button.list-group-item-primary:focus, -button.list-group-item-primary:hover { - color: #004085; - background-color: #9fcdff; -} - -a.list-group-item-primary.active, -button.list-group-item-primary.active { - background-color: #004085; - border-color: #004085; -} - -.list-group-item-secondary { - color: #2f3237; - background-color: #d1d3d5; -} - -a.list-group-item-secondary, -button.list-group-item-secondary { - color: #2f3237; -} - -a.list-group-item-secondary:focus, a.list-group-item-secondary:hover, -button.list-group-item-secondary:focus, -button.list-group-item-secondary:hover { - color: #2f3237; - background-color: #c4c6c9; -} - -a.list-group-item-secondary.active, -button.list-group-item-secondary.active { - background-color: #2f3237; - border-color: #2f3237; -} - -.list-group-item-success { - color: #0c673b; - background-color: #beefd7; -} - -a.list-group-item-success, -button.list-group-item-success { - color: #0c673b; -} - -a.list-group-item-success:focus, a.list-group-item-success:hover, -button.list-group-item-success:focus, -button.list-group-item-success:hover { - color: #0c673b; - background-color: #aaeaca; -} - -a.list-group-item-success.active, -button.list-group-item-success.active { - background-color: #0c673b; - border-color: #0c673b; -} - -.list-group-item-info { - color: #006070; - background-color: #b8ebf4; -} - -a.list-group-item-info, -button.list-group-item-info { - color: #006070; -} - -a.list-group-item-info:focus, a.list-group-item-info:hover, -button.list-group-item-info:focus, -button.list-group-item-info:hover { - color: #006070; - background-color: #a2e5f1; -} - -a.list-group-item-info.active, -button.list-group-item-info.active { - background-color: #006070; - border-color: #006070; -} - -.list-group-item-warning { - color: #855e00; - background-color: #ffeab8; -} - -a.list-group-item-warning, -button.list-group-item-warning { - color: #855e00; -} - -a.list-group-item-warning:focus, a.list-group-item-warning:hover, -button.list-group-item-warning:focus, -button.list-group-item-warning:hover { - color: #855e00; - background-color: #ffe29f; -} - -a.list-group-item-warning.active, -button.list-group-item-warning.active { - background-color: #855e00; - border-color: #855e00; -} - -.list-group-item-danger { - color: #660c1f; - background-color: #eebec8; -} - -a.list-group-item-danger, -button.list-group-item-danger { - color: #660c1f; -} - -a.list-group-item-danger:focus, a.list-group-item-danger:hover, -button.list-group-item-danger:focus, -button.list-group-item-danger:hover { - color: #660c1f; - background-color: #e9aab7; -} - -a.list-group-item-danger.active, -button.list-group-item-danger.active { - background-color: #660c1f; - border-color: #660c1f; -} - -.list-group-item-light { - color: #797b7c; - background-color: #f9fafb; -} - -a.list-group-item-light, -button.list-group-item-light { - color: #797b7c; -} - -a.list-group-item-light:focus, a.list-group-item-light:hover, -button.list-group-item-light:focus, -button.list-group-item-light:hover { - color: #797b7c; - background-color: #eaedf1; -} - -a.list-group-item-light.active, -button.list-group-item-light.active { - background-color: #797b7c; - border-color: #797b7c; -} - -.list-group-item-dark { - color: #111315; - background-color: #c1c2c3; -} - -a.list-group-item-dark, -button.list-group-item-dark { - color: #111315; -} - -a.list-group-item-dark:focus, a.list-group-item-dark:hover, -button.list-group-item-dark:focus, -button.list-group-item-dark:hover { - color: #111315; - background-color: #b4b5b6; -} - -a.list-group-item-dark.active, -button.list-group-item-dark.active { - background-color: #111315; - border-color: #111315; -} - -.close { - font-size: 1.5rem; - font-weight: 500; - color: #8c949d; - text-shadow: none; - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.close:focus, .close:hover { - color: #8c949d; -} - -.modal.fade .modal-dialog { - transition: -webkit-transform 0.3s ease-out; - transition: transform 0.3s ease-out; - transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; -} - -.modal-dialog { - margin: 0.625rem; -} - -.modal-content { - background-color: #fff; - border: none; - border-radius: 0.5rem; - box-shadow: 0 0.46875rem 2.1875rem rgba(90, 97, 105, 0.1), 0 0.9375rem 1.40625rem rgba(90, 97, 105, 0.1), 0 0.25rem 0.53125rem rgba(90, 97, 105, 0.12), 0 0.125rem 0.1875rem rgba(90, 97, 105, 0.1); -} - -.modal-backdrop { - z-index: 1040; - background-color: #5A6169; -} - -.modal-backdrop.show { - opacity: 0.12; -} - -.modal-header { - padding: 0.9375rem 2.1875rem; - border-bottom: 1px solid #dfe1e3; -} - -.modal-title { - line-height: 1.5; -} - -.modal-body { - padding: 1.875rem 2.1875rem; -} - -.modal-footer { - padding: 0.9375rem 2.1875rem; - border-top: 1px solid #dfe1e3; -} - -@media (min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.875rem auto; - } - .modal-content { - box-shadow: 0 0.46875rem 2.1875rem rgba(90, 97, 105, 0.1), 0 0.9375rem 1.40625rem rgba(90, 97, 105, 0.1), 0 0.25rem 0.53125rem rgba(90, 97, 105, 0.12), 0 0.125rem 0.1875rem rgba(90, 97, 105, 0.1); - } - .modal-sm { - max-width: 300px; - } -} - -@media (min-width: 992px) { - .modal-lg { - max-width: 800px; - } -} - -.tooltip { - z-index: 1070; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - font-weight: 300; - line-height: 1.5; - font-size: 0.875rem; -} - -.tooltip.show { - opacity: 1; -} - -.tooltip .arrow { - width: 5px; - height: 5px; -} - -.tooltip.bs-tooltip-top, .tooltip.bs-tooltip-auto[x-placement^="top"] { - padding: 5px 0; -} - -.tooltip.bs-tooltip-top .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="top"] .arrow::before { - margin-left: -3px; - border-width: 5px 5px 0; - border-top-color: #fff; -} - -.tooltip.bs-tooltip-right, .tooltip.bs-tooltip-auto[x-placement^="right"] { - padding: 0 5px; -} - -.tooltip.bs-tooltip-right .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="right"] .arrow::before { - margin-top: -3px; - border-width: 5px 5px 5px 0; - border-right-color: #fff; -} - -.tooltip.bs-tooltip-bottom, .tooltip.bs-tooltip-auto[x-placement^="bottom"] { - padding: 5px 0; -} - -.tooltip.bs-tooltip-bottom .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { - margin-left: -3px; - border-width: 0 5px 5px; - border-bottom-color: #fff; -} - -.tooltip.bs-tooltip-left, .tooltip.bs-tooltip-auto[x-placement^="left"] { - padding: 0 5px; -} - -.tooltip.bs-tooltip-left .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="left"] .arrow::before { - margin-top: -3px; - border-width: 5px 0 5px 5px; - border-left-color: #fff; -} - -.tooltip-inner { - max-width: 200px; - padding: 7px 13px; - color: #5A6169; - background-color: #fff; - border-radius: 0.375rem; - box-shadow: 0 3px 15px rgba(90, 97, 105, 0.1), 0 2px 3px rgba(90, 97, 105, 0.2); -} - -.popover { - z-index: 1060; - max-width: 276px; - padding: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - font-weight: 300; - line-height: 1.5; - font-size: 0.875rem; - background-color: #fff; - border: none; - border-radius: 0.5rem; - box-shadow: 0 3px 15px rgba(90, 97, 105, 0.1), 0 2px 3px rgba(90, 97, 105, 0.2); -} - -.popover .arrow { - width: 10px; - height: 5px; -} - -.popover .arrow::before { - border-width: 11px; -} - -.popover .arrow::after { - border-width: 11px; -} - -.popover.bs-popover-top, .popover.bs-popover-auto[x-placement^="top"] { - margin-bottom: 10px; -} - -.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^="top"] .arrow::before { - bottom: -11px; - margin-left: -6px; - border-top-color: rgba(0, 0, 0, 0.05); -} - -.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^="top"] .arrow::after { - bottom: -10px; - margin-left: -6px; - border-top-color: #fff; -} - -.popover.bs-popover-right, .popover.bs-popover-auto[x-placement^="right"] { - margin-left: 10px; -} - -.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^="right"] .arrow::before, -.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^="right"] .arrow::after { - margin-top: -8px; -} - -.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^="right"] .arrow::before { - left: -11px; - border-right-color: rgba(0, 0, 0, 0.05); -} - -.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^="right"] .arrow::after { - left: -10px; - border-right-color: #fff; -} - -.popover.bs-popover-bottom, .popover.bs-popover-auto[x-placement^="bottom"] { - margin-top: 10px; -} - -.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^="bottom"] .arrow::before, -.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^="bottom"] .arrow::after { - margin-left: -7px; -} - -.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^="bottom"] .arrow::before { - top: -11px; - border-bottom-color: rgba(0, 0, 0, 0.05); -} - -.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^="bottom"] .arrow::after { - top: -10px; - border-bottom-color: #fff; -} - -.popover.bs-popover-bottom .popover-header::before, .popover.bs-popover-auto[x-placement^="bottom"] .popover-header::before { - border-bottom: 1px solid #f5f5f6; -} - -.popover.bs-popover-left, .popover.bs-popover-auto[x-placement^="left"] { - margin-right: 10px; -} - -.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^="left"] .arrow::before, -.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^="left"] .arrow::after { - margin-top: -8px; -} - -.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^="left"] .arrow::before { - right: -11px; - border-left-color: rgba(0, 0, 0, 0.05); -} - -.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^="left"] .arrow::after { - right: -10px; - border-left-color: #fff; -} - -.popover-header { - padding: 14px 20px; - font-size: 14px; - line-height: 14px; - color: #212529; - background-color: #f5f5f6; - border-bottom: 1px solid #e7e9ea; - border-top-left-radius: calc(0.5rem - 1px); - border-top-right-radius: calc(0.5rem - 1px); -} - -.popover-body { - padding: 15px 20px; - color: #5A6169; -} - -.carousel { - box-shadow: 0 0.46875rem 2.1875rem rgba(90, 97, 105, 0.1), 0 0.9375rem 1.40625rem rgba(90, 97, 105, 0.1), 0 0.25rem 0.53125rem rgba(90, 97, 105, 0.12), 0 0.125rem 0.1875rem rgba(90, 97, 105, 0.1); -} - -.carousel-item { - transition: -webkit-transform 0.6s ease; - transition: transform 0.6s ease; - transition: transform 0.6s ease, -webkit-transform 0.6s ease; -} - -.carousel-control-prev, -.carousel-control-next { - width: 15%; - color: #fff; - opacity: 0.5; -} - -.carousel-control-prev:focus, .carousel-control-prev:hover, -.carousel-control-next:focus, -.carousel-control-next:hover { - color: #fff; -} - -.carousel-control-prev-icon, -.carousel-control-next-icon { - width: 20px; - height: 20px; -} - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"); -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"); -} - -.carousel-indicators { - margin-right: 15%; - margin-left: 15%; -} - -.carousel-indicators li { - width: 30px; - height: 3px; - margin-right: 3px; - margin-left: 3px; - background-color: rgba(255, 255, 255, 0.5); - border-radius: 3px; -} - -.carousel-indicators .active { - background-color: #fff; -} - -.carousel-caption { - right: 15%; - left: 15%; - color: #fff; -} - -.carousel-caption * { - color: #fff; -} - -.noUi-target, -.noUi-target * { - -webkit-touch-callout: none; - -webkit-tap-highlight-color: transparent; - -webkit-user-select: none; - -ms-touch-action: none; - touch-action: none; - -ms-user-select: none; - -moz-user-select: none; - user-select: none; - box-sizing: border-box; -} - -.noUi-target { - position: relative; - background: #eceeef; - border-radius: 5px; - box-shadow: inset 0 1px 2px rgba(90, 97, 105, 0.1); - margin: 35px 0; -} - -.noUi-target :focus { - outline: 0; - box-shadow: 0 0 8px rgba(0, 123, 255, 0.65), 0 3px 15px rgba(90, 97, 105, 0.1), 0 2px 3px rgba(90, 97, 105, 0.2); -} - -.noUi-base { - width: 100%; - height: 100%; - position: relative; - z-index: 1; -} - -.noUi-connect { - position: absolute; - right: 0; - top: 0; - left: 0; - bottom: 0; - background: #007bff; - border-radius: 5px; -} - -.noUi-origin { - position: absolute; - height: 0; - width: 0; -} - -.noUi-handle { - position: relative; - z-index: 1; - border: 1px solid #e7e9ea; - border-radius: 50%; - width: 23px; - height: 23px; - box-shadow: 0 3px 15px rgba(90, 97, 105, 0.1), 0 2px 3px rgba(90, 97, 105, 0.2); - background: #fff; - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); -} - -.noUi-handle:hover { - cursor: grab; - cursor: -webkit-grab; - cursor: -moz-grab; -} - -.noUi-handle:active { - cursor: grabbing; - cursor: -webkit-grabbing; - cursor: -moz-grabbing; -} - -.noUi-handle:after { - left: 17px; -} - -.noUi-horizontal { - height: 5px; -} - -.noUi-horizontal .noUi-handle { - left: -11.5px; - top: -10px; -} - -.noUi-horizontal .noUi-tooltip { - -webkit-transform: translate(-50%, 0); - transform: translate(-50%, 0); - left: 50%; - bottom: 30px; -} - -.noUi-vertical { - width: 5px; -} - -.noUi-vertical .noUi-handle { - left: -10px; - top: -11.5px; -} - -.noUi-vertical .noUi-handle:before, .noUi-vertical .noUi-handle:after { - width: 14px; - height: 1px; - left: 6px; - top: 14px; -} - -.noUi-vertical .noUi-handle:after { - top: 17px; -} - -.noUi-vertical .noUi-tooltip { - -webkit-transform: translate(0, -50%); - transform: translate(0, -50%); - top: 50%; - right: 30px; -} - -.noUi-draggable { - cursor: ew-resize; -} - -.noUi-vertical .noUi-draggable { - cursor: ns-resize; -} - -.noUi-active { - -webkit-transform: scale(1.1); - transform: scale(1.1); -} - -[disabled] .noUi-connect { - background: #B8B8B8; -} - -[disabled].noUi-target, -[disabled].noUi-handle, -[disabled] .noUi-handle { - cursor: not-allowed; -} - -[disabled] .noUi-handle { - background: #f2f3f4; -} - -[disabled] .noUi-handle:focus { - box-shadow: 0 3px 15px rgba(90, 97, 105, 0.1), 0 2px 3px rgba(90, 97, 105, 0.2); -} - -.noUi-pips, -.noUi-pips * { - box-sizing: border-box; -} - -.noUi-pips { - position: absolute; - color: #a8aeb4; - font-size: 12px; -} - -.noUi-value { - position: absolute; - white-space: nowrap; - text-align: center; -} - -.noUi-value-sub { - color: #a8aeb4; - font-size: 10px; -} - -.noUi-marker { - position: absolute; - background: #a8aeb4; -} - -.noUi-marker-sub { - background: #a8aeb4; -} - -.noUi-marker-large { - background: #a8aeb4; -} - -.noUi-pips-horizontal { - padding: 10px 0; - height: auto; - top: 100%; - left: 0; - width: 100%; -} - -.noUi-value-horizontal { - -webkit-transform: translate3d(-50%, 50%, 0); - transform: translate3d(-50%, 50%, 0); -} - -.noUi-marker-horizontal.noUi-marker { - margin-left: -1px; - width: 1px; - height: 4px; -} - -.noUi-marker-horizontal.noUi-marker-sub { - height: 5px; -} - -.noUi-marker-horizontal.noUi-marker-large { - height: 7px; -} - -.noUi-pips-vertical { - padding: 0 10px; - height: 100%; - top: 0; - left: 100%; -} - -.noUi-value-vertical { - -webkit-transform: translate3d(0, -50%, 0); - transform: translate3d(0, -50%, 0); - padding-left: 25px; -} - -.noUi-marker-vertical.noUi-marker { - width: 5px; - height: 2px; - margin-top: -1px; -} - -.noUi-marker-vertical.noUi-marker-sub { - width: 10px; -} - -.noUi-marker-vertical.noUi-marker-large { - width: 15px; -} - -.noUi-tooltip { - display: block; - position: absolute; - text-align: center; - white-space: nowrap; - border-radius: 0.375rem; - border-radius: 0.375rem; - background: #fff; - color: #5A6169; - box-shadow: 0 3px 15px rgba(90, 97, 105, 0.1), 0 2px 3px rgba(90, 97, 105, 0.2); - font-size: 0.75rem; - padding: 5px 10px; -} - -.slider-primary .noUi-connect { - background: #007bff; -} - -.slider-secondary .noUi-connect { - background: #5A6169; -} - -.slider-success .noUi-connect { - background: #17c671; -} - -.slider-info .noUi-connect { - background: #00b8d8; -} - -.slider-warning .noUi-connect { - background: #ffb400; -} - -.slider-danger .noUi-connect { - background: #c4183c; -} - -.slider-light .noUi-connect { - background: #e9ecef; -} - -.slider-dark .noUi-connect { - background: #212529; -} - -.datepicker { - border-radius: 0.625rem; - direction: ltr; -} - -.datepicker-inline { - width: 220px; -} - -.datepicker-rtl { - direction: rtl; -} - -.datepicker-rtl.dropdown-menu { - left: auto; -} - -.datepicker-rtl table tr td span { - float: right; -} - -.datepicker-dropdown { - top: 0; - left: 0; - padding: 20px 22px; -} - -.datepicker-dropdown:before, .datepicker-dropdown:after { - content: ''; - display: inline-block; - border-top: 0; - position: absolute; -} - -.datepicker-dropdown:before { - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #c3c7cc; - border-bottom-color: rgba(0, 0, 0, 0.2); -} - -.datepicker-dropdown:after { - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; -} - -.datepicker-dropdown.datepicker-orient-left:before { - left: 6px; -} - -.datepicker-dropdown.datepicker-orient-left:after { - left: 7px; -} - -.datepicker-dropdown.datepicker-orient-right:before { - right: 6px; -} - -.datepicker-dropdown.datepicker-orient-right:after { - right: 7px; -} - -.datepicker-dropdown.datepicker-orient-bottom:before { - top: -7px; -} - -.datepicker-dropdown.datepicker-orient-bottom:after { - top: -6px; -} - -.datepicker-dropdown.datepicker-orient-top:before { - bottom: -7px; - border-bottom: 0; - border-top: 7px solid #c3c7cc; -} - -.datepicker-dropdown.datepicker-orient-top:after { - bottom: -6px; - border-bottom: 0; - border-top: 6px solid #fff; -} - -.datepicker table { - margin: 0; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.datepicker table tr td { - border-radius: 50%; -} - -.datepicker table tr th { - border-radius: 0.375rem; - font-weight: 500; -} - -.datepicker table tr td, .datepicker table tr th { - transition: all 250ms cubic-bezier(0.27, 0.01, 0.38, 1.06); - width: 36px; - height: 36px; - border: none; - text-align: center; -} - -.table-striped .datepicker table tr td, .table-striped .datepicker table tr th { - background-color: transparent; -} - -.datepicker table tr td.old, .datepicker table tr td.new { - color: #c3c7cc; -} - -.datepicker table tr td.day:hover, .datepicker table tr td.focused { - background: #eceeef; - cursor: pointer; -} - -.datepicker table tr td.disabled, .datepicker table tr td.disabled:hover { - background: none; - color: #e7e9ea; - cursor: default; -} - -.datepicker table tr td.highlighted { - border-radius: 0; -} - -.datepicker table tr td.highlighted.focused { - background: #007bff; -} - -.datepicker table tr td.highlighted.disabled, .datepicker table tr td.highlighted.disabled:active { - background: #007bff; - color: #5A6169; -} - -.datepicker table tr td.today { - background: #e6f2ff; -} - -.datepicker table tr td.today.focused { - background: #f5f5f6; -} - -.datepicker table tr td.today.disabled, .datepicker table tr td.today.disabled:active { - background: #f5f5f6; - color: #868e96; -} - -.datepicker table tr td.range { - background: #007bff; - color: #fff; - border-radius: 0; -} - -.datepicker table tr td.range.focused { - background: #0067d6; -} - -.datepicker table tr td.range.disabled, .datepicker table tr td.range.disabled:active, .datepicker table tr td.range.day.disabled:hover { - background: #0062cc; - color: #3395ff; -} - -.datepicker table tr td.range.highlighted.focused { - background: #cbd3da; -} - -.datepicker table tr td.range.highlighted.disabled, .datepicker table tr td.range.highlighted.disabled:active { - background: #e9ecef; - color: #e7e9ea; -} - -.datepicker table tr td.range.today.disabled, .datepicker table tr td.range.today.disabled:active { - background: #007bff; - color: #fff; -} - -.datepicker table tr td.day.range-start { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.datepicker table tr td.day.range-end { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.datepicker table tr td.day.range-start.range-end { - border-radius: 50%; -} - -.datepicker table tr td.selected, .datepicker table tr td.selected.highlighted, .datepicker table tr td.selected:hover, .datepicker table tr td.selected.highlighted:hover, .datepicker table tr td.day.range:hover { - background: #007bff; - color: #fff; -} - -.datepicker table tr td.active, .datepicker table tr td.active.highlighted, .datepicker table tr td.active:hover, .datepicker table tr td.active.highlighted:hover { - background: #007bff; - color: #fff; -} - -.datepicker table tr td span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - border-radius: 4px; -} - -.datepicker table tr td span:hover, .datepicker table tr td span.focused { - background: #e9ecef; -} - -.datepicker table tr td span.disabled, .datepicker table tr td span.disabled:hover { - background: none; - color: #e7e9ea; - cursor: default; -} - -.datepicker table tr td span.active, .datepicker table tr td span.active:hover, .datepicker table tr td span.active.disabled, .datepicker table tr td span.active.disabled:hover { - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} - -.datepicker table tr td span.old, .datepicker table tr td span.new { - color: #868e96; -} - -.datepicker .datepicker-switch { - width: 145px; -} - -.datepicker .datepicker-switch, -.datepicker .prev, -.datepicker .next, -.datepicker tfoot tr th { - cursor: pointer; -} - -.datepicker .datepicker-switch:hover, -.datepicker .prev:hover, -.datepicker .next:hover, -.datepicker tfoot tr th:hover { - background: #e9ecef; -} - -.datepicker .prev.disabled, .datepicker .next.disabled { - visibility: hidden; -} - -.datepicker .cw { - font-size: 10px; - width: 12px; - padding: 0 2px 0 5px; - vertical-align: middle; -} - -.input-daterange input { - text-align: center; -} - -.bg-primary { - background-color: #007bff !important; -} - -.bg-primary.card .card-title, -.bg-primary.card .card-body, -.bg-primary.card .card-header, -.bg-primary.card .card-footer { - color: #fff; -} - -.bg-primary.card .card-header, -.bg-primary.card .card-footer { - background: #0074f0; -} - -a.bg-primary:focus, a.bg-primary:hover { - background-color: #0062cc !important; -} - -.bg-secondary { - background-color: #5A6169 !important; -} - -.bg-secondary.card .card-title, -.bg-secondary.card .card-body, -.bg-secondary.card .card-header, -.bg-secondary.card .card-footer { - color: #fff; -} - -.bg-secondary.card .card-header, -.bg-secondary.card .card-footer { - background: #535961; -} - -a.bg-secondary:focus, a.bg-secondary:hover { - background-color: #42484e !important; -} - -.bg-success { - background-color: #17c671 !important; -} - -.bg-success.card .card-title, -.bg-success.card .card-body, -.bg-success.card .card-header, -.bg-success.card .card-footer { - color: #fff; -} - -.bg-success.card .card-header, -.bg-success.card .card-footer { - background: #15b869; -} - -a.bg-success:focus, a.bg-success:hover { - background-color: #129857 !important; -} - -.bg-info { - background-color: #00b8d8 !important; -} - -.bg-info.card .card-title, -.bg-info.card .card-body, -.bg-info.card .card-header, -.bg-info.card .card-footer { - color: #fff; -} - -.bg-info.card .card-header, -.bg-info.card .card-footer { - background: #00abc9; -} - -a.bg-info:focus, a.bg-info:hover { - background-color: #008da5 !important; -} - -.bg-warning { - background-color: #ffb400 !important; -} - -.bg-warning.card .card-title, -.bg-warning.card .card-body, -.bg-warning.card .card-header, -.bg-warning.card .card-footer { - color: black; -} - -.bg-warning.card .card-header, -.bg-warning.card .card-footer { - background: #f0a900; -} - -a.bg-warning:focus, a.bg-warning:hover { - background-color: #cc9000 !important; -} - -.bg-danger { - background-color: #c4183c !important; -} - -.bg-danger.card .card-title, -.bg-danger.card .card-body, -.bg-danger.card .card-header, -.bg-danger.card .card-footer { - color: #fff; -} - -.bg-danger.card .card-header, -.bg-danger.card .card-footer { - background: #b61638; -} - -a.bg-danger:focus, a.bg-danger:hover { - background-color: #97122e !important; -} - -.bg-light { - background-color: #e9ecef !important; -} - -.bg-light.card .card-title, -.bg-light.card .card-body, -.bg-light.card .card-header, -.bg-light.card .card-footer { - color: #3b4651; -} - -.bg-light.card .card-header, -.bg-light.card .card-footer { - background: #e0e4e9; -} - -a.bg-light:focus, a.bg-light:hover { - background-color: #cbd3da !important; -} - -.bg-dark { - background-color: #212529 !important; -} - -.bg-dark.card .card-title, -.bg-dark.card .card-body, -.bg-dark.card .card-header, -.bg-dark.card .card-footer { - color: #fff; -} - -.bg-dark.card .card-header, -.bg-dark.card .card-footer { - background: #1a1d21; -} - -a.bg-dark:focus, a.bg-dark:hover { - background-color: #0a0c0d !important; -} - -.border-primary { - border-color: #007bff !important; -} - -.border-secondary { - border-color: #5A6169 !important; -} - -.border-success { - border-color: #17c671 !important; -} - -.border-info { - border-color: #00b8d8 !important; -} - -.border-warning { - border-color: #ffb400 !important; -} - -.border-danger { - border-color: #c4183c !important; -} - -.border-light { - border-color: #e9ecef !important; -} - -.border-dark { - border-color: #212529 !important; -} - -.rounded { - border-radius: 0.375rem !important; -} - -.rounded-top { - border-top-left-radius: 0.375rem !important; - border-top-right-radius: 0.375rem !important; -} - -.rounded-right { - border-top-right-radius: 0.375rem !important; - border-bottom-right-radius: 0.375rem !important; -} - -.rounded-bottom { - border-bottom-right-radius: 0.375rem !important; - border-bottom-left-radius: 0.375rem !important; -} - -.rounded-left { - border-top-left-radius: 0.375rem !important; - border-bottom-left-radius: 0.375rem !important; -} - -.fixed-top { - z-index: 1030; -} - -.fixed-bottom { - z-index: 1030; -} - -@supports ((position: -webkit-sticky) or (position: sticky)) { - .sticky-top { - z-index: 1020; - } -} - -.font-weight-normal { - font-weight: 300; -} - -.font-weight-bold { - font-weight: 500; -} - -.text-primary { - color: #007bff !important; -} - -a.text-primary:focus, a.text-primary:hover { - color: #0062cc !important; -} - -.text-secondary { - color: #5A6169 !important; -} - -a.text-secondary:focus, a.text-secondary:hover { - color: #42484e !important; -} - -.text-success { - color: #17c671 !important; -} - -a.text-success:focus, a.text-success:hover { - color: #129857 !important; -} - -.text-info { - color: #00b8d8 !important; -} - -a.text-info:focus, a.text-info:hover { - color: #008da5 !important; -} - -.text-warning { - color: #ffb400 !important; -} - -a.text-warning:focus, a.text-warning:hover { - color: #cc9000 !important; -} - -.text-danger { - color: #c4183c !important; -} - -a.text-danger:focus, a.text-danger:hover { - color: #97122e !important; -} - -.text-light { - color: #e9ecef !important; -} - -a.text-light:focus, a.text-light:hover { - color: #cbd3da !important; -} - -.text-dark { - color: #212529 !important; -} - -a.text-dark:focus, a.text-dark:hover { - color: #0a0c0d !important; -} - -.text-white { - color: #fff; -} - -a.text-white:focus, a.text-white:hover { - color: #e6e6e6 !important; -} - -.text-black { - color: #000; -} - -a.text-black:focus, a.text-black:hover { - color: black !important; -} - -.text-muted { - color: #868e96 !important; -} - -.reset-list { - margin: 0; - padding: 0; - list-style: none; -} - -.with-shadows { - box-shadow: 0 0.46875rem 2.1875rem rgba(90, 97, 105, 0.1), 0 0.9375rem 1.40625rem rgba(90, 97, 105, 0.1), 0 0.25rem 0.53125rem rgba(90, 97, 105, 0.12), 0 0.125rem 0.1875rem rgba(90, 97, 105, 0.1); -} -/*# sourceMappingURL=shards.css.map */ diff --git a/public/favicon.png b/public/favicon.png deleted file mode 100644 index e221436..0000000 Binary files a/public/favicon.png and /dev/null differ diff --git a/public/index.html b/public/index.html deleted file mode 100644 index b3659ca..0000000 --- a/public/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - Projectwise - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - You need to enable JavaScript to run this app. - - - - - diff --git a/public/manifest.json b/public/manifest.json deleted file mode 100644 index ef19ec2..0000000 --- a/public/manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - } - ], - "start_url": "./index.html", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/src/App.js b/src/App.js deleted file mode 100644 index 06a278c..0000000 --- a/src/App.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' -import { BrowserRouter as Router } from 'react-router-dom' -import { Provider } from 'react-redux' - -import './styles/react-select.css' -import './styles/App.css' - -import Root from './screens/Root' -import store from './store' - -const App = () => { - return ( - - - - - - ) -} - -export default App diff --git a/src/App.test.js b/src/App.test.js deleted file mode 100644 index b84af98..0000000 --- a/src/App.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import App from './App'; - -it('renders without crashing', () => { - const div = document.createElement('div'); - ReactDOM.render(, div); -}); diff --git a/src/api/index.js b/src/api/index.js deleted file mode 100644 index b863282..0000000 --- a/src/api/index.js +++ /dev/null @@ -1,57 +0,0 @@ -import axios from 'axios' -import qs from 'qs' - -const PUBLIC_URI = process.env.NODE_ENV === 'production' - ? process.env.PUBLIC_URL - : 'http://localhost:8080' - -class API { - constructor () { - this.axios = axios.create({ - baseURL: `${PUBLIC_URI}/api` - }) - this.githubAuthUrl = `https://github.com/login/oauth/authorize?${qs.stringify({ - client_id: process.env.REACT_APP_GITHUB_CLIENT_ID, - redirect_uri: window.location.origin + '/auth/github/callback', - scope: 'user' - })}` - } - setAuthHeader (token) { - this.axios.defaults.headers.common['Authorization'] = `bearer ${token}` - } - removeAuthHeader () { - delete this.axios.defaults.headers.common['Authorization'] - } - signup (userDetails) { - return this.axios.post('/signup', userDetails) - } - githubToken (code) { - return this.axios.get(`/auth/token/github?code=${code}`) - } - githubAuthenticate (accessToken) { - return this.axios.get(`/auth/github?access_token=${accessToken}`) - } - login (userDetails) { - return this.axios.post('/login', userDetails) - } - getProjects (query) { - return this.axios.get('/projects', query) - } - getProject (projectId) { - return this.axios.get(`/projects/${projectId}`) - } - likeProject (projectId) { - return this.axios.post(`/projects/${projectId}/like`) - } - dislikeProject (projectId) { - return this.axios.delete(`/projects/${projectId}/like`) - } - addProject (projectDetails) { - return this.axios.post('/projects', projectDetails) - } - getCategories () { - return this.axios.get('/categories') - } -} - -export default new API() diff --git a/src/assets/images/logo-dashboard.png b/src/assets/images/logo-dashboard.png deleted file mode 100644 index a893685..0000000 Binary files a/src/assets/images/logo-dashboard.png and /dev/null differ diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png deleted file mode 100644 index 68994f3..0000000 Binary files a/src/assets/images/logo.png and /dev/null differ diff --git a/src/components/Badge/index.js b/src/components/Badge/index.js deleted file mode 100644 index 04f64fc..0000000 --- a/src/components/Badge/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import { Badge as RBadge } from 'reactstrap' -import styled from 'styled-components' - -const Badge = styled(RBadge)` - border-radius: 2px; - margin-left: 4px; - margin-right: 4px; - &:first-child: { - margin-left: 0 - } -` - -export default Badge diff --git a/src/components/Banner/index.js b/src/components/Banner/index.js deleted file mode 100644 index 407b603..0000000 --- a/src/components/Banner/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import React, { Component } from 'react' -import postscribe from 'postscribe' - -class Banner extends Component { - componentDidMount () { - postscribe('#amx-banner', ``) - } - - render () { - return ( - - ) - } -} - -export default Banner diff --git a/src/components/Container/index.js b/src/components/Container/index.js deleted file mode 100644 index 21797cb..0000000 --- a/src/components/Container/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import { Container } from 'reactstrap' -import styled from 'styled-components' - -import colors from '../../styles/colors' - -export default styled(Container)` - background-color: ${props => props.color || colors.light}; - ${props => props.fluid ? 'padding-left: 0px;' : null} - ${props => props.fluid ? 'padding-right: 0px' : null} -` diff --git a/src/components/Footer/index.js b/src/components/Footer/index.js deleted file mode 100644 index fe32427..0000000 --- a/src/components/Footer/index.js +++ /dev/null @@ -1,62 +0,0 @@ -import React, { Component } from 'react' -import styled from 'styled-components' -import { - Navbar as RNavbar, - Nav, - NavItem as RNavItem -} from 'reactstrap' - -import Container from '../Container' -import colors from '../../styles/colors' - -const Navbar = styled(RNavbar)` - min-height: 60px; - width: 100%; -` -const NavbarContainer = styled(Container)` - background: linear-gradient(to right, #141E30, #243B55); -` - -const NavItem = styled(RNavItem)` - color: ${colors.light}; - font-weight: 400; -` - -const ColoredSpan = styled.span` - color: ${colors.danger} -` - -class Footer extends Component { - constructor (props) { - super(props) - - this.state = { - isOpen: false - } - this.toggle = this.toggle.bind(this) - } - - toggle () { - this.setState({ - isOpen: !this.state.isOpen - }) - } - - render () { - const { children } = this.props - return ( - - - - - Created with by @itsyogesh18 and @niklabh - - - - {children || null} - - ) - } -} - -export default Footer diff --git a/src/components/Input/RadioGroup.js b/src/components/Input/RadioGroup.js deleted file mode 100644 index 3ad13c8..0000000 --- a/src/components/Input/RadioGroup.js +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react' -import { Col, FormGroup } from 'reactstrap' - -const RadioGroup = ({ - input, - label, - options, - helpBlock, - meta: { touched, error } -}) => ( - - {options.map(radio => ( - - - {radio.title} - - ))} - {touched && helpBlock && error && ( - - {error} - - )} - -) - -export default RadioGroup diff --git a/src/components/Input/SelectInput.js b/src/components/Input/SelectInput.js deleted file mode 100644 index fc7809d..0000000 --- a/src/components/Input/SelectInput.js +++ /dev/null @@ -1,41 +0,0 @@ -import React from 'react' -import Select from 'react-select' -import { FormGroup, Col } from 'reactstrap' - -const SelectInput = ({ - input, - label, - type, - id, - helpBlock, - options, - values = [ - {value: 'ui', label: 'User Interface'}, - {value: 'ux', label: 'User Experience'}, - {value: 'logo', label: 'Logo'} - ], - meta: { touched, error, warning }, - ...rest -}) => ( - - - {label} - input.onBlur([...input.value])} - {...rest} - /> - {options.hint} - {touched && helpBlock && error && - {error}} - - -) - -export default SelectInput diff --git a/src/components/Input/TextArea.js b/src/components/Input/TextArea.js deleted file mode 100644 index 5369f95..0000000 --- a/src/components/Input/TextArea.js +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react' -import { FormGroup, Col } from 'reactstrap' - -const TextArea = ({ - input, - label, - type, - id, - helpBlock, - meta: { touched, error, warning }, - ...rest -}) => ( - - - {label} - - {touched && helpBlock && error && {error}} - - -) - -export default TextArea diff --git a/src/components/Input/TextInput.js b/src/components/Input/TextInput.js deleted file mode 100644 index 8335fc3..0000000 --- a/src/components/Input/TextInput.js +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react' -import { FormGroup, Col } from 'reactstrap' - -const TextInput = ({ - input, - label, - type, - id, - helpBlock, - meta: { touched, error, warning }, - ...rest -}) => ( - - - {label} - - {touched && helpBlock && error && {error}} - - -) - -export default TextInput diff --git a/src/components/Input/index.js b/src/components/Input/index.js deleted file mode 100644 index 4b0fa88..0000000 --- a/src/components/Input/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import RadioGroup from './RadioGroup' -import TextInput from './TextInput' -import SelectInput from './SelectInput' -import TextArea from './TextArea' - -export { RadioGroup, TextInput, TextArea, SelectInput } diff --git a/src/components/Margin/index.js b/src/components/Margin/index.js deleted file mode 100644 index 259d7c6..0000000 --- a/src/components/Margin/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import styled from 'styled-components' -import colors from '../../styles/colors' - -const Margin = styled.div` - width: 100%; - padding-left: 10%; - padding-right: 10%; - height: 1px; - background-color: ${colors.light}; -` - -export default Margin diff --git a/src/components/Navbar/index.js b/src/components/Navbar/index.js deleted file mode 100644 index 0b4c596..0000000 --- a/src/components/Navbar/index.js +++ /dev/null @@ -1,161 +0,0 @@ -import React, { Component } from 'react' -import { Link, NavLink } from 'react-router-dom' -import styled from 'styled-components' -import { - Collapse, - Navbar as RNavbar, - NavbarToggler, - NavbarBrand, - Nav, - NavLink as RNavLink, - NavItem as RNavItem, - UncontrolledDropdown, - DropdownMenu, - DropdownToggle as RDropdownToggle, - DropdownItem -} from 'reactstrap' - -import Container from '../Container' -import logo from '../../assets/images/logo.png' - -const Navbar = styled(RNavbar)` - min-height: 70px; -` -const NavbarContainer = styled(Container)` - background: linear-gradient(to right, #141E30, #243B55); -` - -const DropdownToggle = styled(RDropdownToggle)` - font-weight: 400; - font-size: 1rem; - color: rgba(255, 255, 255, 0.5); - background-color: transparent; - border: none; - - &:hover { - background-color: transparent; - border: none; - box-shadow: none; - } - - &:active { - background-color: transparent !important; - border: none !important; - box-shadow: none !important; - } -` - -class Primary extends Component { - constructor (props) { - super(props) - - this.state = { - isOpen: false - } - this.toggle = this.toggle.bind(this) - } - - toggle () { - this.setState({ - isOpen: !this.state.isOpen - }) - } - - rightNav (isAuthenticated, user, onLogout) { - if (isAuthenticated) { - return ( - - - Projects - - - Add Project - - - - - My Account - - - - - Profile - - - Logout - - - - - Github - - - ) - } else { - return ( - - - Projects - - - Login - - - Signup - - - Github - - - ) - } - } - - render () { - const { isAuthenticated, user, onLogout, children } = this.props - console.log(user) - return ( - - - - - - - - {this.rightNav(isAuthenticated, user, onLogout)} - - - {children || null} - - ) - } -} - -export default Primary diff --git a/src/components/Notification/index.js b/src/components/Notification/index.js deleted file mode 100644 index d37c600..0000000 --- a/src/components/Notification/index.js +++ /dev/null @@ -1,57 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import styled from 'styled-components' - -import colors from '../../styles/colors' - -const ListItem = styled.li` - align-items: 'flex-start'; - border-radius: 3px; - display: flex; - color: ${colors.white}; - padding: 0.75em 1em; - box-shadow: 0px 2px 4px #8798A4 - - &:not(:last-child) { - margin: 0 0 12px; - } -` -const Text = styled.p` - flex: 1 1 auto; - margin: 0 12px 0 0; - overflow: hidden; - text-overflow: ellipsis -` -const DismissButton = styled.button` - -webkit-appearance: none; - -moz-appearance: none; - background: transparent; - border: 0; - color: ${colors.white}; - cursor: pointer; - display: block; - flex: 0 0 auto; - padding: 0 -` - -class Notification extends Component { - shouldComponentUpdate () { - return false - } - render () { - return ( - - {this.props.text} - x - - ) - } -} - -Notification.propTypes = { - color: PropTypes.string.isRequired, - onDismissClick: PropTypes.func.isRequired, - text: PropTypes.string.isRequired -} - -export default Notification diff --git a/src/components/Preloader/index.js b/src/components/Preloader/index.js deleted file mode 100644 index b8ba5cc..0000000 --- a/src/components/Preloader/index.js +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react' -import styled, { keyframes } from 'styled-components' - -import Container from '../Container' -import colors from '../../styles/colors' - -const WrapperContainer = styled(Container)` - width: 100%; - height: calc(100vh - 130px); - display: flex; - align-items: center; - justify-content: center; -` - -const load8 = keyframes` - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg) - } -` - -const LoaderDiv = styled.div` - border-radius: 50%; - width: 5em; - height: 5em; - margin: 60px auto; - font-size: 10px; - position: relative; - text-indent: -9999em; - border-top: 0.6em solid rgba(0, 0, 0, 0.2); - border-right: 0.6em solid rgba(0, 0, 0, 0.2); - border-bottom: 0.6em solid rgba(0, 0, 0, 0.2); - border-left: 0.6em solid #000000; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); - -webkit-animation: ${load8} 1.1s infinite linear; - animation: ${load8} 1.1s infinite linear; - - &:after { - border-radius: 50%; - width: 10em; - height: 10em; - } -` - -export default () => ( - - - -) diff --git a/src/config/disqus.js b/src/config/disqus.js deleted file mode 100644 index 4640b23..0000000 --- a/src/config/disqus.js +++ /dev/null @@ -1 +0,0 @@ -export const shortName = 'projectwise-1' diff --git a/src/config/validator.js b/src/config/validator.js deleted file mode 100644 index 5b6b049..0000000 --- a/src/config/validator.js +++ /dev/null @@ -1,9 +0,0 @@ -import validator from 'validator' - -const validate = { - required: (value) => (value ? undefined : 'Required'), - url: (value) => (validator.isURL(value)) ? undefined : 'Enter a valid url', - email: (value) => (validator.isEmail(value)) ? undefined : 'Enter a valid email' -} - -export default validate diff --git a/src/containers/LikeButton.js b/src/containers/LikeButton.js deleted file mode 100644 index 98b1f2e..0000000 --- a/src/containers/LikeButton.js +++ /dev/null @@ -1,63 +0,0 @@ -import React, { Component } from 'react' -import { connect } from 'react-redux' -import { Tooltip } from 'reactstrap' - -import { likeProject, dislikeProject } from '../store/actions/projects' - -class LikeButton extends Component { - constructor (props) { - super(props) - - this.state = { - tooltipOpen: false - } - this.toggleTooltip = this.toggleTooltip.bind(this) - this.onLikeClick = this.onLikeClick.bind(this) - } - - toggleTooltip () { - this.setState({ - tooltipOpen: !this.state.tooltipOpen - }) - } - - onLikeClick () { - const { isAuthenticated, likeProject, dislikeProject } = this.props - const { liked, slug: projectId } = this.props.project - if (isAuthenticated && !liked) { - likeProject(projectId) - } else if (isAuthenticated && liked) { - dislikeProject(projectId) - } else { - this.toggleTooltip() - } - } - - render () { - const { liked, likeCount } = this.props.project - const buttonStyle = { - cursor: 'pointer' - } - return ( - - - {likeCount} Likes - - - Login to like this project - - - ) - } -} - -const mapStateToProps = (state) => ({ - isAuthenticated: state.auth.isAuthenticated -}) - -export default connect(mapStateToProps, {likeProject, dislikeProject})(LikeButton) diff --git a/src/containers/Navbar.js b/src/containers/Navbar.js deleted file mode 100644 index f0b68de..0000000 --- a/src/containers/Navbar.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' -import { connect } from 'react-redux' -import { withRouter } from 'react-router-dom' -import logout from '../store/actions/logout' - -import Navbar from '../components/Navbar' - -const PrimaryNavbar = ({ auth, logout, ...rest }) => ( - -) - -const mapStateToProps = (state) => ({ - auth: state.auth -}) - -export default withRouter(connect(mapStateToProps, {logout})(PrimaryNavbar)) diff --git a/src/containers/Notifications.js b/src/containers/Notifications.js deleted file mode 100644 index 70c12de..0000000 --- a/src/containers/Notifications.js +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' -import styled from 'styled-components' -import { connect } from 'react-redux' - -import Notification from '../components/Notification' -import { removeNotification } from '../store/actions/notifications' - -const List = styled.ul` - position: fixed; - bottom: 1.2em; - right: 1.2em; - min-width: 240px; -` - -const Notifications = ({ removeNotification, notifications }) => ( - - {notifications.map(notification => { - const { id } = notification - return ( - removeNotification(id)} - /> - ) - })} - -) - -Notifications.propTypes = { - notifications: PropTypes.arrayOf(PropTypes.object).isRequired, - removeNotification: PropTypes.func.isRequired -} - -const mapStateToProps = (state) => ({ - notifications: state.notifications -}) - -export default connect(mapStateToProps, { removeNotification })(Notifications) diff --git a/src/containers/PrivateRoute.js b/src/containers/PrivateRoute.js deleted file mode 100644 index 749518f..0000000 --- a/src/containers/PrivateRoute.js +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' -import { connect } from 'react-redux' -import { Route, Redirect, withRouter } from 'react-router-dom' - -const PrivateRoute = ({ component: Component, isAuthenticated, ...rest }) => ( - (isAuthenticated === true - ? - : - )} - /> -) - -PrivateRoute.propTypes = { - isAuthenticated: PropTypes.bool -} - -const mapStateToProps = (state) => ({ - isAuthenticated: state.auth.isAuthenticated -}) - -export default withRouter(connect(mapStateToProps, null)(PrivateRoute)) diff --git a/src/fire.js b/src/fire.js deleted file mode 100644 index 1a79b11..0000000 --- a/src/fire.js +++ /dev/null @@ -1,14 +0,0 @@ -import firebase from 'firebase' - -const config = { - apiKey: 'AIzaSyA8QNir-0rtD6cQ0WplPwghK0xPoECxy3o', - authDomain: 'projectwise-7492a.firebaseapp.com', - databaseURL: 'https://projectwise-7492a.firebaseio.com', - projectId: 'projectwise-7492a', - storageBucket: 'projectwise-7492a.appspot.com', - messagingSenderId: '34685123551' -} - -const fire = firebase.initializeApp(config) - -export default fire diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 0783f80..0000000 --- a/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import App from './App' -import { unregister } from './registerServiceWorker' - -unregister() -ReactDOM.render(, document.getElementById('root')) diff --git a/src/logo.svg b/src/logo.svg deleted file mode 100644 index 6b60c10..0000000 --- a/src/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/registerServiceWorker.js b/src/registerServiceWorker.js deleted file mode 100644 index 12542ba..0000000 --- a/src/registerServiceWorker.js +++ /dev/null @@ -1,108 +0,0 @@ -// In production, we register a service worker to serve assets from local cache. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on the "N+1" visit to a page, since previously -// cached resources are updated in the background. - -// To learn more about the benefits of this model, read https://goo.gl/KwvDNy. -// This link also includes instructions on opting out of this behavior. - -const isLocalhost = Boolean( - window.location.hostname === 'localhost' || - // [::1] is the IPv6 localhost address. - window.location.hostname === '[::1]' || - // 127.0.0.1/8 is considered localhost for IPv4. - window.location.hostname.match( - /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ - ) -); - -export default function register() { - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL(process.env.PUBLIC_URL, window.location); - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374 - return; - } - - window.addEventListener('load', () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - - if (isLocalhost) { - // This is running on localhost. Lets check if a service worker still exists or not. - checkValidServiceWorker(swUrl); - } else { - // Is not local host. Just register service worker - registerValidSW(swUrl); - } - }); - } -} - -function registerValidSW(swUrl) { - navigator.serviceWorker - .register(swUrl) - .then(registration => { - registration.onupdatefound = () => { - const installingWorker = registration.installing; - installingWorker.onstatechange = () => { - if (installingWorker.state === 'installed') { - if (navigator.serviceWorker.controller) { - // At this point, the old content will have been purged and - // the fresh content will have been added to the cache. - // It's the perfect time to display a "New content is - // available; please refresh." message in your web app. - console.log('New content is available; please refresh.'); - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // "Content is cached for offline use." message. - console.log('Content is cached for offline use.'); - } - } - }; - }; - }) - .catch(error => { - console.error('Error during service worker registration:', error); - }); -} - -function checkValidServiceWorker(swUrl) { - // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl) - .then(response => { - // Ensure service worker exists, and that we really are getting a JS file. - if ( - response.status === 404 || - response.headers.get('content-type').indexOf('javascript') === -1 - ) { - // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then(registration => { - registration.unregister().then(() => { - window.location.reload(); - }); - }); - } else { - // Service worker found. Proceed as normal. - registerValidSW(swUrl); - } - }) - .catch(() => { - console.log( - 'No internet connection found. App is running in offline mode.' - ); - }); -} - -export function unregister() { - if ('serviceWorker' in navigator) { - navigator.serviceWorker.ready.then(registration => { - registration.unregister(); - }); - } -} diff --git a/src/screens/AddProject/ProjectForm.js b/src/screens/AddProject/ProjectForm.js deleted file mode 100644 index 00a59ad..0000000 --- a/src/screens/AddProject/ProjectForm.js +++ /dev/null @@ -1,134 +0,0 @@ -import React, { Component } from 'react' -import { Form, FormGroup, Col, Button } from 'reactstrap' -import { Field, reduxForm, SubmissionError } from 'redux-form' -import styled from 'styled-components' - -import validate from '../../config/validator' -import { TextInput, SelectInput, TextArea } from '../../components/Input' - -import API from '../../api' -import { addNotification } from '../../store/actions/notifications' -import { getProjects } from '../../store/actions/projects' - -const FullButton = styled(Button)` - width: 100%; - font-size: 1rem; - font-weight: bold; -` - -const Text = styled.h3` - font-weight: bold; -` - -class ProjectForm extends Component { - constructor (props) { - super(props) - - this.submit = this.submit.bind(this) - } - - submit (values, dispatch) { - const { reset } = this.props - const projectDetails = { - title: values.title, - projectUrl: values.projectUrl, - description: values.description, - helpDescription: values.helpDescription, - categories: values.categories.map(category => category.value) - } - console.log(values) - return API.addProject(projectDetails) - .then((response) => { - if (response.status !== 200) { - const errors = response.data.errors.details.errors - if (errors.email) { - throw new SubmissionError({ - title: errors.title.msg, - _error: 'Something went wrong' - }) - } - } else { - dispatch(addNotification({ - text: `New Project added` - })) - reset() - dispatch(getProjects()) - } - }) - } - - render () { - const { handleSubmit, submitting } = this.props - const options = { - hint: this.props.hint || null - } - return ( - - Add a new project - - - - - - - - - Submit Project - - - - - ) - } -} - -export default reduxForm({ - form: 'ProjectForm', - keepDirtyOnReinitialize: true, - enableReinitialize: true -})(ProjectForm) diff --git a/src/screens/AddProject/index.js b/src/screens/AddProject/index.js deleted file mode 100644 index 7ccbb07..0000000 --- a/src/screens/AddProject/index.js +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import { connect } from 'react-redux' -import styled from 'styled-components' - -import Container from '../../components/Container' -import Navbar from '../../containers/Navbar' -import ProjectForm from './ProjectForm' -import colors from '../../styles/colors' - -const WrapperContainer = styled(Container)` - max-width: 700px; -` - -const AddProject = () => { - return ([ - , - - - - ]) -} - -const mapStateToProps = (state) => ({ - auth: state.auth -}) - -export default connect(mapStateToProps)(AddProject) diff --git a/src/screens/Auth/GithubAuth.js b/src/screens/Auth/GithubAuth.js deleted file mode 100644 index 90ec367..0000000 --- a/src/screens/Auth/GithubAuth.js +++ /dev/null @@ -1,80 +0,0 @@ -import React, { Component } from 'react' -import { Redirect } from 'react-router-dom' -import { connect } from 'react-redux' -import styled from 'styled-components' -import qs from 'qs' - -import Container from '../../components/Container' -import Navbar from '../../containers/Navbar' -import colors from '../../styles/colors' -import API from '../../api' - -import login from '../../store/actions/login' -import { addNotification } from '../../store/actions/notifications' - -const WrappedContainer = styled(Container)` - min-height: calc(100vh - 130px); -` - -const Text = styled.h3` - font-weight: bold; - padding-bottom: 1.2em; -` - -class GithubAuth extends Component { - constructor (props) { - super(props) - - this.state = { - isAuthenticated: false, - isError: false - } - } - - async componentDidMount () { - const query = qs.parse(this.props.location.search.split('?')[1]) - const { addNotification, login } = this.props - if (query.code) { - try { - const req = await API.githubToken(query.code) - const accessToken = qs.parse(req.data.token)['access_token'] - console.log(accessToken) - const authResponse = await API.githubAuthenticate(accessToken) - login(authResponse.data.user) - addNotification({ - text: `Successfully authenticated with Github` - }) - this.setState({ isAuthenticated: true }) - } catch (e) { - this.setState({ isError: true }) - addNotification({ - text: `Something went wrong, please try again.` - }) - } - } - } - - render () { - const { isAuthenticated, isError } = this.state - - if (isAuthenticated) { - return - } - - if (isError) { - return - } - return ( - - - - - Authenticating with Github - - - - ) - } -} - -export default connect(null, { login, addNotification })(GithubAuth) diff --git a/src/screens/Auth/index.js b/src/screens/Auth/index.js deleted file mode 100644 index 1e590ae..0000000 --- a/src/screens/Auth/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import Github from './GithubAuth' - -export { Github } diff --git a/src/screens/Home/index.js b/src/screens/Home/index.js deleted file mode 100644 index eafbe0a..0000000 --- a/src/screens/Home/index.js +++ /dev/null @@ -1,71 +0,0 @@ -import React, { Component } from 'react' -import { Button, Row } from 'reactstrap' -import styled from 'styled-components' -import { Link } from 'react-router-dom' - -import Container from '../../components/Container' -import Navbar from '../../containers/Navbar' -import Margin from '../../components/Margin' -import overhaulImage from '../../assets/images/logo-dashboard.png' -import colors from '../../styles/colors' - -const Header = styled.h2` - color: ${props => props.color || colors.white} -` - -const RowHeader = styled.h3` - color: ${props => props.color || colors.white} -` - -const SubHeader = styled.h5` - color: ${props => props.color || colors.white} -` - -const RowSubHeader = styled.h6` - color: ${props => props.color || colors.white} -` - -const FullButton = styled(Button)` - font-size: 1rem; - font-weight: bold; -` - -class Home extends Component { - render () { - return ( - - - - Open source needs better design workflows - Find open source projects and help them improve their user interface and experience. - - - Explore Projects - - - - - - Improve logo designs, landing pages or dashboards - Open source projects need help across board, be it logos to full scale dashboards. - Contributing to open source makes them better inside out. - - - - - - - Have an open-source project that requires design overhaul ? - You can list any open-source project that requires design help. - - - Add a new project - - - - - ) - } -} - -export default Home diff --git a/src/screens/Login/LoginForm.js b/src/screens/Login/LoginForm.js deleted file mode 100644 index e66c99b..0000000 --- a/src/screens/Login/LoginForm.js +++ /dev/null @@ -1,99 +0,0 @@ -import React, { Component } from 'react' -import { Form, FormGroup, Col, Button } from 'reactstrap' -import { Field, reduxForm, SubmissionError } from 'redux-form' -import styled from 'styled-components' - -import validate from '../../config/validator' -import { TextInput } from '../../components/Input' - -import API from '../../api' -import login from '../../store/actions/login' - -const FullButton = styled(Button)` - width: 100%; - font-size: 1rem; - font-weight: bold; -` - -class LoginForm extends Component { - constructor (props) { - super(props) - - this.submit = this.submit.bind(this) - } - - submit (values, dispatch) { - const userDetails = { - email: values.email, - password: values.password - } - console.log(values) - return API.login(userDetails) - .then((response) => { - if (response.status !== 200) { - const errors = response.data.errors.details.errors - if (errors.email) { - throw new SubmissionError({ - email: errors.email.msg, - _error: 'Something went wrong' - }) - } - } else { - dispatch(login(response.data.user)) - } - }) - } - - render () { - const { handleSubmit, submitting } = this.props - return ( - - - - - - - - - Remember Me - - - - - - - Login - - - - - Login with Github - - - - - ) - } -} - -export default reduxForm({ form: 'LoginForm' })(LoginForm) diff --git a/src/screens/Login/index.js b/src/screens/Login/index.js deleted file mode 100644 index c0c87df..0000000 --- a/src/screens/Login/index.js +++ /dev/null @@ -1,49 +0,0 @@ -import React from 'react' -import { Card as RCard } from 'reactstrap' -import styled from 'styled-components' -import { connect } from 'react-redux' -import { Redirect, Link } from 'react-router-dom' - -import Container from '../../components/Container' -import Navbar from '../../containers/Navbar' -import colors from '../../styles/colors' -import LoginForm from './LoginForm' - -const Card = styled(RCard)` - border-radius: 3px; - max-width: 45vw; -` - -const WrappedContainer = styled(Container)` - min-height: calc(100vh - 130px); -` - -const Text = styled.h3` - font-weight: bold; - padding-bottom: 1.2em; -` - -const Login = ({ permission, auth }) => { - console.log('permission', permission) - if (auth.isAuthenticated) { - return () - } - return ( - - - - Welcome Back - - - - New to Projectwise? Signup - - - ) -} - -const mapStateToProps = (state) => ({ - auth: state.auth -}) - -export default connect(mapStateToProps)(Login) diff --git a/src/screens/Profile/ProfileForm.js b/src/screens/Profile/ProfileForm.js deleted file mode 100644 index 6759770..0000000 --- a/src/screens/Profile/ProfileForm.js +++ /dev/null @@ -1,66 +0,0 @@ -import React, { Component } from 'react' -import { Form, FormGroup, Col, Button } from 'reactstrap' -import { Field, reduxForm, SubmissionError } from 'redux-form' -import styled from 'styled-components' - -import validate from '../../config/validator' -import { TextInput } from '../../components/Input' - - -const FullButton = styled(Button)` - width: 100%; - font-size: 1rem; - font-weight: bold; -` - -class ProfileForm extends Component { - constructor (props) { - super(props) - - this.submit = this.submit.bind(this) - } - - submit (values, dispatch) { - console.log(values) - } - - render () { - const { handleSubmit, submitting, auth } = this.props - console.log("####", auth) - return ( - - - - - - - Update Profile - - - - - ) - } -} - -export default reduxForm({ form: 'ProfileForm' })(ProfileForm) diff --git a/src/screens/Profile/index.js b/src/screens/Profile/index.js deleted file mode 100644 index 4009b1f..0000000 --- a/src/screens/Profile/index.js +++ /dev/null @@ -1,38 +0,0 @@ -import React from 'react' -import { Card as RCard } from 'reactstrap' -import styled from 'styled-components' -import { connect } from 'react-redux' -import { Redirect, Link } from 'react-router-dom' - -import Container from '../../components/Container' -import Navbar from '../../containers/Navbar' -import colors from '../../styles/colors' -import ProfileForm from './ProfileForm' - -const Card = styled(RCard)` - border-radius: 3px; - max-width: 45vw; -` - -const Text = styled.h3` - font-weight: bold; -` - -const Profile = ({ permission, auth }) => { - console.log('permission', permission, auth) - return ([ - , - - Profile - - - - - ]) -} - -const mapStateToProps = (state) => ({ - auth: state.auth -}) - -export default connect(mapStateToProps)(Profile) diff --git a/src/screens/Project/ProjectPage.js b/src/screens/Project/ProjectPage.js deleted file mode 100644 index 78079ef..0000000 --- a/src/screens/Project/ProjectPage.js +++ /dev/null @@ -1,70 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import { DiscussionEmbed } from 'disqus-react' - -import Container from '../../components/Container' -import Margin from '../../components/Margin' -import Badge from '../../components/Badge' -import LikeButton from '../../containers/LikeButton' - -import colors from '../../styles/colors' -import { shortName } from '../../config/disqus' - -const WrappedContainer = styled(Container)` - max-width: 800px; - min-height: calc(100vh - 130px); -` - -const ProjectPage = ({ project }) => { - const { - slug, - title, - description, - projectUrl, - categories, - helpDescription, - addedBy - } = project - - const disqusConfig = { - url: window.location.href, - identifier: slug, - title: title - } - - return ( - - {title} - - - - - {projectUrl} - - - - {addedBy.username} - - - {categories && categories.map((category, index) => ( - {category} - ))} - - - - Project Details - {description} - Project Help Requirements - {helpDescription} - - - - - - - - - ) -} - -export default ProjectPage diff --git a/src/screens/Project/index.js b/src/screens/Project/index.js deleted file mode 100644 index 9a4f3a9..0000000 --- a/src/screens/Project/index.js +++ /dev/null @@ -1,51 +0,0 @@ -import React, { Component } from 'react' -import styled from 'styled-components' -import { connect } from 'react-redux' - -import Container from '../../components/Container' -import Preloader from '../../components/Preloader' -import Navbar from '../../containers/Navbar' -import ProjectPage from './ProjectPage' -import colors from '../../styles/colors' -import { getProject } from '../../store/actions/projects' - -const WrapperContainer = styled(Container)` - min-height: calc(100vh - 130px); -` - -const NotFoundContainer = () => ([ - , - - No such project exists - -]) - -class Project extends Component { - componentDidMount () { - const { params } = this.props.match - this.props.getProject(params.projectId) - } - - render () { - const { projects, match } = this.props - const { projectId } = match.params - if (projects.isLoading) { - return ([, ]) - } else if (!projects.projectsById[projectId]) { - return () - } else { - return ( - - - - - ) - } - } -} - -const mapStateToProps = (state) => ({ - projects: state.projects -}) - -export default connect(mapStateToProps, { getProject })(Project) diff --git a/src/screens/Projects/ProjectCard.js b/src/screens/Projects/ProjectCard.js deleted file mode 100644 index f2203ae..0000000 --- a/src/screens/Projects/ProjectCard.js +++ /dev/null @@ -1,75 +0,0 @@ -import React from 'react' -import { Col, - Card as RCard, - CardSubtitle, - CardText as RCardText, - CardTitle as RCardTitle -} from 'reactstrap' -import { Link } from 'react-router-dom' -import styled from 'styled-components' -import { CommentCount } from 'disqus-react' -import { ellipsis } from 'polished' - -import Margin from '../../components/Margin' -import Badge from '../../components/Badge' -import colors from '../../styles/colors' -import { shortName } from '../../config/disqus' - -const Card = styled(RCard)` - border-radius: 3px; - min-width: 300px; - cursor: pointer; - box-shadow: none; - border: 2px solid ${colors.light}; - text-decoration: none; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; - &:hover { - border: 2px solid ${colors.dark}; - text-decoration: none; - } -` - -const FooterText = styled.p` - margin-bottom: 0.2rem; -` - -const CardTitle = styled(RCardTitle)` - font-weight: bold; -` - -const CardText = styled(RCardText)` - ${ellipsis('400px')} - color: ${colors.secondary}; -` - -const ProjectCard = ({ project }) => { - const { slug, addedBy, title, likeCount } = project - const disqusConfig = { - url: `${process.env.PUBLIC_URL}/projects/${slug}`, - identifier: slug, - title: title - } - return ( - - - {title} - added by {addedBy.username} - - {project.categories && project.categories.map((category, index) => ( - {category} - ))} - - {project.description} - - - - comments - - {likeCount} likes - - - - ) -} - -export default ProjectCard diff --git a/src/screens/Projects/ProjectList.js b/src/screens/Projects/ProjectList.js deleted file mode 100644 index 1b75f01..0000000 --- a/src/screens/Projects/ProjectList.js +++ /dev/null @@ -1,68 +0,0 @@ -import React, { Component } from 'react' -import styled from 'styled-components' -import { connect } from 'react-redux' -import { Button } from 'reactstrap' -import { Link } from 'react-router-dom' -import _ from 'lodash' - -import Container from '../../components/Container' -import Preloader from '../../components/Preloader' -import ProjectRow from './ProjectRow' -import { getProjects } from '../../store/actions/projects' -import colors from '../../styles/colors' - -const WrapperContainer = styled(Container)` - min-height: calc(100vh - 130px); -` - -const FullButton = styled(Button)` - font-size: 1rem; - font-weight: bold; -` - -const Header = styled.h4` - color: ${props => props.color || colors.white} - font-weight: 600; -` - -class ProjectList extends Component { - componentDidMount () { - this.props.getProjects() - } - - render () { - const { projectsById } = this.props.projects - const projectIds = Object.keys(projectsById) - let projectsChunk = _.chunk(projectIds, 3) - - if (this.props.projects.isLoading) { - return - } - if (projectIds && projectIds.length === 0) { - return ( - - - No projects found - - Add a new project - - - - ) - } - return ( - - All Projects - {projectsChunk.map((projectIds) => ( - projectsById[id])} /> - ))} - - ) - } -} - -const mapStateToProps = (state) => ({ - projects: state.projects -}) - -export default connect(mapStateToProps, { getProjects })(ProjectList) diff --git a/src/screens/Projects/ProjectRow.js b/src/screens/Projects/ProjectRow.js deleted file mode 100644 index b6c9b3e..0000000 --- a/src/screens/Projects/ProjectRow.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react' -import { Row } from 'reactstrap' - -import ProjectCard from './ProjectCard' - -const ProjectRow = ({ projects }) => { - return ( - - { projects.map(project => ) } - - ) -} - -export default ProjectRow diff --git a/src/screens/Projects/index.js b/src/screens/Projects/index.js deleted file mode 100644 index 0ab2bb7..0000000 --- a/src/screens/Projects/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import React, { Component } from 'react' - -import Container from '../../components/Container' -import Banner from '../../components/Banner' -import ProjectList from './ProjectList' -import Navbar from '../../containers/Navbar' -import colors from '../../styles/colors' - -class Projects extends Component { - render () { - return ( - - - - - - ) - } -} - -export default Projects diff --git a/src/screens/Root.js b/src/screens/Root.js deleted file mode 100644 index ce8e14b..0000000 --- a/src/screens/Root.js +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react' -import { Route, Switch } from 'react-router-dom' - -import PrivateRoute from '../containers/PrivateRoute' -import Footer from '../components/Footer' -import Notifications from '../containers/Notifications' -import Container from '../components/Container' - -import Home from './Home' -import Login from './Login' -import { Github } from './Auth' -import Signup from './Signup' -import Projects from './Projects' -import Project from './Project' -import AddProject from './AddProject' -import Profile from './Profile' - -const Root = () => { - return ( - - - - - - - - - - - - - - - ) -} - -export default Root diff --git a/src/screens/Signup/SignupForm.js b/src/screens/Signup/SignupForm.js deleted file mode 100644 index cdcb58a..0000000 --- a/src/screens/Signup/SignupForm.js +++ /dev/null @@ -1,117 +0,0 @@ -import React, { Component } from 'react' -import { Form, FormGroup, Col, Button } from 'reactstrap' -import { Field, reduxForm, SubmissionError } from 'redux-form' -import styled from 'styled-components' - -import validate from '../../config/validator' -import { TextInput } from '../../components/Input' - -import API from '../../api' -import signup from '../../store/actions/signup' - -const FullButton = styled(Button)` - width: 100%; - font-size: 1rem; - font-weight: bold; -` - -class SignupForm extends Component { - constructor (props) { - super(props) - - this.submit = this.submit.bind(this) - } - - submit (values, dispatch) { - const userDetails = { - name: values.name, - username: values.username, - email: values.email, - password: values.password - } - console.log(values) - return API.signup(userDetails) - .then((response) => { - if (response.status !== 200) { - const errors = response.data.errors.details.errors - if (errors.email) { - throw new SubmissionError({ - email: errors.email.msg, - _error: 'Something went wrong' - }) - } - } else { - dispatch(signup(response.data.user)) - } - }) - } - - render () { - const { handleSubmit, submitting } = this.props - return ( - - - - - - - - - - - I agree to all the terms and conditions - - - - - - - Signup - - - - - Signup with Github - - - - - ) - } -} - -export default reduxForm({ form: 'SignupForm' })(SignupForm) diff --git a/src/screens/Signup/index.js b/src/screens/Signup/index.js deleted file mode 100644 index d71ccbf..0000000 --- a/src/screens/Signup/index.js +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react' -import { Card as RCard } from 'reactstrap' -import styled from 'styled-components' -import { connect } from 'react-redux' -import { Redirect, Link } from 'react-router-dom' - -import Container from '../../components/Container' -import Navbar from '../../containers/Navbar' -import colors from '../../styles/colors' -import SignupForm from './SignupForm' - -const Card = styled(RCard)` - border-radius: 3px; - max-width: 45vw; -` - -const WrappedContainer = styled(Container)` - min-height: calc(100vh - 130px); -` - -const Text = styled.h3` - font-weight: bold; -` - -const Signup = ({ auth }) => { - if (auth.isAuthenticated) { - return () - } - return ([ - , - - Join Projectwise - - - - Already have an account? Login - - ]) -} - -const mapStateToProps = (state) => ({ - auth: state.auth -}) - -export default connect(mapStateToProps)(Signup) diff --git a/src/store/actions/categories.js b/src/store/actions/categories.js deleted file mode 100644 index 230657e..0000000 --- a/src/store/actions/categories.js +++ /dev/null @@ -1,9 +0,0 @@ -import { GET_CATEGORIES } from '../constants' -import API from '../../api' - -export const getProjects = () => { - return { - type: GET_CATEGORIES, - promise: API.getCategories() - } -} diff --git a/src/store/actions/login.js b/src/store/actions/login.js deleted file mode 100644 index 2a9876d..0000000 --- a/src/store/actions/login.js +++ /dev/null @@ -1,19 +0,0 @@ -/* global localStorage */ - -import { LOGIN } from '../constants' -import API from '../../api' - -const login = (user) => { - API.setAuthHeader(user.token) - localStorage.setItem('token', user.token) - delete user.token - return { - type: LOGIN, - payload: { - isAuthenticated: true, - user - } - } -} - -export default login diff --git a/src/store/actions/logout.js b/src/store/actions/logout.js deleted file mode 100644 index 6f29ad7..0000000 --- a/src/store/actions/logout.js +++ /dev/null @@ -1,15 +0,0 @@ -/* global localStorage */ - -import { LOGOUT } from '../constants' -import API from '../../api' - -const logout = () => { - localStorage.removeItem('token') - API.removeAuthHeader() - - return { - type: LOGOUT - } -} - -export default logout diff --git a/src/store/actions/notifications.js b/src/store/actions/notifications.js deleted file mode 100644 index e6b2b25..0000000 --- a/src/store/actions/notifications.js +++ /dev/null @@ -1,24 +0,0 @@ -import shortid from 'shortid' - -import { ADD_NOTIFICATION, REMOVE_NOTIFICATION } from '../constants' -import colors from '../../styles/colors' - -const defaultOptions = { - color: colors.success -} - -export const createNotification = (options) => ({ - id: shortid.generate(), - ...defaultOptions, - ...options -}) - -export const addNotification = (options = {}) => ({ - payload: createNotification(options), - type: ADD_NOTIFICATION -}) - -export const removeNotification = (id) => ({ - payload: id, - type: REMOVE_NOTIFICATION -}) diff --git a/src/store/actions/projects.js b/src/store/actions/projects.js deleted file mode 100644 index 3825cae..0000000 --- a/src/store/actions/projects.js +++ /dev/null @@ -1,35 +0,0 @@ -import { - GET_PROJECTS, - GET_PROJECT, - LIKE_PROJECT, - DISLIKE_PROJECT -} from '../constants' -import API from '../../api' - -export const getProjects = () => { - return { - type: GET_PROJECTS, - promise: API.getProjects() - } -} - -export const getProject = (projectId) => { - return { - type: GET_PROJECT, - promise: API.getProject(projectId) - } -} - -export const likeProject = (projectId) => { - return { - type: LIKE_PROJECT, - promise: API.likeProject(projectId) - } -} - -export const dislikeProject = (projectId) => { - return { - type: DISLIKE_PROJECT, - promise: API.dislikeProject(projectId) - } -} diff --git a/src/store/actions/signup.js b/src/store/actions/signup.js deleted file mode 100644 index 84ab035..0000000 --- a/src/store/actions/signup.js +++ /dev/null @@ -1,19 +0,0 @@ -/* global localStorage */ - -import { SIGNUP } from '../constants' -import API from '../../api' - -const signup = (user) => { - API.setAuthHeader(user.token) - localStorage.setItem('token', user.token) - delete user.token - return { - type: SIGNUP, - payload: { - user, - isAuthenticated: true - } - } -} - -export default signup diff --git a/src/store/constants.js b/src/store/constants.js deleted file mode 100644 index a0ec808..0000000 --- a/src/store/constants.js +++ /dev/null @@ -1,13 +0,0 @@ -export const SIGNUP = 'SIGNUP' -export const LOGIN = 'LOGIN' -export const LOGOUT = 'LOGOUT' - -export const ADD_NOTIFICATION = 'ADD_NOTIFICATION' -export const REMOVE_NOTIFICATION = 'REMOVE_NOTIFICATION' - -export const GET_PROJECTS = 'GET_PROJECTS' -export const GET_PROJECT = 'GET_PROJECT' -export const LIKE_PROJECT = 'LIKE_PROJECT' -export const DISLIKE_PROJECT = 'DISLIKE_PROJECT' - -export const GET_CATEGORIES = 'GET_CATEGORIES' diff --git a/src/store/index.js b/src/store/index.js deleted file mode 100644 index 4de94af..0000000 --- a/src/store/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import { createStore, applyMiddleware, compose } from 'redux' -import { middleware as reduxPackMiddleware } from 'redux-pack' -import thunk from 'redux-thunk' - -import rootReducer from './reducers' - -const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose - -const middlewares = [thunk, reduxPackMiddleware] - -const store = createStore( - rootReducer, - composeEnhancers(applyMiddleware(...middlewares)) -) - -export default store diff --git a/src/store/reducers/auth.js b/src/store/reducers/auth.js deleted file mode 100644 index acefe7f..0000000 --- a/src/store/reducers/auth.js +++ /dev/null @@ -1,49 +0,0 @@ -/* global localStorage */ -import jwtDecode from 'jwt-decode' - -import API from '../../api' -import { SIGNUP, LOGIN, LOGOUT } from '../constants' - -const initialState = { - isAuthenticated: false, - user: null -} - -const getInitialState = () => { - try { - const token = localStorage.getItem('token') - const { user, exp } = jwtDecode(token) - - // Check if token is expired (It should have more than an hour) - const isExpired = exp * 1000 - Date.now() < 60 * 1000 - - if (isExpired) { - return initialState - } else { - API.setAuthHeader(token) - return { ...initialState, isAuthenticated: true, user } - } - } catch (e) { - return initialState - } -} - -const auth = (state = getInitialState(), action) => { - const { type, payload } = action - - switch (type) { - case SIGNUP: - return { ...state, ...payload } - - case LOGIN: - return { ...state, ...payload } - - case LOGOUT: - return { ...initialState } - - default: - return state - } -} - -export default auth diff --git a/src/store/reducers/categories.js b/src/store/reducers/categories.js deleted file mode 100644 index b4b03b5..0000000 --- a/src/store/reducers/categories.js +++ /dev/null @@ -1,42 +0,0 @@ -import { handle } from 'redux-pack' - -import { GET_CATEGORIES } from '../constants' - -const initialState = { - isLoading: false, - categoryList: {}, - errors: {} -} - -const handleCategories = (payload) => ({ - start: prevState => ({ - ...prevState, - isLoading: true - }), - finish: prevState => ({ - ...prevState, - isLoading: false - }), - success: prevState => ({ - ...prevState, - categoryList: payload.data.categories - }), - failure: prevState => ({ - ...prevState, - errors: { ...payload.data.errors } - }) -}) - -const categories = (state = initialState, action) => { - const { type, payload } = action - - switch (type) { - case GET_CATEGORIES: - return handle(state, action, handleCategories(payload)) - - default: - return state - } -} - -export default categories diff --git a/src/store/reducers/index.js b/src/store/reducers/index.js deleted file mode 100644 index fa56107..0000000 --- a/src/store/reducers/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import { combineReducers } from 'redux' -import { reducer as formReducer } from 'redux-form' - -import auth from './auth' -import projects from './projects' -import categories from './categories' -import notifications from './notifications' - -const App = combineReducers({ - form: formReducer, - auth, - projects, - categories, - notifications -}) - -export default App diff --git a/src/store/reducers/notifications.js b/src/store/reducers/notifications.js deleted file mode 100644 index 9a9bcf7..0000000 --- a/src/store/reducers/notifications.js +++ /dev/null @@ -1,18 +0,0 @@ -import { ADD_NOTIFICATION, REMOVE_NOTIFICATION } from '../constants' - -const notifications = (state = [], action) => { - const { type, payload } = action - - switch (type) { - case ADD_NOTIFICATION: - return [...state, payload] - - case REMOVE_NOTIFICATION: - return state.filter(notification => notification.id !== payload) - - default: - return state - } -} - -export default notifications diff --git a/src/store/reducers/projects.js b/src/store/reducers/projects.js deleted file mode 100644 index 6825850..0000000 --- a/src/store/reducers/projects.js +++ /dev/null @@ -1,87 +0,0 @@ -import { handle } from 'redux-pack' - -import { - GET_PROJECTS, - GET_PROJECT, - LIKE_PROJECT, - DISLIKE_PROJECT -} from '../constants' - -const initialState = { - isLoading: false, - projectsById: {}, - errors: {} -} - -const normaliseProjects = (prevProjects, newProjects) => { - const projects = {...prevProjects} - if (Array.isArray(newProjects)) { - newProjects.forEach(project => { - projects[project.slug] = project - }) - } else if (typeof newProjects === 'object' && newProjects.slug) { - projects[newProjects.slug] = newProjects - } - return projects -} - -const handleProjects = (payload) => ({ - start: prevState => ({ - ...prevState, - isLoading: true - }), - finish: prevState => ({ - ...prevState, - isLoading: false - }), - success: prevState => ({ - ...prevState, - projectsById: normaliseProjects(prevState.projects, payload.data.projects) - }), - failure: prevState => ({ - ...prevState, - errors: { ...payload } - }) -}) - -const handleProject = (payload) => ({ - start: prevState => ({ - ...prevState, - isLoading: true - }), - finish: prevState => ({ - ...prevState, - isLoading: false - }), - success: prevState => ({ - ...prevState, - projectsById: normaliseProjects(prevState.projects, payload.data.project) - }), - failure: prevState => ({ - ...prevState, - errors: { ...payload.data.errors } - }) -}) - -const projects = (state = initialState, action) => { - const { type, payload } = action - console.log(payload) - switch (type) { - case GET_PROJECTS: - return handle(state, action, handleProjects(payload)) - - case GET_PROJECT: - return handle(state, action, handleProject(payload)) - - case LIKE_PROJECT: - return handle(state, action, handleProject(payload)) - - case DISLIKE_PROJECT: - return handle(state, action, handleProject(payload)) - - default: - return state - } -} - -export default projects diff --git a/src/styles/App.css b/src/styles/App.css deleted file mode 100644 index e69de29..0000000 diff --git a/src/styles/colors.js b/src/styles/colors.js deleted file mode 100644 index 089d187..0000000 --- a/src/styles/colors.js +++ /dev/null @@ -1,11 +0,0 @@ -export default { - primary: '#0067F4', - secondary: '#5A6169', - success: '#17C671', - info: '#00B8D8', - warning: '#00B8D8', - danger: '#C4183C', - light: '#E9ECEF', - dark: '#212529', - white: '#FFFFFF' -} diff --git a/src/styles/react-select.css b/src/styles/react-select.css deleted file mode 100644 index f312a44..0000000 --- a/src/styles/react-select.css +++ /dev/null @@ -1,426 +0,0 @@ -/** - * React Select - * ============ - * Created by Jed Watson and Joss Mackison for KeystoneJS, http://www.keystonejs.com/ - * https://twitter.com/jedwatson https://twitter.com/jossmackison https://twitter.com/keystonejs - * MIT License: https://github.com/JedWatson/react-select -*/ -.Select { - position: relative; -} -.Select input::-webkit-contacts-auto-fill-button, -.Select input::-webkit-credentials-auto-fill-button { - display: none !important; -} -.Select input::-ms-clear { - display: none !important; -} -.Select input::-ms-reveal { - display: none !important; -} -.Select, -.Select div, -.Select input, -.Select span { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.Select.is-disabled .Select-arrow-zone { - cursor: default; - pointer-events: none; - opacity: 0.35; -} -.Select.is-disabled > .Select-control { - background-color: #f9f9f9; -} -.Select.is-disabled > .Select-control:hover { - box-shadow: none; -} -.Select.is-open > .Select-control { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - background: #fff; - border-color: #b3b3b3 #ccc #d9d9d9; -} -.Select.is-open > .Select-control .Select-arrow { - top: -2px; - border-color: transparent transparent #999; - border-width: 0 5px 5px; -} -.Select.is-searchable.is-open > .Select-control { - cursor: text; -} -.Select.is-searchable.is-focused:not(.is-open) > .Select-control { - cursor: text; -} -.Select.is-focused > .Select-control { - background: #fff; -} -.Select.is-focused:not(.is-open) > .Select-control { - border-color: #007eff; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 3px rgba(0, 126, 255, 0.1); - background: #fff; -} -.Select.has-value.is-clearable.Select--single > .Select-control .Select-value { - padding-right: 42px; -} -.Select.has-value.Select--single > .Select-control .Select-value .Select-value-label, -.Select.has-value.is-pseudo-focused.Select--single > .Select-control .Select-value .Select-value-label { - color: #333; -} -.Select.has-value.Select--single > .Select-control .Select-value a.Select-value-label, -.Select.has-value.is-pseudo-focused.Select--single > .Select-control .Select-value a.Select-value-label { - cursor: pointer; - text-decoration: none; -} -.Select.has-value.Select--single > .Select-control .Select-value a.Select-value-label:hover, -.Select.has-value.is-pseudo-focused.Select--single > .Select-control .Select-value a.Select-value-label:hover, -.Select.has-value.Select--single > .Select-control .Select-value a.Select-value-label:focus, -.Select.has-value.is-pseudo-focused.Select--single > .Select-control .Select-value a.Select-value-label:focus { - color: #007eff; - outline: none; - text-decoration: underline; -} -.Select.has-value.Select--single > .Select-control .Select-value a.Select-value-label:focus, -.Select.has-value.is-pseudo-focused.Select--single > .Select-control .Select-value a.Select-value-label:focus { - background: #fff; -} -.Select.has-value.is-pseudo-focused .Select-input { - opacity: 0; -} -.Select.is-open .Select-arrow, -.Select .Select-arrow-zone:hover > .Select-arrow { - border-top-color: #666; -} -.Select.Select--rtl { - direction: rtl; - text-align: right; -} -.Select-control { - background-color: #fff; - border-color: #d9d9d9 #ccc #b3b3b3; - border-radius: 4px; - border: 1px solid #ccc; - color: #333; - cursor: default; - display: table; - border-spacing: 0; - border-collapse: separate; - height: 36px; - outline: none; - overflow: hidden; - position: relative; - width: 100%; -} -.Select-control:hover { - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06); -} -.Select-control .Select-input:focus { - outline: none; - background: #fff; -} -.Select-placeholder, -.Select--single > .Select-control .Select-value { - bottom: 0; - color: #aaa; - left: 0; - line-height: 34px; - padding-left: 10px; - padding-right: 10px; - position: absolute; - right: 0; - top: 0; - max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.Select-input { - height: 34px; - padding-left: 10px; - padding-right: 10px; - vertical-align: middle; -} -.Select-input > input { - width: 100%; - background: none transparent; - border: 0 none; - box-shadow: none; - cursor: default; - display: inline-block; - font-family: inherit; - font-size: inherit; - margin: 0; - outline: none; - line-height: 17px; - /* For IE 8 compatibility */ - padding: 8px 0 12px; - /* For IE 8 compatibility */ - -webkit-appearance: none; -} -.is-focused .Select-input > input { - cursor: text; -} -.has-value.is-pseudo-focused .Select-input { - opacity: 0; -} -.Select-control:not(.is-searchable) > .Select-input { - outline: none; -} -.Select-loading-zone { - cursor: pointer; - display: table-cell; - position: relative; - text-align: center; - vertical-align: middle; - width: 16px; -} -.Select-loading { - -webkit-animation: Select-animation-spin 400ms infinite linear; - -o-animation: Select-animation-spin 400ms infinite linear; - animation: Select-animation-spin 400ms infinite linear; - width: 16px; - height: 16px; - box-sizing: border-box; - border-radius: 50%; - border: 2px solid #ccc; - border-right-color: #333; - display: inline-block; - position: relative; - vertical-align: middle; -} -.Select-clear-zone { - -webkit-animation: Select-animation-fadeIn 200ms; - -o-animation: Select-animation-fadeIn 200ms; - animation: Select-animation-fadeIn 200ms; - color: #999; - cursor: pointer; - display: table-cell; - position: relative; - text-align: center; - vertical-align: middle; - width: 17px; -} -.Select-clear-zone:hover { - color: #D0021B; -} -.Select-clear { - display: inline-block; - font-size: 18px; - line-height: 1; -} -.Select--multi .Select-clear-zone { - width: 17px; -} -.Select-arrow-zone { - cursor: pointer; - display: table-cell; - position: relative; - text-align: center; - vertical-align: middle; - width: 25px; - padding-right: 5px; -} -.Select--rtl .Select-arrow-zone { - padding-right: 0; - padding-left: 5px; -} -.Select-arrow { - border-color: #999 transparent transparent; - border-style: solid; - border-width: 5px 5px 2.5px; - display: inline-block; - height: 0; - width: 0; - position: relative; -} -.Select-control > *:last-child { - padding-right: 5px; -} -.Select--multi .Select-multi-value-wrapper { - display: inline-block; -} -.Select .Select-aria-only { - position: absolute; - display: inline-block; - height: 1px; - width: 1px; - margin: -1px; - clip: rect(0, 0, 0, 0); - overflow: hidden; - float: left; -} -@-webkit-keyframes Select-animation-fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@keyframes Select-animation-fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -.Select-menu-outer { - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - background-color: #fff; - border: 1px solid #ccc; - border-top-color: #e6e6e6; - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06); - box-sizing: border-box; - margin-top: -1px; - max-height: 200px; - position: absolute; - top: 100%; - width: 100%; - z-index: 1; - -webkit-overflow-scrolling: touch; -} -.Select-menu { - max-height: 198px; - overflow-y: auto; -} -.Select-option { - box-sizing: border-box; - background-color: #fff; - color: #666666; - cursor: pointer; - display: block; - padding: 8px 10px; -} -.Select-option:last-child { - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.Select-option.is-selected { - background-color: #f5faff; - /* Fallback color for IE 8 */ - background-color: rgba(0, 126, 255, 0.04); - color: #333; -} -.Select-option.is-focused { - background-color: #ebf5ff; - /* Fallback color for IE 8 */ - background-color: rgba(0, 126, 255, 0.08); - color: #333; -} -.Select-option.is-disabled { - color: #cccccc; - cursor: default; -} -.Select-noresults { - box-sizing: border-box; - color: #999999; - cursor: default; - display: block; - padding: 8px 10px; -} -.Select--multi .Select-input { - vertical-align: middle; - margin-left: 10px; - padding: 0; -} -.Select--multi.Select--rtl .Select-input { - margin-left: 0; - margin-right: 10px; -} -.Select--multi.has-value .Select-input { - margin-left: 5px; -} -.Select--multi .Select-value { - background-color: #ebf5ff; - /* Fallback color for IE 8 */ - background-color: rgba(0, 126, 255, 0.08); - border-radius: 2px; - border: 1px solid #c2e0ff; - /* Fallback color for IE 8 */ - border: 1px solid rgba(0, 126, 255, 0.24); - color: #007eff; - display: inline-block; - font-size: 0.9em; - line-height: 1.4; - margin-left: 5px; - margin-top: 5px; - vertical-align: top; -} -.Select--multi .Select-value-icon, -.Select--multi .Select-value-label { - display: inline-block; - vertical-align: middle; -} -.Select--multi .Select-value-label { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; - cursor: default; - padding: 2px 5px; -} -.Select--multi a.Select-value-label { - color: #007eff; - cursor: pointer; - text-decoration: none; -} -.Select--multi a.Select-value-label:hover { - text-decoration: underline; -} -.Select--multi .Select-value-icon { - cursor: pointer; - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; - border-right: 1px solid #c2e0ff; - /* Fallback color for IE 8 */ - border-right: 1px solid rgba(0, 126, 255, 0.24); - padding: 1px 5px 3px; -} -.Select--multi .Select-value-icon:hover, -.Select--multi .Select-value-icon:focus { - background-color: #d8eafd; - /* Fallback color for IE 8 */ - background-color: rgba(0, 113, 230, 0.08); - color: #0071e6; -} -.Select--multi .Select-value-icon:active { - background-color: #c2e0ff; - /* Fallback color for IE 8 */ - background-color: rgba(0, 126, 255, 0.24); -} -.Select--multi.Select--rtl .Select-value { - margin-left: 0; - margin-right: 5px; -} -.Select--multi.Select--rtl .Select-value-icon { - border-right: none; - border-left: 1px solid #c2e0ff; - /* Fallback color for IE 8 */ - border-left: 1px solid rgba(0, 126, 255, 0.24); -} -.Select--multi.is-disabled .Select-value { - background-color: #fcfcfc; - border: 1px solid #e3e3e3; - color: #333; -} -.Select--multi.is-disabled .Select-value-icon { - cursor: not-allowed; - border-right: 1px solid #e3e3e3; -} -.Select--multi.is-disabled .Select-value-icon:hover, -.Select--multi.is-disabled .Select-value-icon:focus, -.Select--multi.is-disabled .Select-value-icon:active { - background-color: #fcfcfc; -} -@keyframes Select-animation-spin { - to { - transform: rotate(1turn); - } -} -@-webkit-keyframes Select-animation-spin { - to { - -webkit-transform: rotate(1turn); - } -} diff --git a/storage.rules b/storage.rules deleted file mode 100644 index d494542..0000000 --- a/storage.rules +++ /dev/null @@ -1,7 +0,0 @@ -service firebase.storage { - match /b/{bucket}/o { - match /{allPaths=**} { - allow read, write: if request.auth!=null; - } - } -} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 413f5a2..0000000 --- a/yarn.lock +++ /dev/null @@ -1,7438 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@firebase/app-types@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.2.0.tgz#2a0e9c433d5f39e428358c5cd8065010d5a07985" - -"@firebase/app@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.2.0.tgz#015c270f07be2b01cf64129a2d0f9b3b87f3c135" - dependencies: - "@firebase/app-types" "0.2.0" - "@firebase/util" "0.1.11" - tslib "1.9.0" - -"@firebase/auth-types@0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.2.1.tgz#83a03939358ce8a59de85404b9ed7ca13a51548f" - -"@firebase/auth@0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.4.2.tgz#63044e6ca6fb98ddc2de5a442f56f9d612ed1903" - dependencies: - "@firebase/auth-types" "0.2.1" - -"@firebase/database-types@0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.2.1.tgz#f83a6d03af5f8c93276ceb89e1f31e4664c9df1b" - -"@firebase/database@0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.2.2.tgz#a8a0709644d7f281b400e983c71c8c65fba90c70" - dependencies: - "@firebase/database-types" "0.2.1" - "@firebase/logger" "0.1.1" - "@firebase/util" "0.1.11" - faye-websocket "0.11.1" - tslib "1.9.0" - -"@firebase/firestore-types@0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-0.3.0.tgz#9df0af784145c568c6d306eda1dd25198b5a2b50" - -"@firebase/firestore@0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-0.4.1.tgz#c42e0c7aebab96eecec5e8ac4a3fe944d573458f" - dependencies: - "@firebase/firestore-types" "0.3.0" - "@firebase/logger" "0.1.1" - "@firebase/webchannel-wrapper" "0.2.8" - grpc "1.10.1" - tslib "1.9.0" - -"@firebase/functions-types@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.1.1.tgz#3b2176bdb30a4682321eb2ff79e796f6d9c010e0" - -"@firebase/functions@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.1.1.tgz#5b351c24de82db823dda1c82d25b76fe5c176141" - dependencies: - "@firebase/functions-types" "0.1.1" - "@firebase/messaging-types" "0.1.3" - isomorphic-fetch "2.2.1" - -"@firebase/logger@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.1.1.tgz#af5df54253286993f4b367c3dabe569c848860d3" - -"@firebase/messaging-types@0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.1.3.tgz#0a80c69c8f791e3aa94b28f4d2e296d0ea2571bc" - -"@firebase/messaging@0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.2.4.tgz#f6404c82f7cb86538f5fa62b4549b28a4edb9f90" - dependencies: - "@firebase/messaging-types" "0.1.3" - "@firebase/util" "0.1.11" - tslib "1.9.0" - -"@firebase/polyfill@0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.1.tgz#9835cc9b7a1369a92e38a95f96e42d0ee71f18fe" - dependencies: - core-js "2.5.5" - promise-polyfill "7.1.2" - whatwg-fetch "2.0.4" - -"@firebase/storage-types@0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.1.3.tgz#3e68942c5aab9f5f7180a797dff22d239821668e" - -"@firebase/storage@0.1.9": - version "0.1.9" - resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.1.9.tgz#1a32bd3f48a98f7eb1472cb3e5e4e37e04464c48" - dependencies: - "@firebase/storage-types" "0.1.3" - tslib "1.9.0" - -"@firebase/util@0.1.11": - version "0.1.11" - resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.1.11.tgz#9990dff53930aa9fcae31494ebe8de5c5b8e815c" - dependencies: - tslib "1.9.0" - -"@firebase/webchannel-wrapper@0.2.8": - version "0.2.8" - resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.8.tgz#38a936b60b898a1ad0f3719543ff1a1031f60f8b" - -abab@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - -accepts@~1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" - dependencies: - mime-types "~2.1.16" - negotiator "0.6.1" - -acorn-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" - dependencies: - acorn "^4.0.3" - -acorn-globals@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" - dependencies: - acorn "^4.0.4" - -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - dependencies: - acorn "^3.0.4" - -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - -acorn@^4.0.3, acorn@^4.0.4: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - -acorn@^5.0.0, acorn@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" - -acorn@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" - -address@1.0.3, address@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" - -ajv-keywords@^2.0.0, ajv-keywords@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" - -ajv-keywords@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" - -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5, ajv@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -ajv@^5.2.3, ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -ajv@^6.0.1: - version "6.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.2.tgz#678495f9b82f7cca6be248dd92f59bff5e1f4360" - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.1" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" - dependencies: - string-width "^1.0.1" - -ansi-escapes@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - -ansi-escapes@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - -ansi-regex@^2.0.0, ansi-regex@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - dependencies: - color-convert "^1.9.0" - -ansi-styles@^3.1.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - dependencies: - color-convert "^1.9.0" - -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - dependencies: - default-require-extensions "^1.0.0" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - -are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - dependencies: - sprintf-js "~1.0.2" - -aria-query@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.0.tgz#4af10a1e61573ddea0cf3b99b51c52c05b424d24" - dependencies: - ast-types-flow "0.0.7" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - -array-flatten@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" - -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -arrify@^1.0.0, arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -asn1.js@^4.0.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a" - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -assert@^1.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - dependencies: - util "0.10.3" - -ast-types-flow@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -async@^1.4.0, async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.1.2, async@^2.1.4, async@^2.4.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" - dependencies: - lodash "^4.14.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -autoprefixer@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.6.tgz#fb933039f74af74a83e71225ce78d9fd58ba84d7" - dependencies: - browserslist "^2.5.1" - caniuse-lite "^1.0.30000748" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^6.0.13" - postcss-value-parser "^3.2.3" - -autoprefixer@^6.3.1: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^5.2.16" - postcss-value-parser "^3.2.3" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - -aws4@^1.2.1, aws4@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - -axios@^0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.17.1.tgz#2d8e3e5d0bdbd7327f91bc814f5c57660f81824d" - dependencies: - follow-redirects "^1.2.5" - is-buffer "^1.1.5" - -axobject-query@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0" - dependencies: - ast-types-flow "0.0.7" - -babel-code-frame@6.26.0, babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@6.26.0, babel-core@^6.0.0, babel-core@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.0" - debug "^2.6.8" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.7" - slash "^1.0.0" - source-map "^0.5.6" - -babel-eslint@7.2.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" - dependencies: - babel-code-frame "^6.22.0" - babel-traverse "^6.23.1" - babel-types "^6.23.0" - babylon "^6.17.0" - -babel-generator@^6.18.0, babel-generator@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.6" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-builder-react-jsx@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - esutils "^2.0.2" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@20.0.3, babel-jest@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-20.0.3.tgz#e4a03b13dc10389e140fc645d09ffc4ced301671" - dependencies: - babel-core "^6.0.0" - babel-plugin-istanbul "^4.0.0" - babel-preset-jest "^20.0.3" - -babel-loader@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126" - dependencies: - find-cache-dir "^1.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-dynamic-import-node@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz#bd1d88ac7aaf98df4917c384373b04d971a2b37a" - dependencies: - babel-plugin-syntax-dynamic-import "^6.18.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-istanbul@^4.0.0: - version "4.1.5" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e" - dependencies: - find-up "^2.1.0" - istanbul-lib-instrument "^1.7.5" - test-exclude "^4.1.1" - -babel-plugin-jest-hoist@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz#afedc853bd3f8dc3548ea671fbe69d03cc2c1767" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - -babel-plugin-syntax-dynamic-import@6.18.0, babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - -babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-class-properties@6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-flow-strip-types@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-react-constant-elements@6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz#2f119bf4d2cdd45eb9baaae574053c604f6147dd" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-react-display-name@^6.23.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-self@6.22.0, babel-plugin-transform-react-jsx-self@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-source@6.22.0, babel-plugin-transform-react-jsx-source@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx@6.24.1, babel-plugin-transform-react-jsx@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" - dependencies: - babel-helper-builder-react-jsx "^6.24.1" - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@6.26.0, babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-runtime@6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-env@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^2.1.2" - invariant "^2.2.2" - semver "^5.3.0" - -babel-preset-flow@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" - dependencies: - babel-plugin-transform-flow-strip-types "^6.22.0" - -babel-preset-jest@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz#cbacaadecb5d689ca1e1de1360ebfc66862c178a" - dependencies: - babel-plugin-jest-hoist "^20.0.3" - -babel-preset-react-app@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-3.1.0.tgz#d77f6061ab9d7bf4b3cdc86b7cde9ded0df03e48" - dependencies: - babel-plugin-dynamic-import-node "1.1.0" - babel-plugin-syntax-dynamic-import "6.18.0" - babel-plugin-transform-class-properties "6.24.1" - babel-plugin-transform-object-rest-spread "6.26.0" - babel-plugin-transform-react-constant-elements "6.23.0" - babel-plugin-transform-react-jsx "6.24.1" - babel-plugin-transform-react-jsx-self "6.22.0" - babel-plugin-transform-react-jsx-source "6.22.0" - babel-plugin-transform-regenerator "6.26.0" - babel-plugin-transform-runtime "6.23.0" - babel-preset-env "1.6.1" - babel-preset-react "6.24.1" - -babel-preset-react@6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" - dependencies: - babel-plugin-syntax-jsx "^6.3.13" - babel-plugin-transform-react-display-name "^6.23.0" - babel-plugin-transform-react-jsx "^6.24.1" - babel-plugin-transform-react-jsx-self "^6.22.0" - babel-plugin-transform-react-jsx-source "^6.22.0" - babel-preset-flow "^6.23.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@6.26.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.17.0, babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - -balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - dependencies: - tweetnacl "^0.14.3" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - -binary-extensions@^1.0.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -bluebird@^3.4.7: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - -body-parser@1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.1" - http-errors "~1.6.2" - iconv-lite "0.4.19" - on-finished "~2.3.0" - qs "6.5.1" - raw-body "2.3.2" - type-is "~1.6.15" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -boom@4.x.x: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - dependencies: - hoek "4.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - dependencies: - hoek "4.x.x" - -boxen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" - dependencies: - ansi-align "^1.1.0" - camelcase "^2.1.0" - chalk "^1.1.1" - cli-boxes "^1.0.0" - filled-array "^1.0.0" - object-assign "^4.0.1" - repeating "^2.0.0" - string-width "^1.0.1" - widest-line "^1.0.0" - -brace-expansion@^1.0.0: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - -browser-resolve@^1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" - dependencies: - resolve "1.1.7" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - dependencies: - pako "~0.2.0" - -browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - -browserslist@^2.1.2, browserslist@^2.5.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.8.0.tgz#27d64028130a2e8585ca96f7c3b7730eff4de493" - dependencies: - caniuse-lite "^1.0.30000758" - electron-to-chromium "^1.3.27" - -bser@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169" - dependencies: - node-int64 "^0.4.0" - -bser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.0.3: - version "5.1.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.1.0.tgz#c913e43678c7cb7c8bd16afbcddb6c5505e8f9fe" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -builtin-modules@^1.0.0, builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - dependencies: - long "~3" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - dependencies: - callsites "^0.2.0" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -camelcase@^2.0.0, camelcase@^2.0.1, camelcase@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -caniuse-api@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" - dependencies: - browserslist "^1.3.6" - caniuse-db "^1.0.30000529" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000760" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000760.tgz#3ea29473eb78a6ccb09f2eb73ac9e1debfec528d" - -caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000758: - version "1.0.30000760" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000760.tgz#ec720395742f1c7ec8947fd6dd2604e77a8f98ff" - -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" - -case-sensitive-paths-webpack-plugin@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz#3d29ced8c1f124bf6f53846fb3f5894731fdc909" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.1.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - -chokidar@^1.6.0, chokidar@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -ci-info@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.1.tgz#47b44df118c48d2597b56d342e7e25791060171a" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - -clap@^1.0.9: - version "1.2.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" - dependencies: - chalk "^1.1.3" - -classnames@^2.2.3, classnames@^2.2.4: - version "2.2.6" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" - -clean-css@4.1.x: - version "4.1.9" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301" - dependencies: - source-map "0.5.x" - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^3.0.3, cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -clone@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -coa@~1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" - dependencies: - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -color-convert@^1.3.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" - dependencies: - color-name "^1.1.1" - -color-convert@^1.9.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" - dependencies: - color-name "1.1.1" - -color-name@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" - -color-name@^1.0.0, color-name@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - -color-string@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" - dependencies: - color-name "^1.0.0" - -color@^0.11.0: - version "0.11.4" - resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" - dependencies: - clone "^1.0.2" - color-convert "^1.3.0" - color-string "^0.3.0" - -colormin@^1.0.5: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" - dependencies: - color "^0.11.0" - css-color-names "0.0.4" - has "^1.0.1" - -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - dependencies: - delayed-stream "~1.0.0" - -commander@2.11.x, commander@~2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - -compressible@~2.0.11: - version "2.0.12" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66" - dependencies: - mime-db ">= 1.30.0 < 2" - -compression@^1.5.2: - version "1.7.1" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db" - dependencies: - accepts "~1.3.4" - bytes "3.0.0" - compressible "~2.0.11" - debug "2.6.9" - on-headers "~1.0.1" - safe-buffer "5.1.1" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-stream@^1.6.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -configstore@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" - dependencies: - dot-prop "^3.0.0" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - object-assign "^4.0.1" - os-tmpdir "^1.0.0" - osenv "^0.1.0" - uuid "^2.0.1" - write-file-atomic "^1.1.2" - xdg-basedir "^2.0.0" - -connect-history-api-fallback@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.4.0.tgz#3db24f973f4b923b0e82f619ce0df02411ca623d" - -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - dependencies: - date-now "^0.1.4" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - -content-type-parser@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - -convert-source-map@^1.4.0, convert-source-map@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - -core-js@2.5.5: - version "2.5.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.5.tgz#b14dde936c640c0579a6b50cabcc132dd6127e3b" - -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - -core-js@^2.4.0, core-js@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" - dependencies: - is-directory "^0.3.1" - js-yaml "^3.4.3" - minimist "^1.2.0" - object-assign "^4.1.0" - os-homedir "^1.0.1" - parse-json "^2.2.0" - require-from-string "^1.1.0" - -create-ecdh@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-error-class@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - ripemd160 "^2.0.0" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.6" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-react-class@^15.6.0: - version "15.6.3" - resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - object-assign "^4.1.1" - -cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - dependencies: - boom "5.x.x" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" - -css-color-names@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - -css-loader@0.28.7: - version "0.28.7" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.7.tgz#5f2ee989dd32edd907717f953317656160999c1b" - dependencies: - babel-code-frame "^6.11.0" - css-selector-tokenizer "^0.7.0" - cssnano ">=2.6.1 <4" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash.camelcase "^4.3.0" - object-assign "^4.0.1" - postcss "^5.0.6" - postcss-modules-extract-imports "^1.0.0" - postcss-modules-local-by-default "^1.0.1" - postcss-modules-scope "^1.0.0" - postcss-modules-values "^1.1.0" - postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-selector-tokenizer@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -css-to-react-native@^2.0.3: - version "2.2.1" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.2.1.tgz#7f3f4c95de65501b8720c87bf0caf1f39073b88e" - dependencies: - css-color-keywords "^1.0.0" - fbjs "^0.8.5" - postcss-value-parser "^3.3.0" - -css-what@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" - -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - -"cssnano@>=2.6.1 <4": - version "3.10.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - dependencies: - autoprefixer "^6.3.1" - decamelize "^1.1.2" - defined "^1.0.0" - has "^1.0.1" - object-assign "^4.0.1" - postcss "^5.0.14" - postcss-calc "^5.2.0" - postcss-colormin "^2.1.8" - postcss-convert-values "^2.3.4" - postcss-discard-comments "^2.0.4" - postcss-discard-duplicates "^2.0.1" - postcss-discard-empty "^2.0.1" - postcss-discard-overridden "^0.1.1" - postcss-discard-unused "^2.2.1" - postcss-filter-plugins "^2.0.0" - postcss-merge-idents "^2.1.5" - postcss-merge-longhand "^2.0.1" - postcss-merge-rules "^2.0.3" - postcss-minify-font-values "^1.0.2" - postcss-minify-gradients "^1.0.1" - postcss-minify-params "^1.0.4" - postcss-minify-selectors "^2.0.4" - postcss-normalize-charset "^1.1.0" - postcss-normalize-url "^3.0.7" - postcss-ordered-values "^2.1.0" - postcss-reduce-idents "^2.2.2" - postcss-reduce-initial "^1.0.0" - postcss-reduce-transforms "^1.0.3" - postcss-svgo "^2.1.1" - postcss-unique-selectors "^2.0.2" - postcss-value-parser "^3.2.3" - postcss-zindex "^2.0.1" - -csso@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - dependencies: - clap "^1.0.9" - source-map "^0.5.3" - -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" - -"cssstyle@>= 0.2.37 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" - dependencies: - cssom "0.3.x" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - -damerau-levenshtein@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - -debug@2.6.9, debug@^2.2.0, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - -debug@^3.0.1, debug@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - dependencies: - ms "2.0.0" - -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -deep-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - dependencies: - strip-bom "^2.0.0" - -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - -del@^2.0.2, del@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - dependencies: - globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -deline@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/deline/-/deline-1.0.4.tgz#6c05c87836926e1a1c63e47882f3d2eb2c6f14c9" - -depd@1.1.1, depd@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -detect-libc@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.2.tgz#71ad5d204bf17a6a6ca8f450c61454066ef461e1" - -detect-node@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" - -detect-port-alt@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.3.tgz#a4d2f061d757a034ecf37c514260a98750f2b131" - dependencies: - address "^1.0.1" - debug "^2.6.0" - -diff@^3.2.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" - -diffie-hellman@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -disqus-react@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/disqus-react/-/disqus-react-1.0.5.tgz#828ea186bd241c5e2a6dfebab5135e52a2d91d11" - dependencies: - react "^15.6.1" - react-dom "^15.6.1" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - -dns-packet@^1.0.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.2.2.tgz#a8a26bec7646438963fc86e06f8f8b16d6c8bf7a" - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - dependencies: - buffer-indexof "^1.0.0" - -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^2.0.0, doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - dependencies: - esutils "^2.0.2" - -dom-converter@~0.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" - dependencies: - utila "~0.3" - -dom-helpers@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6" - -dom-serializer@0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" - dependencies: - domelementtype "~1.1.1" - entities "~1.1.1" - -dom-storage@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.1.0.tgz#00fb868bc9201357ea243c7bcfd3304c1e34ea39" - -dom-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/dom-urls/-/dom-urls-1.1.0.tgz#001ddf81628cd1e706125c7176f53ccec55d918e" - dependencies: - urijs "^1.16.1" - -domain-browser@^1.1.1: - version "1.1.7" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" - -domelementtype@1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - -domelementtype@~1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" - -domhandler@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" - dependencies: - domelementtype "1" - -domutils@1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - dependencies: - is-obj "^1.0.0" - -dotenv@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" - -duplexer2@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - dependencies: - readable-stream "^2.0.2" - -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.27: - version "1.3.27" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" - -elliptic@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emoji-regex@^6.1.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - -encodeurl@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - dependencies: - iconv-lite "~0.4.13" - -enhanced-resolve@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.7" - -entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - -errno@^0.1.3, errno@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" - dependencies: - prr "~0.0.0" - -error-ex@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.7.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.1" - has "^1.0.1" - is-callable "^1.1.3" - is-regex "^1.0.4" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - -es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.35" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.35.tgz#18ee858ce6a3c45c7d79e91c15fcca9ec568494f" - dependencies: - es6-iterator "~2.0.1" - es6-symbol "~3.1.1" - -es6-error@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - -es6-iterator@^2.0.1, es6-iterator@~2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-promise@^4.0.5: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escodegen@^1.6.1: - version "1.9.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.5.6" - -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-config-react-app@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-2.0.1.tgz#fd0503da01ae608f0c6ae8861de084975142230e" - -eslint-config-standard-jsx@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz#009e53c4ddb1e9ee70b4650ffe63a7f39f8836e1" - -eslint-config-standard@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591" - -eslint-import-resolver-node@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" - dependencies: - debug "^2.6.9" - resolve "^1.5.0" - -eslint-loader@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.9.0.tgz#7e1be9feddca328d3dcfaef1ad49d5beffe83a13" - dependencies: - loader-fs-cache "^1.0.0" - loader-utils "^1.0.2" - object-assign "^4.0.1" - object-hash "^1.1.4" - rimraf "^2.6.1" - -eslint-module-utils@^2.1.1, eslint-module-utils@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" - dependencies: - debug "^2.6.8" - pkg-dir "^1.0.0" - -eslint-plugin-flowtype@2.39.1: - version "2.39.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.39.1.tgz#b5624622a0388bcd969f4351131232dcb9649cd5" - dependencies: - lodash "^4.15.0" - -eslint-plugin-import@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894" - dependencies: - builtin-modules "^1.1.1" - contains-path "^0.1.0" - debug "^2.6.8" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.1" - eslint-module-utils "^2.1.1" - has "^1.0.1" - lodash.cond "^4.3.0" - minimatch "^3.0.3" - read-pkg-up "^2.0.0" - -eslint-plugin-import@^2.8.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.13.0.tgz#df24f241175e312d91662dc91ca84064caec14ed" - dependencies: - contains-path "^0.1.0" - debug "^2.6.8" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.1" - eslint-module-utils "^2.2.0" - has "^1.0.1" - lodash "^4.17.4" - minimatch "^3.0.3" - read-pkg-up "^2.0.0" - resolve "^1.6.0" - -eslint-plugin-jsx-a11y@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz#5c96bb5186ca14e94db1095ff59b3e2bd94069b1" - dependencies: - aria-query "^0.7.0" - array-includes "^3.0.3" - ast-types-flow "0.0.7" - axobject-query "^0.1.0" - damerau-levenshtein "^1.0.0" - emoji-regex "^6.1.0" - jsx-ast-utils "^1.4.0" - -eslint-plugin-node@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz#80df3253c4d7901045ec87fa660a284e32bdca29" - dependencies: - ignore "^3.3.6" - minimatch "^3.0.4" - resolve "^1.3.3" - semver "5.3.0" - -eslint-plugin-promise@^3.6.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz#65ebf27a845e3c1e9d6f6a5622ddd3801694b621" - -eslint-plugin-react@7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz#300a95861b9729c087d362dd64abcc351a74364a" - dependencies: - doctrine "^2.0.0" - has "^1.0.1" - jsx-ast-utils "^2.0.0" - prop-types "^15.5.10" - -eslint-plugin-react@^7.5.1: - version "7.10.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.10.0.tgz#af5c1fef31c4704db02098f9be18202993828b50" - dependencies: - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.0.1" - prop-types "^15.6.2" - -eslint-plugin-standard@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz#2a9e21259ba4c47c02d53b2d0c9135d4b1022d47" - -eslint-scope@^3.7.1: - version "3.7.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - -eslint@4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.10.0.tgz#f25d0d7955c81968c2309aa5c9a229e045176bb7" - dependencies: - ajv "^5.2.0" - babel-code-frame "^6.22.0" - chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" - debug "^3.0.1" - doctrine "^2.0.0" - eslint-scope "^3.7.1" - espree "^3.5.1" - esquery "^1.0.0" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^9.17.0" - ignore "^3.3.3" - imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" - json-stable-stringify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^7.0.0" - progress "^2.0.0" - require-uncached "^1.0.3" - semver "^5.3.0" - strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "^4.0.1" - text-table "~0.2.0" - -eslint@^4.12.0: - version "4.19.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" - dependencies: - ajv "^5.3.0" - babel-code-frame "^6.22.0" - chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" - debug "^3.1.0" - doctrine "^2.1.0" - eslint-scope "^3.7.1" - eslint-visitor-keys "^1.0.0" - espree "^3.5.4" - esquery "^1.0.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.0.1" - ignore "^3.3.3" - imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^7.0.0" - progress "^2.0.0" - regexpp "^1.0.1" - require-uncached "^1.0.3" - semver "^5.3.0" - strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "4.0.2" - text-table "~0.2.0" - -espree@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e" - dependencies: - acorn "^5.1.1" - acorn-jsx "^3.0.0" - -espree@^3.5.4: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" - dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" - -esprima@^2.6.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - -esquery@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - dependencies: - estraverse "^4.0.0" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - dependencies: - estraverse "^4.1.0" - -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" - -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - -eventsource@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" - dependencies: - original ">=0.0.5" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" - dependencies: - merge "^1.1.3" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - dependencies: - homedir-polyfill "^1.0.1" - -express@^4.13.3: - version "4.16.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" - dependencies: - accepts "~1.3.4" - array-flatten "1.1.1" - body-parser "1.18.2" - content-disposition "0.5.2" - content-type "~1.0.4" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.1" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.1.0" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.2" - path-to-regexp "0.1.7" - proxy-addr "~2.0.2" - qs "6.5.1" - range-parser "~1.2.0" - safe-buffer "5.1.1" - send "0.16.1" - serve-static "1.13.1" - setprototypeof "1.1.0" - statuses "~1.3.1" - type-is "~1.6.15" - utils-merge "1.0.1" - vary "~1.1.2" - -extend@~3.0.0, extend@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -external-editor@^2.0.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -extract-text-webpack-plugin@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7" - dependencies: - async "^2.4.1" - loader-utils "^1.1.0" - schema-utils "^0.3.0" - webpack-sources "^1.0.1" - -extsprintf@1.3.0, extsprintf@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -fastparse@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" - -faye-websocket@0.11.1, faye-websocket@~0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^1.8.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.2.tgz#a24cf47827f82d38fb59a69ad70b76e3b6ae7383" - dependencies: - bser "1.0.2" - -fb-watchman@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - dependencies: - bser "^2.0.0" - -fbjs@^0.8.16, fbjs@^0.8.5, fbjs@^0.8.9: - version "0.8.17" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.18" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - -file-loader@1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.5.tgz#91c25b6b6fbe56dae99f10a425fd64933b5c9daa" - dependencies: - loader-utils "^1.0.2" - schema-utils "^0.3.0" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - -filesize@3.5.11: - version "3.5.11" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -filled-array@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" - -finalhandler@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -firebase@^4.8.1: - version "4.13.1" - resolved "https://registry.yarnpkg.com/firebase/-/firebase-4.13.1.tgz#87ab64bbb7f707244fb878f2a28235b0e3aed3ec" - dependencies: - "@firebase/app" "0.2.0" - "@firebase/auth" "0.4.2" - "@firebase/database" "0.2.2" - "@firebase/firestore" "0.4.1" - "@firebase/functions" "0.1.1" - "@firebase/messaging" "0.2.4" - "@firebase/polyfill" "0.3.1" - "@firebase/storage" "0.1.9" - dom-storage "2.1.0" - xmlhttprequest "1.8.0" - -flat-cache@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" - dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" - -flatten@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - -follow-redirects@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.6.tgz#4dcdc7e4ab3dd6765a97ff89c3b4c258117c79bf" - dependencies: - debug "^3.1.0" - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -form-data@~2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - -fs-extra@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" - -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@1.1.2, fsevents@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.36" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@1.0.0, global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -globals@^11.0.1: - version "11.7.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" - -globals@^9.17.0, globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -got@^5.0.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" - dependencies: - create-error-class "^3.0.1" - duplexer2 "^0.1.4" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - node-status-codes "^1.0.0" - object-assign "^4.0.1" - parse-json "^2.1.0" - pinkie-promise "^2.0.0" - read-all-stream "^3.0.0" - readable-stream "^2.0.5" - timed-out "^3.0.0" - unzip-response "^1.0.2" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - -grpc@1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.10.1.tgz#90691404aeb769a98784924d08e8fd07c920b2da" - dependencies: - lodash "^4.15.0" - nan "^2.10.0" - node-pre-gyp "0.7.0" - protobufjs "^5.0.0" - -gzip-size@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" - dependencies: - duplexer "^0.1.1" - -handle-thing@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" - -handlebars@^4.0.3: - version "4.0.11" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" - dependencies: - async "^1.4.0" - optimist "^0.6.1" - source-map "^0.4.4" - optionalDependencies: - uglify-js "^2.6" - -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has@^1.0.1, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - dependencies: - function-bind "^1.1.1" - -hash-base@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" - dependencies: - inherits "^2.0.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - -hawk@3.1.3, hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -hawk@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - sntp "2.x.x" - -he@1.1.x: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - -history@^4.7.2: - version "4.7.2" - resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b" - dependencies: - invariant "^2.2.1" - loose-envify "^1.2.0" - resolve-pathname "^2.2.0" - value-equal "^0.4.0" - warning "^3.0.0" - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -hoek@4.x.x: - version "4.2.0" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" - -hoist-non-react-statics@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" - -hoist-non-react-statics@^2.5.0, hoist-non-react-statics@^2.5.4: - version "2.5.5" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -homedir-polyfill@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" - dependencies: - parse-passwd "^1.0.0" - -hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-comment-regex@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" - -html-encoding-sniffer@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - dependencies: - whatwg-encoding "^1.0.1" - -html-entities@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - -html-minifier@^3.2.3: - version "3.5.6" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.6.tgz#7e4e661a09999599c7d8e8a2b8d7fb7430bb5c3e" - dependencies: - camel-case "3.0.x" - clean-css "4.1.x" - commander "2.11.x" - he "1.1.x" - ncname "1.0.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.1.x" - -html-webpack-plugin@2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz#e987f421853d3b6938c8c4c8171842e5fd17af23" - dependencies: - bluebird "^3.4.7" - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - toposort "^1.0.0" - -htmlparser2@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" - dependencies: - domelementtype "1" - domhandler "2.1" - domutils "1.1" - readable-stream "1.0" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - -http-errors@1.6.2, http-errors@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-parser-js@>=0.4.0: - version "0.4.9" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1" - -http-proxy-middleware@~0.17.4: - version "0.17.4" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" - dependencies: - http-proxy "^1.16.2" - is-glob "^3.1.0" - lodash "^4.17.2" - micromatch "^2.3.11" - -http-proxy@^1.16.2: - version "1.16.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" - dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" - -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" - -iconv-lite@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - -iconv-lite@^0.4.17, iconv-lite@~0.4.13: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - -icss-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - dependencies: - postcss "^6.0.1" - -ieee754@^1.1.4: - version "1.1.12" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" - -ignore@^3.3.3: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - -ignore@^3.3.6: - version "3.3.7" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" - -import-local@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8" - dependencies: - pkg-dir "^2.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - -ini@^1.3.4, ini@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - -inquirer@3.3.0, inquirer@^3.0.6: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -internal-ip@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" - dependencies: - meow "^3.3.0" - -interpret@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" - -invariant@^2.0.0, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - -ipaddr.js@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0" - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - -is-ci@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" - dependencies: - ci-info "^1.0.0" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-extglob@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - dependencies: - is-extglob "^2.1.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - dependencies: - path-is-inside "^1.0.1" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - -is-plain-object@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - dependencies: - isobject "^3.0.1" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - -is-root@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-1.0.0.tgz#07b6c233bc394cd9d02ba15c966bd6660d6342d5" - -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-svg@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -is-windows@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - -isomorphic-fetch@2.2.1, isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -istanbul-api@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620" - dependencies: - async "^2.1.4" - fileset "^2.0.2" - istanbul-lib-coverage "^1.1.1" - istanbul-lib-hook "^1.1.0" - istanbul-lib-instrument "^1.9.1" - istanbul-lib-report "^1.1.2" - istanbul-lib-source-maps "^1.2.2" - istanbul-reports "^1.1.3" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - -istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" - -istanbul-lib-hook@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b" - dependencies: - append-transform "^0.4.0" - -istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.1.1" - semver "^5.3.0" - -istanbul-lib-report@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425" - dependencies: - istanbul-lib-coverage "^1.1.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - -istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c" - dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.1.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - -istanbul-reports@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10" - dependencies: - handlebars "^4.0.3" - -jest-changed-files@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.3.tgz#9394d5cc65c438406149bef1bf4d52b68e03e3f8" - -jest-cli@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-20.0.4.tgz#e532b19d88ae5bc6c417e8b0593a6fe954b1dc93" - dependencies: - ansi-escapes "^1.4.0" - callsites "^2.0.0" - chalk "^1.1.3" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - istanbul-api "^1.1.1" - istanbul-lib-coverage "^1.0.1" - istanbul-lib-instrument "^1.4.2" - istanbul-lib-source-maps "^1.1.0" - jest-changed-files "^20.0.3" - jest-config "^20.0.4" - jest-docblock "^20.0.3" - jest-environment-jsdom "^20.0.3" - jest-haste-map "^20.0.4" - jest-jasmine2 "^20.0.4" - jest-message-util "^20.0.3" - jest-regex-util "^20.0.3" - jest-resolve-dependencies "^20.0.3" - jest-runtime "^20.0.4" - jest-snapshot "^20.0.3" - jest-util "^20.0.3" - micromatch "^2.3.11" - node-notifier "^5.0.2" - pify "^2.3.0" - slash "^1.0.0" - string-length "^1.0.1" - throat "^3.0.0" - which "^1.2.12" - worker-farm "^1.3.1" - yargs "^7.0.2" - -jest-config@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-20.0.4.tgz#e37930ab2217c913605eff13e7bd763ec48faeea" - dependencies: - chalk "^1.1.3" - glob "^7.1.1" - jest-environment-jsdom "^20.0.3" - jest-environment-node "^20.0.3" - jest-jasmine2 "^20.0.4" - jest-matcher-utils "^20.0.3" - jest-regex-util "^20.0.3" - jest-resolve "^20.0.4" - jest-validate "^20.0.3" - pretty-format "^20.0.3" - -jest-diff@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-20.0.3.tgz#81f288fd9e675f0fb23c75f1c2b19445fe586617" - dependencies: - chalk "^1.1.3" - diff "^3.2.0" - jest-matcher-utils "^20.0.3" - pretty-format "^20.0.3" - -jest-docblock@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.0.3.tgz#17bea984342cc33d83c50fbe1545ea0efaa44712" - -jest-environment-jsdom@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz#048a8ac12ee225f7190417713834bb999787de99" - dependencies: - jest-mock "^20.0.3" - jest-util "^20.0.3" - jsdom "^9.12.0" - -jest-environment-node@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-20.0.3.tgz#d488bc4612af2c246e986e8ae7671a099163d403" - dependencies: - jest-mock "^20.0.3" - jest-util "^20.0.3" - -jest-haste-map@^20.0.4: - version "20.0.5" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.0.5.tgz#abad74efb1a005974a7b6517e11010709cab9112" - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - jest-docblock "^20.0.3" - micromatch "^2.3.11" - sane "~1.6.0" - worker-farm "^1.3.1" - -jest-jasmine2@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz#fcc5b1411780d911d042902ef1859e852e60d5e1" - dependencies: - chalk "^1.1.3" - graceful-fs "^4.1.11" - jest-diff "^20.0.3" - jest-matcher-utils "^20.0.3" - jest-matchers "^20.0.3" - jest-message-util "^20.0.3" - jest-snapshot "^20.0.3" - once "^1.4.0" - p-map "^1.1.1" - -jest-matcher-utils@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz#b3a6b8e37ca577803b0832a98b164f44b7815612" - dependencies: - chalk "^1.1.3" - pretty-format "^20.0.3" - -jest-matchers@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-20.0.3.tgz#ca69db1c32db5a6f707fa5e0401abb55700dfd60" - dependencies: - jest-diff "^20.0.3" - jest-matcher-utils "^20.0.3" - jest-message-util "^20.0.3" - jest-regex-util "^20.0.3" - -jest-message-util@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-20.0.3.tgz#6aec2844306fcb0e6e74d5796c1006d96fdd831c" - dependencies: - chalk "^1.1.3" - micromatch "^2.3.11" - slash "^1.0.0" - -jest-mock@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-20.0.3.tgz#8bc070e90414aa155c11a8d64c869a0d5c71da59" - -jest-regex-util@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-20.0.3.tgz#85bbab5d133e44625b19faf8c6aa5122d085d762" - -jest-resolve-dependencies@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz#6e14a7b717af0f2cb3667c549de40af017b1723a" - dependencies: - jest-regex-util "^20.0.3" - -jest-resolve@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-20.0.4.tgz#9448b3e8b6bafc15479444c6499045b7ffe597a5" - dependencies: - browser-resolve "^1.11.2" - is-builtin-module "^1.0.0" - resolve "^1.3.2" - -jest-runtime@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-20.0.4.tgz#a2c802219c4203f754df1404e490186169d124d8" - dependencies: - babel-core "^6.0.0" - babel-jest "^20.0.3" - babel-plugin-istanbul "^4.0.0" - chalk "^1.1.3" - convert-source-map "^1.4.0" - graceful-fs "^4.1.11" - jest-config "^20.0.4" - jest-haste-map "^20.0.4" - jest-regex-util "^20.0.3" - jest-resolve "^20.0.4" - jest-util "^20.0.3" - json-stable-stringify "^1.0.1" - micromatch "^2.3.11" - strip-bom "3.0.0" - yargs "^7.0.2" - -jest-snapshot@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-20.0.3.tgz#5b847e1adb1a4d90852a7f9f125086e187c76566" - dependencies: - chalk "^1.1.3" - jest-diff "^20.0.3" - jest-matcher-utils "^20.0.3" - jest-util "^20.0.3" - natural-compare "^1.4.0" - pretty-format "^20.0.3" - -jest-util@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-20.0.3.tgz#0c07f7d80d82f4e5a67c6f8b9c3fe7f65cfd32ad" - dependencies: - chalk "^1.1.3" - graceful-fs "^4.1.11" - jest-message-util "^20.0.3" - jest-mock "^20.0.3" - jest-validate "^20.0.3" - leven "^2.1.0" - mkdirp "^0.5.1" - -jest-validate@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-20.0.3.tgz#d0cfd1de4f579f298484925c280f8f1d94ec3cab" - dependencies: - chalk "^1.1.3" - jest-matcher-utils "^20.0.3" - leven "^2.1.0" - pretty-format "^20.0.3" - -jest@20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-20.0.4.tgz#3dd260c2989d6dad678b1e9cc4d91944f6d602ac" - dependencies: - jest-cli "^20.0.4" - -js-base64@^2.1.9: - version "2.3.2" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" - -"js-tokens@^3.0.0 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -js-yaml@^3.4.3, js-yaml@^3.7.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^3.9.1: - version "3.12.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jsdom@^9.12.0: - version "9.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" - dependencies: - abab "^1.0.3" - acorn "^4.0.4" - acorn-globals "^3.1.0" - array-equal "^1.0.0" - content-type-parser "^1.0.1" - cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.2.37 < 0.3.0" - escodegen "^1.6.1" - html-encoding-sniffer "^1.0.1" - nwmatcher ">= 1.3.9 < 2.0.0" - parse5 "^1.5.1" - request "^2.79.0" - sax "^1.2.1" - symbol-tree "^3.2.1" - tough-cookie "^2.3.2" - webidl-conversions "^4.0.0" - whatwg-encoding "^1.0.1" - whatwg-url "^4.3.0" - xml-name-validator "^2.0.1" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-loader@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json3@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -json5@^0.5.0, json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -jsx-ast-utils@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" - -jsx-ast-utils@^2.0.0, jsx-ast-utils@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" - dependencies: - array-includes "^3.0.3" - -jwt-decode@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-2.2.0.tgz#7d86bd56679f58ce6a84704a657dd392bba81a79" - -killable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - dependencies: - is-buffer "^1.1.5" - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - optionalDependencies: - graceful-fs "^4.1.9" - -latest-version@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" - dependencies: - package-json "^2.0.0" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lazy-req@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -loader-fs-cache@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" - dependencies: - find-cache-dir "^0.1.1" - mkdirp "0.5.1" - -loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.2, loader-utils@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash-es@^4.17.10, lodash-es@^4.17.5: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.10.tgz#62cd7104cdf5dd87f235a837f0ede0e8e5117e05" - -lodash-es@^4.2.1: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" - -lodash._reinterpolate@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - -lodash.cond@^4.3.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - -lodash.isfunction@^3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" - -lodash.isobject@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - -lodash.template@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" - dependencies: - lodash._reinterpolate "~3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" - dependencies: - lodash._reinterpolate "~3.0.0" - -lodash.tonumber@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/lodash.tonumber/-/lodash.tonumber-4.0.3.tgz#0b96b31b35672793eb7f5a63ee791f1b9e9025d9" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - -"lodash@>=3.5 <5", lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.2.1: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -lodash@^4.17.10, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" - -loglevel@^1.4.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.1.tgz#189078c94ab9053ee215a0acdbf24244ea0f6502" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - -lru-cache@^4.0.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -macaddress@^0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" - -make-dir@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" - dependencies: - pify "^3.0.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - dependencies: - tmpl "1.0.x" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -math-expression-evaluator@^1.2.14: - version "1.2.17" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" - -md5.js@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -memory-fs@^0.4.0, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -meow@^3.3.0, meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - -merge@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - -micromatch@^2.1.5, micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -"mime-db@>= 1.30.0 < 2": - version "1.31.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.31.0.tgz#a49cd8f3ebf3ed1a482b60561d9105ad40ca74cb" - -mime-db@~1.30.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" - -mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7: - version "2.1.17" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" - dependencies: - mime-db "~1.30.0" - -mime@1.4.1, mime@^1.3.4, mime@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - -minimalistic-assert@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - -minimatch@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" - dependencies: - brace-expansion "^1.0.0" - -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - -multicast-dns@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.1.1.tgz#6e7de86a570872ab17058adea7160bbeca814dde" - dependencies: - dns-packet "^1.0.1" - thunky "^0.1.0" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - -nan@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" - -nan@^2.3.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" - -nanoid@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-1.0.7.tgz#23857a9514ae8efb7374221b923a2b92be3f74f2" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - -ncname@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" - dependencies: - xml-char-classes "^1.0.0" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - dependencies: - lower-case "^1.1.1" - -node-fetch@^1.0.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-forge@0.6.33: - version "0.6.33" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - -node-libs-browser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" - dependencies: - assert "^1.1.1" - browserify-zlib "^0.1.4" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^1.0.0" - https-browserify "0.0.1" - os-browserify "^0.2.0" - path-browserify "0.0.0" - process "^0.11.0" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.0.5" - stream-browserify "^2.0.1" - stream-http "^2.3.1" - string_decoder "^0.10.25" - timers-browserify "^2.0.2" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -node-notifier@^5.0.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff" - dependencies: - growly "^1.3.0" - semver "^5.3.0" - shellwords "^0.1.0" - which "^1.2.12" - -node-pre-gyp@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.7.0.tgz#55aeffbaed93b50d0a4657d469198cd80ac9df36" - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "2.83.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-pre-gyp@^0.6.36: - version "0.6.39" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" - dependencies: - detect-libc "^1.0.2" - hawk "3.1.3" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-status-codes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.0, normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - -normalize-url@^1.4.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -"nwmatcher@>= 1.3.9 < 2.0.0": - version "1.4.3" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" - -oauth-sign@~0.8.1, oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@4.1.1, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-hash@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.2.0.tgz#e96af0e96981996a1d47f88ead8f74f1ebc4422b" - -object-keys@^1.0.8: - version "1.0.12" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -obuf@^1.0.0, obuf@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" - -once@^1.3.0, once@^1.3.3, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - -opn@5.1.0, opn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519" - dependencies: - is-wsl "^1.1.0" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - -original@>=0.0.5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" - dependencies: - url-parse "1.0.x" - -os-browserify@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" - -os-homedir@^1.0.0, os-homedir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@^0.1.0, osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - dependencies: - p-try "^1.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - -package-json@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" - dependencies: - got "^5.0.0" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - dependencies: - no-case "^2.2.0" - -parse-asn1@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.1.0, parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-is-inside@^1.0.1, path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - -path-to-regexp@^1.0.1, path-to-regexp@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" - dependencies: - isarray "0.0.1" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -pbkdf2@^3.0.3: - version "3.0.14" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - dependencies: - find-up "^1.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - dependencies: - find-up "^2.1.0" - -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - -polished@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/polished/-/polished-1.9.3.tgz#d61b8a0c4624efe31e2583ff24a358932b6b75e1" - -popper.js@^1.12.9: - version "1.14.3" - resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095" - -portfinder@^1.0.9: - version "1.0.13" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" - dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" - -postcss-calc@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" - dependencies: - postcss "^5.0.2" - postcss-message-helpers "^2.0.0" - reduce-css-calc "^1.2.6" - -postcss-colormin@^2.1.8: - version "2.2.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - dependencies: - colormin "^1.0.5" - postcss "^5.0.13" - postcss-value-parser "^3.2.3" - -postcss-convert-values@^2.3.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - dependencies: - postcss "^5.0.11" - postcss-value-parser "^3.1.2" - -postcss-discard-comments@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" - dependencies: - postcss "^5.0.14" - -postcss-discard-duplicates@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - dependencies: - postcss "^5.0.4" - -postcss-discard-empty@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" - dependencies: - postcss "^5.0.14" - -postcss-discard-overridden@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" - dependencies: - postcss "^5.0.16" - -postcss-discard-unused@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - dependencies: - postcss "^5.0.14" - uniqs "^2.0.0" - -postcss-filter-plugins@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" - dependencies: - postcss "^5.0.4" - uniqid "^4.0.0" - -postcss-flexbugs-fixes@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.2.0.tgz#9b8b932c53f9cf13ba0f61875303e447c33dcc51" - dependencies: - postcss "^6.0.1" - -postcss-load-config@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" - dependencies: - cosmiconfig "^2.1.0" - object-assign "^4.1.0" - postcss-load-options "^1.2.0" - postcss-load-plugins "^2.3.0" - -postcss-load-options@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c" - dependencies: - cosmiconfig "^2.1.0" - object-assign "^4.1.0" - -postcss-load-plugins@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92" - dependencies: - cosmiconfig "^2.1.1" - object-assign "^4.1.0" - -postcss-loader@2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.8.tgz#8c67ddb029407dfafe684a406cfc16bad2ce0814" - dependencies: - loader-utils "^1.1.0" - postcss "^6.0.0" - postcss-load-config "^1.2.0" - schema-utils "^0.3.0" - -postcss-merge-idents@^2.1.5: - version "2.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" - dependencies: - has "^1.0.1" - postcss "^5.0.10" - postcss-value-parser "^3.1.1" - -postcss-merge-longhand@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - dependencies: - postcss "^5.0.4" - -postcss-merge-rules@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - dependencies: - browserslist "^1.5.2" - caniuse-api "^1.5.2" - postcss "^5.0.4" - postcss-selector-parser "^2.2.2" - vendors "^1.0.0" - -postcss-message-helpers@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - -postcss-minify-font-values@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" - dependencies: - object-assign "^4.0.1" - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-minify-gradients@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" - dependencies: - postcss "^5.0.12" - postcss-value-parser "^3.3.0" - -postcss-minify-params@^1.0.4: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.2" - postcss-value-parser "^3.0.2" - uniqs "^2.0.0" - -postcss-minify-selectors@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - dependencies: - alphanum-sort "^1.0.2" - has "^1.0.1" - postcss "^5.0.14" - postcss-selector-parser "^2.0.0" - -postcss-modules-extract-imports@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" - dependencies: - postcss "^6.0.1" - -postcss-modules-local-by-default@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-scope@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-values@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" - -postcss-normalize-charset@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" - dependencies: - postcss "^5.0.5" - -postcss-normalize-url@^3.0.7: - version "3.0.8" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^1.4.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - -postcss-ordered-values@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.1" - -postcss-reduce-idents@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-reduce-initial@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - dependencies: - postcss "^5.0.4" - -postcss-reduce-transforms@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" - dependencies: - has "^1.0.1" - postcss "^5.0.8" - postcss-value-parser "^3.0.1" - -postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^2.1.1: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - dependencies: - is-svg "^2.0.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - svgo "^0.7.0" - -postcss-unique-selectors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" - -postcss-zindex@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - dependencies: - has "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: - version "5.2.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - -postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.13: - version "6.0.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.14.tgz#5534c72114739e75d0afcf017db853099f562885" - dependencies: - chalk "^2.3.0" - source-map "^0.6.1" - supports-color "^4.4.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -prepend-http@^1.0.0, prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -pretty-bytes@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" - -pretty-error@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -pretty-format@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14" - dependencies: - ansi-regex "^2.1.1" - ansi-styles "^3.0.0" - -private@^0.1.6, private@^0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - -process@^0.11.0: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - -progress@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" - -promise-polyfill@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-7.1.2.tgz#ab05301d8c28536301622d69227632269a70ca3b" - -promise@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.1.tgz#e45d68b00a17647b6da711bf85ed6ed47208f450" - dependencies: - asap "~2.0.3" - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - dependencies: - asap "~2.0.3" - -prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: - version "15.6.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" - dependencies: - loose-envify "^1.3.1" - object-assign "^4.1.1" - -protobufjs@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -proxy-addr@~2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec" - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.5.2" - -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -public-encrypt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - -punycode@^1.2.4, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - -qs@6.5.1, qs@~6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" - -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - -querystringify@0.0.x: - version "0.0.4" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" - -querystringify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" - -raf@3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575" - dependencies: - performance-now "^2.1.0" - -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62" - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.0.3, range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -raw-body@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" - dependencies: - bytes "3.0.0" - http-errors "1.6.2" - iconv-lite "0.4.19" - unpipe "1.0.0" - -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: - version "1.2.2" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-dev-utils@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-4.2.1.tgz#9f2763e7bafa1a1b9c52254d2a479deec280f111" - dependencies: - address "1.0.3" - babel-code-frame "6.26.0" - chalk "1.1.3" - cross-spawn "5.1.0" - detect-port-alt "1.1.3" - escape-string-regexp "1.0.5" - filesize "3.5.11" - global-modules "1.0.0" - gzip-size "3.0.0" - inquirer "3.3.0" - is-root "1.0.0" - opn "5.1.0" - react-error-overlay "^3.0.0" - recursive-readdir "2.2.1" - shell-quote "1.6.1" - sockjs-client "1.1.4" - strip-ansi "3.0.1" - text-table "0.2.0" - -react-dom@^15.6.1: - version "15.6.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.2.tgz#41cfadf693b757faf2708443a1d1fd5a02bef730" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "^15.5.10" - -react-dom@^16.0.0: - version "16.4.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.1.tgz#7f8b0223b3a5fbe205116c56deb85de32685dad6" - dependencies: - fbjs "^0.8.16" - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.0" - -react-error-overlay@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-3.0.0.tgz#c2bc8f4d91f1375b3dad6d75265d51cd5eeaf655" - -react-input-autosize@^2.1.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.1.tgz#ec428fa15b1592994fb5f9aa15bb1eb6baf420f8" - dependencies: - prop-types "^15.5.8" - -react-lifecycles-compat@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" - -react-popper@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-0.8.3.tgz#0f73333137c9fb0af6ec4074d2d0585a0a0461e1" - dependencies: - popper.js "^1.12.9" - prop-types "^15.6.0" - -react-redux@^5.0.6: - version "5.0.7" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.7.tgz#0dc1076d9afb4670f993ffaef44b8f8c1155a4c8" - dependencies: - hoist-non-react-statics "^2.5.0" - invariant "^2.0.0" - lodash "^4.17.5" - lodash-es "^4.17.5" - loose-envify "^1.1.0" - prop-types "^15.6.0" - -react-router-dom@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6" - dependencies: - history "^4.7.2" - invariant "^2.2.4" - loose-envify "^1.3.1" - prop-types "^15.6.1" - react-router "^4.3.1" - warning "^4.0.1" - -react-router@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz#aada4aef14c809cb2e686b05cee4742234506c4e" - dependencies: - history "^4.7.2" - hoist-non-react-statics "^2.5.0" - invariant "^2.2.4" - loose-envify "^1.3.1" - path-to-regexp "^1.7.0" - prop-types "^15.6.1" - warning "^4.0.1" - -react-scripts@1.0.17: - version "1.0.17" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-1.0.17.tgz#c30029123b561a060227af4d7797d50a222d3fbf" - dependencies: - autoprefixer "7.1.6" - babel-core "6.26.0" - babel-eslint "7.2.3" - babel-jest "20.0.3" - babel-loader "7.1.2" - babel-preset-react-app "^3.1.0" - babel-runtime "6.26.0" - case-sensitive-paths-webpack-plugin "2.1.1" - chalk "1.1.3" - css-loader "0.28.7" - dotenv "4.0.0" - eslint "4.10.0" - eslint-config-react-app "^2.0.1" - eslint-loader "1.9.0" - eslint-plugin-flowtype "2.39.1" - eslint-plugin-import "2.8.0" - eslint-plugin-jsx-a11y "5.1.1" - eslint-plugin-react "7.4.0" - extract-text-webpack-plugin "3.0.2" - file-loader "1.1.5" - fs-extra "3.0.1" - html-webpack-plugin "2.29.0" - jest "20.0.4" - object-assign "4.1.1" - postcss-flexbugs-fixes "3.2.0" - postcss-loader "2.0.8" - promise "8.0.1" - raf "3.4.0" - react-dev-utils "^4.2.1" - style-loader "0.19.0" - sw-precache-webpack-plugin "0.11.4" - url-loader "0.6.2" - webpack "3.8.1" - webpack-dev-server "2.9.4" - webpack-manifest-plugin "1.3.2" - whatwg-fetch "2.0.3" - optionalDependencies: - fsevents "1.1.2" - -react-select@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-1.2.1.tgz#a2fe58a569eb14dcaa6543816260b97e538120d1" - dependencies: - classnames "^2.2.4" - prop-types "^15.5.8" - react-input-autosize "^2.1.2" - -react-transition-group@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.4.0.tgz#1d9391fabfd82e016f26fabd1eec329dbd922b5a" - dependencies: - dom-helpers "^3.3.1" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-lifecycles-compat "^3.0.4" - -react@^15.6.1: - version "15.6.2" - resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72" - dependencies: - create-react-class "^15.6.0" - fbjs "^0.8.9" - loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "^15.5.10" - -react@^16.0.0: - version "16.4.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.4.1.tgz#de51ba5764b5dbcd1f9079037b862bd26b82fe32" - dependencies: - fbjs "^0.8.16" - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.0" - -reactstrap@^5.0.0-alpha.3: - version "5.0.0" - resolved "https://registry.yarnpkg.com/reactstrap/-/reactstrap-5.0.0.tgz#d8948534df4816eddfb162a51643a499388e9228" - dependencies: - classnames "^2.2.3" - lodash.isfunction "^3.0.9" - lodash.isobject "^3.0.2" - lodash.tonumber "^4.0.3" - prop-types "^15.5.8" - react-popper "^0.8.3" - react-transition-group "^2.2.1" - -read-all-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" - dependencies: - pinkie-promise "^2.0.0" - readable-stream "^2.0.0" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -readable-stream@1.0: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.6, readable-stream@^2.2.9: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - -readable-stream@^2.2.2: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -recursive-readdir@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99" - dependencies: - minimatch "3.0.3" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -reduce-css-calc@^1.2.6: - version "1.3.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - dependencies: - balanced-match "^0.4.2" - math-expression-evaluator "^1.2.14" - reduce-function-call "^1.0.1" - -reduce-function-call@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" - dependencies: - balanced-match "^0.4.2" - -redux-form@^7.1.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/redux-form/-/redux-form-7.4.2.tgz#d6061088fb682eb9fc5fb9749bd8b102f03154b0" - dependencies: - es6-error "^4.1.1" - hoist-non-react-statics "^2.5.4" - invariant "^2.2.4" - is-promise "^2.1.0" - lodash "^4.17.10" - lodash-es "^4.17.10" - prop-types "^15.6.1" - react-lifecycles-compat "^3.0.4" - -redux-pack@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/redux-pack/-/redux-pack-0.1.5.tgz#1973b26ef749dfc020e8a61d54cf3e55ec8ae4cd" - dependencies: - deline "^1.0.4" - invariant "^2.2.2" - uuid "^3.0.1" - -redux-thunk@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" - -redux@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" - dependencies: - lodash "^4.2.1" - lodash-es "^4.2.1" - loose-envify "^1.1.0" - symbol-observable "^1.0.3" - -regenerate@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" - -regenerator-runtime@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - dependencies: - is-equal-shallow "^0.1.3" - -regexpp@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" - -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -registry-auth-token@^3.0.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - dependencies: - rc "^1.0.1" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - -renderkid@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" - dependencies: - css-select "^1.1.0" - dom-converter "~0.1" - htmlparser2 "~3.3.0" - strip-ansi "^3.0.0" - utila "~0.3" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -request@2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -request@2.83.0, request@^2.79.0: - version "2.83.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" - hawk "~6.0.2" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - stringstream "~0.0.5" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -require-uncached@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - -resolve-pathname@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - -resolve@^1.3.2, resolve@^1.3.3: - version "1.5.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" - dependencies: - path-parse "^1.0.5" - -resolve@^1.5.0, resolve@^1.6.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - dependencies: - path-parse "^1.0.5" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" - dependencies: - hash-base "^2.0.0" - inherits "^2.0.1" - -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - dependencies: - is-promise "^2.1.0" - -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - -safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - -sane@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-1.6.0.tgz#9610c452307a135d29c1fdfe2547034180c46775" - dependencies: - anymatch "^1.3.0" - exec-sh "^0.2.0" - fb-watchman "^1.8.0" - minimatch "^3.0.2" - minimist "^1.1.1" - walker "~1.0.5" - watch "~0.10.0" - -sax@^1.2.1, sax@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - -schema-utils@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" - dependencies: - ajv "^5.0.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - -selfsigned@^1.9.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52" - dependencies: - node-forge "0.6.33" - -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - dependencies: - semver "^5.0.3" - -"semver@2 || 3 || 4 || 5", semver@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - -semver@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - -semver@^5.0.3, semver@^5.1.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - -send@0.16.1: - version "0.16.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" - dependencies: - debug "2.6.9" - depd "~1.1.1" - destroy "~1.0.4" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.3.1" - -serve-index@^1.7.2: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719" - dependencies: - encodeurl "~1.0.1" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.1" - -serviceworker-cache-polyfill@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz#de19ee73bef21ab3c0740a37b33db62464babdeb" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -setimmediate@^1.0.4, setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.9" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -shell-quote@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - -shellwords@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - -shortid@^2.2.8: - version "2.2.12" - resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.12.tgz#8e9a95ffbc671fff8f09e985dbc7874102b0cfd2" - dependencies: - nanoid "^1.0.7" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - dependencies: - is-fullwidth-code-point "^2.0.0" - -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -sntp@2.x.x: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" - dependencies: - hoek "4.x.x" - -sockjs-client@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" - dependencies: - debug "^2.6.6" - eventsource "0.1.6" - faye-websocket "~0.11.0" - inherits "^2.0.1" - json3 "^3.3.2" - url-parse "^1.1.8" - -sockjs@0.3.18: - version "0.3.18" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" - dependencies: - faye-websocket "^0.10.0" - uuid "^2.0.2" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" - -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - dependencies: - source-map "^0.5.6" - -source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -source-map@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -spdx-correct@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" - -spdy-transport@^2.0.18: - version "2.0.20" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d" - dependencies: - debug "^2.6.8" - detect-node "^2.0.3" - hpack.js "^2.1.6" - obuf "^1.1.1" - readable-stream "^2.2.9" - safe-buffer "^5.0.1" - wbuf "^1.7.2" - -spdy@^3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" - dependencies: - debug "^2.6.8" - handle-thing "^1.2.5" - http-deceiver "^1.2.7" - safe-buffer "^5.0.1" - select-hose "^2.0.0" - spdy-transport "^2.0.18" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -sshpk@^1.7.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -"statuses@>= 1.3.1 < 2": - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - -statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - -stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-http@^2.3.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.2.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - -string-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" - dependencies: - strip-ansi "^3.0.0" - -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@^0.10.25, string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" - dependencies: - safe-buffer "~5.1.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - dependencies: - safe-buffer "~5.1.0" - -stringstream@~0.0.4, stringstream@~0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - -strip-ansi@3.0.1, strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - -strip-bom@3.0.0, strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -style-loader@0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.0.tgz#7258e788f0fee6a42d710eaf7d6c2412a4c50759" - dependencies: - loader-utils "^1.0.2" - schema-utils "^0.3.0" - -styled-components@^2.2.3: - version "2.4.1" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-2.4.1.tgz#663bd0485d4b6ab46f946210dc03d2398d1ade74" - dependencies: - buffer "^5.0.3" - css-to-react-native "^2.0.3" - fbjs "^0.8.9" - hoist-non-react-statics "^1.2.0" - is-plain-object "^2.0.1" - prop-types "^15.5.4" - stylis "^3.4.0" - supports-color "^3.2.3" - -stylis@^3.4.0: - version "3.5.3" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.3.tgz#99fdc46afba6af4deff570825994181a5e6ce546" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^3.1.2, supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - dependencies: - has-flag "^2.0.0" - -supports-color@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - dependencies: - has-flag "^3.0.0" - -svgo@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - dependencies: - coa "~1.0.1" - colors "~1.1.2" - csso "~2.3.1" - js-yaml "~3.7.0" - mkdirp "~0.5.1" - sax "~1.2.1" - whet.extend "~0.9.9" - -sw-precache-webpack-plugin@0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/sw-precache-webpack-plugin/-/sw-precache-webpack-plugin-0.11.4.tgz#a695017e54eed575551493a519dc1da8da2dc5e0" - dependencies: - del "^2.2.2" - sw-precache "^5.1.1" - uglify-js "^3.0.13" - -sw-precache@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/sw-precache/-/sw-precache-5.2.0.tgz#eb6225ce580ceaae148194578a0ad01ab7ea199c" - dependencies: - dom-urls "^1.1.0" - es6-promise "^4.0.5" - glob "^7.1.1" - lodash.defaults "^4.2.0" - lodash.template "^4.4.0" - meow "^3.7.0" - mkdirp "^0.5.1" - pretty-bytes "^4.0.2" - sw-toolbox "^3.4.0" - update-notifier "^1.0.3" - -sw-toolbox@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/sw-toolbox/-/sw-toolbox-3.6.0.tgz#26df1d1c70348658e4dea2884319149b7b3183b5" - dependencies: - path-to-regexp "^1.0.1" - serviceworker-cache-polyfill "^4.0.0" - -symbol-observable@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" - -symbol-tree@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - -table@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" - dependencies: - ajv "^5.2.3" - ajv-keywords "^2.1.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" - -table@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" - dependencies: - ajv "^6.0.1" - ajv-keywords "^3.0.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" - -tapable@^0.2.7: - version "0.2.8" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" - -tar-pack@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -test-exclude@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" - dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - -text-table@0.2.0, text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -throat@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-3.2.0.tgz#50cb0670edbc40237b9e347d7e1f88e4620af836" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -thunky@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e" - -time-stamp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" - -timed-out@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" - -timers-browserify@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" - dependencies: - setimmediate "^1.0.4" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -toposort@^1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec" - -tough-cookie@^2.3.2, tough-cookie@~2.3.0, tough-cookie@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" - dependencies: - punycode "^1.4.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -tslib@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -type-is@~1.6.15: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.15" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -ua-parser-js@^0.7.18: - version "0.7.18" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.18.tgz#a7bfd92f56edfb117083b69e31d2aa8882d4b1ed" - -uglify-js@3.1.x, uglify-js@^3.0.13: - version "3.1.8" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.8.tgz#780d08b4f6782fe36ea5484d952362eddaf1d7b8" - dependencies: - commander "~2.11.0" - source-map "~0.6.1" - -uglify-js@^2.6, uglify-js@^2.8.29: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -uglifyjs-webpack-plugin@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" - dependencies: - source-map "^0.5.6" - uglify-js "^2.8.29" - webpack-sources "^1.0.1" - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - -uniqid@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" - dependencies: - macaddress "^0.2.8" - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - -universalify@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -unzip-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" - -update-notifier@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" - dependencies: - boxen "^0.6.0" - chalk "^1.0.0" - configstore "^2.0.0" - is-npm "^1.0.0" - latest-version "^2.0.0" - lazy-req "^1.1.0" - semver-diff "^2.0.0" - xdg-basedir "^2.0.0" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - -uri-js@^4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - dependencies: - punycode "^2.1.0" - -urijs@^1.16.1: - version "1.19.0" - resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.0.tgz#d8aa284d0e7469703a6988ad045c4cbfdf08ada0" - -url-loader@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.6.2.tgz#a007a7109620e9d988d14bce677a1decb9a993f7" - dependencies: - loader-utils "^1.0.2" - mime "^1.4.1" - schema-utils "^0.3.0" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" - -url-parse@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" - dependencies: - querystringify "0.0.x" - requires-port "1.0.x" - -url-parse@^1.1.8: - version "1.2.0" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986" - dependencies: - querystringify "~1.0.0" - requires-port "~1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -util@0.10.3, util@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - dependencies: - inherits "2.0.1" - -utila@~0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - -uuid@^2.0.1, uuid@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - -uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" - -validate-npm-package-license@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validator@^9.1.2: - version "9.4.1" - resolved "https://registry.yarnpkg.com/validator/-/validator-9.4.1.tgz#abf466d398b561cd243050112c6ff1de6cc12663" - -value-equal@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - -vendors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - dependencies: - indexof "0.0.1" - -walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - dependencies: - makeerror "1.0.x" - -warning@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" - dependencies: - loose-envify "^1.0.0" - -warning@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.1.tgz#66ce376b7fbfe8a887c22bdf0e7349d73d397745" - dependencies: - loose-envify "^1.0.0" - -watch@~0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" - -watchpack@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" - dependencies: - async "^2.1.2" - chokidar "^1.7.0" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" - dependencies: - minimalistic-assert "^1.0.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - -webidl-conversions@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - -webpack-dev-middleware@^1.11.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" - dependencies: - memory-fs "~0.4.1" - mime "^1.3.4" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - time-stamp "^2.0.0" - -webpack-dev-server@2.9.4: - version "2.9.4" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.9.4.tgz#7883e61759c6a4b33e9b19ec4037bd4ab61428d1" - dependencies: - ansi-html "0.0.7" - array-includes "^3.0.3" - bonjour "^3.5.0" - chokidar "^1.6.0" - compression "^1.5.2" - connect-history-api-fallback "^1.3.0" - debug "^3.1.0" - del "^3.0.0" - express "^4.13.3" - html-entities "^1.2.0" - http-proxy-middleware "~0.17.4" - import-local "^0.1.1" - internal-ip "1.2.0" - ip "^1.1.5" - killable "^1.0.0" - loglevel "^1.4.1" - opn "^5.1.0" - portfinder "^1.0.9" - selfsigned "^1.9.1" - serve-index "^1.7.2" - sockjs "0.3.18" - sockjs-client "1.1.4" - spdy "^3.4.1" - strip-ansi "^3.0.1" - supports-color "^4.2.1" - webpack-dev-middleware "^1.11.0" - yargs "^6.6.0" - -webpack-manifest-plugin@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz#5ea8ee5756359ddc1d98814324fe43496349a7d4" - dependencies: - fs-extra "^0.30.0" - lodash ">=3.5 <5" - -webpack-sources@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.2.tgz#d0148ec083b3b5ccef1035a6b3ec16442983b27a" - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.8.1.tgz#b16968a81100abe61608b0153c9159ef8bb2bd83" - dependencies: - acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^5.1.5" - ajv-keywords "^2.0.0" - async "^2.1.2" - enhanced-resolve "^3.4.0" - escope "^3.6.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - mkdirp "~0.5.0" - node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^4.2.1" - tapable "^0.2.7" - uglifyjs-webpack-plugin "^0.4.6" - watchpack "^1.4.0" - webpack-sources "^1.0.1" - yargs "^8.0.2" - -websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - dependencies: - http-parser-js ">=0.4.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.2.tgz#0e18781de629a18308ce1481650f67ffa2693a5d" - -whatwg-encoding@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3" - dependencies: - iconv-lite "0.4.19" - -whatwg-fetch@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" - -whatwg-fetch@2.0.4, whatwg-fetch@>=0.10.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" - -whatwg-url@^4.3.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0" - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whet.extend@~0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - -which@^1.2.12, which@^1.2.14: - version "1.3.0" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" - dependencies: - isexe "^2.0.0" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" - dependencies: - string-width "^1.0.2" - -widest-line@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" - dependencies: - string-width "^1.0.1" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -worker-farm@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.1.tgz#8e9f4a7da4f3c595aa600903051b969390423fa1" - dependencies: - errno "^0.1.4" - xtend "^4.0.1" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -write-file-atomic@^1.1.2: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - dependencies: - mkdirp "^0.5.1" - -xdg-basedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" - dependencies: - os-homedir "^1.0.0" - -xml-char-classes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" - -xml-name-validator@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" - -xmlhttprequest@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - -xtend@^4.0.0, xtend@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -y18n@^3.2.0, y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" - dependencies: - camelcase "^3.0.0" - -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - dependencies: - camelcase "^3.0.0" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - dependencies: - camelcase "^4.1.0" - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" - -yargs@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" - -yargs@^7.0.2: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - -yargs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0"
- {likeCount} Likes -
New to Projectwise? Signup
{description}
{helpDescription}
Already have an account? Login