diff --git a/components/layout.js b/components/layout.js
index d92d0699..c3880bd3 100644
--- a/components/layout.js
+++ b/components/layout.js
@@ -13,7 +13,14 @@ export default function Layout({ title, children }) {
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap"
rel="stylesheet"
/>
-
+ {typeof window !== 'undefined' && (
+
+ )}
{children}
diff --git a/lib/utils.js b/lib/utils.js
index de0e89ec..06cd14ac 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -60,6 +60,7 @@ export function parseCollectRequest(req) {
if (hash(`${website_id}${session_id}${time}`) === validationHash) {
return {
+ valid: true,
type,
session_id,
url,
@@ -68,5 +69,5 @@ export function parseCollectRequest(req) {
}
}
- return null;
+ return { valid: false };
}
diff --git a/package.json b/package.json
index 0f0949b6..0f621f94 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"version": "0.1.0",
"description": "Deliciously simple website analytics",
"main": "index.js",
- "author": "Mike Cao",
+ "author": "Mike Cao ",
"license": "MIT",
"scripts": {
"dev": "next dev -p 8000",
@@ -33,15 +33,18 @@
"dotenv": "^8.2.0",
"next": "9.3.5",
"node-fetch": "^2.6.0",
+ "promise-polyfill": "^8.1.3",
"react": "16.13.1",
"react-dom": "16.13.1",
"request-ip": "^2.1.3",
- "uuid": "^8.2.0",
- "whatwg-fetch": "^3.2.0"
+ "unfetch": "^4.1.0",
+ "uuid": "^8.2.0"
},
"devDependencies": {
"@prisma/cli": "2.2.2",
+ "@rollup/plugin-buble": "^0.21.3",
"@rollup/plugin-node-resolve": "^8.4.0",
+ "@rollup/plugin-replace": "^2.3.3",
"@svgr/webpack": "^5.4.0",
"eslint": "^7.2.0",
"eslint-config-prettier": "^6.11.0",
@@ -57,7 +60,6 @@
"prettier": "^2.0.5",
"prettier-eslint": "^10.1.1",
"rollup": "^2.21.0",
- "rollup-plugin-replace": "^2.2.0",
"rollup-plugin-terser": "^6.1.0",
"stylelint": "^13.6.0",
"stylelint-config-css-modules": "^2.2.0",
diff --git a/pages/api/collect.js b/pages/api/collect.js
index e332a111..1a8811ff 100644
--- a/pages/api/collect.js
+++ b/pages/api/collect.js
@@ -4,7 +4,7 @@ import { savePageView } from '../../lib/db';
export default async (req, res) => {
const values = parseCollectRequest(req);
- if (values) {
+ if (values.valid) {
const { type, session_id, url, referrer } = values;
if (type === 'pageview') {
@@ -12,5 +12,5 @@ export default async (req, res) => {
}
}
- res.status(200).json({ status: 'ok' });
+ res.status(200).json({ status: values.valid });
};
diff --git a/pages/index.js b/pages/index.js
index 9003c0e2..5d881cdb 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -5,6 +5,10 @@ export default function Home() {
return (
Hello.
+
+ abc
+
+ 123
);
}
diff --git a/public/umami.js b/public/umami.js
index aa4146ad..a1e3013b 100644
--- a/public/umami.js
+++ b/public/umami.js
@@ -1 +1,274 @@
-!function(){"use strict";var t="undefined"!=typeof self?self:window,e="URLSearchParams"in t,r="Symbol"in t&&"iterator"in Symbol,o="FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),n="FormData"in t,i="ArrayBuffer"in t;if(i)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],a=ArrayBuffer.isView||function(t){return t&&s.indexOf(Object.prototype.toString.call(t))>-1};function h(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(t)||""===t)throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function u(t){return"string"!=typeof t&&(t=String(t)),t}function d(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return r&&(e[Symbol.iterator]=function(){return e}),e}function c(t){this.map={},t instanceof c?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function f(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function l(t){return new Promise((function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}}))}function y(t){var e=new FileReader,r=l(e);return e.readAsArrayBuffer(t),r}function p(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function b(){return this.bodyUsed=!1,this._initBody=function(t){var r;this.bodyUsed=this.bodyUsed,this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:o&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:n&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:e&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():i&&o&&((r=t)&&DataView.prototype.isPrototypeOf(r))?(this._bodyArrayBuffer=p(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):i&&(ArrayBuffer.prototype.isPrototypeOf(t)||a(t))?this._bodyArrayBuffer=p(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):e&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},o&&(this.blob=function(){var t=f(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(y)}),this.text=function(){var t,e,r,o=f(this);if(o)return o;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,r=l(e),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),o=0;o-1?o:r),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(n),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==e.cache&&"no-cache"!==e.cache)){var i=/([?&])_=[^&]*/;if(i.test(this.url))this.url=this.url.replace(i,"$1_="+(new Date).getTime());else{this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}}function g(t){var e=new FormData;return t.trim().split("&").forEach((function(t){if(t){var r=t.split("="),o=r.shift().replace(/\+/g," "),n=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(o),decodeURIComponent(n))}})),e}function v(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"",this.headers=new c(e.headers),this.url=e.url||"",this._initBody(t)}w.prototype.clone=function(){return new w(this,{body:this._bodyInit})},b.call(w.prototype),b.call(v.prototype),v.prototype.clone=function(){return new v(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new c(this.headers),url:this.url})},v.error=function(){var t=new v(null,{status:0,statusText:""});return t.type="error",t};var T=[301,302,303,307,308];v.redirect=function(t,e){if(-1===T.indexOf(e))throw new RangeError("Invalid status code");return new v(null,{status:e,headers:{location:t}})};var A=t.DOMException;function _(e,r){return new Promise((function(n,s){var a=new w(e,r);if(a.signal&&a.signal.aborted)return s(new A("Aborted","AbortError"));var h=new XMLHttpRequest;function u(){h.abort()}h.onload=function(){var t,e,r={status:h.status,statusText:h.statusText,headers:(t=h.getAllResponseHeaders()||"",e=new c,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(t){var r=t.split(":"),o=r.shift().trim();if(o){var n=r.join(":").trim();e.append(o,n)}})),e)};r.url="responseURL"in h?h.responseURL:r.headers.get("X-Request-URL");var o="response"in h?h.response:h.responseText;setTimeout((function(){n(new v(o,r))}),0)},h.onerror=function(){setTimeout((function(){s(new TypeError("Network request failed"))}),0)},h.ontimeout=function(){setTimeout((function(){s(new TypeError("Network request failed"))}),0)},h.onabort=function(){setTimeout((function(){s(new A("Aborted","AbortError"))}),0)},h.open(a.method,function(e){try{return""===e&&t.location.href?t.location.href:e}catch(t){return e}}(a.url),!0),"include"===a.credentials?h.withCredentials=!0:"omit"===a.credentials&&(h.withCredentials=!1),"responseType"in h&&(o?h.responseType="blob":i&&a.headers.get("Content-Type")&&-1!==a.headers.get("Content-Type").indexOf("application/octet-stream")&&(h.responseType="arraybuffer")),a.headers.forEach((function(t,e){h.setRequestHeader(e,t)})),a.signal&&(a.signal.addEventListener("abort",u),h.onreadystatechange=function(){4===h.readyState&&a.signal.removeEventListener("abort",u)}),h.send(void 0===a._bodyInit?null:a._bodyInit)}))}function E(t,e){return fetch(t,{method:"post",body:JSON.stringify(e)}).then(t=>t.json())}"function"!=typeof A&&((A=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack}).prototype=Object.create(Error.prototype),A.prototype.constructor=A),_.polyfill=!0,t.fetch||(t.fetch=_,t.Headers=c,t.Request=w,t.Response=v),(async()=>{const t=document.querySelector("script[data-website-id]").getAttribute("data-website-id");if(t){const{width:e,height:r}=window.screen,{language:o}=window.navigator,{hostname:n,pathname:i,search:s}=window.location,a=window.document.referrer,h=`${e}x${r}`,u=`${i}${s}`;if(!window.localStorage.getItem("umami.session")){const e=await E("http://localhost:8000/api/session",{website_id:t,hostname:n,url:u,screen:h,language:o});console.log(e),window.localStorage.setItem("umami.session",JSON.stringify(e))}await E("http://localhost:8000/api/collect",{type:"pageview",payload:{url:u,referrer:a,session:JSON.parse(window.localStorage.getItem("umami.session"))}})}})()}();
+!(function () {
+ 'use strict';
+ function e(e) {
+ var t = this.constructor;
+ return this.then(
+ function (n) {
+ return t.resolve(e()).then(function () {
+ return n;
+ });
+ },
+ function (n) {
+ return t.resolve(e()).then(function () {
+ return t.reject(n);
+ });
+ },
+ );
+ }
+ var t = setTimeout;
+ function n(e) {
+ return Boolean(e && void 0 !== e.length);
+ }
+ function r() {}
+ function o(e) {
+ if (!(this instanceof o)) throw new TypeError('Promises must be constructed via new');
+ if ('function' != typeof e) throw new TypeError('not a function');
+ (this._state = 0),
+ (this._handled = !1),
+ (this._value = void 0),
+ (this._deferreds = []),
+ c(e, this);
+ }
+ function i(e, t) {
+ for (; 3 === e._state; ) e = e._value;
+ 0 !== e._state
+ ? ((e._handled = !0),
+ o._immediateFn(function () {
+ var n = 1 === e._state ? t.onFulfilled : t.onRejected;
+ if (null !== n) {
+ var r;
+ try {
+ r = n(e._value);
+ } catch (e) {
+ return void u(t.promise, e);
+ }
+ s(t.promise, r);
+ } else (1 === e._state ? s : u)(t.promise, e._value);
+ }))
+ : e._deferreds.push(t);
+ }
+ function s(e, t) {
+ try {
+ if (t === e) throw new TypeError('A promise cannot be resolved with itself.');
+ if (t && ('object' == typeof t || 'function' == typeof t)) {
+ var n = t.then;
+ if (t instanceof o) return (e._state = 3), (e._value = t), void a(e);
+ if ('function' == typeof n)
+ return void c(
+ ((r = n),
+ (i = t),
+ function () {
+ r.apply(i, arguments);
+ }),
+ e,
+ );
+ }
+ (e._state = 1), (e._value = t), a(e);
+ } catch (t) {
+ u(e, t);
+ }
+ var r, i;
+ }
+ function u(e, t) {
+ (e._state = 2), (e._value = t), a(e);
+ }
+ function a(e) {
+ 2 === e._state &&
+ 0 === e._deferreds.length &&
+ o._immediateFn(function () {
+ e._handled || o._unhandledRejectionFn(e._value);
+ });
+ for (var t = 0, n = e._deferreds.length; t < n; t++) i(e, e._deferreds[t]);
+ e._deferreds = null;
+ }
+ function f(e, t, n) {
+ (this.onFulfilled = 'function' == typeof e ? e : null),
+ (this.onRejected = 'function' == typeof t ? t : null),
+ (this.promise = n);
+ }
+ function c(e, t) {
+ var n = !1;
+ try {
+ e(
+ function (e) {
+ n || ((n = !0), s(t, e));
+ },
+ function (e) {
+ n || ((n = !0), u(t, e));
+ },
+ );
+ } catch (e) {
+ if (n) return;
+ (n = !0), u(t, e);
+ }
+ }
+ (o.prototype['catch'] = function (e) {
+ return this.then(null, e);
+ }),
+ (o.prototype.then = function (e, t) {
+ var n = new this.constructor(r);
+ return i(this, new f(e, t, n)), n;
+ }),
+ (o.prototype['finally'] = e),
+ (o.all = function (e) {
+ return new o(function (t, r) {
+ if (!n(e)) return r(new TypeError('Promise.all accepts an array'));
+ var o = Array.prototype.slice.call(e);
+ if (0 === o.length) return t([]);
+ var i = o.length;
+ function s(e, n) {
+ try {
+ if (n && ('object' == typeof n || 'function' == typeof n)) {
+ var u = n.then;
+ if ('function' == typeof u)
+ return void u.call(
+ n,
+ function (t) {
+ s(e, t);
+ },
+ r,
+ );
+ }
+ (o[e] = n), 0 == --i && t(o);
+ } catch (e) {
+ r(e);
+ }
+ }
+ for (var u = 0; u < o.length; u++) s(u, o[u]);
+ });
+ }),
+ (o.resolve = function (e) {
+ return e && 'object' == typeof e && e.constructor === o
+ ? e
+ : new o(function (t) {
+ t(e);
+ });
+ }),
+ (o.reject = function (e) {
+ return new o(function (t, n) {
+ n(e);
+ });
+ }),
+ (o.race = function (e) {
+ return new o(function (t, r) {
+ if (!n(e)) return r(new TypeError('Promise.race accepts an array'));
+ for (var i = 0, s = e.length; i < s; i++) o.resolve(e[i]).then(t, r);
+ });
+ }),
+ (o._immediateFn =
+ ('function' == typeof setImmediate &&
+ function (e) {
+ setImmediate(e);
+ }) ||
+ function (e) {
+ t(e, 0);
+ }),
+ (o._unhandledRejectionFn = function (e) {
+ 'undefined' != typeof console &&
+ console &&
+ console.warn('Possible Unhandled Promise Rejection:', e);
+ });
+ var l = (function () {
+ if ('undefined' != typeof self) return self;
+ if ('undefined' != typeof window) return window;
+ if ('undefined' != typeof global) return global;
+ throw new Error('unable to locate global object');
+ })();
+ 'Promise' in l
+ ? l.Promise.prototype['finally'] || (l.Promise.prototype['finally'] = e)
+ : (l['Promise'] = o),
+ self.fetch ||
+ (self.fetch = function (e, t) {
+ return (
+ (t = t || {}),
+ new Promise(function (n, r) {
+ var o = new XMLHttpRequest(),
+ i = [],
+ s = [],
+ u = {},
+ a = function () {
+ return {
+ ok: 2 == ((o.status / 100) | 0),
+ statusText: o.statusText,
+ status: o.status,
+ url: o.responseURL,
+ text: function () {
+ return Promise.resolve(o.responseText);
+ },
+ json: function () {
+ return Promise.resolve(JSON.parse(o.responseText));
+ },
+ blob: function () {
+ return Promise.resolve(new Blob([o.response]));
+ },
+ clone: a,
+ headers: {
+ keys: function () {
+ return i;
+ },
+ entries: function () {
+ return s;
+ },
+ get: function (e) {
+ return u[e.toLowerCase()];
+ },
+ has: function (e) {
+ return e.toLowerCase() in u;
+ },
+ },
+ };
+ };
+ for (var f in (o.open(t.method || 'get', e, !0),
+ (o.onload = function () {
+ o.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, function (e, t, n) {
+ i.push((t = t.toLowerCase())), s.push([t, n]), (u[t] = u[t] ? u[t] + ',' + n : n);
+ }),
+ n(a());
+ }),
+ (o.onerror = r),
+ (o.withCredentials = 'include' == t.credentials),
+ t.headers))
+ o.setRequestHeader(f, t.headers[f]);
+ o.send(t.body || null);
+ })
+ );
+ });
+ var d = 'http://192.168.86.78:8000',
+ h = 'umami.session',
+ p = window.screen,
+ v = p.width,
+ w = p.height,
+ y = window.navigator.language,
+ m = window.location,
+ _ = m.hostname,
+ g = m.pathname,
+ b = m.search,
+ j = window.localStorage,
+ P = window.document;
+ function T(e, t) {
+ return fetch(e, { method: 'post', body: JSON.stringify(t) }).then(function (e) {
+ return e.json();
+ });
+ }
+ var R = P.querySelector('script[data-website-id]');
+ if (R) {
+ var S = R.getAttribute('data-website-id');
+ if (S) {
+ var F = P.referrer,
+ x = v + 'x' + w,
+ E = '' + g + b;
+ j.getItem(h) ||
+ T(d + '/api/session', { website_id: S, hostname: _, url: E, screen: x, language: y }).then(
+ function (e) {
+ j.setItem(h, JSON.stringify(e));
+ },
+ ),
+ T(d + '/api/collect', {
+ type: 'pageview',
+ payload: { url: E, referrer: F, session: JSON.parse(j.getItem(h)) },
+ }).then(function (e) {
+ e.status || j.removeItem(h);
+ });
+ }
+ }
+})();
diff --git a/rollup.config.js b/rollup.config.js
index ffbd6eec..8514fde9 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -1,24 +1,21 @@
import 'dotenv/config';
-import { terser } from 'rollup-plugin-terser';
-import replace from 'rollup-plugin-replace';
+import buble from '@rollup/plugin-buble';
+import replace from '@rollup/plugin-replace';
import { nodeResolve } from '@rollup/plugin-node-resolve';
+import { terser } from 'rollup-plugin-terser';
export default {
input: 'scripts/umami/index.js',
output: {
file: 'public/umami.js',
format: 'iife',
- globals: {
- 'detect-browser': 'detectBrowser',
- 'whatwg-fetch': 'fetch',
- },
- plugins: [terser()],
},
- context: 'window',
plugins: [
- nodeResolve(),
replace({
'process.env.UMAMI_URL': JSON.stringify(process.env.UMAMI_URL),
}),
+ nodeResolve(),
+ buble(),
+ terser({ compress: { evaluate: false } }),
],
};
diff --git a/scripts/umami/index.js b/scripts/umami/index.js
index fc768458..5371199d 100644
--- a/scripts/umami/index.js
+++ b/scripts/umami/index.js
@@ -1,4 +1,15 @@
-import 'whatwg-fetch';
+import 'promise-polyfill/src/polyfill';
+import 'unfetch/polyfill';
+
+const HOST_URL = process.env.UMAMI_URL;
+const SESSION_VAR = 'umami.session';
+const {
+ screen: { width, height },
+ navigator: { language },
+ location: { hostname, pathname, search },
+ localStorage: store,
+ document,
+} = window;
function post(url, params) {
return fetch(url, {
@@ -7,33 +18,35 @@ function post(url, params) {
}).then(res => res.json());
}
-(async () => {
- const script = document.querySelector('script[data-website-id]');
+const script = document.querySelector('script[data-website-id]');
+
+if (script) {
const website_id = script.getAttribute('data-website-id');
if (website_id) {
- const { width, height } = window.screen;
- const { language } = window.navigator;
- const { hostname, pathname, search } = window.location;
- const referrer = window.document.referrer;
+ const referrer = document.referrer;
const screen = `${width}x${height}`;
const url = `${pathname}${search}`;
- if (!window.localStorage.getItem('umami.session')) {
- const session = await post(`${process.env.UMAMI_URL}/api/session`, {
+ if (!store.getItem(SESSION_VAR)) {
+ post(`${HOST_URL}/api/session`, {
website_id,
hostname,
url,
screen,
language,
+ }).then(session => {
+ store.setItem(SESSION_VAR, JSON.stringify(session));
});
- console.log(session);
- window.localStorage.setItem('umami.session', JSON.stringify(session));
}
- await post(`${process.env.UMAMI_URL}/api/collect`, {
+ post(`${HOST_URL}/api/collect`, {
type: 'pageview',
- payload: { url, referrer, session: JSON.parse(window.localStorage.getItem('umami.session')) },
+ payload: { url, referrer, session: JSON.parse(store.getItem(SESSION_VAR)) },
+ }).then(response => {
+ if (!response.status) {
+ store.removeItem(SESSION_VAR);
+ }
});
}
-})();
+}
diff --git a/yarn.lock b/yarn.lock
index 8e04bcc5..28c580aa 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1187,6 +1187,15 @@
dependencies:
pkg-up "^3.1.0"
+"@rollup/plugin-buble@^0.21.3":
+ version "0.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-0.21.3.tgz#1649a915b1d051a4f430d40e7734a7f67a69b33e"
+ integrity sha512-Iv8cCuFPnMdqV4pcyU+OrfjOfagPArRQ1PyQjx5KgHk3dARedI+8PNTLSMpJts0lQJr8yF2pAU4GxpxCBJ9HYw==
+ dependencies:
+ "@rollup/pluginutils" "^3.0.8"
+ "@types/buble" "^0.19.2"
+ buble "^0.20.0"
+
"@rollup/plugin-node-resolve@^8.4.0":
version "8.4.0"
resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz#261d79a680e9dc3d86761c14462f24126ba83575"
@@ -1200,7 +1209,15 @@
is-module "^1.0.0"
resolve "^1.17.0"
-"@rollup/pluginutils@^3.1.0":
+"@rollup/plugin-replace@^2.3.3":
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.3.tgz#cd6bae39444de119f5d905322b91ebd4078562e7"
+ integrity sha512-XPmVXZ7IlaoWaJLkSCDaa0Y6uVo5XQYHhiMFzOd5qSv5rE+t/UJToPIOE56flKIxBFQI27ONsxb7dqHnwSsjKQ==
+ dependencies:
+ "@rollup/pluginutils" "^3.0.8"
+ magic-string "^0.25.5"
+
+"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
@@ -1327,6 +1344,13 @@
"@svgr/plugin-svgo" "^5.4.0"
loader-utils "^2.0.0"
+"@types/buble@^0.19.2":
+ version "0.19.2"
+ resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1"
+ integrity sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q==
+ dependencies:
+ magic-string "^0.25.0"
+
"@types/color-name@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
@@ -1587,12 +1611,17 @@
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+acorn-dynamic-import@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
+ integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==
+
acorn-jsx@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==
-acorn@^6.2.1:
+acorn@^6.2.1, acorn@^6.4.1:
version "6.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
@@ -2066,6 +2095,19 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.6.0, browserslist@^4.
escalade "^3.0.1"
node-releases "^1.1.58"
+buble@^0.20.0:
+ version "0.20.0"
+ resolved "https://registry.yarnpkg.com/buble/-/buble-0.20.0.tgz#a143979a8d968b7f76b57f38f2e7ce7cfe938d1f"
+ integrity sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw==
+ dependencies:
+ acorn "^6.4.1"
+ acorn-dynamic-import "^4.0.0"
+ acorn-jsx "^5.2.0"
+ chalk "^2.4.2"
+ magic-string "^0.25.7"
+ minimist "^1.2.5"
+ regexpu-core "4.5.4"
+
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
@@ -3416,11 +3458,6 @@ estraverse@^5.1.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642"
integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==
-estree-walker@^0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
- integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
-
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
@@ -4874,7 +4911,7 @@ lru-cache@5.1.1, lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
-magic-string@^0.25.2:
+magic-string@^0.25.0, magic-string@^0.25.5, magic-string@^0.25.7:
version "0.25.7"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
@@ -6527,6 +6564,11 @@ promise-inflight@^1.0.1:
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+promise-polyfill@^8.1.3:
+ version "8.1.3"
+ resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116"
+ integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==
+
prop-types-exact@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869"
@@ -6751,7 +6793,7 @@ reflect.ownkeys@^0.2.0:
resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460"
integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=
-regenerate-unicode-properties@^8.2.0:
+regenerate-unicode-properties@^8.0.2, regenerate-unicode-properties@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
@@ -6806,6 +6848,18 @@ regexpp@^3.1.0:
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
+regexpu-core@4.5.4:
+ version "4.5.4"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae"
+ integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==
+ dependencies:
+ regenerate "^1.4.0"
+ regenerate-unicode-properties "^8.0.2"
+ regjsgen "^0.5.0"
+ regjsparser "^0.6.0"
+ unicode-match-property-ecmascript "^1.0.4"
+ unicode-match-property-value-ecmascript "^1.1.0"
+
regexpu-core@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938"
@@ -6818,12 +6872,12 @@ regexpu-core@^4.7.0:
unicode-match-property-ecmascript "^1.0.4"
unicode-match-property-value-ecmascript "^1.2.0"
-regjsgen@^0.5.1:
+regjsgen@^0.5.0, regjsgen@^0.5.1:
version "0.5.2"
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
-regjsparser@^0.6.4:
+regjsparser@^0.6.0, regjsparser@^0.6.4:
version "0.6.4"
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272"
integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==
@@ -7019,14 +7073,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0"
inherits "^2.0.1"
-rollup-plugin-replace@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz#f41ae5372e11e7a217cde349c8b5d5fd115e70e3"
- integrity sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==
- dependencies:
- magic-string "^0.25.2"
- rollup-pluginutils "^2.6.0"
-
rollup-plugin-terser@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-6.1.0.tgz#071866585aea104bfbb9dd1019ac523e63c81e45"
@@ -7037,13 +7083,6 @@ rollup-plugin-terser@^6.1.0:
serialize-javascript "^3.0.0"
terser "^4.7.0"
-rollup-pluginutils@^2.6.0:
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
- integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
- dependencies:
- estree-walker "^0.6.1"
-
rollup@^2.21.0:
version "2.21.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.21.0.tgz#d2e114533812043d5c9b7b0a83f1b2a242e4e1d6"
@@ -8023,6 +8062,11 @@ typescript@^3.9.3:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.6.tgz#8f3e0198a34c3ae17091b35571d3afd31999365a"
integrity sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw==
+unfetch@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.1.0.tgz#6ec2dd0de887e58a4dee83a050ded80ffc4137db"
+ integrity sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg==
+
unherit@^1.0.4:
version "1.1.3"
resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22"
@@ -8044,7 +8088,7 @@ unicode-match-property-ecmascript@^1.0.4:
unicode-canonical-property-names-ecmascript "^1.0.4"
unicode-property-aliases-ecmascript "^1.0.4"
-unicode-match-property-value-ecmascript@^1.2.0:
+unicode-match-property-value-ecmascript@^1.1.0, unicode-match-property-value-ecmascript@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
@@ -8347,11 +8391,6 @@ webpack@4.42.1:
watchpack "^1.6.0"
webpack-sources "^1.4.1"
-whatwg-fetch@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.2.0.tgz#8e134f701f0a4ab5fda82626f113e2b647fd16dc"
- integrity sha512-SdGPoQMMnzVYThUbSrEvqTlkvC1Ux27NehaJ/GUHBfNrh5Mjg+1/uRyFMwVnxO2MrikMWvWAqUGgQOfVU4hT7w==
-
which-pm-runs@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"