oauth login using api redirects (#76)
* login with api redirect * fix scss imports * login button styles * keep original path after login * no /cabana base path * small redirect fix * upgrade packages * use github actions for building * CI sass * fix warnings * fix build testmain
parent
9247ce8bbe
commit
bb17a1a7d3
|
@ -0,0 +1,3 @@
|
|||
node_modules/
|
||||
coverage/
|
||||
build/
|
|
@ -0,0 +1,70 @@
|
|||
name: build
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: cache node modules
|
||||
uses: actions/cache@v2
|
||||
id: yarn-cache
|
||||
with:
|
||||
path: node_modules
|
||||
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-yarn-
|
||||
- name: yarn install
|
||||
if: steps.yarn-cache.outputs.cache-hit != 'true'
|
||||
run: yarn install
|
||||
- name: yarn netlify-sass
|
||||
run: yarn netlify-sass
|
||||
- name: yarn build
|
||||
run: yarn build
|
||||
- name: run tests
|
||||
run: yarn test-ci
|
||||
- name: run puppeteer tests
|
||||
run: yarn test-puppeteer-build
|
||||
docker:
|
||||
runs-on: ubuntu-20.04
|
||||
needs: test
|
||||
permissions:
|
||||
packages: write
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
- name: Cache Docker layers
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-buildx-
|
||||
- name: login to container registry
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: get tags
|
||||
shell: bash
|
||||
run: echo "##[set-output name=tags;]ghcr.io/commaai/cabana:$(echo ${GITHUB_REF#refs/heads/})$(if [ ${GITHUB_REF} = refs/heads/master ] ; then echo ,ghcr.io/commaai/cabana:latest; fi;)"
|
||||
id: extract_tags
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
build-args: SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.extract_tags.outputs.tags }}
|
||||
cache-from: type=local,src=/tmp/.buildx-cache
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache-new
|
||||
- name: Move cache
|
||||
run: |
|
||||
rm -rf /tmp/.buildx-cache
|
||||
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
25
.travis.yml
25
.travis.yml
|
@ -1,25 +0,0 @@
|
|||
language: node_js
|
||||
sudo: required
|
||||
|
||||
# install azure-cli 2.0, which is the preferred version. Switch to use this
|
||||
# after azure accounts are handled.
|
||||
before_install:
|
||||
- echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ wheezy main" | sudo tee /etc/apt/sources.list.d/azure-cli.list
|
||||
- sudo apt-key adv --keyserver packages.microsoft.com --recv-keys 52E16F86FEE04B979B07E28DB02C46DF417A0893
|
||||
- sudo apt-get install apt-transport-https
|
||||
- sudo apt-get update && sudo apt-get install azure-cli libudev-dev --allow-unauthenticated
|
||||
# - yarn global add azure-cli@0.10.x
|
||||
|
||||
before_script: yarn netlify-sass
|
||||
|
||||
script:
|
||||
- yarn test
|
||||
- yarn build
|
||||
|
||||
deploy:
|
||||
provider: script
|
||||
script: scripts/travis-deploy.sh
|
||||
skip_cleanup: true
|
||||
on:
|
||||
branch: master
|
||||
tags: true
|
|
@ -0,0 +1,22 @@
|
|||
FROM node:10.24-buster
|
||||
|
||||
RUN apt-get update && apt-get install -y libusb-dev libudev-dev && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json yarn.lock /app/
|
||||
RUN yarn install --frozen-lockfile
|
||||
|
||||
COPY . /app/
|
||||
ARG SENTRY_AUTH_TOKEN
|
||||
RUN yarn netlify-sass
|
||||
RUN yarn build
|
||||
|
||||
|
||||
FROM nginx:1.21
|
||||
|
||||
COPY config.js.template /etc/nginx/templates/config.js.template
|
||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||
COPY --from=0 /app/build /usr/share/nginx/html
|
||||
|
||||
ENV NGINX_ENVSUBST_OUTPUT_DIR /usr/share/nginx/html
|
|
@ -1,6 +1,6 @@
|
|||
# Cabana
|
||||
|
||||
<img src="https://my.comma.ai/cabana/img/cabana.jpg" width="640" height="267" />
|
||||
<img src="https://cabana.comma.ai/img/cabana.jpg" width="640" height="267" />
|
||||
|
||||
## Setup
|
||||
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
|
||||
trigger:
|
||||
- master
|
||||
|
||||
pr:
|
||||
- master
|
||||
|
||||
pool:
|
||||
vmImage: 'ubuntu-latest'
|
||||
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '10.x'
|
||||
displayName: 'Install Node.js'
|
||||
|
||||
- script: |
|
||||
npm install yarn
|
||||
yarn
|
||||
yarn run test-ci
|
||||
displayName: 'yarn test'
|
|
@ -0,0 +1,4 @@
|
|||
window.COMMA_URL_ROOT = '${COMMA_URL_ROOT}';
|
||||
window.ATHENA_URL_ROOT = '${ATHENA_URL_ROOT}';
|
||||
window.USERADMIN_URL_ROOT = '${USERADMIN_URL_ROOT}';
|
||||
window.SENTRY_ENV = '${SENTRY_ENV}';
|
|
@ -8,7 +8,7 @@ module.exports = function ({ env }) {
|
|||
plugin: WorkerLoaderPlugin
|
||||
}
|
||||
];
|
||||
if (env === 'production') {
|
||||
if (process.env.NODE_ENV === 'production' && process.env.SENTRY_AUTH_TOKEN) {
|
||||
plugins.push({
|
||||
plugin: SentryPlugin
|
||||
});
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name localhost;
|
||||
|
||||
root /usr/share/nginx/html;
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
|
||||
error_page 404 /404.html;
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
}
|
12
package.json
12
package.json
|
@ -2,12 +2,12 @@
|
|||
"name": "can-explorer",
|
||||
"version": "0.4.2",
|
||||
"private": true,
|
||||
"homepage": "https://community.comma.ai/cabana",
|
||||
"homepage": "https://cabana.comma.ai/",
|
||||
"dependencies": {
|
||||
"@commaai/comma-api": "^1.7.0",
|
||||
"@commaai/comma-api": "^2.1.2",
|
||||
"@commaai/hls.js": "^0.12.7",
|
||||
"@commaai/log_reader": "^0.5.5",
|
||||
"@commaai/my-comma-auth": "^1.3.0",
|
||||
"@commaai/my-comma-auth": "^1.4.1",
|
||||
"@commaai/pandajs": "^0.3.4",
|
||||
"@craco/craco": "^5.5.0",
|
||||
"ap": "^0.2.0",
|
||||
|
@ -42,6 +42,7 @@
|
|||
"node-sass": "^4.12.0",
|
||||
"prettier": "^1.9.2",
|
||||
"prop-types": "^15.5.10",
|
||||
"query-string": "^5.0.1",
|
||||
"randomcolor": "^0.5.4",
|
||||
"raven-js": "^3.16.0",
|
||||
"react": "^16.2.0",
|
||||
|
@ -62,7 +63,6 @@
|
|||
"thyming": "^0.1.1",
|
||||
"vega": "^5.3.4",
|
||||
"vega-lite": "^3.0.0",
|
||||
"query-string": "^5.0.1",
|
||||
"vega-tooltip": "^0.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -78,11 +78,11 @@
|
|||
"detect-port": "1.1.0",
|
||||
"dotenv": "2.0.0",
|
||||
"env-cmd": "^8.0.2",
|
||||
"expect-puppeteer": "^5.0.4",
|
||||
"gh-pages": "^2.1.1",
|
||||
"http-proxy-middleware": "0.17.3",
|
||||
"json-loader": "0.5.4",
|
||||
"expect-puppeteer": "^5.0.4",
|
||||
"jest-puppeteer": "^5.0.4",
|
||||
"json-loader": "0.5.4",
|
||||
"puppeteer": "^9.1.0",
|
||||
"rimraf": "^3.0.0",
|
||||
"serve-handler": "^6.1.2",
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Single Page Apps for GitHub Pages</title>
|
||||
<script type="text/javascript">
|
||||
// Single Page Apps for GitHub Pages
|
||||
// https://github.com/rafrex/spa-github-pages
|
||||
// Copyright (c) 2016 Rafael Pedicini, licensed under the MIT License
|
||||
// ----------------------------------------------------------------------
|
||||
// This script takes the current url and converts the path and query
|
||||
// string into just a query string, and then redirects the browser
|
||||
// to the new url with only a query string and hash fragment,
|
||||
// e.g. http://www.foo.tld/one/two?a=b&c=d#qwe, becomes
|
||||
// http://www.foo.tld/?p=/one/two&q=a=b~and~c=d#qwe
|
||||
// Note: this 404.html file must be at least 512 bytes for it to work
|
||||
// with Internet Explorer (it is currently > 512 bytes)
|
||||
|
||||
// If you're creating a Project Pages site and NOT using a custom domain,
|
||||
// then set segmentCount to 1 (enterprise users may need to set it to > 1).
|
||||
// This way the code will only replace the route part of the path, and not
|
||||
// the real directory in which the app resides, for example:
|
||||
// https://username.github.io/repo-name/one/two?a=b&c=d#qwe becomes
|
||||
// https://username.github.io/repo-name/?p=/one/two&q=a=b~and~c=d#qwe
|
||||
// Otherwise, leave segmentCount as 0.
|
||||
var segmentCount = 1;
|
||||
|
||||
var l = window.location;
|
||||
l.replace(
|
||||
l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') +
|
||||
l.pathname.split('/').slice(0, 1 + segmentCount).join('/') + '/?p=/' +
|
||||
l.pathname.slice(1).split('/').slice(segmentCount).join('/').replace(/&/g, '~and~') +
|
||||
(l.search ? '&q=' + l.search.slice(1).replace(/&/g, '~and~') : '') +
|
||||
l.hash
|
||||
);
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
|
@ -1,6 +0,0 @@
|
|||
/ /index.html 200
|
||||
|
||||
/cabana/:slug /:slug 200
|
||||
/cabana/* /:splat 200
|
||||
/cabana/:a/:b /:a/:b 200
|
||||
/cabana/:a/:b/:c /:a/:b/:c 200
|
|
@ -0,0 +1,3 @@
|
|||
window.COMMA_URL_ROOT = 'https://api.comma.ai/';
|
||||
window.ATHENA_URL_ROOT = 'https://athena.comma.ai/';
|
||||
window.USERADMIN_URL_ROOT = 'https://useradmin.comma.ai/';
|
|
@ -17,50 +17,9 @@
|
|||
manifest.json provides metadata used when your web app is added to the
|
||||
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
|
||||
-->
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
|
||||
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
|
||||
<!--
|
||||
Notice the use of %PUBLIC_URL% in the tags above.
|
||||
It will be replaced with the URL of the `public` folder during the build.
|
||||
Only files inside the `public` folder can be referenced from the HTML.
|
||||
|
||||
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
|
||||
work correctly both with client-side routing and a non-root public URL.
|
||||
Learn how to configure a non-root public URL by running `npm run build`.
|
||||
-->
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<link rel="shortcut icon" href="/favicon.ico">
|
||||
<title>comma.ai cabana</title>
|
||||
|
||||
<!-- Start Single Page Apps for GitHub Pages -->
|
||||
<script type="text/javascript">
|
||||
// Single Page Apps for GitHub Pages
|
||||
// https://github.com/rafrex/spa-github-pages
|
||||
// Copyright (c) 2016 Rafael Pedicini, licensed under the MIT License
|
||||
// ----------------------------------------------------------------------
|
||||
// This script checks to see if a redirect is present in the query string
|
||||
// and converts it back into the correct url and adds it to the
|
||||
// browser's history using window.history.replaceState(...),
|
||||
// which won't cause the browser to attempt to load the new url.
|
||||
// When the single page app is loaded further down in this file,
|
||||
// the correct url will be waiting in the browser's history for
|
||||
// the single page app to route accordingly.
|
||||
(function(l) {
|
||||
if (l.search) {
|
||||
var q = {};
|
||||
l.search.slice(1).split('&').forEach(function(v) {
|
||||
var a = v.split('=');
|
||||
q[a[0]] = a.slice(1).join('=').replace(/~and~/g, '&');
|
||||
});
|
||||
if (q.p !== undefined) {
|
||||
window.history.replaceState(null, null,
|
||||
l.pathname.slice(0, -1) + (q.p || '') +
|
||||
(q.q ? ('?' + q.q) : '') +
|
||||
l.hash
|
||||
);
|
||||
}
|
||||
}
|
||||
}(window.location))
|
||||
</script>
|
||||
<!-- End Single Page Apps for GitHub Pages -->
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
|
|
|
@ -4,14 +4,10 @@ const http = require('http');
|
|||
const server = http.createServer((request, response) => {
|
||||
// You pass two more arguments for config and middleware
|
||||
// More details here: https://github.com/zeit/serve-handler#options
|
||||
|
||||
request.url = request.url.replace('/cabana', '');
|
||||
|
||||
handler(request, response, {
|
||||
public: 'build',
|
||||
redirects: [
|
||||
{ source: 'cabana/:page', destination: '/:page' },
|
||||
{ source: 'cabana/', destination: '/index.js' },
|
||||
rewrites: [
|
||||
{ source: '/', destination: '/index.html' },
|
||||
]
|
||||
});
|
||||
});
|
||||
|
|
|
@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
|
|||
import cx from 'classnames';
|
||||
import { createWriteStream } from 'streamsaver';
|
||||
import Panda from '@commaai/pandajs';
|
||||
import CommaAuth, { storage as CommaAuthStorage } from '@commaai/my-comma-auth';
|
||||
import CommaAuth, { storage as CommaAuthStorage, config as AuthConfig } from '@commaai/my-comma-auth';
|
||||
import { raw as RawDataApi, drives as DrivesApi } from '@commaai/comma-api';
|
||||
import { timeout, interval } from 'thyming';
|
||||
import {
|
||||
|
@ -31,7 +31,6 @@ import {
|
|||
} from './api/localstorage';
|
||||
import OpenDbc from './api/OpenDbc';
|
||||
import UnloggerClient from './api/unlogger';
|
||||
import * as ObjectUtils from './utils/object';
|
||||
import { hash } from './utils/string';
|
||||
import { modifyQueryParameters } from './utils/url';
|
||||
import DbcUtils from './utils/dbc';
|
||||
|
@ -255,8 +254,6 @@ export default class CanExplorer extends Component {
|
|||
}
|
||||
|
||||
initCanData() {
|
||||
const { route } = this.state;
|
||||
|
||||
this.spawnWorker(this.state.currentParts);
|
||||
}
|
||||
|
||||
|
@ -398,22 +395,6 @@ export default class CanExplorer extends Component {
|
|||
cancelWorker(workerHash) {
|
||||
// actually don't...
|
||||
return;
|
||||
const currentWorkers = { ...this.state.currentWorkers };
|
||||
const { worker, part } = currentWorkers[workerHash];
|
||||
const loadingParts = this.state.loadingParts.filter((p) => p !== part);
|
||||
const loadedParts = this.state.loadedParts.filter((p) => p !== part);
|
||||
delete currentWorkers[workerHash];
|
||||
|
||||
console.log('Stoping worker', workerHash, 'for part', part);
|
||||
worker.postMessage({
|
||||
action: 'terminate'
|
||||
});
|
||||
|
||||
this.setState({
|
||||
currentWorkers,
|
||||
loadingParts,
|
||||
loadedParts
|
||||
});
|
||||
}
|
||||
|
||||
spawnWorker(options) {
|
||||
|
@ -459,7 +440,6 @@ export default class CanExplorer extends Component {
|
|||
|
||||
const {
|
||||
dbc,
|
||||
dbcFilename,
|
||||
route,
|
||||
firstCanTime,
|
||||
canFrameOffset
|
||||
|
@ -946,6 +926,11 @@ export default class CanExplorer extends Component {
|
|||
}
|
||||
|
||||
showOnboarding() {
|
||||
if (!CommaAuth.isAuthenticated() && window.sessionStorage && window.location &&
|
||||
window.location.pathname !== AuthConfig.AUTH_PATH)
|
||||
{
|
||||
window.sessionStorage.setItem('onboardingPath', window.location.href);
|
||||
}
|
||||
this.setState({ showOnboarding: true });
|
||||
}
|
||||
|
||||
|
@ -1021,7 +1006,6 @@ export default class CanExplorer extends Component {
|
|||
if (minPart === 0) {
|
||||
maxPart = Math.min(route.proclog, 2);
|
||||
}
|
||||
const currentPartSpan = currentParts[1] - currentParts[0] + 1;
|
||||
|
||||
// update current parts
|
||||
currentParts = [minPart, maxPart];
|
||||
|
@ -1314,7 +1298,7 @@ export default class CanExplorer extends Component {
|
|||
<LoadingBar isLoading={this.state.isLoading} />
|
||||
) : null}
|
||||
<div className="cabana-header">
|
||||
<a className="cabana-header-logo" href="">
|
||||
<a className="cabana-header-logo" href="/">
|
||||
Comma Cabana
|
||||
</a>
|
||||
<div className="cabana-header-account">
|
||||
|
|
|
@ -126,7 +126,7 @@ export default class CanGraph extends Component {
|
|||
return;
|
||||
}
|
||||
|
||||
let bounds = null;
|
||||
let bounds = null; // eslint-disable-line no-unused-vars
|
||||
if (options && options.bounds) {
|
||||
this.setState({ bounds: options.bounds });
|
||||
bounds = options.bounds;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
*/
|
||||
|
||||
@import "../../styles/_global/all";
|
||||
@import "../../styles/_global/all.scss";
|
||||
|
||||
.cabana-dbc-list {
|
||||
&-header {
|
||||
|
|
|
@ -165,15 +165,6 @@ export default class Explorer extends Component {
|
|||
nextMessage
|
||||
);
|
||||
|
||||
const nextSeekMsgEntry = nextMessage.entries[nextProps.seekIndex];
|
||||
let nextSeekTime;
|
||||
if (nextSeekMsgEntry) {
|
||||
nextSeekTime = nextSeekMsgEntry.relTime;
|
||||
} else if (segment.length === 2) {
|
||||
nextSeekTime = segment[0];
|
||||
} else {
|
||||
nextSeekTime = nextMessage.entries[0];
|
||||
}
|
||||
// console.log('componentWillReceiveProps', this.state.userSeekTime, '->', nextSeekTime);
|
||||
this.setState({
|
||||
segment,
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
*/
|
||||
|
||||
@import "../../styles/_global/all";
|
||||
@import "../../styles/_global/all.scss";
|
||||
|
||||
#cabana {
|
||||
display: flex;
|
||||
|
|
|
@ -57,7 +57,7 @@ export default class GithubDbcList extends Component {
|
|||
return (
|
||||
<div className="cabana-dbc-list">
|
||||
<div className="cabana-dbc-list-header">
|
||||
<a href={`https://github.com/${this.props.repo}`} target="_blank">
|
||||
<a href={`https://github.com/${this.props.repo}`} target="_blank" rel="noopener noreferrer">
|
||||
<i className="fa fa-github" />
|
||||
<span>{this.props.repo}</span>
|
||||
</a>
|
||||
|
|
|
@ -55,7 +55,7 @@ export default class LoadDbcModal extends Component {
|
|||
return (
|
||||
<div className="cabana-tabs-navigation">
|
||||
{this.state.tabs.map((tab) => (
|
||||
<a
|
||||
<button
|
||||
className={cx({ 'is-active': this.state.tab === tab })}
|
||||
onClick={() => {
|
||||
this.setState({ tab });
|
||||
|
@ -63,7 +63,7 @@ export default class LoadDbcModal extends Component {
|
|||
key={tab}
|
||||
>
|
||||
<span>{tab}</span>
|
||||
</a>
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
*/
|
||||
|
||||
@import "../../styles/_global/all";
|
||||
@import "../../styles/_global/all.scss";
|
||||
|
||||
.cabana-meta {
|
||||
background: $color-grey-20;
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
import React, { Component } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import Moment from 'moment';
|
||||
import _ from 'lodash';
|
||||
import cx from 'classnames';
|
||||
import qs from 'query-string';
|
||||
import CommaAuth, { config as AuthConfig } from '@commaai/my-comma-auth';
|
||||
|
@ -34,6 +32,26 @@ export default class OnboardingModal extends Component {
|
|||
this.navigateToExplorer = this.navigateToExplorer.bind(this);
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
const script = document.createElement("script");
|
||||
document.body.appendChild(script);
|
||||
script.onload = () => {
|
||||
window.AppleID.auth.init({
|
||||
clientId : AuthConfig.APPLE_CLIENT_ID,
|
||||
scope : AuthConfig.APPLE_SCOPES,
|
||||
redirectURI : AuthConfig.APPLE_REDIRECT_URI,
|
||||
state : AuthConfig.APPLE_STATE,
|
||||
});
|
||||
};
|
||||
script.src = "https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js";
|
||||
script.async = true;
|
||||
document.addEventListener('AppleIDSignInOnSuccess', (data) => {
|
||||
const { code, state } = data.detail.authorization;
|
||||
window.location = [AuthConfig.APPLE_REDIRECT_PATH, qs.stringify({ code, state })].join('?');
|
||||
});
|
||||
document.addEventListener('AppleIDSignInOnFailure', console.log);
|
||||
}
|
||||
|
||||
attemptPandaConnection() {
|
||||
if (!this.state.webUsbEnabled) {
|
||||
return;
|
||||
|
@ -62,9 +80,9 @@ export default class OnboardingModal extends Component {
|
|||
return (
|
||||
<p>
|
||||
<i className="fa fa-exclamation-triangle" />
|
||||
<a onClick={this.toggleUsbInstructions}>
|
||||
<span onClick={this.toggleUsbInstructions}>
|
||||
<span>WebUSB is not enabled in your Chrome settings</span>
|
||||
</a>
|
||||
</span>
|
||||
</p>
|
||||
);
|
||||
}
|
||||
|
@ -85,24 +103,25 @@ export default class OnboardingModal extends Component {
|
|||
return (
|
||||
<button onClick={this.navigateToExplorer} className="button--primary button--kiosk">
|
||||
<i className="fa fa-video-camera" />
|
||||
<strong>Find a drive in Explorer</strong>
|
||||
<sup>Click "View CAN Data" while replaying a drive</sup>
|
||||
<strong>Find a drive in connect</strong>
|
||||
<sup>Click "View in cabana" while replaying a drive</sup>
|
||||
</button>
|
||||
);
|
||||
} else {
|
||||
let redirectOrigin = 'http://127.0.0.1';
|
||||
if (document.location) {
|
||||
redirectOrigin = document.location.origin;
|
||||
}
|
||||
const params = AuthConfig.GOOGLE_OAUTH_PARAMS;
|
||||
params.redirect_uri = redirectOrigin + '/cabana' + AuthConfig.GOOGLE_REDIRECT_PATH;
|
||||
const redirectLink = [AuthConfig.GOOGLE_AUTH_ENDPOINT, qs.stringify(params)].join('?')
|
||||
return (
|
||||
<a href={ redirectLink } className="button button--primary button--kiosk">
|
||||
return <>
|
||||
<a href={ AuthConfig.GOOGLE_REDIRECT_LINK } className="button button--primary button--icon">
|
||||
<i className="fa fa-google" />
|
||||
<strong>Sign in with Google</strong>
|
||||
</a>
|
||||
);
|
||||
<button onClick={ () => window.AppleID.auth.signIn() } className="button button--primary button--icon">
|
||||
<i className="fa fa-apple" />
|
||||
<strong>Sign in with Apple</strong>
|
||||
</button>
|
||||
<a href={ AuthConfig.GITHUB_REDIRECT_LINK } className="button button--primary button--icon">
|
||||
<i className="fa fa-github" />
|
||||
<strong>Sign in with GitHub</strong>
|
||||
</a>
|
||||
</>;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -232,7 +251,7 @@ export default class OnboardingModal extends Component {
|
|||
return (
|
||||
<Modal
|
||||
title="Welcome to Cabana"
|
||||
subtitle="Get started by selecting a drive from Explorer or enabling live mode"
|
||||
subtitle="Get started by selecting a drive from connect or enabling live mode"
|
||||
footer={this.renderModalFooter()}
|
||||
disableClose
|
||||
variations={['wide', 'dark']}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
*/
|
||||
|
||||
@import "../../styles/_global/all";
|
||||
@import "../../styles/_global/all.scss";
|
||||
|
||||
$cabana-modal-padding--wide: 76px;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Onboarding Modal Styles
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@import "../../styles/_global/all";
|
||||
@import "../../styles/_global/all.scss";
|
||||
|
||||
.cabana-onboarding-mode-chffr {
|
||||
background: darken($color-grey-10, 2%);
|
||||
|
|
|
@ -163,12 +163,11 @@ export default class RouteSeeker extends Component {
|
|||
}
|
||||
|
||||
let { videoLength, startTime } = this.props;
|
||||
let { currentTime, duration } = videoElement;
|
||||
let { currentTime } = videoElement;
|
||||
|
||||
currentTime = roundTime(currentTime);
|
||||
startTime = roundTime(startTime);
|
||||
videoLength = roundTime(videoLength);
|
||||
duration = roundTime(duration);
|
||||
|
||||
let newRatio = (currentTime - startTime) / videoLength;
|
||||
|
||||
|
|
|
@ -196,7 +196,6 @@ export default class RouteVideoSync extends Component {
|
|||
} = this.state;
|
||||
const {
|
||||
userSeekTime,
|
||||
url,
|
||||
playSpeed,
|
||||
playing,
|
||||
onVideoClick,
|
||||
|
|
|
@ -161,7 +161,7 @@ export default class SaveDbcModal extends Component {
|
|||
return (
|
||||
<div className="cabana-tabs-navigation">
|
||||
{this.state.tabs.map((tab) => (
|
||||
<a
|
||||
<button
|
||||
className={cx({ 'is-active': this.state.tab === tab })}
|
||||
onClick={() => {
|
||||
this.setState({ tab });
|
||||
|
@ -169,7 +169,7 @@ export default class SaveDbcModal extends Component {
|
|||
key={tab}
|
||||
>
|
||||
<span>{tab}</span>
|
||||
</a>
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
*/
|
||||
|
||||
@import "../../styles/_global/all";
|
||||
@import "../../styles/_global/all.scss";
|
||||
|
||||
.cabana-explorer-signals-legend {
|
||||
background: $color-grey-10;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
*/
|
||||
|
||||
@import "../../styles/_global/all";
|
||||
@import "../../styles/_global/all.scss";
|
||||
|
||||
.signals-log-list {
|
||||
color: $color-grey-80;
|
||||
|
|
|
@ -5,17 +5,20 @@
|
|||
|
||||
*/
|
||||
|
||||
@import "../../styles/_global/all";
|
||||
@import "../../styles/_global/all.scss";
|
||||
|
||||
.cabana-tabs-navigation {
|
||||
border-top: 1px solid $color-grey-20;
|
||||
border-bottom: 1px solid $color-grey-50;
|
||||
padding: 0 3%;
|
||||
a {
|
||||
button {
|
||||
border: none;
|
||||
border-bottom: 3px solid transparent;
|
||||
color: $color-grey-60;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
line-height: unset;
|
||||
background-color: transparent;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
padding: 11px 16px;
|
||||
|
|
|
@ -6,27 +6,27 @@
|
|||
*/
|
||||
|
||||
// Globals
|
||||
@import "./styles/base/base";
|
||||
@import "./styles/base/grid";
|
||||
@import "./styles/base/forms";
|
||||
@import "./styles/base/lists";
|
||||
@import "./styles/base/typography";
|
||||
@import "./styles/base/utils";
|
||||
@import "./styles/base/animations";
|
||||
@import "./styles/base/insets";
|
||||
@import "./styles/base/base.scss";
|
||||
@import "./styles/base/grid.scss";
|
||||
@import "./styles/base/forms.scss";
|
||||
@import "./styles/base/lists.scss";
|
||||
@import "./styles/base/typography.scss";
|
||||
@import "./styles/base/utils.scss";
|
||||
@import "./styles/base/animations.scss";
|
||||
@import "./styles/base/insets.scss";
|
||||
|
||||
// Libraries
|
||||
@import "./styles/lib/index";
|
||||
@import "./styles/lib/font-awesome";
|
||||
@import "./styles/lib/index.scss";
|
||||
@import "./styles/lib/font-awesome.scss";
|
||||
|
||||
// Components
|
||||
@import "./components/Meta/meta";
|
||||
@import "./components/Explorer/explorer";
|
||||
@import "./components/RouteSeeker/RouteSeeker";
|
||||
@import "./components/SignalLegend/signalLegend";
|
||||
@import "./components/SignalLog/signalLog";
|
||||
@import "./components/PartSelector/partSelector";
|
||||
@import "./components/Modals/modal";
|
||||
@import "./components/Modals/onboardingModal";
|
||||
@import "./components/Tabs/tabs";
|
||||
@import "./components/DBCList/dbclist";
|
||||
@import "./components/Meta/meta.scss";
|
||||
@import "./components/Explorer/explorer.scss";
|
||||
@import "./components/RouteSeeker/RouteSeeker.scss";
|
||||
@import "./components/SignalLegend/signalLegend.scss";
|
||||
@import "./components/SignalLog/signalLog.scss";
|
||||
@import "./components/PartSelector/partSelector.scss";
|
||||
@import "./components/Modals/modal.scss";
|
||||
@import "./components/Modals/onboardingModal.scss";
|
||||
@import "./components/Tabs/tabs.scss";
|
||||
@import "./components/DBCList/dbclist.scss";
|
||||
|
|
17
src/init.js
17
src/init.js
|
@ -5,7 +5,6 @@ import CommaAuth, { config as AuthConfig, storage as AuthStorage } from '@commaa
|
|||
import { auth as AuthApi, request as Request } from '@commaai/comma-api';
|
||||
import Sentry from './logging/Sentry';
|
||||
import CanExplorer from './CanExplorer';
|
||||
import AcuraDbc from './acura-dbc';
|
||||
import { getUrlParameter, modifyQueryParameters } from './utils/url';
|
||||
import { GITHUB_AUTH_TOKEN_KEY } from './config';
|
||||
import {
|
||||
|
@ -16,13 +15,21 @@ import {
|
|||
import { demoProps } from './demo';
|
||||
|
||||
async function authenticate() {
|
||||
if (document.location && document.location.pathname === '/cabana' + AuthConfig.GOOGLE_REDIRECT_PATH) {
|
||||
const redirect_uri = document.location.origin + '/cabana' + AuthConfig.GOOGLE_REDIRECT_PATH;
|
||||
if (window.location && window.location.pathname === AuthConfig.AUTH_PATH) {
|
||||
try {
|
||||
const { code } = qs.parse(document.location.search);
|
||||
const token = await AuthApi.refreshAccessToken(code, redirect_uri, 'google');
|
||||
const { code, provider } = qs.parse(window.location.search);
|
||||
const token = await AuthApi.refreshAccessToken(code, provider);
|
||||
if (token) {
|
||||
AuthStorage.setCommaAccessToken(token);
|
||||
|
||||
// reset stored path
|
||||
if (window.sessionStorage) {
|
||||
const onboardingPath = window.sessionStorage.getItem('onboardingPath');
|
||||
if (onboardingPath) {
|
||||
window.sessionStorage.removeItem('onboardingPath');
|
||||
window.location = onboardingPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// All Global Variables and Mixins
|
||||
@import "colors";
|
||||
@import "mixins";
|
||||
@import "colors.scss";
|
||||
@import "mixins.scss";
|
||||
@import "../../../node_modules/font-awesome/scss/_variables";
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Base Style Resets
|
||||
// ~~~~~~~~~~~~~~~~~
|
||||
|
||||
@import "../_global/all";
|
||||
@import "../_global/all.scss";
|
||||
|
||||
html,
|
||||
body {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
*/
|
||||
|
||||
@import "../../styles/_global/all";
|
||||
@import "../../styles/_global/all.scss";
|
||||
|
||||
$input-border-color: $color-grey-40;
|
||||
$input-height: 42px;
|
||||
|
@ -304,4 +304,34 @@ a.button {
|
|||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
&.button--icon {
|
||||
box-shadow: 0 1px 3px 0 rgba(105, 105, 105, 0.2);
|
||||
height: 84px;
|
||||
margin-bottom: 15px;
|
||||
padding-left: 160px;
|
||||
padding-top: 26px;
|
||||
padding-bottom: 23px;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
> i {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||
border-radius: 100%;
|
||||
font-size: 36px;
|
||||
line-height: 54px;
|
||||
text-align: center;
|
||||
left: 59px;
|
||||
top: 13px;
|
||||
opacity: 0.3;
|
||||
position: absolute;
|
||||
width: 54px;
|
||||
}
|
||||
strong {
|
||||
display: block;
|
||||
line-height: normal;
|
||||
font-size: 26px;
|
||||
letter-spacing: 0.0125em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Insets
|
||||
// ~~~~~~
|
||||
|
||||
@import "../_global/all";
|
||||
@import "../_global/all.scss";
|
||||
|
||||
.inset {
|
||||
background: $color-grey-20;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Lists
|
||||
// ~~~~~
|
||||
|
||||
@import "../_global/all";
|
||||
@import "../_global/all.scss";
|
||||
|
||||
$list-bubble-size: 25px;
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
*/
|
||||
|
||||
@import "../_global/all";
|
||||
@import "../_global/all.scss";
|
||||
|
||||
body {
|
||||
color: $color-grey-90;
|
||||
|
|
272
yarn.lock
272
yarn.lock
|
@ -939,15 +939,14 @@
|
|||
dependencies:
|
||||
capnp-ts "0.2.4"
|
||||
|
||||
"@commaai/comma-api@^1.7.0":
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@commaai/comma-api/-/comma-api-1.7.0.tgz#18701c7f057308d2652e13cec9dd3c9b73f11a3e"
|
||||
integrity sha512-vvLFOe65hp7v/mOncZqhJa7MjbC2XORq+lekNEDWJEy5OkM6hmk+nBzdRUZhbgf2KXtpbMeOqozFxyCuqbThpw==
|
||||
"@commaai/comma-api@^2.1.2":
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@commaai/comma-api/-/comma-api-2.1.2.tgz#f8581996c9d3c3f8b427dc88607294b36174f102"
|
||||
integrity sha512-XPhZufFkmBgQ04tKB+/j8DYLYAt28lm73J2EdBs9+ybo2uLMRRHcyzmek5rGomOXhCUlSN/LhOFRMT2xkOjDUA==
|
||||
dependencies:
|
||||
babel-runtime "^6.26.0"
|
||||
config-request "^0.5.1"
|
||||
joi-browser "^13.4.0"
|
||||
querystringify "^2.1.1"
|
||||
query-string "^7.0.1"
|
||||
|
||||
"@commaai/hls.js@^0.12.7":
|
||||
version "0.12.7"
|
||||
|
@ -973,13 +972,12 @@
|
|||
stream-selector "^0.4.0"
|
||||
wasm-bz2 "^0.0.4"
|
||||
|
||||
"@commaai/my-comma-auth@^1.3.0":
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@commaai/my-comma-auth/-/my-comma-auth-1.3.0.tgz#2e5b1e56b4209f61519710f612157ae87aeb28b2"
|
||||
integrity sha512-rKxzxTJDZ2k1s0vPkSTwOgjP7tIxp+JmPB9Jb++dKXRu6iYbUhNveink7c9NoVpxkxAmZeTHo2NaLsgM9sFMqA==
|
||||
"@commaai/my-comma-auth@^1.4.1":
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@commaai/my-comma-auth/-/my-comma-auth-1.4.1.tgz#9c45cf18c5c42586c321aa3fb1bd4693a592487e"
|
||||
integrity sha512-74hSXZ3Bp9YhGkhIK3WvXTDuK+rh9qWoUm2UkiMW4wNmDQWxStNkKU/vLOLsrwLueikDZ1NdY6Diw67DJVXqEA==
|
||||
dependencies:
|
||||
babel-runtime "^6.26.0"
|
||||
global "^4.4.0"
|
||||
localforage "^1.7.3"
|
||||
querystringify "^2.1.1"
|
||||
|
||||
|
@ -2213,11 +2211,6 @@ assert-function@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/assert-function/-/assert-function-1.0.0.tgz#aeb2ad0fe00888b41254a8e3934a562968d77905"
|
||||
integrity sha1-rrKtD+AIiLQSVKjjk0pWKWjXeQU=
|
||||
|
||||
assert-ok@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/assert-ok/-/assert-ok-1.0.0.tgz#5b5cf795f9275c59c714d66c3a06d7de70e43ec8"
|
||||
integrity sha1-W1z3lfknXFnHFNZsOgbX3nDkPsg=
|
||||
|
||||
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"
|
||||
|
@ -2808,11 +2801,6 @@ buffer-indexof@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
|
||||
integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
|
||||
|
||||
buffer-to-arraybuffer@^0.0.5:
|
||||
version "0.0.5"
|
||||
resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a"
|
||||
integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=
|
||||
|
||||
buffer-xor@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
|
||||
|
@ -2840,11 +2828,6 @@ builtin-status-codes@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
|
||||
integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
|
||||
|
||||
builtin-status-codes@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-1.0.0.tgz#30637ee262978ac07174e16d7f82f0ad06e085ad"
|
||||
integrity sha1-MGN+4mKXisBxdOFtf4LwrQbgha0=
|
||||
|
||||
bytes@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
|
||||
|
@ -3412,22 +3395,6 @@ concat-stream@^1.5.0:
|
|||
readable-stream "^2.2.2"
|
||||
typedarray "^0.0.6"
|
||||
|
||||
config-request@^0.5.1:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/config-request/-/config-request-0.5.1.tgz#cffc1288a681c46de1dafaeb2333d5500f6e12d8"
|
||||
integrity sha1-z/wSiKaBxG3h2vrrIzPVUA9uEtg=
|
||||
dependencies:
|
||||
geval "^2.1.1"
|
||||
http-status-error "^1.1.1"
|
||||
is-error-code "^1.0.0"
|
||||
is-function "^1.0.1"
|
||||
is-obj "^1.0.1"
|
||||
query-string-flatten "^1.0.0"
|
||||
safe-json-parse "^4.0.0"
|
||||
url-join "^1.1.0"
|
||||
xhr-request "^1.0.1"
|
||||
xtend "^4.0.1"
|
||||
|
||||
confusing-browser-globals@^1.0.7, confusing-browser-globals@^1.0.9:
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd"
|
||||
|
@ -4196,13 +4163,6 @@ decode-uri-component@^0.2.0:
|
|||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
|
||||
|
||||
decompress-response@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
|
||||
integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
|
||||
dependencies:
|
||||
mimic-response "^1.0.0"
|
||||
|
||||
decompress-response@^4.2.0:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986"
|
||||
|
@ -5613,6 +5573,11 @@ fill-range@^7.0.1:
|
|||
dependencies:
|
||||
to-regex-range "^5.0.1"
|
||||
|
||||
filter-obj@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
|
||||
integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs=
|
||||
|
||||
finalhandler@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
|
||||
|
@ -5754,13 +5719,6 @@ font-awesome@^4.7.0:
|
|||
resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
|
||||
integrity sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=
|
||||
|
||||
for-each@^0.3.3:
|
||||
version "0.3.3"
|
||||
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
|
||||
integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
|
||||
dependencies:
|
||||
is-callable "^1.1.3"
|
||||
|
||||
for-in@^0.1.3:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
|
||||
|
@ -6023,7 +5981,7 @@ getpass@^0.1.1:
|
|||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
geval@^2.1.1, geval@^2.2.0, geval@~2.2.0:
|
||||
geval@^2.2.0, geval@~2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/geval/-/geval-2.2.0.tgz#5622b10a28028284198afe351f6b417042c33dda"
|
||||
integrity sha1-ViKxCigCgoQZiv41H2tBcELDPdo=
|
||||
|
@ -6138,7 +6096,7 @@ global-prefix@^3.0.0:
|
|||
kind-of "^6.0.2"
|
||||
which "^1.3.1"
|
||||
|
||||
global@^4.3.2, global@^4.4.0:
|
||||
global@^4.3.2:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
|
||||
integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
|
||||
|
@ -6146,14 +6104,6 @@ global@^4.3.2, global@^4.4.0:
|
|||
min-document "^2.19.0"
|
||||
process "^0.11.10"
|
||||
|
||||
global@~4.3.0:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
|
||||
integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=
|
||||
dependencies:
|
||||
min-document "^2.19.0"
|
||||
process "~0.5.1"
|
||||
|
||||
globals@^11.1.0, globals@^11.7.0:
|
||||
version "11.12.0"
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
|
||||
|
@ -6555,15 +6505,6 @@ http-signature@~1.2.0:
|
|||
jsprim "^1.2.2"
|
||||
sshpk "^1.7.0"
|
||||
|
||||
http-status-error@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/http-status-error/-/http-status-error-1.1.1.tgz#16ab35efbb3aca9c17b0a262a6eceec7e0d394cc"
|
||||
integrity sha1-Fqs177s6ypwXsKJipuzux+DTlMw=
|
||||
dependencies:
|
||||
assert-ok "~1.0.0"
|
||||
builtin-status-codes "~1.0.0"
|
||||
is-error-code "~1.0.0"
|
||||
|
||||
https-browserify@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
|
||||
|
@ -6750,11 +6691,6 @@ indexof@0.0.1:
|
|||
resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
|
||||
integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
|
||||
|
||||
individual@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97"
|
||||
integrity sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c=
|
||||
|
||||
infer-owner@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
|
||||
|
@ -6945,7 +6881,7 @@ is-buffer@^2.0.2:
|
|||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725"
|
||||
integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==
|
||||
|
||||
is-callable@^1.1.3, is-callable@^1.1.4:
|
||||
is-callable@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
|
||||
integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
|
||||
|
@ -7037,11 +6973,6 @@ is-equal-shallow@^0.1.3:
|
|||
dependencies:
|
||||
is-primitive "^2.0.0"
|
||||
|
||||
is-error-code@^1.0.0, is-error-code@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-error-code/-/is-error-code-1.0.0.tgz#d27e3923434bbbd5149ce8d1ae316674851a8c25"
|
||||
integrity sha1-0n45I0NLu9UUnOjRrjFmdIUajCU=
|
||||
|
||||
is-extendable@^0.1.0, is-extendable@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
|
||||
|
@ -7083,11 +7014,6 @@ is-fullwidth-code-point@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
|
||||
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
|
||||
|
||||
is-function@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5"
|
||||
integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=
|
||||
|
||||
is-generator-fn@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
|
||||
|
@ -7189,7 +7115,7 @@ is-path-inside@^3.0.1:
|
|||
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.1.tgz#7417049ed551d053ab82bba3fdd6baa6b3a81e89"
|
||||
integrity sha512-CKstxrctq1kUesU6WhtZDbYKzzYBuRH0UYInAVrkc/EYdB9ltbfE0gOoayG9nhohG6447sOOVGhHqsdmBvkbNg==
|
||||
|
||||
is-plain-obj@^1.0.0, is-plain-obj@~1.1.0:
|
||||
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"
|
||||
integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
|
||||
|
@ -7297,11 +7223,6 @@ is-wsl@^1.1.0:
|
|||
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
|
||||
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
|
||||
|
||||
isarray@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
||||
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
|
||||
|
||||
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"
|
||||
|
@ -7329,13 +7250,6 @@ isobject@^3.0.0, isobject@^3.0.1:
|
|||
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
|
||||
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
|
||||
|
||||
isobject@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.0.0.tgz#208de872bd7378c2a92af9428a3f56eb91a122c4"
|
||||
integrity sha1-II3ocr1zeMKpKvlCij9W65GhIsQ=
|
||||
dependencies:
|
||||
isarray "0.0.1"
|
||||
|
||||
isomorphic-fetch@^2.1.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
|
||||
|
@ -8505,7 +8419,7 @@ map-cache@^0.2.2:
|
|||
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
|
||||
integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
|
||||
|
||||
map-obj@^1.0.0, map-obj@^1.0.1, map-obj@~1.0.1:
|
||||
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"
|
||||
integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
|
||||
|
@ -8740,11 +8654,6 @@ mimic-fn@^2.0.0, mimic-fn@^2.1.0:
|
|||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
||||
|
||||
mimic-response@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
|
||||
integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
|
||||
|
||||
mimic-response@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.0.0.tgz#996a51c60adf12cb8a87d7fb8ef24c2f3d5ebb46"
|
||||
|
@ -9303,18 +9212,6 @@ oauth-sign@~0.9.0:
|
|||
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
|
||||
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
|
||||
|
||||
obj-query@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/obj-query/-/obj-query-1.0.0.tgz#9447527491a243c9f72a7fec322402404a1f2e7c"
|
||||
integrity sha1-lEdSdJGiQ8n3Kn/sMiQCQEofLnw=
|
||||
dependencies:
|
||||
is-plain-obj "~1.1.0"
|
||||
map-obj "~1.0.1"
|
||||
object-pair "~1.0.0"
|
||||
object.reduce "~0.1.7"
|
||||
print-value "~1.0.0"
|
||||
xtend "~4.0.1"
|
||||
|
||||
object-assign@4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.0.1.tgz#99504456c3598b5cad4fc59c26e8a9bb107fe0bd"
|
||||
|
@ -9359,11 +9256,6 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
|
||||
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
|
||||
|
||||
object-pair@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/object-pair/-/object-pair-1.0.0.tgz#253fb8070cb28bc9a349b8e606011cbd99f8bc25"
|
||||
integrity sha1-JT+4Bwyyi8mjSbjmBgEcvZn4vCU=
|
||||
|
||||
object-path@0.11.4:
|
||||
version "0.11.4"
|
||||
resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949"
|
||||
|
@ -9429,13 +9321,6 @@ object.pick@^1.3.0:
|
|||
dependencies:
|
||||
isobject "^3.0.1"
|
||||
|
||||
object.reduce@~0.1.7:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-0.1.7.tgz#d180e84f72d218348af45352b55165246b95046d"
|
||||
integrity sha1-0YDoT3LSGDSK9FNStVFlJGuVBG0=
|
||||
dependencies:
|
||||
for-own "^0.1.3"
|
||||
|
||||
object.values@^1.0.4, object.values@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
|
||||
|
@ -9737,14 +9622,6 @@ parse-glob@^3.0.4:
|
|||
is-extglob "^1.0.0"
|
||||
is-glob "^2.0.0"
|
||||
|
||||
parse-headers@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.2.tgz#9545e8a4c1ae5eaea7d24992bca890281ed26e34"
|
||||
integrity sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==
|
||||
dependencies:
|
||||
for-each "^0.3.3"
|
||||
string.prototype.trim "^1.1.2"
|
||||
|
||||
parse-json@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
|
||||
|
@ -10770,14 +10647,6 @@ pretty-format@^27.0.6:
|
|||
ansi-styles "^5.0.0"
|
||||
react-is "^17.0.1"
|
||||
|
||||
print-value@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/print-value/-/print-value-1.0.0.tgz#55b3a3a2ec4d0a6125257070700ca582c4b8eb7e"
|
||||
integrity sha1-VbOjouxNCmElJXBwcAylgsS4634=
|
||||
dependencies:
|
||||
isobject "~2.0.0"
|
||||
json-stringify-safe "~5.0.1"
|
||||
|
||||
private@^0.1.6:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
|
||||
|
@ -10793,11 +10662,6 @@ process@^0.11.10:
|
|||
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
|
||||
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
|
||||
|
||||
process@~0.5.1:
|
||||
version "0.5.2"
|
||||
resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
|
||||
integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=
|
||||
|
||||
progress@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
|
||||
|
@ -10979,15 +10843,6 @@ qs@~6.5.2:
|
|||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
||||
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
||||
|
||||
query-string-flatten@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/query-string-flatten/-/query-string-flatten-1.0.0.tgz#33bb7b3b09d6a08cf2a887535761035900e69a8d"
|
||||
integrity sha1-M7t7OwnWoIzyqIdTV2EDWQDmmo0=
|
||||
dependencies:
|
||||
obj-query "~1.0.0"
|
||||
query-string "~3.0.0"
|
||||
value-pipe "~1.0.0"
|
||||
|
||||
query-string@^4.1.0:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
|
||||
|
@ -11005,12 +10860,15 @@ query-string@^5.0.1:
|
|||
object-assign "^4.1.0"
|
||||
strict-uri-encode "^1.0.0"
|
||||
|
||||
query-string@~3.0.0:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-3.0.3.tgz#ae2e14b4d05071d4e9b9eb4873c35b0dcd42e638"
|
||||
integrity sha1-ri4UtNBQcdTpuetIc8NbDc1C5jg=
|
||||
query-string@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.0.1.tgz#45bd149cf586aaa582dffc7ec7a8ad97dd02f75d"
|
||||
integrity sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==
|
||||
dependencies:
|
||||
strict-uri-encode "^1.0.0"
|
||||
decode-uri-component "^0.2.0"
|
||||
filter-obj "^1.1.0"
|
||||
split-on-first "^1.0.0"
|
||||
strict-uri-encode "^2.0.0"
|
||||
|
||||
querystring-es3@^0.2.0:
|
||||
version "0.2.1"
|
||||
|
@ -11795,13 +11653,6 @@ run-queue@^1.0.0, run-queue@^1.0.3:
|
|||
dependencies:
|
||||
aproba "^1.1.1"
|
||||
|
||||
rust-result@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/rust-result/-/rust-result-1.0.0.tgz#34c75b2e6dc39fe5875e5bdec85b5e0f91536f72"
|
||||
integrity sha1-NMdbLm3Dn+WHXlveyFteD5FTb3I=
|
||||
dependencies:
|
||||
individual "^2.0.0"
|
||||
|
||||
rw@1:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
|
||||
|
@ -11831,13 +11682,6 @@ safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1,
|
|||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
|
||||
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
|
||||
|
||||
safe-json-parse@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz#7c0f578cfccd12d33a71c0e05413e2eca171eaac"
|
||||
integrity sha1-fA9XjPzNEtM6ccDgVBPi7KFx6qw=
|
||||
dependencies:
|
||||
rust-result "^1.0.0"
|
||||
|
||||
safe-regex@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
|
||||
|
@ -12129,15 +11973,6 @@ simple-concat@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6"
|
||||
integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=
|
||||
|
||||
simple-get@^2.7.0:
|
||||
version "2.8.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d"
|
||||
integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==
|
||||
dependencies:
|
||||
decompress-response "^3.3.0"
|
||||
once "^1.3.1"
|
||||
simple-concat "^1.0.0"
|
||||
|
||||
simple-get@^3.0.3:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3"
|
||||
|
@ -12401,6 +12236,11 @@ spdy@^4.0.0:
|
|||
select-hose "^2.0.0"
|
||||
spdy-transport "^3.0.0"
|
||||
|
||||
split-on-first@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
|
||||
integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
|
||||
|
||||
split-string@^3.0.1, split-string@^3.0.2:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
|
||||
|
@ -12534,6 +12374,11 @@ strict-uri-encode@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
|
||||
integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
|
||||
|
||||
strict-uri-encode@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
|
||||
integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY=
|
||||
|
||||
string-argv@^0.3.0:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
|
||||
|
@ -12933,11 +12778,6 @@ thyming@^0.1.1:
|
|||
dependencies:
|
||||
assert-function "^1.0.0"
|
||||
|
||||
timed-out@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
|
||||
integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
|
||||
|
||||
timers-browserify@^2.0.4:
|
||||
version "2.0.11"
|
||||
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f"
|
||||
|
@ -13280,11 +13120,6 @@ urix@^0.1.0:
|
|||
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
|
||||
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
|
||||
|
||||
url-join@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/url-join/-/url-join-1.1.0.tgz#741c6c2f4596c4830d6718460920d0c92202dc78"
|
||||
integrity sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=
|
||||
|
||||
url-loader@2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.1.0.tgz#bcc1ecabbd197e913eca23f5e0378e24b4412961"
|
||||
|
@ -13302,11 +13137,6 @@ url-parse@^1.4.3:
|
|||
querystringify "^2.1.1"
|
||||
requires-port "^1.0.0"
|
||||
|
||||
url-set-query@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339"
|
||||
integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=
|
||||
|
||||
url-toolkit@^2.1.1, url-toolkit@^2.1.6:
|
||||
version "2.1.6"
|
||||
resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.1.6.tgz#6d03246499e519aad224c44044a4ae20544154f2"
|
||||
|
@ -13401,11 +13231,6 @@ validate-npm-package-license@^3.0.1:
|
|||
spdx-correct "^3.0.0"
|
||||
spdx-expression-parse "^3.0.0"
|
||||
|
||||
value-pipe@~1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/value-pipe/-/value-pipe-1.0.1.tgz#c7f09dbb105a72a9f5bdbd7085b537f10e995492"
|
||||
integrity sha512-ZLcuIPES51DfYuIl6+mj5BEB6GGuPGHHFJzmE5vxZn8ydR8LS+Y/uxWFT1x30mNPrjNbHRggV5KdJYSaWt/hbQ==
|
||||
|
||||
vary@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
||||
|
@ -14522,29 +14347,6 @@ ws@~6.1.0:
|
|||
dependencies:
|
||||
async-limiter "~1.0.0"
|
||||
|
||||
xhr-request@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed"
|
||||
integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==
|
||||
dependencies:
|
||||
buffer-to-arraybuffer "^0.0.5"
|
||||
object-assign "^4.1.1"
|
||||
query-string "^5.0.1"
|
||||
simple-get "^2.7.0"
|
||||
timed-out "^4.0.1"
|
||||
url-set-query "^1.0.0"
|
||||
xhr "^2.0.4"
|
||||
|
||||
xhr@^2.0.4:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd"
|
||||
integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==
|
||||
dependencies:
|
||||
global "~4.3.0"
|
||||
is-function "^1.0.1"
|
||||
parse-headers "^2.0.0"
|
||||
xtend "^4.0.0"
|
||||
|
||||
xml-name-validator@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
|
||||
|
|
Loading…
Reference in New Issue