mirror of
https://github.com/roleypoly/roleypoly-v1.git
synced 2025-06-16 10:19:10 +00:00
add tests; resync files, forgot where i was.
This commit is contained in:
parent
6b36b1d5f2
commit
1a794e2d7e
30 changed files with 3654 additions and 534 deletions
|
@ -1,4 +1,4 @@
|
||||||
FROM node:10 AS builder
|
FROM node:11 AS builder
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
COPY . /src
|
COPY . /src
|
||||||
# we double yarn here to strip off dev-only packages that are needed at build time.
|
# we double yarn here to strip off dev-only packages that are needed at build time.
|
||||||
|
@ -6,7 +6,7 @@ RUN yarn --frozen-lockfile &&\
|
||||||
yarn build &&\
|
yarn build &&\
|
||||||
yarn --prod --frozen-lockfile
|
yarn --prod --frozen-lockfile
|
||||||
|
|
||||||
FROM mhart/alpine-node:10
|
FROM mhart/alpine-node:11
|
||||||
ENV NODE_ENV production
|
ENV NODE_ENV production
|
||||||
WORKDIR /dist
|
WORKDIR /dist
|
||||||
COPY --from=builder /src /dist
|
COPY --from=builder /src /dist
|
||||||
|
|
21
Roleypoly.js
21
Roleypoly.js
|
@ -2,7 +2,7 @@
|
||||||
import Sequelize from 'sequelize'
|
import Sequelize from 'sequelize'
|
||||||
import Next from 'next'
|
import Next from 'next'
|
||||||
import betterRouter from 'koa-better-router'
|
import betterRouter from 'koa-better-router'
|
||||||
import EventEmitter from 'events'
|
import type EventEmitter from 'events'
|
||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import logger from './logger'
|
import logger from './logger'
|
||||||
import ServerService from './services/server'
|
import ServerService from './services/server'
|
||||||
|
@ -28,6 +28,9 @@ export type Router = {
|
||||||
put: HTTPHandler,
|
put: HTTPHandler,
|
||||||
middleware: () => any
|
middleware: () => any
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type RouteHook = (router: Router) => void
|
||||||
|
|
||||||
export type AppContext = {
|
export type AppContext = {
|
||||||
config: {
|
config: {
|
||||||
appUrl: string,
|
appUrl: string,
|
||||||
|
@ -59,6 +62,8 @@ class Roleypoly {
|
||||||
__initialized: Promise<void>
|
__initialized: Promise<void>
|
||||||
__apiWatcher: EventEmitter
|
__apiWatcher: EventEmitter
|
||||||
__rpcWatcher: EventEmitter
|
__rpcWatcher: EventEmitter
|
||||||
|
|
||||||
|
__routeHooks: Set<RouteHook> = new Set()
|
||||||
constructor (io: SocketIO, app: KoaApp) {
|
constructor (io: SocketIO, app: KoaApp) {
|
||||||
this.io = io
|
this.io = io
|
||||||
this.__app = app
|
this.__app = app
|
||||||
|
@ -121,12 +126,24 @@ class Roleypoly {
|
||||||
this.ctx.RPC = new RPCServer(this)
|
this.ctx.RPC = new RPCServer(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addRouteHook (hook: RouteHook) {
|
||||||
|
this.__routeHooks.add(hook)
|
||||||
|
}
|
||||||
|
|
||||||
|
hookServiceRoutes (router: Router) {
|
||||||
|
for (let h of this.__routeHooks) {
|
||||||
|
h(router)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async loadRoutes (forceClear: boolean = false) {
|
async loadRoutes (forceClear: boolean = false) {
|
||||||
await this.ctx.ui.prepare()
|
await this.ctx.ui.prepare()
|
||||||
|
|
||||||
this.router = betterRouter().loadMethods()
|
this.router = betterRouter().loadMethods()
|
||||||
fetchApis(this.router, this.ctx, { forceClear })
|
fetchApis(this.router, this.ctx, { forceClear })
|
||||||
this.ctx.RPC.hookRoutes(this.router)
|
// this.ctx.RPC.hookRoutes(this.router)
|
||||||
|
|
||||||
|
this.hookServiceRoutes(this.router)
|
||||||
|
|
||||||
// after routing, add the * for ui handler
|
// after routing, add the * for ui handler
|
||||||
this.router.get('*', async ctx => {
|
this.router.get('*', async ctx => {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
babelrcRoots: [
|
babelrcRoots: [
|
||||||
'.'
|
'.',
|
||||||
|
'./ui'
|
||||||
],
|
],
|
||||||
ignore: [ './ui', './node_modules', './flow-typed' ]
|
ignore: [ './node_modules', './flow-typed' ]
|
||||||
}
|
}
|
||||||
|
|
52
flow-typed/npm/chokidar_vx.x.x.js
vendored
Normal file
52
flow-typed/npm/chokidar_vx.x.x.js
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
// flow-typed signature: d2dd6b4e6831834e8554fcd055fcf1ab
|
||||||
|
// flow-typed version: <<STUB>>/chokidar_v2.1.2/flow_v0.95.1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is an autogenerated libdef stub for:
|
||||||
|
*
|
||||||
|
* 'chokidar'
|
||||||
|
*
|
||||||
|
* Fill this stub out by replacing all the `any` types.
|
||||||
|
*
|
||||||
|
* Once filled out, we encourage you to share your work with the
|
||||||
|
* community by sending a pull request to:
|
||||||
|
* https://github.com/flowtype/flow-typed
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare module 'chokidar' {
|
||||||
|
import type { FSWatcher } from 'fs'
|
||||||
|
import type EventEmitter from 'events'
|
||||||
|
declare type BufferEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"
|
||||||
|
declare type Chokidar = {
|
||||||
|
watch: (filename: string, options?: { encoding?: BufferEncoding; persistent?: boolean; recursive?: boolean; } | BufferEncoding, listener?: (event: string, filename: string) => void) => EventEmitter
|
||||||
|
};
|
||||||
|
|
||||||
|
declare module.exports: Chokidar;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We include stubs for each file inside this npm package in case you need to
|
||||||
|
* require those files directly. Feel free to delete any files that aren't
|
||||||
|
* needed.
|
||||||
|
*/
|
||||||
|
declare module 'chokidar/lib/fsevents-handler' {
|
||||||
|
declare module.exports: any;
|
||||||
|
}
|
||||||
|
|
||||||
|
declare module 'chokidar/lib/nodefs-handler' {
|
||||||
|
declare module.exports: any;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filename aliases
|
||||||
|
declare module 'chokidar/index' {
|
||||||
|
declare module.exports: $Exports<'chokidar'>;
|
||||||
|
}
|
||||||
|
declare module 'chokidar/index.js' {
|
||||||
|
declare module.exports: $Exports<'chokidar'>;
|
||||||
|
}
|
||||||
|
declare module 'chokidar/lib/fsevents-handler.js' {
|
||||||
|
declare module.exports: $Exports<'chokidar/lib/fsevents-handler'>;
|
||||||
|
}
|
||||||
|
declare module 'chokidar/lib/nodefs-handler.js' {
|
||||||
|
declare module.exports: $Exports<'chokidar/lib/nodefs-handler'>;
|
||||||
|
}
|
2601
flow-typed/npm/eris_vx.x.x.js
vendored
2601
flow-typed/npm/eris_vx.x.x.js
vendored
File diff suppressed because it is too large
Load diff
37
package.json
37
package.json
|
@ -9,11 +9,12 @@
|
||||||
"build:ui": "NODE_ENV=production next build ui",
|
"build:ui": "NODE_ENV=production next build ui",
|
||||||
"build:server": "NODE_ENV=production babel --delete-dir-on-start -d dist .",
|
"build:server": "NODE_ENV=production babel --delete-dir-on-start -d dist .",
|
||||||
"remotedebug": "remotedebug_ios_webkit_adapter --port=9000 > /dev/null",
|
"remotedebug": "remotedebug_ios_webkit_adapter --port=9000 > /dev/null",
|
||||||
"test": "jest"
|
"test": "jest",
|
||||||
|
"rpcrepl": "babel-node util/rpcrepl.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/uws": "^11.149.1",
|
"@discordjs/uws": "^11.149.1",
|
||||||
"@primer/components": "^12.0.0",
|
"@primer/components": "^12.0.1",
|
||||||
"bufferutil": "^4.0.1",
|
"bufferutil": "^4.0.1",
|
||||||
"chalk": "^2.4.2",
|
"chalk": "^2.4.2",
|
||||||
"color": "^3.1.0",
|
"color": "^3.1.0",
|
||||||
|
@ -32,7 +33,7 @@
|
||||||
"koa-bodyparser": "^4.2.1",
|
"koa-bodyparser": "^4.2.1",
|
||||||
"koa-session": "^5.10.1",
|
"koa-session": "^5.10.1",
|
||||||
"kompression": "^1.0.0",
|
"kompression": "^1.0.0",
|
||||||
"ksuid": "^1.1.3",
|
"ksuid": "^1.2.0",
|
||||||
"lru-cache": "^5.1.1",
|
"lru-cache": "^5.1.1",
|
||||||
"moment": "^2.24.0",
|
"moment": "^2.24.0",
|
||||||
"moniker": "^0.1.2",
|
"moniker": "^0.1.2",
|
||||||
|
@ -42,8 +43,8 @@
|
||||||
"pg": "^7.9.0",
|
"pg": "^7.9.0",
|
||||||
"pg-hstore": "^2.3.2",
|
"pg-hstore": "^2.3.2",
|
||||||
"primer": "^11.0.0",
|
"primer": "^11.0.0",
|
||||||
"react": "^16.8.4",
|
"react": "^16.8.6",
|
||||||
"react-dom": "^16.8.4",
|
"react-dom": "^16.8.6",
|
||||||
"react-redux": "^6.0.1",
|
"react-redux": "^6.0.1",
|
||||||
"react-typist": "^2.0.5",
|
"react-typist": "^2.0.5",
|
||||||
"redux": "^4.0.1",
|
"redux": "^4.0.1",
|
||||||
|
@ -51,29 +52,33 @@
|
||||||
"redux-thunk": "^2.3.0",
|
"redux-thunk": "^2.3.0",
|
||||||
"sequelize": "^5.1.0",
|
"sequelize": "^5.1.0",
|
||||||
"socket.io": "^2.2.0",
|
"socket.io": "^2.2.0",
|
||||||
"styled-components": "^4.1.3",
|
"styled-components": "^4.2.0",
|
||||||
"superagent": "^4.1.0",
|
"superagent": "^5.0.2",
|
||||||
"zlib-sync": "^0.1.4"
|
"zlib-sync": "^0.1.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.2.3",
|
"@babel/cli": "^7.2.3",
|
||||||
"@babel/node": "^7.2.2",
|
|
||||||
"@babel/core": "^7.4.0",
|
"@babel/core": "^7.4.0",
|
||||||
|
"@babel/node": "^7.2.2",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.4.0",
|
"@babel/plugin-proposal-class-properties": "^7.4.0",
|
||||||
"@babel/plugin-proposal-optional-chaining": "^7.2.0",
|
"@babel/plugin-proposal-optional-chaining": "^7.2.0",
|
||||||
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
|
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
|
||||||
"@babel/plugin-transform-runtime": "^7.4.0",
|
"@babel/plugin-transform-runtime": "^7.4.0",
|
||||||
"@babel/preset-env": "^7.4.2",
|
"@babel/preset-env": "^7.4.2",
|
||||||
"@babel/preset-flow": "^7.0.0",
|
"@babel/preset-flow": "^7.0.0",
|
||||||
|
"await-outside": "^2.1.2",
|
||||||
"babel-eslint": "^10.0.1",
|
"babel-eslint": "^10.0.1",
|
||||||
"babel-plugin-styled-components": "^1.10.0",
|
"babel-plugin-styled-components": "^1.10.0",
|
||||||
"babel-plugin-transform-flow-strip-types": "^6.22.0",
|
"babel-plugin-transform-flow-strip-types": "^6.22.0",
|
||||||
"chokidar": "^2.1.2",
|
"chokidar": "^2.1.5",
|
||||||
|
"enzyme": "^3.9.0",
|
||||||
|
"enzyme-adapter-react-16": "^1.11.2",
|
||||||
"eslint-plugin-flowtype": "^3.4.2",
|
"eslint-plugin-flowtype": "^3.4.2",
|
||||||
"flow-bin": "^0.95.1",
|
"flow-bin": "^0.95.1",
|
||||||
"flow-typed": "^2.5.1",
|
"flow-typed": "^2.5.1",
|
||||||
"jest": "^24.5.0",
|
"jest": "^24.5.0",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
|
"react-test-renderer": "^16.8.6",
|
||||||
"standard": "12.0.1"
|
"standard": "12.0.1"
|
||||||
},
|
},
|
||||||
"standard": {
|
"standard": {
|
||||||
|
@ -84,5 +89,19 @@
|
||||||
"globals": [
|
"globals": [
|
||||||
"$Shape"
|
"$Shape"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"jest": {
|
||||||
|
"projects": [
|
||||||
|
{
|
||||||
|
"displayName": "server",
|
||||||
|
"rootDir": "<rootDir>",
|
||||||
|
"testPathIgnorePatterns": ["/node_modules/","/ui/"]
|
||||||
|
}, {
|
||||||
|
"displayName": "ui",
|
||||||
|
"rootDir": "<rootDir>/ui",
|
||||||
|
"setupFiles": ["<rootDir>/setupTests.js"],
|
||||||
|
"testPathIgnorePatterns": ["/node_modules/", "/.next/"]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
144
rpc/_security.js
144
rpc/_security.js
|
@ -3,40 +3,156 @@ import { type AppContext } from '../Roleypoly'
|
||||||
import { type Context } from 'koa'
|
import { type Context } from 'koa'
|
||||||
import RPCError from './_error'
|
import RPCError from './_error'
|
||||||
|
|
||||||
// import logger from '../logger'
|
import logger from '../logger'
|
||||||
// const log = logger(__filename)
|
const log = logger(__filename)
|
||||||
|
|
||||||
const PermissionError = new RPCError('User does not have permission to call this RPC.', 403)
|
const PermissionError = new RPCError('User does not have permission to call this RPC.', 403)
|
||||||
|
|
||||||
// export const bot = (fn: Function) => (secret: string, ...args: any[]) => {
|
const logFacts = (
|
||||||
// if (secret !== process.env.SHARED_SECRET) {
|
ctx: Context,
|
||||||
// log.error('unauthenticated bot request', { secret })
|
extra: { [x:string]: any } = {}
|
||||||
// return { err: 'unauthenticated' }
|
) => ({
|
||||||
// }
|
fn: (ctx.request.body: any).fn,
|
||||||
|
ip: ctx.ip,
|
||||||
|
user: ctx.session.userId,
|
||||||
|
...extra
|
||||||
|
})
|
||||||
|
|
||||||
// return fn(...args)
|
export const authed = (
|
||||||
// }
|
$: AppContext,
|
||||||
|
fn: (ctx: Context, ...args: any[]) => any,
|
||||||
|
silent: boolean = false
|
||||||
|
) => async (
|
||||||
|
ctx: Context,
|
||||||
|
...args: any[]
|
||||||
|
) => {
|
||||||
|
if (await $.auth.isLoggedIn(ctx)) {
|
||||||
|
return fn(ctx, ...args)
|
||||||
|
}
|
||||||
|
|
||||||
export const root = ($: AppContext, fn: Function) => (ctx: Context, ...args: any[]) => {
|
if ($.config.dev) {
|
||||||
|
log.debug('authed failed')
|
||||||
|
throw new RPCError('User is not logged in', 403)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!silent) {
|
||||||
|
log.info('RPC call authed check fail', logFacts(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
throw PermissionError
|
||||||
|
}
|
||||||
|
|
||||||
|
export const root = (
|
||||||
|
$: AppContext,
|
||||||
|
fn: (ctx: Context, ...args: any[]) => any,
|
||||||
|
silent: boolean = false
|
||||||
|
) => authed($, (
|
||||||
|
ctx: Context,
|
||||||
|
...args: any[]
|
||||||
|
) => {
|
||||||
if ($.discord.isRoot(ctx.session.userId)) {
|
if ($.discord.isRoot(ctx.session.userId)) {
|
||||||
return fn(ctx, ...args)
|
return fn(ctx, ...args)
|
||||||
}
|
}
|
||||||
|
|
||||||
throw PermissionError
|
if ($.config.dev) {
|
||||||
|
log.debug('root failed')
|
||||||
|
throw new RPCError('User is not root', 403)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const manager = ($: AppContext, fn: Function) => (ctx: Context, server: string, ...args: any[]) => {
|
if (!silent) {
|
||||||
|
log.info('RPC call root check fail', logFacts(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
throw PermissionError
|
||||||
|
})
|
||||||
|
|
||||||
|
export const manager = (
|
||||||
|
$: AppContext,
|
||||||
|
fn: (ctx: Context, server: string, ...args: any[]) => any,
|
||||||
|
silent: boolean = false
|
||||||
|
) => member($, (
|
||||||
|
ctx: Context,
|
||||||
|
server: string,
|
||||||
|
...args: any[]
|
||||||
|
) => {
|
||||||
if ($.discord.canManageRoles(server, ctx.session.userId)) {
|
if ($.discord.canManageRoles(server, ctx.session.userId)) {
|
||||||
return fn(ctx, server, ...args)
|
return fn(ctx, server, ...args)
|
||||||
}
|
}
|
||||||
|
|
||||||
throw PermissionError
|
if ($.config.dev) {
|
||||||
|
log.debug('manager failed')
|
||||||
|
throw new RPCError('User is not a role manager', 403)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const member = ($: AppContext, fn: Function) => (ctx: Context, server: string, ...args: any[]) => {
|
if (!silent) {
|
||||||
|
log.info('RPC call manager check fail', logFacts(ctx, { server }))
|
||||||
|
}
|
||||||
|
|
||||||
|
throw PermissionError
|
||||||
|
})
|
||||||
|
|
||||||
|
export const member = (
|
||||||
|
$: AppContext,
|
||||||
|
fn: (ctx: Context, server: string, ...args: any[]) => any,
|
||||||
|
silent: boolean = false
|
||||||
|
) => authed($, (
|
||||||
|
ctx: Context,
|
||||||
|
server: string,
|
||||||
|
...args: any[]
|
||||||
|
) => {
|
||||||
if ($.discord.isMember(server, ctx.session.userId)) {
|
if ($.discord.isMember(server, ctx.session.userId)) {
|
||||||
return fn(ctx, server, ...args)
|
return fn(ctx, server, ...args)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($.config.dev) {
|
||||||
|
log.debug('member failed')
|
||||||
|
throw new RPCError('User is not a member of this server', 403)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!silent) {
|
||||||
|
log.info('RPC call member check fail', logFacts(ctx, { server }))
|
||||||
|
}
|
||||||
|
|
||||||
|
throw PermissionError
|
||||||
|
})
|
||||||
|
|
||||||
|
export const any = (
|
||||||
|
$: AppContext,
|
||||||
|
fn: (ctx: Context, ...args: any[]) => any,
|
||||||
|
silent: boolean = false
|
||||||
|
) => (...args: any) => fn(...args)
|
||||||
|
|
||||||
|
type Handler = (ctx: Context, ...args: any[]) => any
|
||||||
|
type Strategy = (
|
||||||
|
$: AppContext,
|
||||||
|
fn: Handler,
|
||||||
|
silent?: boolean
|
||||||
|
) => any
|
||||||
|
type StrategyPair = [ Strategy, Handler ]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Weird func but ok -- test that a strategy doesn't fail, and run the first that doesn't.
|
||||||
|
*/
|
||||||
|
export const decide = (
|
||||||
|
$: AppContext,
|
||||||
|
...strategies: StrategyPair[]
|
||||||
|
) => async (...args: any) => {
|
||||||
|
for (let [ strat, handler ] of strategies) {
|
||||||
|
if (strat === null) {
|
||||||
|
strat = any
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return await strat($, handler, true)(...args)
|
||||||
|
} catch (e) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we reach the end, just throw
|
||||||
|
if ($.config.dev) {
|
||||||
|
log.info('decide failed for', strategies.map(v => v[0].name))
|
||||||
|
}
|
||||||
|
|
||||||
throw PermissionError
|
throw PermissionError
|
||||||
}
|
}
|
||||||
|
|
32
rpc/index.js
32
rpc/index.js
|
@ -3,11 +3,20 @@ import logger from '../logger'
|
||||||
import fnv from 'fnv-plus'
|
import fnv from 'fnv-plus'
|
||||||
import autoloader from './_autoloader'
|
import autoloader from './_autoloader'
|
||||||
import RPCError from './_error'
|
import RPCError from './_error'
|
||||||
import type Roleypoly from '../Roleypoly'
|
import type Roleypoly, { Router } from '../Roleypoly'
|
||||||
import type betterRouter from 'koa-better-router'
|
import type { Context } from 'koa'
|
||||||
import { type Context } from 'koa'
|
|
||||||
const log = logger(__filename)
|
const log = logger(__filename)
|
||||||
|
|
||||||
|
export type RPCIncoming = {
|
||||||
|
fn: string,
|
||||||
|
args: any[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export type RPCOutgoing = {
|
||||||
|
hash: string,
|
||||||
|
response: any
|
||||||
|
}
|
||||||
|
|
||||||
export default class RPCServer {
|
export default class RPCServer {
|
||||||
ctx: Roleypoly
|
ctx: Roleypoly
|
||||||
|
|
||||||
|
@ -21,6 +30,7 @@ export default class RPCServer {
|
||||||
constructor (ctx: Roleypoly) {
|
constructor (ctx: Roleypoly) {
|
||||||
this.ctx = ctx
|
this.ctx = ctx
|
||||||
this.reload()
|
this.reload()
|
||||||
|
ctx.addRouteHook(this.hookRoutes)
|
||||||
}
|
}
|
||||||
|
|
||||||
reload () {
|
reload () {
|
||||||
|
@ -32,33 +42,33 @@ export default class RPCServer {
|
||||||
this.mapHash = fnv.hash(Object.keys(this.rpcMap)).str()
|
this.mapHash = fnv.hash(Object.keys(this.rpcMap)).str()
|
||||||
|
|
||||||
// call map for the client.
|
// call map for the client.
|
||||||
this.rpcCalls = Object.keys(this.rpcMap).map(fn => ({ name: this.rpcMap[fn].name, args: 0 }))
|
this.rpcCalls = Object.keys(this.rpcMap).map(fn => ({ name: fn, args: 0 }))
|
||||||
}
|
}
|
||||||
|
|
||||||
hookRoutes (router: betterRouter) {
|
hookRoutes = (router: Router) => {
|
||||||
// RPC call reporter.
|
// RPC call reporter.
|
||||||
// this is NEVER called in prod.
|
// this is NEVER called in prod.
|
||||||
// it is used to generate errors if RPC calls don't exist or are malformed in dev.
|
// it is used to generate errors if RPC calls don't exist or are malformed in dev.
|
||||||
router.get('/api/_rpc', async (ctx) => {
|
router.get('/api/_rpc', async (ctx: Context) => {
|
||||||
ctx.body = {
|
ctx.body = ({
|
||||||
hash: this.mapHash,
|
hash: this.mapHash,
|
||||||
available: this.rpcCalls
|
available: this.rpcCalls
|
||||||
}
|
}: any)
|
||||||
ctx.status = 200
|
ctx.status = 200
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
|
||||||
router.post('/api/_rpc', this.handleRPC.bind(this))
|
router.post('/api/_rpc', this.handleRPC)
|
||||||
}
|
}
|
||||||
|
|
||||||
async handleRPC (ctx: Context) {
|
handleRPC = async (ctx: Context) => {
|
||||||
// handle an impossible situation
|
// handle an impossible situation
|
||||||
if (!(ctx.request.body instanceof Object)) {
|
if (!(ctx.request.body instanceof Object)) {
|
||||||
return this.rpcError(ctx, null, new RPCError('RPC format was very incorrect.', 400))
|
return this.rpcError(ctx, null, new RPCError('RPC format was very incorrect.', 400))
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if RPC exists
|
// check if RPC exists
|
||||||
const { fn, args } = ctx.request.body
|
const { fn, args } = (ctx.request.body: RPCIncoming)
|
||||||
|
|
||||||
if (!(fn in this.rpcMap)) {
|
if (!(fn in this.rpcMap)) {
|
||||||
return this.rpcError(ctx, null, new RPCError(`RPC call ${fn}(...) not found.`, 404))
|
return this.rpcError(ctx, null, new RPCError(`RPC call ${fn}(...) not found.`, 404))
|
||||||
|
|
|
@ -1,14 +1,23 @@
|
||||||
// @flow
|
// @flow
|
||||||
import { type AppContext } from '../Roleypoly'
|
import { type AppContext } from '../Roleypoly'
|
||||||
import { type Context } from 'koa'
|
import { type Context } from 'koa'
|
||||||
|
import * as secureAs from './_security'
|
||||||
export default ($: AppContext) => ({
|
export default ($: AppContext) => ({
|
||||||
// i want RPC to be *dead* simple.
|
// i want RPC to be *dead* simple.
|
||||||
// probably too simple.
|
// probably too simple.
|
||||||
hello (_: Context, hello: string) {
|
hello (_: Context, hello: string) {
|
||||||
return `hello, ${hello}!`
|
return `hello, ${hello} and all who inhabit it`
|
||||||
},
|
},
|
||||||
|
|
||||||
testJSON (_: Context, inobj: {}) {
|
testJSON (_: Context, inobj: {}) {
|
||||||
return inobj
|
return inobj
|
||||||
}
|
},
|
||||||
|
|
||||||
|
testDecide: secureAs.decide($,
|
||||||
|
[ secureAs.root, () => { return 'root' } ],
|
||||||
|
[ secureAs.manager, () => { return 'manager' } ],
|
||||||
|
[ secureAs.member, () => { return 'member' } ],
|
||||||
|
[ secureAs.authed, () => { return 'authed' } ],
|
||||||
|
[ secureAs.any, () => { return 'guest' } ]
|
||||||
|
)
|
||||||
})
|
})
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
import { type AppContext } from '../Roleypoly'
|
import { type AppContext } from '../Roleypoly'
|
||||||
import { type Context } from 'koa'
|
import { type Context } from 'koa'
|
||||||
import { type Guild } from 'eris'
|
import { type Guild } from 'eris'
|
||||||
import { root } from './_security'
|
import * as secureAs from './_security'
|
||||||
|
|
||||||
export default ($: AppContext) => ({
|
export default ($: AppContext) => ({
|
||||||
|
|
||||||
rootGetAllServers: root($, (ctx: Context) => {
|
rootGetAllServers: secureAs.root($, (ctx: Context) => {
|
||||||
return $.discord.client.guilds.map<{
|
return $.discord.client.guilds.map<{
|
||||||
url: string,
|
url: string,
|
||||||
name: string,
|
name: string,
|
||||||
|
@ -24,7 +24,7 @@ export default ($: AppContext) => ({
|
||||||
return $.P.serverSlug(srv)
|
return $.P.serverSlug(srv)
|
||||||
},
|
},
|
||||||
|
|
||||||
getServer (ctx: Context, id: string) {
|
getServer: secureAs.member($, (ctx: Context, id: string) => {
|
||||||
const { userId } = (ctx.session: { userId: string })
|
const { userId } = (ctx.session: { userId: string })
|
||||||
|
|
||||||
const srv = $.discord.client.guilds.get(id)
|
const srv = $.discord.client.guilds.get(id)
|
||||||
|
@ -32,13 +32,6 @@ export default ($: AppContext) => ({
|
||||||
return { err: 'not_found' }
|
return { err: 'not_found' }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userId == null) {
|
|
||||||
return {
|
|
||||||
id: id,
|
|
||||||
server: $.P.serverSlug(srv)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let gm
|
let gm
|
||||||
if (srv.members.has(userId)) {
|
if (srv.members.has(userId)) {
|
||||||
gm = $.discord.gm(id, userId)
|
gm = $.discord.gm(id, userId)
|
||||||
|
@ -51,5 +44,5 @@ export default ($: AppContext) => ({
|
||||||
}
|
}
|
||||||
|
|
||||||
return $.P.presentableServer(srv, gm)
|
return $.P.presentableServer(srv, gm)
|
||||||
}
|
})
|
||||||
})
|
})
|
||||||
|
|
15
rpc/user.js
15
rpc/user.js
|
@ -1,11 +1,18 @@
|
||||||
// @flow
|
// @flow
|
||||||
import { type AppContext } from '../Roleypoly'
|
import { type AppContext } from '../Roleypoly'
|
||||||
import { type Context } from 'koa'
|
import { type Context } from 'koa'
|
||||||
// import { type Guild } from 'discord.js'
|
import * as secureAs from './_security'
|
||||||
|
|
||||||
export default ($: AppContext) => ({
|
export default ($: AppContext) => ({
|
||||||
getCurrentUser (ctx: Context) {
|
|
||||||
const { userId } = ctx.session
|
getCurrentUser: secureAs.authed($, (ctx: Context) => {
|
||||||
return $.discord.getUserPartial(ctx.session.userId)
|
return $.discord.getUserPartial(ctx.session.userId)
|
||||||
}
|
}),
|
||||||
|
|
||||||
|
isRoot: secureAs.root($, () => {
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
|
@ -8,6 +8,7 @@ import LRU from 'lru-cache'
|
||||||
import { OrderedSet } from 'immutable'
|
import { OrderedSet } from 'immutable'
|
||||||
import superagent from 'superagent'
|
import superagent from 'superagent'
|
||||||
import type { AuthTokens } from './auth'
|
import type { AuthTokens } from './auth'
|
||||||
|
import type { IFetcher } from './discord/types'
|
||||||
|
|
||||||
type DiscordServiceConfig = {
|
type DiscordServiceConfig = {
|
||||||
token: string,
|
token: string,
|
||||||
|
@ -59,6 +60,8 @@ export default class DiscordService extends Service {
|
||||||
|
|
||||||
oauthCallback: string
|
oauthCallback: string
|
||||||
|
|
||||||
|
fetcher: IFetcher
|
||||||
|
|
||||||
constructor (ctx: AppContext) {
|
constructor (ctx: AppContext) {
|
||||||
super(ctx)
|
super(ctx)
|
||||||
this.ctx = ctx
|
this.ctx = ctx
|
||||||
|
@ -96,10 +99,14 @@ export default class DiscordService extends Service {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.bot = new Bot(this)
|
this.bot = new Bot(this)
|
||||||
|
const BotFetcher = require('./discord/botFetcher').default
|
||||||
|
this.fetcher = new BotFetcher(this)
|
||||||
} else {
|
} else {
|
||||||
this.client = new Eris(`Bot ${this.cfg.token}`, {
|
this.client = new Eris(`Bot ${this.cfg.token}`, {
|
||||||
restMode: true
|
restMode: true
|
||||||
})
|
})
|
||||||
|
const RestFetcher = require('./discord/restFetcher').default
|
||||||
|
this.fetcher = new RestFetcher(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
346
services/discord.old.js
Normal file
346
services/discord.old.js
Normal file
|
@ -0,0 +1,346 @@
|
||||||
|
/*
|
||||||
|
import Service from './Service'
|
||||||
|
import superagent from 'superagent'
|
||||||
|
// import invariant from 'invariant'
|
||||||
|
import { type AppContext } from '../Roleypoly'
|
||||||
|
import Eris from 'eris'
|
||||||
|
import Bot from '../bot'
|
||||||
|
import type { AuthTokens } from './auth'
|
||||||
|
export type UserPartial = {
|
||||||
|
id: string,
|
||||||
|
username: string,
|
||||||
|
discriminator: string,
|
||||||
|
avatar: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Permissions = {
|
||||||
|
isAdmin: boolean,
|
||||||
|
canManageRoles: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
// type ChatCommandHandler = (message: Message, matches: string[], reply: (text: string) => Promise<Message>) => Promise<void>|void
|
||||||
|
// type ChatCommand = {
|
||||||
|
// regex: RegExp,
|
||||||
|
// handler: ChatCommandHandler
|
||||||
|
// }
|
||||||
|
|
||||||
|
class DiscordService extends Service {
|
||||||
|
botToken: string = process.env.DISCORD_BOT_TOKEN || ''
|
||||||
|
clientId: string = process.env.DISCORD_CLIENT_ID || ''
|
||||||
|
clientSecret: string = process.env.DISCORD_CLIENT_SECRET || ''
|
||||||
|
oauthCallback: string = process.env.OAUTH_AUTH_CALLBACK || ''
|
||||||
|
isBot: boolean = process.env.IS_BOT === 'true'
|
||||||
|
|
||||||
|
appUrl: string
|
||||||
|
botCallback: string
|
||||||
|
rootUsers: Set<string>
|
||||||
|
client: Eris
|
||||||
|
cmds: ChatCommand[]
|
||||||
|
bot: Bot
|
||||||
|
constructor (ctx: AppContext) {
|
||||||
|
super(ctx)
|
||||||
|
this.appUrl = ctx.config.appUrl
|
||||||
|
|
||||||
|
this.oauthCallback = `${this.appUrl}/api/oauth/callback`
|
||||||
|
this.botCallback = `${this.appUrl}/api/oauth/bot/callback`
|
||||||
|
this.rootUsers = new Set((process.env.ROOT_USERS || '').split(','))
|
||||||
|
this.bot = new Bot(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
ownGm (server: string) {
|
||||||
|
return this.gm(server, this.client.user.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
fakeGm ({ id = '0', nickname = '[none]', displayHexColor = '#ffffff' }: $Shape<{ id: string, nickname: string, displayHexColor: string }>) { // eslint-disable-line no-undef
|
||||||
|
return { id, nickname, displayHexColor, __faked: true, roles: { has () { return false } } }
|
||||||
|
}
|
||||||
|
|
||||||
|
isRoot (id: string): boolean {
|
||||||
|
return this.rootUsers.has(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
getRelevantServers (userId: string): Collection<string, Guild> {
|
||||||
|
return this.client.guilds.filter((g) => g.members.has(userId))
|
||||||
|
}
|
||||||
|
|
||||||
|
gm (serverId: string, userId: string): ?GuildMember {
|
||||||
|
const s = this.client.guilds.get(serverId)
|
||||||
|
if (s == null) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return s.members.get(userId)
|
||||||
|
}
|
||||||
|
|
||||||
|
getRoles (server: string) {
|
||||||
|
const s = this.client.guilds.get(server)
|
||||||
|
if (s == null) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return s.roles
|
||||||
|
}
|
||||||
|
|
||||||
|
getPermissions (gm: GuildMember): Permissions {
|
||||||
|
if (this.isRoot(gm.id)) {
|
||||||
|
return {
|
||||||
|
isAdmin: true,
|
||||||
|
canManageRoles: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
isAdmin: gm.permissions.has('ADMINISTRATOR'),
|
||||||
|
canManageRoles: gm.permissions.has('MANAGE_ROLES', true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
safeRole (server: string, role: string) {
|
||||||
|
const rl = this.getRoles(server)
|
||||||
|
if (rl == null) {
|
||||||
|
throw new Error(`safeRole can't see ${server}`)
|
||||||
|
}
|
||||||
|
const r: ?Role = rl.get(role)
|
||||||
|
if (r == null) {
|
||||||
|
throw new Error(`safeRole can't find ${role} in ${server}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.editable && !r.hasPermission('MANAGE_ROLES', false, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// oauth step 2 flow, grab the auth token via code
|
||||||
|
async getAuthToken (code: string): Promise<AuthTokens> {
|
||||||
|
const url = 'https://discordapp.com/api/oauth2/token'
|
||||||
|
try {
|
||||||
|
const rsp =
|
||||||
|
await superagent
|
||||||
|
.post(url)
|
||||||
|
.set('Content-Type', 'application/x-www-form-urlencoded')
|
||||||
|
.send({
|
||||||
|
client_id: this.clientId,
|
||||||
|
client_secret: this.clientSecret,
|
||||||
|
grant_type: 'authorization_code',
|
||||||
|
code: code,
|
||||||
|
redirect_uri: this.oauthCallback
|
||||||
|
})
|
||||||
|
|
||||||
|
return rsp.body
|
||||||
|
} catch (e) {
|
||||||
|
this.log.error('getAuthToken failed', e)
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getUserFromToken (authToken?: string): Promise<UserPartial> {
|
||||||
|
const url = 'https://discordapp.com/api/v6/users/@me'
|
||||||
|
try {
|
||||||
|
if (authToken == null || authToken === '') {
|
||||||
|
throw new Error('not logged in')
|
||||||
|
}
|
||||||
|
|
||||||
|
const rsp =
|
||||||
|
await superagent
|
||||||
|
.get(url)
|
||||||
|
.set('Authorization', `Bearer ${authToken}`)
|
||||||
|
return rsp.body
|
||||||
|
} catch (e) {
|
||||||
|
this.log.error('getUser error', e)
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getUserPartial (userId: string): ?UserPartial {
|
||||||
|
const U = this.client.users.get(userId)
|
||||||
|
if (U == null) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
username: U.username,
|
||||||
|
discriminator: U.discriminator,
|
||||||
|
avatar: U.displayAvatarURL,
|
||||||
|
id: U.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async refreshOAuth ({ refreshToken }: { refreshToken: string }): Promise<AuthTokens> {
|
||||||
|
const url = 'https://discordapp.com/api/oauth2/token'
|
||||||
|
try {
|
||||||
|
const rsp =
|
||||||
|
await superagent
|
||||||
|
.post(url)
|
||||||
|
.set('Content-Type', 'application/x-www-form-urlencoded')
|
||||||
|
.send({
|
||||||
|
client_id: this.clientId,
|
||||||
|
client_secret: this.clientSecret,
|
||||||
|
grant_type: 'refresh_token',
|
||||||
|
refresh_token: refreshToken,
|
||||||
|
redirect_uri: this.oauthCallback
|
||||||
|
})
|
||||||
|
|
||||||
|
return rsp.body
|
||||||
|
} catch (e) {
|
||||||
|
this.log.error('refreshOAuth failed', e)
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async revokeOAuth ({ accessToken }: { accessToken: string }) {
|
||||||
|
const url = 'https://discordapp.com/api/oauth2/token/revoke'
|
||||||
|
try {
|
||||||
|
const rsp =
|
||||||
|
await superagent
|
||||||
|
.post(url)
|
||||||
|
.set('Content-Type', 'application/x-www-form-urlencoded')
|
||||||
|
.send({
|
||||||
|
client_id: this.clientId,
|
||||||
|
client_secret: this.clientSecret,
|
||||||
|
grant_type: 'access_token',
|
||||||
|
token: accessToken,
|
||||||
|
redirect_uri: this.oauthCallback
|
||||||
|
})
|
||||||
|
|
||||||
|
return rsp.body
|
||||||
|
} catch (e) {
|
||||||
|
this.log.error('revokeOAuth failed', e)
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns oauth authorize url with IDENTIFY permission
|
||||||
|
// we only need IDENTIFY because we only use it for matching IDs from the bot
|
||||||
|
getAuthUrl (state: string): string {
|
||||||
|
return `https://discordapp.com/oauth2/authorize?client_id=${this.clientId}&redirect_uri=${this.oauthCallback}&response_type=code&scope=identify&state=${state}`
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns the bot join url with MANAGE_ROLES permission
|
||||||
|
// MANAGE_ROLES is the only permission we really need.
|
||||||
|
getBotJoinUrl (): string {
|
||||||
|
return `https://discordapp.com/oauth2/authorize?client_id=${this.clientId}&scope=bot&permissions=268435456`
|
||||||
|
}
|
||||||
|
|
||||||
|
mentionResponse (message: Message) {
|
||||||
|
message.channel.send(`🔰 Assign your roles here! ${this.appUrl}/s/${message.guild.id}`, { disableEveryone: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
_cmds () {
|
||||||
|
const cmds = [
|
||||||
|
{
|
||||||
|
regex: /say (.*)/,
|
||||||
|
handler (message, matches, r) {
|
||||||
|
r(matches[0])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
regex: /set username (.*)/,
|
||||||
|
async handler (message, matches) {
|
||||||
|
const { username } = this.client.user
|
||||||
|
await this.client.user.setUsername(matches[0])
|
||||||
|
message.channel.send(`Username changed from ${username} to ${matches[0]}`)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
regex: /stats/,
|
||||||
|
async handler (message, matches) {
|
||||||
|
const t = [
|
||||||
|
`**Stats** 📈`,
|
||||||
|
'',
|
||||||
|
`👩❤️👩 **Users Served:** ${this.client.guilds.reduce((acc, g) => acc + g.memberCount, 0)}`,
|
||||||
|
`🔰 **Servers:** ${this.client.guilds.size}`,
|
||||||
|
`💮 **Roles Seen:** ${this.client.guilds.reduce((acc, g) => acc + g.roles.size, 0)}`
|
||||||
|
]
|
||||||
|
message.channel.send(t.join('\n'))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
// prefix regex with ^ for ease of code
|
||||||
|
.map(({ regex, ...rest }) => ({ regex: new RegExp(`^${regex.source}`, regex.flags), ...rest }))
|
||||||
|
|
||||||
|
this.cmds = cmds
|
||||||
|
return cmds
|
||||||
|
}
|
||||||
|
|
||||||
|
async handleCommand (message: Message) {
|
||||||
|
const cmd = message.content.replace(`<@${this.client.user.id}> `, '')
|
||||||
|
this.log.debug(`got command from ${message.author.username}`, cmd)
|
||||||
|
for (let { regex, handler } of this.cmds) {
|
||||||
|
const match = regex.exec(cmd)
|
||||||
|
if (match !== null) {
|
||||||
|
this.log.debug('command accepted', { cmd, match })
|
||||||
|
try {
|
||||||
|
await handler.call(this, message, match.slice(1))
|
||||||
|
return
|
||||||
|
} catch (e) {
|
||||||
|
this.log.error('command errored', { e, cmd, message })
|
||||||
|
message.channel.send(`❌ **An error occured.** ${e}`)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// nothing matched?
|
||||||
|
this.mentionResponse(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
async issueChallenge (author: string) {
|
||||||
|
// Create a challenge
|
||||||
|
const chall = await this.ctx.auth.createDMChallenge(author)
|
||||||
|
|
||||||
|
const randomLines = [
|
||||||
|
'🐄 A yellow cow is only as bright as it lets itself be. ✨',
|
||||||
|
'‼ **Did you know?** On this day, at least one second ago, you were right here!',
|
||||||
|
'<:AkkoC8:437428070849314816> *Reticulating splines...*',
|
||||||
|
'Also, you look great today <:YumekoWink:439519270376964107>',
|
||||||
|
'btw, ur bright like a <:diamond:544665968631087125>',
|
||||||
|
`🌈 psst! pssssst! I'm an expensive bot, would you please spare some change? <https://ko-fi.com/roleypoly>`,
|
||||||
|
'📣 have suggestions? wanna help out? join my discord! <https://discord.gg/PWQUVsd>\n*(we\'re nice people, i swear!)*',
|
||||||
|
`🤖 this bot is at least ${Math.random() * 100}% LIT 🔥`,
|
||||||
|
'💖 wanna contribute to these witty lines? <https://discord.gg/PWQUVsd> suggest them on our discord!',
|
||||||
|
'🛠 I am completely open source, check me out!~ <https://github.com/kayteh/roleypoly>'
|
||||||
|
]
|
||||||
|
|
||||||
|
return ([
|
||||||
|
'**Hey there!** <a:StockKyaa:435353158462603266>',
|
||||||
|
'',
|
||||||
|
`Use this secret code: **${chall.human}**`,
|
||||||
|
`Or, click here: <${this.ctx.config.appUrl}/magic/${chall.magic}>`,
|
||||||
|
'',
|
||||||
|
'This code will self-destruct in 1 hour.',
|
||||||
|
'---',
|
||||||
|
randomLines[Math.floor(Math.random() * randomLines.length)]
|
||||||
|
].join('\n'))
|
||||||
|
}
|
||||||
|
|
||||||
|
handleDM (message: Message) {
|
||||||
|
switch (message.content.toLowerCase()) {
|
||||||
|
case 'login':
|
||||||
|
case 'auth':
|
||||||
|
case 'log in':
|
||||||
|
this.issueChallenge(message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
handleMessage (message: Message) {
|
||||||
|
if (message.author.bot) { // drop bot messages
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (message.channel.type === 'dm') {
|
||||||
|
// handle dm
|
||||||
|
return this.handleDM(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (message.mentions.users.has(this.client.user.id)) {
|
||||||
|
if (this.rootUsers.has(message.author.id)) {
|
||||||
|
this.handleCommand(message)
|
||||||
|
} else {
|
||||||
|
this.mentionResponse(message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async handleJoin (guild: Guild) {
|
||||||
|
await this.ctx.server.ensure(guild)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = DiscordService
|
||||||
|
*/
|
17
services/discord/botFetcher.js
Normal file
17
services/discord/botFetcher.js
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
// @flow
|
||||||
|
import type { IFetcher } from './types'
|
||||||
|
import type DiscordSvc from '../discord'
|
||||||
|
import type ErisClient from 'eris'
|
||||||
|
|
||||||
|
export default class BotFetcher implements IFetcher {
|
||||||
|
ctx: DiscordSvc
|
||||||
|
client: ErisClient
|
||||||
|
constructor (ctx: DiscordSvc) {
|
||||||
|
this.ctx = ctx
|
||||||
|
this.client = ctx.client
|
||||||
|
}
|
||||||
|
|
||||||
|
getUser = async (id: string) => this.client.users.get(id)
|
||||||
|
getMember = async (server: string, user: string) => this.client.guilds.get(server)?.members.get(user)
|
||||||
|
getGuild = async (server: string) => this.client.guilds.get(server)
|
||||||
|
}
|
36
services/discord/restFetcher.js
Normal file
36
services/discord/restFetcher.js
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
// @flow
|
||||||
|
import type { IFetcher } from './types'
|
||||||
|
import type DiscordSvc from '../discord'
|
||||||
|
import type ErisClient, { User, Member, Guild } from 'eris'
|
||||||
|
|
||||||
|
export default class BotFetcher implements IFetcher {
|
||||||
|
ctx: DiscordSvc
|
||||||
|
client: ErisClient
|
||||||
|
constructor (ctx: DiscordSvc) {
|
||||||
|
this.ctx = ctx
|
||||||
|
this.client = ctx.client
|
||||||
|
}
|
||||||
|
|
||||||
|
getUser = async (id: string): Promise<?User> => {
|
||||||
|
try {
|
||||||
|
return await this.client.getRESTUser(id)
|
||||||
|
} catch (e) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getMember = async (server: string, user: string): Promise<?Member> => {
|
||||||
|
try {
|
||||||
|
return await this.client.getRESTGuildMember(server, user)
|
||||||
|
} catch (e) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getGuild = async (server: string): Promise<?Guild> => {
|
||||||
|
try {
|
||||||
|
return await this.client.getRESTGuild(server)
|
||||||
|
} catch (e) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
14
services/discord/types.js
Normal file
14
services/discord/types.js
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
// @flow
|
||||||
|
import type {
|
||||||
|
User,
|
||||||
|
Member,
|
||||||
|
Guild
|
||||||
|
} from 'eris'
|
||||||
|
|
||||||
|
export interface IFetcher {
|
||||||
|
getUser: (id: string) => Promise<?User>;
|
||||||
|
|
||||||
|
getGuild: (id: string) => Promise<?Guild>;
|
||||||
|
|
||||||
|
getMember: (server: string, user: string) => Promise<?Member>;
|
||||||
|
}
|
|
@ -29,9 +29,10 @@ export type PresentableRole = {
|
||||||
|
|
||||||
export type PresentableServer = ServerModel & {
|
export type PresentableServer = ServerModel & {
|
||||||
id: string,
|
id: string,
|
||||||
gm: {
|
gm?: {
|
||||||
|
color: number | string,
|
||||||
nickname: string,
|
nickname: string,
|
||||||
color: string
|
roles: string[]
|
||||||
},
|
},
|
||||||
server: ServerSlug,
|
server: ServerSlug,
|
||||||
roles: ?PresentableRole[],
|
roles: ?PresentableRole[],
|
||||||
|
|
77
ui/components/role/Role.test.js
Normal file
77
ui/components/role/Role.test.js
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
/* eslint-env jest */
|
||||||
|
|
||||||
|
import * as React from 'react'
|
||||||
|
import renderer from 'react-test-renderer'
|
||||||
|
import { shallow } from 'enzyme'
|
||||||
|
import Role from './index'
|
||||||
|
|
||||||
|
describe('<Role />', () => {
|
||||||
|
it('renders correctly', () => {
|
||||||
|
const role = renderer.create(<Role role={{ name: 'Test Role', color: '#ffffff' }} />)
|
||||||
|
expect(role).toMatchSnapshot()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('triggers onToggle with new state', () => {
|
||||||
|
let changed = false
|
||||||
|
const role = shallow(
|
||||||
|
<Role
|
||||||
|
role={{ name: 'Test Role', color: '#ffffff' }}
|
||||||
|
onToggle={(next) => { changed = next }}
|
||||||
|
active={false}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
role.simulate('click')
|
||||||
|
expect(changed).toBe(true)
|
||||||
|
|
||||||
|
const role2 = shallow(
|
||||||
|
<Role
|
||||||
|
role={{ name: 'Test Role', color: '#ffffff' }}
|
||||||
|
onToggle={(next) => { changed = next }}
|
||||||
|
active
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
role2.simulate('click')
|
||||||
|
expect(changed).toBe(false)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('fixes colors when they are not set', () => {
|
||||||
|
const role = shallow(<Role role={{ name: 'Test Role', color: 0 }} />)
|
||||||
|
expect(role.props().style['--role-color-base']).toEqual('hsl(0, 0%, 93.7%)')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('has a single space for a name when empty', () => {
|
||||||
|
const role = shallow(<Role role={{ name: '', color: '#ffffff' }} />)
|
||||||
|
expect(role.text()).toEqual(' ')
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('when disabled,', () => {
|
||||||
|
it('handles touch hover events', () => {
|
||||||
|
const role = shallow(<Role role={{ name: 'unsafe role', color: '#ffffff' }} disabled />)
|
||||||
|
|
||||||
|
role.simulate('touchstart')
|
||||||
|
expect(role.state().hovering).toEqual(true)
|
||||||
|
expect(role.html()).toMatchSnapshot() // expecting tooltip
|
||||||
|
expect(role.exists('tooltip')).toEqual(true)
|
||||||
|
|
||||||
|
role.simulate('touchend')
|
||||||
|
expect(role.state().hovering).toEqual(false)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('does not trigger onToggle on click', () => {
|
||||||
|
let changed = false
|
||||||
|
const role = shallow(
|
||||||
|
<Role
|
||||||
|
role={{ name: 'Test Role', color: '#ffffff' }}
|
||||||
|
onToggle={() => { changed = true }}
|
||||||
|
active={changed}
|
||||||
|
disabled
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
expect(role.html()).toMatchSnapshot()
|
||||||
|
role.simulate('click')
|
||||||
|
|
||||||
|
expect(role.html()).toBe(role.html())
|
||||||
|
expect(changed).toBe(false)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
25
ui/components/role/__snapshots__/Role.test.js.snap
Normal file
25
ui/components/role/__snapshots__/Role.test.js.snap
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`<Role /> renders correctly 1`] = `
|
||||||
|
<div
|
||||||
|
className="rolestyled-r4hjov-0 kfzQxT"
|
||||||
|
onClick={[Function]}
|
||||||
|
onTouchEnd={null}
|
||||||
|
onTouchStart={null}
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"--role-color-active": "hsl(0, 0%, 100%)",
|
||||||
|
"--role-color-base": "hsl(0, 0%, 100%)",
|
||||||
|
"--role-color-outline": "hsla(0, 0%, 100%, 0.7)",
|
||||||
|
"--role-color-outline-alt": "hsla(0, 0%, 100%, 0.4)",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
title={null}
|
||||||
|
>
|
||||||
|
Test Role
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`<Role /> when disabled, does not trigger onToggle on click 1`] = `"<div disabled=\\"\\" style=\\"--role-color-outline:hsla(0, 0%, 100%, 0.7);--role-color-outline-alt:hsla(0, 0%, 100%, 0.4);--role-color-active:hsl(0, 0%, 100%);--role-color-base:hsl(0, 0%, 100%)\\" title=\\"This role has unsafe permissions.\\" class=\\"rolestyled-r4hjov-0 kfzQxT\\">Test Role</div>"`;
|
||||||
|
|
||||||
|
exports[`<Role /> when disabled, handles touch hover events 1`] = `"<div disabled=\\"\\" style=\\"--role-color-outline:hsla(0, 0%, 100%, 0.7);--role-color-outline-alt:hsla(0, 0%, 100%, 0.4);--role-color-active:hsl(0, 0%, 100%);--role-color-base:hsl(0, 0%, 100%)\\" title=\\"This role has unsafe permissions.\\" class=\\"rolestyled-r4hjov-0 kfzQxT\\">unsafe role<div class=\\"tooltip-aykj5z-0 euOEXl\\">This role has unsafe permissions.</div></div>"`;
|
3
ui/components/role/__snapshots__/demo.test.js.snap
Normal file
3
ui/components/role/__snapshots__/demo.test.js.snap
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`<RoleDemo /> renders 1`] = `"<div style=\\"--role-color-outline:hsla(0, 0%, 100%, 0.7);--role-color-outline-alt:hsla(0, 0%, 100%, 0.4);--role-color-active:hsl(0, 0%, 100%);--role-color-base:hsl(0, 0%, 100%)\\" class=\\"rolestyled-r4hjov-0 kfzQxT\\">test demo role</div>"`;
|
18
ui/components/role/demo.test.js
Normal file
18
ui/components/role/demo.test.js
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/* eslint-env jest */
|
||||||
|
import * as React from 'react'
|
||||||
|
import { shallow } from 'enzyme'
|
||||||
|
import RoleDemo from './demo'
|
||||||
|
|
||||||
|
describe('<RoleDemo />', () => {
|
||||||
|
it('renders', () => {
|
||||||
|
const demo = shallow(<RoleDemo role={{ name: 'test demo role', color: '#ffffff' }} />)
|
||||||
|
expect(demo.html()).toMatchSnapshot()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('changes state when clicked', () => {
|
||||||
|
const demo = shallow(<RoleDemo role={{ name: 'test demo role', color: '#ffffff' }} />)
|
||||||
|
expect(demo.state().active).toEqual(false)
|
||||||
|
demo.dive().simulate('click')
|
||||||
|
expect(demo.state().active).toEqual(true)
|
||||||
|
})
|
||||||
|
})
|
|
@ -68,7 +68,7 @@ export default class Role extends React.Component<RoleProps, RoleState> {
|
||||||
'base': Color(color).hsl().string()
|
'base': Color(color).hsl().string()
|
||||||
}
|
}
|
||||||
|
|
||||||
const name = (this.props.role.name !== '') ? this.props.role.name : <> </>
|
const name = (this.props.role.name !== '') ? this.props.role.name : ' '
|
||||||
|
|
||||||
return <RoleStyled
|
return <RoleStyled
|
||||||
active={this.props.active}
|
active={this.props.active}
|
||||||
|
|
19
ui/kit/__test__/__snapshots__/media.test.js.snap
Normal file
19
ui/kit/__test__/__snapshots__/media.test.js.snap
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`MediaQuery outputs media queries 1`] = `
|
||||||
|
"@media screen and (min-width: 0px) {
|
||||||
|
font-size: 0.5em;
|
||||||
|
};
|
||||||
|
@media screen and (min-width: 544px) {
|
||||||
|
font-size: 1em;
|
||||||
|
};
|
||||||
|
@media screen and (min-width: 768px) {
|
||||||
|
font-size: 1.5em;
|
||||||
|
};
|
||||||
|
@media screen and (min-width: 1012px) {
|
||||||
|
font-size: 2em;
|
||||||
|
};
|
||||||
|
@media screen and (min-width: 1280px) {
|
||||||
|
font-size: 2.5em;
|
||||||
|
};"
|
||||||
|
`;
|
16
ui/kit/__test__/media.test.js
Normal file
16
ui/kit/__test__/media.test.js
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
/* eslint-env jest */
|
||||||
|
import MediaQuery from '../media'
|
||||||
|
|
||||||
|
describe('MediaQuery', () => {
|
||||||
|
it('outputs media queries', () => {
|
||||||
|
const mq = MediaQuery({
|
||||||
|
xs: 'font-size: 0.5em;',
|
||||||
|
sm: 'font-size: 1em;',
|
||||||
|
md: 'font-size: 1.5em;',
|
||||||
|
lg: 'font-size: 2em;',
|
||||||
|
xl: 'font-size: 2.5em;'
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(mq).toMatchSnapshot()
|
||||||
|
})
|
||||||
|
})
|
|
@ -92,7 +92,7 @@ class Server extends React.Component<ServerPageProps> {
|
||||||
<title key='title'>{currentServer.server.name} - Roleypoly</title>
|
<title key='title'>{currentServer.server.name} - Roleypoly</title>
|
||||||
</Head>
|
</Head>
|
||||||
{ this.renderSocial() }
|
{ this.renderSocial() }
|
||||||
hello <span style={{ color: currentServer.gm.color }}>{currentServer.gm.nickname}</span> on {currentServer.server.name} ({ view.dirty ? 'dirty' : 'clean' })
|
hello <span style={{ color: currentServer.gm?.color }}>{currentServer.gm?.nickname}</span> on {currentServer.server.name} ({ view.dirty ? 'dirty' : 'clean' })
|
||||||
<Hider visible={true || currentServer.id !== null}>
|
<Hider visible={true || currentServer.id !== null}>
|
||||||
{ !view.invalidated && view.categories.map(c => <Category key={`cat__${c.name}__${c.id}`}>
|
{ !view.invalidated && view.categories.map(c => <Category key={`cat__${c.name}__${c.id}`}>
|
||||||
<div>{ c.name }</div>
|
<div>{ c.name }</div>
|
||||||
|
|
4
ui/setupTests.js
Normal file
4
ui/setupTests.js
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
import { configure } from 'enzyme'
|
||||||
|
import Adapter from 'enzyme-adapter-react-16'
|
||||||
|
|
||||||
|
configure({ adapter: new Adapter() })
|
|
@ -1,6 +1,7 @@
|
||||||
// @flow
|
// @flow
|
||||||
// import { action } from './servers'
|
// import { action } from './servers'
|
||||||
import { namespaceConfig } from 'fast-redux'
|
import { namespaceConfig } from 'fast-redux'
|
||||||
|
// $FlowFixMe
|
||||||
import { OrderedMap, OrderedSet, Set } from 'immutable'
|
import { OrderedMap, OrderedSet, Set } from 'immutable'
|
||||||
import { getCurrentServerState, type ServerState } from './currentServer'
|
import { getCurrentServerState, type ServerState } from './currentServer'
|
||||||
|
|
||||||
|
@ -102,5 +103,5 @@ export const renderRoles = (id: string) => (dispatch: *, getState: *) => {
|
||||||
render = render.add(getUncategorized(roleMap, render.toSet()))
|
render = render.add(getUncategorized(roleMap, render.toSet()))
|
||||||
render = render.sortBy(h => (h.position) ? h.position : h.name)
|
render = render.sortBy(h => (h.position) ? h.position : h.name)
|
||||||
|
|
||||||
dispatch(updateCurrentView({ server: id, categories: render, invalidated: false, selected: Set(current.gm.roles), originalSelected: Set(current.gm.roles) }))
|
dispatch(updateCurrentView({ server: id, categories: render, invalidated: false, selected: Set(current.gm?.roles), originalSelected: Set(current.gm?.roles) }))
|
||||||
}
|
}
|
||||||
|
|
81
util/rpcrepl.js
Normal file
81
util/rpcrepl.js
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
import dotenv from 'dotenv'
|
||||||
|
import repl from 'repl'
|
||||||
|
import os from 'os'
|
||||||
|
import { addAwaitOutsideToReplServer } from 'await-outside'
|
||||||
|
import Roleypoly from '../Roleypoly'
|
||||||
|
import chokidar from 'chokidar'
|
||||||
|
import logger from '../logger'
|
||||||
|
process.env.DEBUG = false
|
||||||
|
process.env.IS_BOT = false
|
||||||
|
|
||||||
|
dotenv.config()
|
||||||
|
|
||||||
|
const log = logger(__filename)
|
||||||
|
|
||||||
|
const RP = new Roleypoly(null, null)
|
||||||
|
const reset = async (r) => {
|
||||||
|
await RP.awaitServices()
|
||||||
|
|
||||||
|
r.context.RP = RP
|
||||||
|
|
||||||
|
r.context.ctx = { session: { userId: RP.ctx.discord.cfg.rootUsers.values().next().value } }
|
||||||
|
r.context.guest = { session: {} }
|
||||||
|
|
||||||
|
r.context.g_rpc = {}
|
||||||
|
r.context.rpc = {}
|
||||||
|
r.context.reload = () => {
|
||||||
|
RP.ctx.RPC.reload()
|
||||||
|
r.context.$RPC = RP.ctx.RPC.rpcMap
|
||||||
|
for (let fn in r.context.$RPC) {
|
||||||
|
r.context.g_rpc[fn] = r.context.$RPC[fn].bind(null, r.context.guest)
|
||||||
|
r.context.rpc[fn] = r.context.$RPC[fn].bind(null, r.context.ctx)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r.context.reload()
|
||||||
|
}
|
||||||
|
|
||||||
|
const motd = () => {
|
||||||
|
console.log(`~~ Roleypoly RPC REPL.
|
||||||
|
\`ctx\` a mocked koa context, defaulting to first root user.
|
||||||
|
\`rpc\` maps to all rpc functions, prefilled with ctx.
|
||||||
|
|
||||||
|
\`guest\` maps to a mock guest sessioned koa context.
|
||||||
|
\`g_rpc\` maps to all rpc, prefilled with guest.
|
||||||
|
|
||||||
|
\`$RPC\` maps to all rpc functions as they are.
|
||||||
|
\`RP\` maps to the Roleypoly app. It does NOT have HTTP stuff running.
|
||||||
|
\`reload()\` to refresh RPC functions.
|
||||||
|
\`reset()\` to reset this REPL.
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
|
const start = async () => {
|
||||||
|
if (repl.REPLServer.prototype.setupHistory == null) {
|
||||||
|
console.log(' * History is available on node v11.10.0 and newer.\n')
|
||||||
|
}
|
||||||
|
const r = repl.start('> ')
|
||||||
|
addAwaitOutsideToReplServer(r)
|
||||||
|
r.setupHistory && r.setupHistory(os.homedir() + '/.ROLEYPOLY_RPCREPL_HISTORY', (e) => e && console.error(e))
|
||||||
|
r.context.reset = async () => {
|
||||||
|
await reset(r)
|
||||||
|
motd()
|
||||||
|
r.displayPrompt()
|
||||||
|
}
|
||||||
|
|
||||||
|
await r.context.reset()
|
||||||
|
const rpcWatcher = chokidar.watch('rpc/**', { persistent: true })
|
||||||
|
rpcWatcher.on('ready', () => {
|
||||||
|
rpcWatcher.on('all', (_, path) => {
|
||||||
|
if (r.context.reload) r.context.reload()
|
||||||
|
log.info('reloaded RPCs')
|
||||||
|
r.displayPrompt()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
start().catch(e => console.error(e))
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
}
|
530
yarn.lock
530
yarn.lock
|
@ -1330,10 +1330,10 @@
|
||||||
universal-user-agent "^2.0.0"
|
universal-user-agent "^2.0.0"
|
||||||
url-template "^2.0.8"
|
url-template "^2.0.8"
|
||||||
|
|
||||||
"@primer/components@^12.0.0":
|
"@primer/components@^12.0.1":
|
||||||
version "12.0.0"
|
version "12.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@primer/components/-/components-12.0.0.tgz#662b5322602cf715d821287a191678c88e993fe2"
|
resolved "https://registry.yarnpkg.com/@primer/components/-/components-12.0.1.tgz#bf3e457afd123ccb82747bc543a7921bcf31d379"
|
||||||
integrity sha512-kzqUQzCV2/oeZ2m953fWt3whtVLo8Dc801fju2NsUl+h9NemtQph+n0FDAKb4UaXLTfNUb2rXlnHHeU/Ab5SVw==
|
integrity sha512-jbDLF8xno8+cdfg18wXl+wjE9wyE0u6MISw2Q1M47QV2IK6ZbHYMGcywJGAxFD2kXurX/4qfrIo0zfzwXRzEQw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@githubprimer/octicons-react" "8.1.2"
|
"@githubprimer/octicons-react" "8.1.2"
|
||||||
babel-plugin-macros "2.4.2"
|
babel-plugin-macros "2.4.2"
|
||||||
|
@ -1765,6 +1765,11 @@ array-equal@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
|
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
|
||||||
integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
|
integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
|
||||||
|
|
||||||
|
array-filter@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83"
|
||||||
|
integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=
|
||||||
|
|
||||||
array-filter@~0.0.0:
|
array-filter@~0.0.0:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
|
resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
|
||||||
|
@ -1805,6 +1810,15 @@ array-unique@^0.3.2:
|
||||||
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
|
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
|
||||||
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
|
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
|
||||||
|
|
||||||
|
array.prototype.flat@^1.2.1:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz#812db8f02cad24d3fab65dd67eabe3b8903494a4"
|
||||||
|
integrity sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw==
|
||||||
|
dependencies:
|
||||||
|
define-properties "^1.1.2"
|
||||||
|
es-abstract "^1.10.0"
|
||||||
|
function-bind "^1.1.1"
|
||||||
|
|
||||||
arraybuffer.slice@~0.0.7:
|
arraybuffer.slice@~0.0.7:
|
||||||
version "0.0.7"
|
version "0.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
|
resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
|
||||||
|
@ -1875,6 +1889,14 @@ async-sema@2.1.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
double-ended-queue "2.1.0-0"
|
double-ended-queue "2.1.0-0"
|
||||||
|
|
||||||
|
async-to-gen@~1.3.2:
|
||||||
|
version "1.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/async-to-gen/-/async-to-gen-1.3.3.tgz#d52c9fb4801f0df44abc4d2de1870b48b60e20bb"
|
||||||
|
integrity sha1-1SyftIAfDfRKvE0t4YcLSLYOILs=
|
||||||
|
dependencies:
|
||||||
|
babylon "^6.14.0"
|
||||||
|
magic-string "^0.19.0"
|
||||||
|
|
||||||
async@^2.6.1:
|
async@^2.6.1:
|
||||||
version "2.6.2"
|
version "2.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381"
|
resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381"
|
||||||
|
@ -1908,6 +1930,13 @@ autodll-webpack-plugin@0.4.2:
|
||||||
webpack-merge "^4.1.0"
|
webpack-merge "^4.1.0"
|
||||||
webpack-sources "^1.0.1"
|
webpack-sources "^1.0.1"
|
||||||
|
|
||||||
|
await-outside@^2.1.2:
|
||||||
|
version "2.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/await-outside/-/await-outside-2.1.2.tgz#134e7c357c381522b04941abce271000b733b45f"
|
||||||
|
integrity sha1-E058NXw4FSKwSUGrzicQALcztF8=
|
||||||
|
dependencies:
|
||||||
|
async-to-gen "~1.3.2"
|
||||||
|
|
||||||
aws-sign2@~0.7.0:
|
aws-sign2@~0.7.0:
|
||||||
version "0.7.0"
|
version "0.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
|
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
|
||||||
|
@ -2064,6 +2093,11 @@ babel-types@6.26.0:
|
||||||
lodash "^4.17.4"
|
lodash "^4.17.4"
|
||||||
to-fast-properties "^1.0.3"
|
to-fast-properties "^1.0.3"
|
||||||
|
|
||||||
|
babylon@^6.14.0:
|
||||||
|
version "6.18.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
|
||||||
|
integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
|
||||||
|
|
||||||
backo2@1.0.2:
|
backo2@1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
|
resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
|
||||||
|
@ -2074,7 +2108,7 @@ balanced-match@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||||
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
||||||
|
|
||||||
base-convert-int-array@^1.0.0:
|
base-convert-int-array@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/base-convert-int-array/-/base-convert-int-array-1.0.1.tgz#5b4ddbfa72d2d3b5f75dd86cd32fe3dc8e7e81fe"
|
resolved "https://registry.yarnpkg.com/base-convert-int-array/-/base-convert-int-array-1.0.1.tgz#5b4ddbfa72d2d3b5f75dd86cd32fe3dc8e7e81fe"
|
||||||
integrity sha512-NWqzaoXx8L/SS32R+WmKqnQkVXVYl2PwNJ68QV3RAlRRL1uV+yxJT66abXI1cAvqCXQTyXr7/9NN4Af90/zDVw==
|
integrity sha512-NWqzaoXx8L/SS32R+WmKqnQkVXVYl2PwNJ68QV3RAlRRL1uV+yxJT66abXI1cAvqCXQTyXr7/9NN4Af90/zDVw==
|
||||||
|
@ -2204,6 +2238,11 @@ bodymovin@^4.13.0:
|
||||||
resolved "https://registry.yarnpkg.com/bodymovin/-/bodymovin-4.13.0.tgz#06d97c0130e2334dccb33bea638136f88a74540b"
|
resolved "https://registry.yarnpkg.com/bodymovin/-/bodymovin-4.13.0.tgz#06d97c0130e2334dccb33bea638136f88a74540b"
|
||||||
integrity sha1-Btl8ATDiM03MszvqY4E2+Ip0VAs=
|
integrity sha1-Btl8ATDiM03MszvqY4E2+Ip0VAs=
|
||||||
|
|
||||||
|
boolbase@~1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
|
||||||
|
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
|
||||||
|
|
||||||
brace-expansion@^1.1.7:
|
brace-expansion@^1.1.7:
|
||||||
version "1.1.11"
|
version "1.1.11"
|
||||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||||
|
@ -2588,7 +2627,19 @@ charenc@~0.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
|
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
|
||||||
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
|
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
|
||||||
|
|
||||||
chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.1.2:
|
cheerio@^1.0.0-rc.2:
|
||||||
|
version "1.0.0-rc.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db"
|
||||||
|
integrity sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=
|
||||||
|
dependencies:
|
||||||
|
css-select "~1.2.0"
|
||||||
|
dom-serializer "~0.1.0"
|
||||||
|
entities "~1.1.1"
|
||||||
|
htmlparser2 "^3.9.1"
|
||||||
|
lodash "^4.15.0"
|
||||||
|
parse5 "^3.0.1"
|
||||||
|
|
||||||
|
chokidar@^2.0.2, chokidar@^2.0.3:
|
||||||
version "2.1.2"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz#9c23ea40b01638439e0513864d362aeacc5ad058"
|
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz#9c23ea40b01638439e0513864d362aeacc5ad058"
|
||||||
integrity sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==
|
integrity sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==
|
||||||
|
@ -2607,6 +2658,25 @@ chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.1.2:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "^1.2.7"
|
fsevents "^1.2.7"
|
||||||
|
|
||||||
|
chokidar@^2.1.5:
|
||||||
|
version "2.1.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d"
|
||||||
|
integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==
|
||||||
|
dependencies:
|
||||||
|
anymatch "^2.0.0"
|
||||||
|
async-each "^1.0.1"
|
||||||
|
braces "^2.3.2"
|
||||||
|
glob-parent "^3.1.0"
|
||||||
|
inherits "^2.0.3"
|
||||||
|
is-binary-path "^1.0.0"
|
||||||
|
is-glob "^4.0.0"
|
||||||
|
normalize-path "^3.0.0"
|
||||||
|
path-is-absolute "^1.0.0"
|
||||||
|
readdirp "^2.2.1"
|
||||||
|
upath "^1.1.1"
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents "^1.2.7"
|
||||||
|
|
||||||
chownr@^1.0.1, chownr@^1.1.1:
|
chownr@^1.0.1, chownr@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
|
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
|
||||||
|
@ -2763,7 +2833,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
|
||||||
dependencies:
|
dependencies:
|
||||||
delayed-stream "~1.0.0"
|
delayed-stream "~1.0.0"
|
||||||
|
|
||||||
commander@^2.8.1, commander@~2.19.0:
|
commander@^2.19.0, commander@^2.8.1, commander@~2.19.0:
|
||||||
version "2.19.0"
|
version "2.19.0"
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
|
||||||
integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
|
integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
|
||||||
|
@ -2788,7 +2858,7 @@ component-bind@1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
|
resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
|
||||||
integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=
|
integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=
|
||||||
|
|
||||||
component-emitter@1.2.1, component-emitter@^1.2.0, component-emitter@^1.2.1:
|
component-emitter@1.2.1, component-emitter@^1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
|
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
|
||||||
integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
|
integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
|
||||||
|
@ -3025,6 +3095,16 @@ css-color-keywords@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
|
resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
|
||||||
integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=
|
integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=
|
||||||
|
|
||||||
|
css-select@~1.2.0:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
|
||||||
|
integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
|
||||||
|
dependencies:
|
||||||
|
boolbase "~1.0.0"
|
||||||
|
css-what "2.1"
|
||||||
|
domutils "1.5.1"
|
||||||
|
nth-check "~1.0.1"
|
||||||
|
|
||||||
css-to-react-native@^2.2.2:
|
css-to-react-native@^2.2.2:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.3.0.tgz#bf80d24ec4a08e430306ef429c0586e6ed5485f7"
|
resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.3.0.tgz#bf80d24ec4a08e430306ef429c0586e6ed5485f7"
|
||||||
|
@ -3034,6 +3114,11 @@ css-to-react-native@^2.2.2:
|
||||||
css-color-keywords "^1.0.0"
|
css-color-keywords "^1.0.0"
|
||||||
postcss-value-parser "^3.3.0"
|
postcss-value-parser "^3.3.0"
|
||||||
|
|
||||||
|
css-what@2.1:
|
||||||
|
version "2.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
|
||||||
|
integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
|
||||||
|
|
||||||
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
|
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
|
||||||
version "0.3.6"
|
version "0.3.6"
|
||||||
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad"
|
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad"
|
||||||
|
@ -3163,7 +3248,7 @@ default-require-extensions@^2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
strip-bom "^3.0.0"
|
strip-bom "^3.0.0"
|
||||||
|
|
||||||
define-properties@^1.1.2:
|
define-properties@^1.1.2, define-properties@^1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
||||||
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
|
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
|
||||||
|
@ -3291,6 +3376,11 @@ diffie-hellman@^5.0.0:
|
||||||
miller-rabin "^4.0.0"
|
miller-rabin "^4.0.0"
|
||||||
randombytes "^2.0.0"
|
randombytes "^2.0.0"
|
||||||
|
|
||||||
|
discontinuous-range@1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a"
|
||||||
|
integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=
|
||||||
|
|
||||||
doctrine@1.5.0:
|
doctrine@1.5.0:
|
||||||
version "1.5.0"
|
version "1.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
|
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
|
||||||
|
@ -3306,11 +3396,24 @@ doctrine@^2.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
esutils "^2.0.2"
|
esutils "^2.0.2"
|
||||||
|
|
||||||
|
dom-serializer@0, dom-serializer@~0.1.0:
|
||||||
|
version "0.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
|
||||||
|
integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
|
||||||
|
dependencies:
|
||||||
|
domelementtype "^1.3.0"
|
||||||
|
entities "^1.1.1"
|
||||||
|
|
||||||
domain-browser@^1.1.1:
|
domain-browser@^1.1.1:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
|
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
|
||||||
integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
|
integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
|
||||||
|
|
||||||
|
domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
|
||||||
|
version "1.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
|
||||||
|
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
|
||||||
|
|
||||||
domexception@^1.0.1:
|
domexception@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
|
resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
|
||||||
|
@ -3318,6 +3421,29 @@ domexception@^1.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
webidl-conversions "^4.0.2"
|
webidl-conversions "^4.0.2"
|
||||||
|
|
||||||
|
domhandler@^2.3.0:
|
||||||
|
version "2.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
|
||||||
|
integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
|
||||||
|
dependencies:
|
||||||
|
domelementtype "1"
|
||||||
|
|
||||||
|
domutils@1.5.1:
|
||||||
|
version "1.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
|
||||||
|
integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
|
||||||
|
dependencies:
|
||||||
|
dom-serializer "0"
|
||||||
|
domelementtype "1"
|
||||||
|
|
||||||
|
domutils@^1.5.1:
|
||||||
|
version "1.7.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
|
||||||
|
integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
|
||||||
|
dependencies:
|
||||||
|
dom-serializer "0"
|
||||||
|
domelementtype "1"
|
||||||
|
|
||||||
dotenv@^7.0.0:
|
dotenv@^7.0.0:
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c"
|
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c"
|
||||||
|
@ -3462,6 +3588,62 @@ enhanced-resolve@^4.1.0:
|
||||||
memory-fs "^0.4.0"
|
memory-fs "^0.4.0"
|
||||||
tapable "^1.0.0"
|
tapable "^1.0.0"
|
||||||
|
|
||||||
|
entities@^1.1.1, entities@~1.1.1:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
|
||||||
|
integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
|
||||||
|
|
||||||
|
enzyme-adapter-react-16@^1.11.2:
|
||||||
|
version "1.11.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.11.2.tgz#8efeafb27e96873a5492fdef3f423693182eb9d4"
|
||||||
|
integrity sha512-2ruTTCPRb0lPuw/vKTXGVZVBZqh83MNDnakMhzxhpJcIbneEwNy2Cv0KvL97pl57/GOazJHflWNLjwWhex5AAA==
|
||||||
|
dependencies:
|
||||||
|
enzyme-adapter-utils "^1.10.1"
|
||||||
|
object.assign "^4.1.0"
|
||||||
|
object.values "^1.1.0"
|
||||||
|
prop-types "^15.7.2"
|
||||||
|
react-is "^16.8.4"
|
||||||
|
react-test-renderer "^16.0.0-0"
|
||||||
|
semver "^5.6.0"
|
||||||
|
|
||||||
|
enzyme-adapter-utils@^1.10.1:
|
||||||
|
version "1.10.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.10.1.tgz#58264efa19a7befdbf964fb7981a108a5452ac96"
|
||||||
|
integrity sha512-oasinhhLoBuZsIkTe8mx0HiudtfErUtG0Ooe1FOplu/t4c9rOmyG5gtrBASK6u4whHIRWvv0cbZMElzNTR21SA==
|
||||||
|
dependencies:
|
||||||
|
function.prototype.name "^1.1.0"
|
||||||
|
object.assign "^4.1.0"
|
||||||
|
object.fromentries "^2.0.0"
|
||||||
|
prop-types "^15.7.2"
|
||||||
|
semver "^5.6.0"
|
||||||
|
|
||||||
|
enzyme@^3.9.0:
|
||||||
|
version "3.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.9.0.tgz#2b491f06ca966eb56b6510068c7894a7e0be3909"
|
||||||
|
integrity sha512-JqxI2BRFHbmiP7/UFqvsjxTirWoM1HfeaJrmVSZ9a1EADKkZgdPcAuISPMpoUiHlac9J4dYt81MC5BBIrbJGMg==
|
||||||
|
dependencies:
|
||||||
|
array.prototype.flat "^1.2.1"
|
||||||
|
cheerio "^1.0.0-rc.2"
|
||||||
|
function.prototype.name "^1.1.0"
|
||||||
|
has "^1.0.3"
|
||||||
|
html-element-map "^1.0.0"
|
||||||
|
is-boolean-object "^1.0.0"
|
||||||
|
is-callable "^1.1.4"
|
||||||
|
is-number-object "^1.0.3"
|
||||||
|
is-regex "^1.0.4"
|
||||||
|
is-string "^1.0.4"
|
||||||
|
is-subset "^0.1.1"
|
||||||
|
lodash.escape "^4.0.1"
|
||||||
|
lodash.isequal "^4.5.0"
|
||||||
|
object-inspect "^1.6.0"
|
||||||
|
object-is "^1.0.1"
|
||||||
|
object.assign "^4.1.0"
|
||||||
|
object.entries "^1.0.4"
|
||||||
|
object.values "^1.0.4"
|
||||||
|
raf "^3.4.0"
|
||||||
|
rst-selector-parser "^2.2.3"
|
||||||
|
string.prototype.trim "^1.1.2"
|
||||||
|
|
||||||
eris@^0.9.0:
|
eris@^0.9.0:
|
||||||
version "0.9.0"
|
version "0.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/eris/-/eris-0.9.0.tgz#a2796839f7768cd40645c2c6b1bf0c86ba3147f3"
|
resolved "https://registry.yarnpkg.com/eris/-/eris-0.9.0.tgz#a2796839f7768cd40645c2c6b1bf0c86ba3147f3"
|
||||||
|
@ -3498,18 +3680,7 @@ error-inject@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37"
|
resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37"
|
||||||
integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=
|
integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=
|
||||||
|
|
||||||
es-abstract@^1.4.3:
|
es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.7.0:
|
||||||
version "1.12.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
|
|
||||||
integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==
|
|
||||||
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-abstract@^1.5.1, es-abstract@^1.7.0:
|
|
||||||
version "1.13.0"
|
version "1.13.0"
|
||||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
|
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
|
||||||
integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
|
integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
|
||||||
|
@ -3521,6 +3692,17 @@ es-abstract@^1.5.1, es-abstract@^1.7.0:
|
||||||
is-regex "^1.0.4"
|
is-regex "^1.0.4"
|
||||||
object-keys "^1.0.12"
|
object-keys "^1.0.12"
|
||||||
|
|
||||||
|
es-abstract@^1.4.3:
|
||||||
|
version "1.12.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
|
||||||
|
integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==
|
||||||
|
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, es-to-primitive@^1.2.0:
|
es-to-primitive@^1.1.1, es-to-primitive@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
|
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
|
||||||
|
@ -4094,7 +4276,7 @@ form-data@^2.3.3, form-data@~2.3.2:
|
||||||
combined-stream "^1.0.6"
|
combined-stream "^1.0.6"
|
||||||
mime-types "^2.1.12"
|
mime-types "^2.1.12"
|
||||||
|
|
||||||
formidable@^1.2.0:
|
formidable@^1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659"
|
resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659"
|
||||||
integrity sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==
|
integrity sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==
|
||||||
|
@ -4183,6 +4365,15 @@ function-bind@^1.0.2, function-bind@^1.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||||
|
|
||||||
|
function.prototype.name@^1.1.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327"
|
||||||
|
integrity sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==
|
||||||
|
dependencies:
|
||||||
|
define-properties "^1.1.2"
|
||||||
|
function-bind "^1.1.1"
|
||||||
|
is-callable "^1.1.3"
|
||||||
|
|
||||||
functional-red-black-tree@^1.0.1:
|
functional-red-black-tree@^1.0.1:
|
||||||
version "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"
|
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
|
||||||
|
@ -4500,6 +4691,13 @@ hosted-git-info@^2.1.4:
|
||||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
|
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
|
||||||
integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
|
integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
|
||||||
|
|
||||||
|
html-element-map@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.0.1.tgz#3c4fcb4874ebddfe4283b51c8994e7713782b592"
|
||||||
|
integrity sha512-BZSfdEm6n706/lBfXKWa4frZRZcT5k1cOusw95ijZsHlI+GdgY0v95h6IzO3iIDf2ROwq570YTwqNPqHcNMozw==
|
||||||
|
dependencies:
|
||||||
|
array-filter "^1.0.0"
|
||||||
|
|
||||||
html-encoding-sniffer@^1.0.2:
|
html-encoding-sniffer@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
|
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
|
||||||
|
@ -4512,6 +4710,18 @@ html-entities@^1.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
|
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
|
||||||
integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
|
integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
|
||||||
|
|
||||||
|
htmlparser2@^3.9.1:
|
||||||
|
version "3.10.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
|
||||||
|
integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
|
||||||
|
dependencies:
|
||||||
|
domelementtype "^1.3.1"
|
||||||
|
domhandler "^2.3.0"
|
||||||
|
domutils "^1.5.1"
|
||||||
|
entities "^1.1.1"
|
||||||
|
inherits "^2.0.1"
|
||||||
|
readable-stream "^3.1.1"
|
||||||
|
|
||||||
http-assert@^1.3.0:
|
http-assert@^1.3.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.4.0.tgz#0e550b4fca6adf121bbeed83248c17e62f593a9a"
|
resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.4.0.tgz#0e550b4fca6adf121bbeed83248c17e62f593a9a"
|
||||||
|
@ -4771,6 +4981,11 @@ is-bluebird@^1.0.2:
|
||||||
resolved "https://registry.yarnpkg.com/is-bluebird/-/is-bluebird-1.0.2.tgz#096439060f4aa411abee19143a84d6a55346d6e2"
|
resolved "https://registry.yarnpkg.com/is-bluebird/-/is-bluebird-1.0.2.tgz#096439060f4aa411abee19143a84d6a55346d6e2"
|
||||||
integrity sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI=
|
integrity sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI=
|
||||||
|
|
||||||
|
is-boolean-object@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93"
|
||||||
|
integrity sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=
|
||||||
|
|
||||||
is-buffer@^1.1.5, is-buffer@~1.1.1:
|
is-buffer@^1.1.5, is-buffer@~1.1.1:
|
||||||
version "1.1.6"
|
version "1.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
||||||
|
@ -4900,6 +5115,11 @@ is-glob@^4.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
is-extglob "^2.1.1"
|
is-extglob "^2.1.1"
|
||||||
|
|
||||||
|
is-number-object@^1.0.3:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799"
|
||||||
|
integrity sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=
|
||||||
|
|
||||||
is-number@^3.0.0:
|
is-number@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
|
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
|
||||||
|
@ -4970,6 +5190,16 @@ is-stream@^1.0.0, is-stream@^1.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||||
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
|
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
|
||||||
|
|
||||||
|
is-string@^1.0.4:
|
||||||
|
version "1.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64"
|
||||||
|
integrity sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=
|
||||||
|
|
||||||
|
is-subset@^0.1.1:
|
||||||
|
version "0.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
|
||||||
|
integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=
|
||||||
|
|
||||||
is-symbol@^1.0.2:
|
is-symbol@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
|
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
|
||||||
|
@ -5772,12 +6002,12 @@ kompression@^1.0.0:
|
||||||
koa-is-json "1.0.0"
|
koa-is-json "1.0.0"
|
||||||
statuses "1.4.0"
|
statuses "1.4.0"
|
||||||
|
|
||||||
ksuid@^1.1.3:
|
ksuid@^1.2.0:
|
||||||
version "1.1.3"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/ksuid/-/ksuid-1.1.3.tgz#1b06efb7e8072c24b18689c89a7cb3edf0dbb057"
|
resolved "https://registry.yarnpkg.com/ksuid/-/ksuid-1.2.0.tgz#72e1b367aee325439924f6a2c6ed522b47627ef8"
|
||||||
integrity sha512-vEqIZCSqBxQSsHuw13iDJno5AQ1hT/utiQAk0cyIKEA6udm8UDy63GIAI2BNLRTFWmBDB62TGu/Wc8Q0spi3pQ==
|
integrity sha512-8C+NFTrsHfUp1vPtc1aL1uD2/Fv7IBytdTkqfE6EfG5hNV4bbTAo2+QCGk060gZxUd7zjayObjzJJkyNEdk/+w==
|
||||||
dependencies:
|
dependencies:
|
||||||
base-convert-int-array "^1.0.0"
|
base-convert-int-array "^1.0.1"
|
||||||
string.prototype.padstart "^3.0.0"
|
string.prototype.padstart "^3.0.0"
|
||||||
|
|
||||||
launch-editor@2.2.1:
|
launch-editor@2.2.1:
|
||||||
|
@ -5907,17 +6137,32 @@ lodash.assign@^4.0.3, lodash.assign@^4.0.6:
|
||||||
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
|
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
|
||||||
integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=
|
integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=
|
||||||
|
|
||||||
|
lodash.escape@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98"
|
||||||
|
integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=
|
||||||
|
|
||||||
|
lodash.flattendeep@^4.4.0:
|
||||||
|
version "4.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
|
||||||
|
integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=
|
||||||
|
|
||||||
lodash.get@^4.4.2:
|
lodash.get@^4.4.2:
|
||||||
version "4.4.2"
|
version "4.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
|
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
|
||||||
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
|
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
|
||||||
|
|
||||||
|
lodash.isequal@^4.5.0:
|
||||||
|
version "4.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
|
||||||
|
integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
|
||||||
|
|
||||||
lodash.sortby@^4.7.0:
|
lodash.sortby@^4.7.0:
|
||||||
version "4.7.0"
|
version "4.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
||||||
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
|
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
|
||||||
|
|
||||||
lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0:
|
lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0:
|
||||||
version "4.17.11"
|
version "4.17.11"
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
|
||||||
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
|
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
|
||||||
|
@ -5954,6 +6199,13 @@ macos-release@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.0.0.tgz#7dddf4caf79001a851eb4fba7fb6034f251276ab"
|
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.0.0.tgz#7dddf4caf79001a851eb4fba7fb6034f251276ab"
|
||||||
integrity sha512-iCM3ZGeqIzlrH7KxYK+fphlJpCCczyHXc+HhRVbEu9uNTCrzYJjvvtefzeKTCVHd5AP/aD/fzC80JZ4ZP+dQ/A==
|
integrity sha512-iCM3ZGeqIzlrH7KxYK+fphlJpCCczyHXc+HhRVbEu9uNTCrzYJjvvtefzeKTCVHd5AP/aD/fzC80JZ4ZP+dQ/A==
|
||||||
|
|
||||||
|
magic-string@^0.19.0:
|
||||||
|
version "0.19.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.1.tgz#14d768013caf2ec8fdea16a49af82fc377e75201"
|
||||||
|
integrity sha1-FNdoATyvLsj96hakmvgvw3fnUgE=
|
||||||
|
dependencies:
|
||||||
|
vlq "^0.2.1"
|
||||||
|
|
||||||
make-dir@^1.0.0, make-dir@^1.3.0:
|
make-dir@^1.0.0, make-dir@^1.3.0:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
|
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
|
||||||
|
@ -6029,10 +6281,10 @@ mem@^4.0.0:
|
||||||
mimic-fn "^2.0.0"
|
mimic-fn "^2.0.0"
|
||||||
p-is-promise "^2.0.0"
|
p-is-promise "^2.0.0"
|
||||||
|
|
||||||
memoize-one@^4.0.0:
|
memoize-one@^5.0.0:
|
||||||
version "4.1.0"
|
version "5.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906"
|
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.2.tgz#6aba5276856d72fb44ead3efab86432f94ba203d"
|
||||||
integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA==
|
integrity sha512-o7lldN4fs/axqctc03NF+PMhd2veRrWeJ2n2GjEzUPBD4F9rmNg4A+bQCACIzwjHJEXuYv4aFFMaH35KZfHUrw==
|
||||||
|
|
||||||
memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
|
memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
|
||||||
version "0.4.1"
|
version "0.4.1"
|
||||||
|
@ -6054,7 +6306,7 @@ merge-stream@^1.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
readable-stream "^2.0.1"
|
readable-stream "^2.0.1"
|
||||||
|
|
||||||
methods@^1.1.1, methods@^1.1.2:
|
methods@^1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||||
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
|
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
|
||||||
|
@ -6243,6 +6495,11 @@ moniker@^0.1.2:
|
||||||
resolved "https://registry.yarnpkg.com/moniker/-/moniker-0.1.2.tgz#872dfba575dcea8fa04a5135b13d5f24beccc97e"
|
resolved "https://registry.yarnpkg.com/moniker/-/moniker-0.1.2.tgz#872dfba575dcea8fa04a5135b13d5f24beccc97e"
|
||||||
integrity sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=
|
integrity sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=
|
||||||
|
|
||||||
|
moo@^0.4.3:
|
||||||
|
version "0.4.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e"
|
||||||
|
integrity sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==
|
||||||
|
|
||||||
move-concurrently@^1.0.1:
|
move-concurrently@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
|
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
|
||||||
|
@ -6322,6 +6579,17 @@ natural-compare@^1.4.0:
|
||||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||||
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
||||||
|
|
||||||
|
nearley@^2.7.10:
|
||||||
|
version "2.16.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.16.0.tgz#77c297d041941d268290ec84b739d0ee297e83a7"
|
||||||
|
integrity sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg==
|
||||||
|
dependencies:
|
||||||
|
commander "^2.19.0"
|
||||||
|
moo "^0.4.3"
|
||||||
|
railroad-diagrams "^1.0.0"
|
||||||
|
randexp "0.4.6"
|
||||||
|
semver "^5.4.1"
|
||||||
|
|
||||||
needle@^2.2.1:
|
needle@^2.2.1:
|
||||||
version "2.2.4"
|
version "2.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
|
resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
|
||||||
|
@ -6628,6 +6896,13 @@ npm-run-path@^2.0.0:
|
||||||
gauge "~2.7.3"
|
gauge "~2.7.3"
|
||||||
set-blocking "~2.0.0"
|
set-blocking "~2.0.0"
|
||||||
|
|
||||||
|
nth-check@~1.0.1:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
|
||||||
|
integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
|
||||||
|
dependencies:
|
||||||
|
boolbase "~1.0.0"
|
||||||
|
|
||||||
number-is-nan@^1.0.0:
|
number-is-nan@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
||||||
|
@ -6662,6 +6937,16 @@ object-copy@^0.1.0:
|
||||||
define-property "^0.2.5"
|
define-property "^0.2.5"
|
||||||
kind-of "^3.0.3"
|
kind-of "^3.0.3"
|
||||||
|
|
||||||
|
object-inspect@^1.6.0:
|
||||||
|
version "1.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b"
|
||||||
|
integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==
|
||||||
|
|
||||||
|
object-is@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6"
|
||||||
|
integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=
|
||||||
|
|
||||||
object-keys@^1.0.11:
|
object-keys@^1.0.11:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032"
|
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032"
|
||||||
|
@ -6689,6 +6974,26 @@ object.assign@^4.1.0:
|
||||||
has-symbols "^1.0.0"
|
has-symbols "^1.0.0"
|
||||||
object-keys "^1.0.11"
|
object-keys "^1.0.11"
|
||||||
|
|
||||||
|
object.entries@^1.0.4:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519"
|
||||||
|
integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==
|
||||||
|
dependencies:
|
||||||
|
define-properties "^1.1.3"
|
||||||
|
es-abstract "^1.12.0"
|
||||||
|
function-bind "^1.1.1"
|
||||||
|
has "^1.0.3"
|
||||||
|
|
||||||
|
object.fromentries@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab"
|
||||||
|
integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==
|
||||||
|
dependencies:
|
||||||
|
define-properties "^1.1.2"
|
||||||
|
es-abstract "^1.11.0"
|
||||||
|
function-bind "^1.1.1"
|
||||||
|
has "^1.0.1"
|
||||||
|
|
||||||
object.getownpropertydescriptors@^2.0.3:
|
object.getownpropertydescriptors@^2.0.3:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
|
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
|
||||||
|
@ -6704,6 +7009,16 @@ object.pick@^1.3.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
isobject "^3.0.1"
|
isobject "^3.0.1"
|
||||||
|
|
||||||
|
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"
|
||||||
|
integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
|
||||||
|
dependencies:
|
||||||
|
define-properties "^1.1.3"
|
||||||
|
es-abstract "^1.12.0"
|
||||||
|
function-bind "^1.1.1"
|
||||||
|
has "^1.0.3"
|
||||||
|
|
||||||
on-finished@^2.3.0, on-finished@~2.3.0:
|
on-finished@^2.3.0, on-finished@~2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
||||||
|
@ -6949,6 +7264,13 @@ parse5@4.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
|
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
|
||||||
integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==
|
integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==
|
||||||
|
|
||||||
|
parse5@^3.0.1:
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
|
||||||
|
integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
parseqs@0.0.5:
|
parseqs@0.0.5:
|
||||||
version "0.0.5"
|
version "0.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
|
resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
|
||||||
|
@ -7712,10 +8034,10 @@ qs@^6.5.2, qs@~6.5.2:
|
||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
||||||
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
||||||
|
|
||||||
qs@^6.6.0:
|
qs@^6.7.0:
|
||||||
version "6.6.0"
|
version "6.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2"
|
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
|
||||||
integrity sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA==
|
integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
|
||||||
|
|
||||||
querystring-es3@^0.2.0:
|
querystring-es3@^0.2.0:
|
||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
|
@ -7727,6 +8049,26 @@ querystring@0.2.0, querystring@^0.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
|
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
|
||||||
integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
|
integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
|
||||||
|
|
||||||
|
raf@^3.4.0:
|
||||||
|
version "3.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
|
||||||
|
integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
|
||||||
|
dependencies:
|
||||||
|
performance-now "^2.1.0"
|
||||||
|
|
||||||
|
railroad-diagrams@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e"
|
||||||
|
integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=
|
||||||
|
|
||||||
|
randexp@0.4.6:
|
||||||
|
version "0.4.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3"
|
||||||
|
integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==
|
||||||
|
dependencies:
|
||||||
|
discontinuous-range "1.0.0"
|
||||||
|
ret "~0.1.10"
|
||||||
|
|
||||||
random-bytes@~1.0.0:
|
random-bytes@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b"
|
resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b"
|
||||||
|
@ -7789,15 +8131,15 @@ react-dom@16.8.0:
|
||||||
prop-types "^15.6.2"
|
prop-types "^15.6.2"
|
||||||
scheduler "^0.13.0"
|
scheduler "^0.13.0"
|
||||||
|
|
||||||
react-dom@^16.8.4:
|
react-dom@^16.8.6:
|
||||||
version "16.8.4"
|
version "16.8.6"
|
||||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.4.tgz#1061a8e01a2b3b0c8160037441c3bf00a0e3bc48"
|
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f"
|
||||||
integrity sha512-Ob2wK7XG2tUDt7ps7LtLzGYYB6DXMCLj0G5fO6WeEICtT4/HdpOi7W/xLzZnR6RCG1tYza60nMdqtxzA8FaPJQ==
|
integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.1.0"
|
loose-envify "^1.1.0"
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
prop-types "^15.6.2"
|
prop-types "^15.6.2"
|
||||||
scheduler "^0.13.4"
|
scheduler "^0.13.6"
|
||||||
|
|
||||||
react-error-overlay@4.0.0:
|
react-error-overlay@4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
|
@ -7819,6 +8161,11 @@ react-is@^16.8.4:
|
||||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.4.tgz#90f336a68c3a29a096a3d648ab80e87ec61482a2"
|
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.4.tgz#90f336a68c3a29a096a3d648ab80e87ec61482a2"
|
||||||
integrity sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==
|
integrity sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==
|
||||||
|
|
||||||
|
react-is@^16.8.6:
|
||||||
|
version "16.8.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
|
||||||
|
integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
|
||||||
|
|
||||||
react-redux@^6.0.1:
|
react-redux@^6.0.1:
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-6.0.1.tgz#0d423e2c1cb10ada87293d47e7de7c329623ba4d"
|
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-6.0.1.tgz#0d423e2c1cb10ada87293d47e7de7c329623ba4d"
|
||||||
|
@ -7831,6 +8178,16 @@ react-redux@^6.0.1:
|
||||||
prop-types "^15.7.2"
|
prop-types "^15.7.2"
|
||||||
react-is "^16.8.2"
|
react-is "^16.8.2"
|
||||||
|
|
||||||
|
react-test-renderer@^16.0.0-0, react-test-renderer@^16.8.6:
|
||||||
|
version "16.8.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.6.tgz#188d8029b8c39c786f998aa3efd3ffe7642d5ba1"
|
||||||
|
integrity sha512-H2srzU5IWYT6cZXof6AhUcx/wEyJddQ8l7cLM/F7gDXYyPr4oq+vCIxJYXVGhId1J706sqziAjuOEjyNkfgoEw==
|
||||||
|
dependencies:
|
||||||
|
object-assign "^4.1.1"
|
||||||
|
prop-types "^15.6.2"
|
||||||
|
react-is "^16.8.6"
|
||||||
|
scheduler "^0.13.6"
|
||||||
|
|
||||||
react-typist@^2.0.5:
|
react-typist@^2.0.5:
|
||||||
version "2.0.5"
|
version "2.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/react-typist/-/react-typist-2.0.5.tgz#9830395a73a03e6368e1392ecb98edaa3a648e44"
|
resolved "https://registry.yarnpkg.com/react-typist/-/react-typist-2.0.5.tgz#9830395a73a03e6368e1392ecb98edaa3a648e44"
|
||||||
|
@ -7848,15 +8205,15 @@ react@16.8.0:
|
||||||
prop-types "^15.6.2"
|
prop-types "^15.6.2"
|
||||||
scheduler "^0.13.0"
|
scheduler "^0.13.0"
|
||||||
|
|
||||||
react@^16.8.4:
|
react@^16.8.6:
|
||||||
version "16.8.4"
|
version "16.8.6"
|
||||||
resolved "https://registry.yarnpkg.com/react/-/react-16.8.4.tgz#fdf7bd9ae53f03a9c4cd1a371432c206be1c4768"
|
resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe"
|
||||||
integrity sha512-0GQ6gFXfUH7aZcjGVymlPOASTuSjlQL4ZtVC5YKH+3JL6bBLCVO21DknzmaPlI90LN253ojj02nsapy+j7wIjg==
|
integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.1.0"
|
loose-envify "^1.1.0"
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
prop-types "^15.6.2"
|
prop-types "^15.6.2"
|
||||||
scheduler "^0.13.4"
|
scheduler "^0.13.6"
|
||||||
|
|
||||||
read-pkg-up@^1.0.1:
|
read-pkg-up@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
|
@ -7922,10 +8279,10 @@ read-pkg@^3.0.0:
|
||||||
string_decoder "~1.1.1"
|
string_decoder "~1.1.1"
|
||||||
util-deprecate "~1.0.1"
|
util-deprecate "~1.0.1"
|
||||||
|
|
||||||
readable-stream@^3.0.6:
|
readable-stream@^3.1.1, readable-stream@^3.2.0:
|
||||||
version "3.1.1"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06"
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.2.0.tgz#de17f229864c120a9f56945756e4f32c4045245d"
|
||||||
integrity sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==
|
integrity sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==
|
||||||
dependencies:
|
dependencies:
|
||||||
inherits "^2.0.3"
|
inherits "^2.0.3"
|
||||||
string_decoder "^1.1.1"
|
string_decoder "^1.1.1"
|
||||||
|
@ -8252,6 +8609,14 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
|
||||||
hash-base "^3.0.0"
|
hash-base "^3.0.0"
|
||||||
inherits "^2.0.1"
|
inherits "^2.0.1"
|
||||||
|
|
||||||
|
rst-selector-parser@^2.2.3:
|
||||||
|
version "2.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91"
|
||||||
|
integrity sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=
|
||||||
|
dependencies:
|
||||||
|
lodash.flattendeep "^4.4.0"
|
||||||
|
nearley "^2.7.10"
|
||||||
|
|
||||||
rsvp@^4.8.4:
|
rsvp@^4.8.4:
|
||||||
version "4.8.4"
|
version "4.8.4"
|
||||||
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911"
|
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911"
|
||||||
|
@ -8328,10 +8693,10 @@ scheduler@^0.13.0:
|
||||||
loose-envify "^1.1.0"
|
loose-envify "^1.1.0"
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
|
|
||||||
scheduler@^0.13.4:
|
scheduler@^0.13.6:
|
||||||
version "0.13.4"
|
version "0.13.6"
|
||||||
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.4.tgz#8fef05e7a3580c76c0364d2df5e550e4c9140298"
|
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889"
|
||||||
integrity sha512-cvSOlRPxOHs5dAhP9yiS/6IDmVAVxmk33f0CtTJRkmUWcb1Us+t7b1wqdzoC0REw2muC9V5f1L/w5R5uKGaepA==
|
integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.1.0"
|
loose-envify "^1.1.0"
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
|
@ -8363,6 +8728,11 @@ semver@4.3.2:
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7"
|
||||||
integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=
|
integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=
|
||||||
|
|
||||||
|
semver@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65"
|
||||||
|
integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==
|
||||||
|
|
||||||
semver@~5.3.0:
|
semver@~5.3.0:
|
||||||
version "5.3.0"
|
version "5.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
|
||||||
|
@ -8889,6 +9259,15 @@ string.prototype.padstart@^3.0.0:
|
||||||
es-abstract "^1.4.3"
|
es-abstract "^1.4.3"
|
||||||
function-bind "^1.0.2"
|
function-bind "^1.0.2"
|
||||||
|
|
||||||
|
string.prototype.trim@^1.1.2:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea"
|
||||||
|
integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=
|
||||||
|
dependencies:
|
||||||
|
define-properties "^1.1.2"
|
||||||
|
es-abstract "^1.5.0"
|
||||||
|
function-bind "^1.0.2"
|
||||||
|
|
||||||
string_decoder@^1.0.0:
|
string_decoder@^1.0.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
|
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
|
||||||
|
@ -8951,17 +9330,17 @@ strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||||
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
|
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
|
||||||
|
|
||||||
styled-components@^4.1.3:
|
styled-components@^4.2.0:
|
||||||
version "4.1.3"
|
version "4.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.1.3.tgz#4472447208e618b57e84deaaeb6acd34a5e0fe9b"
|
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.2.0.tgz#811fbbec4d64c7189f6c7482b9eb6fefa7fefef7"
|
||||||
integrity sha512-0quV4KnSfvq5iMtT0RzpMGl/Dg3XIxIxOl9eJpiqiq4SrAmR1l1DLzNpMzoy3DyzdXVDMJS2HzROnXscWA3SEw==
|
integrity sha512-L/LzkL3ZbBhqIVHdR7DbYujy4tqvTNRfc+4JWDCYyhTatI+8CRRQUmdaR0+ARl03DWsfKLhjewll5uNLrqrl4A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-module-imports" "^7.0.0"
|
"@babel/helper-module-imports" "^7.0.0"
|
||||||
"@emotion/is-prop-valid" "^0.7.3"
|
"@emotion/is-prop-valid" "^0.7.3"
|
||||||
"@emotion/unitless" "^0.7.0"
|
"@emotion/unitless" "^0.7.0"
|
||||||
babel-plugin-styled-components ">= 1"
|
babel-plugin-styled-components ">= 1"
|
||||||
css-to-react-native "^2.2.2"
|
css-to-react-native "^2.2.2"
|
||||||
memoize-one "^4.0.0"
|
memoize-one "^5.0.0"
|
||||||
prop-types "^15.5.4"
|
prop-types "^15.5.4"
|
||||||
react-is "^16.6.0"
|
react-is "^16.6.0"
|
||||||
stylis "^3.5.0"
|
stylis "^3.5.0"
|
||||||
|
@ -9007,20 +9386,21 @@ stylis@3.5.4, stylis@^3.5.0:
|
||||||
resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe"
|
resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe"
|
||||||
integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==
|
integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==
|
||||||
|
|
||||||
superagent@^4.1.0:
|
superagent@^5.0.2:
|
||||||
version "4.1.0"
|
version "5.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/superagent/-/superagent-4.1.0.tgz#c465c2de41df2b8d05c165cbe403e280790cdfd5"
|
resolved "https://registry.yarnpkg.com/superagent/-/superagent-5.0.2.tgz#5ff1e327d7f8250418e76a07fc96f3bd8441ca51"
|
||||||
integrity sha512-FT3QLMasz0YyCd4uIi5HNe+3t/onxMyEho7C3PSqmti3Twgy2rXT4fmkTz6wRL6bTF4uzPcfkUCa8u4JWHw8Ag==
|
integrity sha512-CqeqvwByDJuLwhcO6NOSuPatyQOIZX/TlvD5GJnXg5tzBTth2xQGZGdAZdo/kX+BtzvwJFX2IGGczTZgEIT7Wg==
|
||||||
dependencies:
|
dependencies:
|
||||||
component-emitter "^1.2.0"
|
component-emitter "^1.2.1"
|
||||||
cookiejar "^2.1.2"
|
cookiejar "^2.1.2"
|
||||||
debug "^4.1.0"
|
debug "^4.1.1"
|
||||||
form-data "^2.3.3"
|
form-data "^2.3.3"
|
||||||
formidable "^1.2.0"
|
formidable "^1.2.1"
|
||||||
methods "^1.1.1"
|
methods "^1.1.2"
|
||||||
mime "^2.4.0"
|
mime "^2.4.0"
|
||||||
qs "^6.6.0"
|
qs "^6.7.0"
|
||||||
readable-stream "^3.0.6"
|
readable-stream "^3.2.0"
|
||||||
|
semver "^6.0.0"
|
||||||
|
|
||||||
supports-color@^2.0.0:
|
supports-color@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
|
@ -9484,6 +9864,11 @@ upath@^1.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
|
resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
|
||||||
integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==
|
integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==
|
||||||
|
|
||||||
|
upath@^1.1.1:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
|
||||||
|
integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
|
||||||
|
|
||||||
uri-js@^4.2.2:
|
uri-js@^4.2.2:
|
||||||
version "4.2.2"
|
version "4.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
|
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
|
||||||
|
@ -9592,6 +9977,11 @@ verror@1.10.0:
|
||||||
core-util-is "1.0.2"
|
core-util-is "1.0.2"
|
||||||
extsprintf "^1.2.0"
|
extsprintf "^1.2.0"
|
||||||
|
|
||||||
|
vlq@^0.2.1:
|
||||||
|
version "0.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
|
||||||
|
integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==
|
||||||
|
|
||||||
vm-browserify@0.0.4:
|
vm-browserify@0.0.4:
|
||||||
version "0.0.4"
|
version "0.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
|
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue