kopia lustrzana https://github.com/badgen/badgen.net
				
				
				
			chore: replace universal-analytics with measurement-protocol.ts (#339)
							rodzic
							
								
									f2e179e827
								
							
						
					
					
						commit
						b8558b1bfa
					
				| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
import http from 'http'
 | 
			
		||||
import matchRoute from 'my-way'
 | 
			
		||||
import urlParse from 'url-parse'
 | 
			
		||||
import ua from 'universal-analytics'
 | 
			
		||||
import { measure } from './measurement-protocol'
 | 
			
		||||
 | 
			
		||||
import fetchIcon from './fetch-icon'
 | 
			
		||||
import serveBadge from './serve-badge'
 | 
			
		||||
| 
						 | 
				
			
			@ -40,11 +40,11 @@ export interface BadgenHandler extends http.RequestListener {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
export function createBadgenHandler (conf: BadgenServeConfig): BadgenHandler {
 | 
			
		||||
  async function badgenHandler (req, res) {
 | 
			
		||||
  async function badgenHandler (req: http.IncomingMessage, res: http.ServerResponse) {
 | 
			
		||||
    const url = req.url ?? '/'
 | 
			
		||||
    const { pathname, query } = urlParse(url, true)
 | 
			
		||||
 | 
			
		||||
    measurementLogRequest(url, req.headers.host)
 | 
			
		||||
    measurementLogInvocation(req.headers?.host ?? 'badgen.net', url)
 | 
			
		||||
 | 
			
		||||
    // Serve favicon
 | 
			
		||||
    if (pathname === '/favicon.ico') {
 | 
			
		||||
| 
						 | 
				
			
			@ -104,7 +104,7 @@ export function createBadgenHandler (conf: BadgenServeConfig): BadgenHandler {
 | 
			
		|||
 | 
			
		||||
      return serveBadge(req, res, { params, query: query as any })
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
      measurementLogError('error', error.code || error.statusCode , req.url)
 | 
			
		||||
      measurementLogError('error', error.code || error.statusCode , req.url || '/')
 | 
			
		||||
 | 
			
		||||
      if (error instanceof BadgenError) {
 | 
			
		||||
        console.error(`BGE${error.code} "${error.status}" ${req.url}`)
 | 
			
		||||
| 
						 | 
				
			
			@ -172,16 +172,18 @@ export function createBadgenHandler (conf: BadgenServeConfig): BadgenHandler {
 | 
			
		|||
  return badgenHandler
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function measurementLogRequest (urlPath: string, host?: string) {
 | 
			
		||||
  const tid = 'UA-4646421-14'
 | 
			
		||||
  const cid = process.env.NOW_REGION || 'unknown-region'
 | 
			
		||||
  ua(tid, cid).pageview(urlPath, host).send()
 | 
			
		||||
const { TRACKING_GA, NOW_REGION = Date.now().toString() + Math.random() } = process.env
 | 
			
		||||
const visitor = TRACKING_GA && measure(TRACKING_GA, { uid: NOW_REGION })
 | 
			
		||||
 | 
			
		||||
async function measurementLogInvocation (host: string, urlPath: string) {
 | 
			
		||||
  visitor && visitor.pageview({
 | 
			
		||||
    dh: host,
 | 
			
		||||
    dp: urlPath,
 | 
			
		||||
  }).send()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function measurementLogError (category: string, action: string, label: string, value?: number) {
 | 
			
		||||
  const tid = 'UA-4646421-14'
 | 
			
		||||
  const cid = process.env.NOW_REGION || 'unknown-region'
 | 
			
		||||
  ua(tid, cid).event(category, action, label, value).send()
 | 
			
		||||
async function measurementLogError (category: string, action: string, label?: string, value?: number) {
 | 
			
		||||
  visitor && visitor.event(category, action, label, value).send()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getBadgeStyle (req: http.IncomingMessage): string | undefined {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,136 @@
 | 
			
		|||
import got from 'got'
 | 
			
		||||
 | 
			
		||||
type HitType = 'pageview' | 'screenview' | 'event' | 'transaction' | 'item' | 'social' | 'exception' | 'timing'
 | 
			
		||||
type Boolean = '0' | '1'
 | 
			
		||||
 | 
			
		||||
// https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters
 | 
			
		||||
interface MeasurementParams {
 | 
			
		||||
  /** Protocol Version */
 | 
			
		||||
  v: '1';
 | 
			
		||||
 | 
			
		||||
  /** Tracking ID / Web Property ID */
 | 
			
		||||
  tid: string;
 | 
			
		||||
 | 
			
		||||
  /** Client ID */
 | 
			
		||||
  cid?: string;
 | 
			
		||||
 | 
			
		||||
  /** User ID */
 | 
			
		||||
  uid?: string;
 | 
			
		||||
 | 
			
		||||
  /** Hit Type */
 | 
			
		||||
  t?: HitType;
 | 
			
		||||
 | 
			
		||||
  /** Cache Buster */
 | 
			
		||||
  z?: string;
 | 
			
		||||
 | 
			
		||||
  /** Document location URL */
 | 
			
		||||
  dl?: string;
 | 
			
		||||
 | 
			
		||||
  /** Document Host Name */
 | 
			
		||||
  dh?: string;
 | 
			
		||||
 | 
			
		||||
  /** Document Path */
 | 
			
		||||
  dp?: string;
 | 
			
		||||
 | 
			
		||||
  /** Document Title */
 | 
			
		||||
  dt?: string;
 | 
			
		||||
 | 
			
		||||
  /** Event Category */
 | 
			
		||||
  ec?: string;
 | 
			
		||||
 | 
			
		||||
  /** Event Action */
 | 
			
		||||
  ea?: string;
 | 
			
		||||
 | 
			
		||||
  /** Event Label */
 | 
			
		||||
  el?: string;
 | 
			
		||||
 | 
			
		||||
  /** Event Value */
 | 
			
		||||
  ev?: number;
 | 
			
		||||
 | 
			
		||||
  /** Exception Description */
 | 
			
		||||
  exd?: string;
 | 
			
		||||
 | 
			
		||||
  /** Is Exception Fatal? */
 | 
			
		||||
  exf?: Boolean;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type MeasurementConfig = Partial<MeasurementParams>
 | 
			
		||||
 | 
			
		||||
export function measure (
 | 
			
		||||
  tid: MeasurementParams['tid'],
 | 
			
		||||
  config: MeasurementConfig = {},
 | 
			
		||||
): Measure {
 | 
			
		||||
  return new Measure({ tid, ...config })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class Measure {
 | 
			
		||||
  config: MeasurementConfig;
 | 
			
		||||
 | 
			
		||||
  constructor (config: MeasurementConfig = {}) {
 | 
			
		||||
    this.config = { v: '1', ...config }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  set (this: Measure, config: MeasurementConfig): Measure {
 | 
			
		||||
    return new Measure({ ...this.config, ...config })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  setCustomDimension (values: string[]): Measure {
 | 
			
		||||
    const config = Object.fromEntries(values.map((val, idx) => [`cd${idx}`, val]))
 | 
			
		||||
    return this.set(config)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  setCustomMetrics (values: number[]): Measure {
 | 
			
		||||
    const config = Object.fromEntries(values.map((val, idx) => [`cm${idx}`, val]))
 | 
			
		||||
    return this.set(config)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  send (this: Measure): void {
 | 
			
		||||
    const body = buildPayload(this.config)
 | 
			
		||||
    got.post('https://www.google-analytics.com/collect', { body }).catch(console.error)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  pageview (this: Measure, url: string | { dh: string, dp: string }): Measure {
 | 
			
		||||
    const config: MeasurementConfig = { t: 'pageview' }
 | 
			
		||||
    if (typeof url === 'string') {
 | 
			
		||||
      config.dl = url
 | 
			
		||||
    } else {
 | 
			
		||||
      config.dh = url.dh
 | 
			
		||||
      config.dp = url.dp
 | 
			
		||||
    }
 | 
			
		||||
    return this.set(config)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  event (this: Measure, category: string, action: string, label?: string, value?: number): Measure {
 | 
			
		||||
    return this.set({
 | 
			
		||||
      t: 'event',
 | 
			
		||||
      ec: category,
 | 
			
		||||
      ea: action,
 | 
			
		||||
      el: label,
 | 
			
		||||
      ev: value
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  exception (this: Measure, description: string, fatal: Boolean = '1'): Measure {
 | 
			
		||||
    return this.set({
 | 
			
		||||
      t: 'exception',
 | 
			
		||||
      exd: description,
 | 
			
		||||
      exf: fatal
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function buildPayload (params: Partial<MeasurementParams>): string {
 | 
			
		||||
  const formated: Record<string, string> = {}
 | 
			
		||||
  Object.keys(params).forEach(key => {
 | 
			
		||||
    if (params[key] === undefined) return
 | 
			
		||||
    formated[key] = params[key]
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  return new URLSearchParams(formated).toString()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#batch
 | 
			
		||||
export function batchSend (measurements: Measure[]) {
 | 
			
		||||
  const body = measurements.map(m => buildPayload(m.config)).join('\n')
 | 
			
		||||
  got.post('https://www.google-analytics.com/batch', { body }).catch(console.error)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -2147,6 +2147,7 @@
 | 
			
		|||
      "version": "6.10.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
 | 
			
		||||
      "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "fast-deep-equal": "^2.0.1",
 | 
			
		||||
        "fast-json-stable-stringify": "^2.0.0",
 | 
			
		||||
| 
						 | 
				
			
			@ -2334,14 +2335,6 @@
 | 
			
		|||
      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "asn1": {
 | 
			
		||||
      "version": "0.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "safer-buffer": "~2.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "asn1.js": {
 | 
			
		||||
      "version": "4.10.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2380,11 +2373,6 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "assert-plus": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
 | 
			
		||||
    },
 | 
			
		||||
    "assign-symbols": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2421,7 +2409,8 @@
 | 
			
		|||
    "asynckit": {
 | 
			
		||||
      "version": "0.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
 | 
			
		||||
      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
 | 
			
		||||
      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "atob": {
 | 
			
		||||
      "version": "2.1.2",
 | 
			
		||||
| 
						 | 
				
			
			@ -2462,16 +2451,6 @@
 | 
			
		|||
        "postcss-value-parser": "^4.0.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "aws-sign2": {
 | 
			
		||||
      "version": "0.7.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
 | 
			
		||||
      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
 | 
			
		||||
    },
 | 
			
		||||
    "aws4": {
 | 
			
		||||
      "version": "1.9.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A=="
 | 
			
		||||
    },
 | 
			
		||||
    "babel-code-frame": {
 | 
			
		||||
      "version": "6.26.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2738,14 +2717,6 @@
 | 
			
		|||
      "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "bcrypt-pbkdf": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "tweetnacl": "^0.14.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "big.js": {
 | 
			
		||||
      "version": "5.2.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -3192,11 +3163,6 @@
 | 
			
		|||
      "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "caseless": {
 | 
			
		||||
      "version": "0.12.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
 | 
			
		||||
      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
 | 
			
		||||
    },
 | 
			
		||||
    "chalk": {
 | 
			
		||||
      "version": "2.4.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -3438,6 +3404,7 @@
 | 
			
		|||
      "version": "1.0.7",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
 | 
			
		||||
      "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "delayed-stream": "~1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -3688,7 +3655,8 @@
 | 
			
		|||
    "core-util-is": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
 | 
			
		||||
      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "cosmiconfig": {
 | 
			
		||||
      "version": "5.2.1",
 | 
			
		||||
| 
						 | 
				
			
			@ -3960,14 +3928,6 @@
 | 
			
		|||
      "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "dashdash": {
 | 
			
		||||
      "version": "1.14.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
 | 
			
		||||
      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "assert-plus": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "date-fns": {
 | 
			
		||||
      "version": "2.9.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.9.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -3977,6 +3937,7 @@
 | 
			
		|||
      "version": "3.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "ms": "2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -4093,7 +4054,8 @@
 | 
			
		|||
    "delayed-stream": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
 | 
			
		||||
      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "depd": {
 | 
			
		||||
      "version": "1.1.1",
 | 
			
		||||
| 
						 | 
				
			
			@ -4216,15 +4178,6 @@
 | 
			
		|||
        "stream-shift": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "ecc-jsbn": {
 | 
			
		||||
      "version": "0.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
 | 
			
		||||
      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "jsbn": "~0.1.0",
 | 
			
		||||
        "safer-buffer": "^2.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "ee-first": {
 | 
			
		||||
      "version": "1.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -4658,7 +4611,8 @@
 | 
			
		|||
    "extend": {
 | 
			
		||||
      "version": "3.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
 | 
			
		||||
      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "extend-shallow": {
 | 
			
		||||
      "version": "3.0.2",
 | 
			
		||||
| 
						 | 
				
			
			@ -4757,20 +4711,17 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "extsprintf": {
 | 
			
		||||
      "version": "1.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
 | 
			
		||||
      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
 | 
			
		||||
    },
 | 
			
		||||
    "fast-deep-equal": {
 | 
			
		||||
      "version": "2.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
 | 
			
		||||
      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
 | 
			
		||||
      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "fast-json-stable-stringify": {
 | 
			
		||||
      "version": "2.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
 | 
			
		||||
      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "fast-levenshtein": {
 | 
			
		||||
      "version": "2.0.6",
 | 
			
		||||
| 
						 | 
				
			
			@ -4901,11 +4852,6 @@
 | 
			
		|||
      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "forever-agent": {
 | 
			
		||||
      "version": "0.6.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
 | 
			
		||||
      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
 | 
			
		||||
    },
 | 
			
		||||
    "fork-ts-checker-webpack-plugin": {
 | 
			
		||||
      "version": "3.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -4934,6 +4880,7 @@
 | 
			
		|||
      "version": "2.3.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
 | 
			
		||||
      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "asynckit": "^0.4.0",
 | 
			
		||||
        "combined-stream": "^1.0.6",
 | 
			
		||||
| 
						 | 
				
			
			@ -5049,14 +4996,6 @@
 | 
			
		|||
      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "getpass": {
 | 
			
		||||
      "version": "0.1.7",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
 | 
			
		||||
      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "assert-plus": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "glob": {
 | 
			
		||||
      "version": "7.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -5183,20 +5122,6 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "har-schema": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
 | 
			
		||||
    },
 | 
			
		||||
    "har-validator": {
 | 
			
		||||
      "version": "5.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
 | 
			
		||||
      "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "ajv": "^6.5.5",
 | 
			
		||||
        "har-schema": "^2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "has": {
 | 
			
		||||
      "version": "1.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -5346,16 +5271,6 @@
 | 
			
		|||
        "statuses": ">= 1.3.1 < 2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "http-signature": {
 | 
			
		||||
      "version": "1.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
 | 
			
		||||
      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "assert-plus": "^1.0.0",
 | 
			
		||||
        "jsprim": "^1.2.2",
 | 
			
		||||
        "sshpk": "^1.7.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "https-browserify": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -5851,7 +5766,8 @@
 | 
			
		|||
    "is-typedarray": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
 | 
			
		||||
      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "is-windows": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
| 
						 | 
				
			
			@ -5883,11 +5799,6 @@
 | 
			
		|||
      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "isstream": {
 | 
			
		||||
      "version": "0.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
 | 
			
		||||
      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
 | 
			
		||||
    },
 | 
			
		||||
    "jest-worker": {
 | 
			
		||||
      "version": "24.9.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -5931,11 +5842,6 @@
 | 
			
		|||
        "esprima": "^4.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "jsbn": {
 | 
			
		||||
      "version": "0.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
 | 
			
		||||
      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
 | 
			
		||||
    },
 | 
			
		||||
    "jsesc": {
 | 
			
		||||
      "version": "2.5.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -5953,15 +5859,11 @@
 | 
			
		|||
      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "json-schema": {
 | 
			
		||||
      "version": "0.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
 | 
			
		||||
      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
 | 
			
		||||
    },
 | 
			
		||||
    "json-schema-traverse": {
 | 
			
		||||
      "version": "0.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
 | 
			
		||||
      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "json-schema-typed": {
 | 
			
		||||
      "version": "7.0.3",
 | 
			
		||||
| 
						 | 
				
			
			@ -5975,11 +5877,6 @@
 | 
			
		|||
      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "json-stringify-safe": {
 | 
			
		||||
      "version": "5.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
 | 
			
		||||
      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
 | 
			
		||||
    },
 | 
			
		||||
    "json5": {
 | 
			
		||||
      "version": "2.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -6006,17 +5903,6 @@
 | 
			
		|||
        "graceful-fs": "^4.1.6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "jsprim": {
 | 
			
		||||
      "version": "1.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
 | 
			
		||||
      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "assert-plus": "1.0.0",
 | 
			
		||||
        "extsprintf": "1.3.0",
 | 
			
		||||
        "json-schema": "0.2.3",
 | 
			
		||||
        "verror": "1.10.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "jsx-ast-utils": {
 | 
			
		||||
      "version": "2.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -6434,12 +6320,14 @@
 | 
			
		|||
    "mime-db": {
 | 
			
		||||
      "version": "1.37.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
 | 
			
		||||
      "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
 | 
			
		||||
      "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "mime-types": {
 | 
			
		||||
      "version": "2.1.21",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
 | 
			
		||||
      "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "mime-db": "~1.37.0"
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -6589,7 +6477,8 @@
 | 
			
		|||
    "ms": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
 | 
			
		||||
      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "mute-stream": {
 | 
			
		||||
      "version": "0.0.8",
 | 
			
		||||
| 
						 | 
				
			
			@ -7055,11 +6944,6 @@
 | 
			
		|||
      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "oauth-sign": {
 | 
			
		||||
      "version": "0.9.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
 | 
			
		||||
      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "object-assign": {
 | 
			
		||||
      "version": "4.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -7539,11 +7423,6 @@
 | 
			
		|||
        "sha.js": "^2.4.8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "performance-now": {
 | 
			
		||||
      "version": "2.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
 | 
			
		||||
      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
 | 
			
		||||
    },
 | 
			
		||||
    "picomatch": {
 | 
			
		||||
      "version": "2.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -8271,11 +8150,6 @@
 | 
			
		|||
      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "psl": {
 | 
			
		||||
      "version": "1.7.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
 | 
			
		||||
      "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "pstree.remy": {
 | 
			
		||||
      "version": "1.1.7",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -8331,7 +8205,8 @@
 | 
			
		|||
    "punycode": {
 | 
			
		||||
      "version": "2.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
 | 
			
		||||
      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "qs": {
 | 
			
		||||
      "version": "6.7.0",
 | 
			
		||||
| 
						 | 
				
			
			@ -8639,40 +8514,6 @@
 | 
			
		|||
      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "request": {
 | 
			
		||||
      "version": "2.88.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
 | 
			
		||||
      "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "aws-sign2": "~0.7.0",
 | 
			
		||||
        "aws4": "^1.8.0",
 | 
			
		||||
        "caseless": "~0.12.0",
 | 
			
		||||
        "combined-stream": "~1.0.6",
 | 
			
		||||
        "extend": "~3.0.2",
 | 
			
		||||
        "forever-agent": "~0.6.1",
 | 
			
		||||
        "form-data": "~2.3.2",
 | 
			
		||||
        "har-validator": "~5.1.0",
 | 
			
		||||
        "http-signature": "~1.2.0",
 | 
			
		||||
        "is-typedarray": "~1.0.0",
 | 
			
		||||
        "isstream": "~0.1.2",
 | 
			
		||||
        "json-stringify-safe": "~5.0.1",
 | 
			
		||||
        "mime-types": "~2.1.19",
 | 
			
		||||
        "oauth-sign": "~0.9.0",
 | 
			
		||||
        "performance-now": "^2.1.0",
 | 
			
		||||
        "qs": "~6.5.2",
 | 
			
		||||
        "safe-buffer": "^5.1.2",
 | 
			
		||||
        "tough-cookie": "~2.4.3",
 | 
			
		||||
        "tunnel-agent": "^0.6.0",
 | 
			
		||||
        "uuid": "^3.3.2"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "qs": {
 | 
			
		||||
          "version": "6.5.2",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
 | 
			
		||||
          "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "request-compose": {
 | 
			
		||||
      "version": "1.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/request-compose/-/request-compose-1.2.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -8807,7 +8648,8 @@
 | 
			
		|||
    "safer-buffer": {
 | 
			
		||||
      "version": "2.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
 | 
			
		||||
      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "scheduler": {
 | 
			
		||||
      "version": "0.18.0",
 | 
			
		||||
| 
						 | 
				
			
			@ -9294,22 +9136,6 @@
 | 
			
		|||
      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "sshpk": {
 | 
			
		||||
      "version": "1.16.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
 | 
			
		||||
      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "asn1": "~0.2.3",
 | 
			
		||||
        "assert-plus": "^1.0.0",
 | 
			
		||||
        "bcrypt-pbkdf": "^1.0.0",
 | 
			
		||||
        "dashdash": "^1.12.0",
 | 
			
		||||
        "ecc-jsbn": "~0.1.1",
 | 
			
		||||
        "getpass": "^0.1.1",
 | 
			
		||||
        "jsbn": "~0.1.0",
 | 
			
		||||
        "safer-buffer": "^2.0.2",
 | 
			
		||||
        "tweetnacl": "~0.14.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "ssri": {
 | 
			
		||||
      "version": "6.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -9804,22 +9630,6 @@
 | 
			
		|||
        "nopt": "~1.0.10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "tough-cookie": {
 | 
			
		||||
      "version": "2.4.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
 | 
			
		||||
      "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "psl": "^1.1.24",
 | 
			
		||||
        "punycode": "^1.4.1"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "punycode": {
 | 
			
		||||
          "version": "1.4.1",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
 | 
			
		||||
          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "traverse": {
 | 
			
		||||
      "version": "0.6.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -9865,19 +9675,6 @@
 | 
			
		|||
      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "tunnel-agent": {
 | 
			
		||||
      "version": "0.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
 | 
			
		||||
      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "safe-buffer": "^5.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "tweetnacl": {
 | 
			
		||||
      "version": "0.14.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
 | 
			
		||||
      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
 | 
			
		||||
    },
 | 
			
		||||
    "type-check": {
 | 
			
		||||
      "version": "0.3.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -10013,16 +9810,6 @@
 | 
			
		|||
        "crypto-random-string": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "universal-analytics": {
 | 
			
		||||
      "version": "0.4.20",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz",
 | 
			
		||||
      "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "debug": "^3.0.0",
 | 
			
		||||
        "request": "^2.88.0",
 | 
			
		||||
        "uuid": "^3.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "universalify": {
 | 
			
		||||
      "version": "0.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -10108,6 +9895,7 @@
 | 
			
		|||
      "version": "4.2.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
 | 
			
		||||
      "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "punycode": "^2.1.0"
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -10188,7 +9976,8 @@
 | 
			
		|||
    "uuid": {
 | 
			
		||||
      "version": "3.3.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
 | 
			
		||||
      "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
 | 
			
		||||
      "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "v8-compile-cache": {
 | 
			
		||||
      "version": "2.1.0",
 | 
			
		||||
| 
						 | 
				
			
			@ -10212,16 +10001,6 @@
 | 
			
		|||
      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "verror": {
 | 
			
		||||
      "version": "1.10.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
 | 
			
		||||
      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "assert-plus": "^1.0.0",
 | 
			
		||||
        "core-util-is": "1.0.2",
 | 
			
		||||
        "extsprintf": "^1.2.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "vm-browserify": {
 | 
			
		||||
      "version": "1.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,7 +40,6 @@
 | 
			
		|||
    "semver": "^7.1.1",
 | 
			
		||||
    "serve-handler": "^6.1.2",
 | 
			
		||||
    "serve-marked": "^2.0.2",
 | 
			
		||||
    "universal-analytics": "^0.4.20",
 | 
			
		||||
    "url-parse": "^1.4.7"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue