" };
+
describe("pageview", () => {
const _window = window;
const { location } = window;
@@ -57,19 +60,19 @@ describe("pageview", () => {
});
test("pass page as a route", async () => {
- const localVue = createLocalVue();
- const router = new VueRouter({
- mode: "abstract",
- routes: [{ name: "home", path: "/" }],
+ const app = createApp();
+ const router = createRouter({
+ history: createMemoryHistory(),
+ routes: [{ name: "home", path: "/", component: Home }],
});
- localVue.use(VueRouter);
+ app.use(router);
router.push("/");
await flushPromises();
- pageview(router.currentRoute);
+ pageview(router.currentRoute.value);
expect(event).toHaveBeenCalledWith("page_view", {
send_page_view: true,
@@ -80,9 +83,9 @@ describe("pageview", () => {
});
test("track pageview without window", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
config: { id: 1 },
});
@@ -95,25 +98,25 @@ describe("pageview", () => {
describe("pageTrackerUseFullPath", () => {
test("tracks using router `path` property", async () => {
- const localVue = createLocalVue();
- const router = new VueRouter({
- mode: "abstract",
- routes: [{ name: "home", path: "/" }],
+ const app = createApp();
+ const router = createRouter({
+ history: createMemoryHistory(),
+ routes: [{ path: "/" }, { path: "/about", component: About }],
});
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
config: {
id: 1,
},
});
- localVue.use(VueRouter);
+ app.use(router);
router.push("/about?foo=bar");
await flushPromises();
- pageview(router.currentRoute);
+ pageview(router.currentRoute.value);
expect(event).toHaveBeenCalledWith("page_view", {
send_page_view: true,
@@ -123,27 +126,27 @@ describe("pageview", () => {
});
test("tracks using router `fullPath` property", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
pageTrackerUseFullPath: true,
config: {
id: 1,
},
});
- const router = new VueRouter({
- mode: "abstract",
- routes: [{ name: "home", path: "/" }],
+ const router = createRouter({
+ history: createMemoryHistory(),
+ routes: [{ path: "/" }, { path: "/about", component: About }],
});
- localVue.use(VueRouter);
+ app.use(router);
router.push("/about?foo=bar");
await flushPromises();
- pageview(router.currentRoute);
+ pageview(router.currentRoute.value);
expect(event).toHaveBeenCalledWith("page_view", {
send_page_view: true,
@@ -155,15 +158,18 @@ describe("pageview", () => {
describe("router base path", () => {
test("use with router installed", async () => {
- const localVue = createLocalVue();
- const router = new VueRouter({
- mode: "abstract",
+ const app = createApp();
+ const router = createRouter({
+ history: createMemoryHistory(),
base: "/app/",
- routes: [{ path: "/" }, { path: "/about" }],
+ routes: [
+ { path: "/", component: Home },
+ { path: "/about", component: About },
+ ],
});
- localVue.use(VueRouter);
- localVue.use(
+ app.use(router);
+ app.use(
VueGtag,
{
pageTrackerPrependBase: true,
@@ -178,7 +184,7 @@ describe("pageview", () => {
await flushPromises();
- pageview(router.currentRoute);
+ pageview(router.currentRoute.value);
expect(event).toHaveBeenCalledWith("page_view", {
send_page_view: true,
@@ -188,15 +194,18 @@ describe("pageview", () => {
});
test("use without router installed", async () => {
- const localVue = createLocalVue();
- const router = new VueRouter({
- mode: "abstract",
+ const app = createApp();
+ const router = createRouter({
+ history: createMemoryHistory(),
base: "/app/",
- routes: [{ path: "/" }, { path: "/about" }],
+ routes: [
+ { path: "/", component: Home },
+ { path: "/about", component: About },
+ ],
});
- localVue.use(VueRouter);
- localVue.use(VueGtag, {
+ app.use(router);
+ app.use(VueGtag, {
pageTrackerPrependBase: true,
config: {
id: 1,
@@ -207,7 +216,7 @@ describe("pageview", () => {
await flushPromises();
- pageview(router.currentRoute);
+ pageview(router.currentRoute.value);
expect(event).toHaveBeenCalledWith("page_view", {
send_page_view: true,
diff --git a/test/api/query.spec.js b/test/api/query.spec.js
index a098663..2a2a924 100644
--- a/test/api/query.spec.js
+++ b/test/api/query.spec.js
@@ -1,4 +1,4 @@
-import { createLocalVue } from "@vue/test-utils";
+import { createApp } from "vue";
import VueGtag from "@/index";
import query from "@/api/query";
@@ -15,9 +15,9 @@ describe("query", () => {
});
test("passes argumemets to the gtag instance", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag);
+ app.use(VueGtag);
jest.spyOn(window, "gtag").mockReturnValue();
@@ -27,9 +27,9 @@ describe("query", () => {
});
test("passes argumemets to the custom named instance", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
globalObjectName: "foo",
});
@@ -41,9 +41,9 @@ describe("query", () => {
});
test("use query with gtag disabled", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
bootstrap: false,
config: {
id: 1,
diff --git a/test/api/screenview.spec.js b/test/api/screenview.spec.js
index d8ee3c0..d9c9513 100644
--- a/test/api/screenview.spec.js
+++ b/test/api/screenview.spec.js
@@ -1,4 +1,4 @@
-import { createLocalVue } from "@vue/test-utils";
+import { createApp } from "vue";
import VueGtag from "@/index";
import screenview from "@/api/screenview";
import event from "@/api/event";
@@ -11,9 +11,9 @@ describe("screenview", () => {
});
test("fires a screenview as string", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
appName: "MyApp",
config: {
id: 1,
@@ -29,9 +29,9 @@ describe("screenview", () => {
});
test("fires a screenview as object", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
appName: "MyApp",
config: {
id: 1,
@@ -49,9 +49,9 @@ describe("screenview", () => {
});
test("uses a custom app_name", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
appName: "MyApp",
config: {
id: 1,
diff --git a/test/basic.spec.js b/test/basic.spec.js
index 887b2c1..1a58dc3 100644
--- a/test/basic.spec.js
+++ b/test/basic.spec.js
@@ -1,4 +1,4 @@
-import { createLocalVue } from "@vue/test-utils";
+import { createApp } from "vue";
import VueGtag from "@/index";
import bootstrap from "@/bootstrap";
@@ -10,13 +10,12 @@ describe("basic", () => {
});
test("installs plugin", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag);
+ app.use(VueGtag);
- expect(localVue.$gtag).toBeDefined();
- expect(localVue.prototype.$gtag).toBeDefined();
- expect(Object.keys(localVue.$gtag)).toMatchInlineSnapshot(`
+ expect(Object.keys(app.config.globalProperties.$gtag))
+ .toMatchInlineSnapshot(`
Array [
"query",
"config",
@@ -37,39 +36,27 @@ describe("basic", () => {
});
test("installs plugin without window object", () => {
- const localVue = createLocalVue();
+ const app = createApp();
delete global.window;
expect(() => {
- localVue.use(VueGtag);
- }).not.toThrow();
- });
-
- test("can use API without window object", () => {
- const localVue = createLocalVue();
-
- localVue.use(VueGtag);
-
- delete global.window;
-
- expect(() => {
- localVue.$gtag.query();
+ app.use(VueGtag);
}).not.toThrow();
});
test("bootstraps the plugin", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag);
+ app.use(VueGtag);
expect(bootstrap).toHaveBeenCalled();
});
test("bootstrap is disabled", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
bootstrap: false,
});
diff --git a/test/bootstrap.spec.js b/test/bootstrap.spec.js
index 2155b25..cacc366 100644
--- a/test/bootstrap.spec.js
+++ b/test/bootstrap.spec.js
@@ -1,7 +1,7 @@
-import { createLocalVue } from "@vue/test-utils";
+import { createApp } from "vue";
import VueGtag from "@/index";
import MockDate from "mockdate";
-import VueRouter from "vue-router";
+import { createMemoryHistory, createRouter } from "vue-router";
import flushPromises from "flush-promises";
import registerGlobals from "@/register-globals";
import addRoutesTracker from "@/add-routes-tracker";
@@ -27,9 +27,9 @@ describe("boostrap", () => {
});
test("loads gtag script", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
config: {
id: 1,
},
@@ -44,9 +44,9 @@ describe("boostrap", () => {
});
test("loads gtag script with custom source", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
customResourceURL: "foo.com",
config: {
id: 1,
@@ -60,9 +60,9 @@ describe("boostrap", () => {
});
test("loads gtag script with custom preconnect origin", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
customPreconnectOrigin: "bar.com",
config: {
id: 1,
@@ -76,9 +76,9 @@ describe("boostrap", () => {
});
test("loads gtag script with defer script", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
deferScriptLoad: true,
config: {
id: 1,
@@ -92,17 +92,17 @@ describe("boostrap", () => {
});
test("attaches library to window scope", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag);
+ app.use(VueGtag);
expect(registerGlobals).toHaveBeenCalledBefore(addConfiguration);
});
test("fires a configuration hit on install", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
config: {
id: 1,
},
@@ -113,16 +113,16 @@ describe("boostrap", () => {
});
test("enables automatic page tracker", () => {
- const localVue = createLocalVue();
- const router = new VueRouter({
- mode: "abstract",
+ const app = createApp();
+ const router = createRouter({
+ history: createMemoryHistory(),
routes: [
{ name: "home", path: "/" },
{ name: "about", path: "/about" },
],
});
- localVue.use(
+ app.use(
VueGtag,
{
config: {
@@ -137,9 +137,9 @@ describe("boostrap", () => {
});
test("prevents script loading", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
disableScriptLoad: true,
config: {
id: 1,
@@ -150,14 +150,14 @@ describe("boostrap", () => {
});
test("uses onReady callback after script is loaded", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
const spy = jest.fn();
Object.defineProperty(window, "gtag", {
get: () => "global_registerd_value",
});
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
onReady: spy,
config: {
id: 1,
@@ -170,13 +170,13 @@ describe("boostrap", () => {
});
test("uses onError callback after script failed loading", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
const spy = jest.fn();
const error = new Error("error_value");
utils.load.mockRejectedValue(error);
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
onError: spy,
config: {
id: 1,
@@ -189,9 +189,9 @@ describe("boostrap", () => {
});
test("bootstrap manually", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
bootstrap: false,
config: {
id: 1,
diff --git a/test/register-globals.spec.js b/test/register-globals.spec.js
index d7b9148..e32f828 100644
--- a/test/register-globals.spec.js
+++ b/test/register-globals.spec.js
@@ -1,4 +1,4 @@
-import { createLocalVue } from "@vue/test-utils";
+import { createApp } from "vue";
import VueGtag from "@/index";
import flushPromises from "flush-promises";
import * as api from "@/api";
@@ -19,9 +19,9 @@ describe("registerGlobals", () => {
});
test("register global dataLayer and globalObject", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
config: {
id: 1,
},
@@ -32,9 +32,9 @@ describe("registerGlobals", () => {
});
test("register globalObject with custom name", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
globalObjectName: "foo",
config: {
id: 1,
@@ -46,9 +46,9 @@ describe("registerGlobals", () => {
});
test("register dataLayer with custom name", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
globalDataLayerName: "bar",
config: {
id: 1,
@@ -60,9 +60,9 @@ describe("registerGlobals", () => {
});
test("first hit is current date", () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
config: {
id: 1,
},
@@ -72,9 +72,9 @@ describe("registerGlobals", () => {
});
test("optOut when disabled", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueGtag, {
+ app.use(VueGtag, {
enabled: false,
config: {
id: 1,
diff --git a/test/track.spec.js b/test/track.spec.js
index e3e8085..07c4c98 100644
--- a/test/track.spec.js
+++ b/test/track.spec.js
@@ -1,13 +1,14 @@
-import { mount, createLocalVue } from "@vue/test-utils";
+import { createApp } from "vue";
import VueGtag from "@/index";
-import VueRouter from "vue-router";
+import { createMemoryHistory, createRouter } from "vue-router";
import flushPromises from "flush-promises";
import * as api from "@/api";
import * as utils from "@/utils";
jest.mock("@/api");
-const App = { template: "
app
" };
+const Home = { template: "
" };
+const About = { template: "
" };
describe("track", () => {
const { location } = window;
@@ -26,9 +27,12 @@ describe("track", () => {
});
beforeEach(() => {
- router = new VueRouter({
- mode: "abstract",
- routes: [{ name: "home", path: "/" }, { path: "/about" }],
+ router = createRouter({
+ history: createMemoryHistory(),
+ routes: [
+ { name: "home", path: "/", component: Home },
+ { path: "/about", component: About },
+ ],
});
jest.spyOn(window.console, "warn").mockReturnValue();
@@ -41,10 +45,10 @@ describe("track", () => {
describe("pageview", () => {
test("tracks route with name", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueRouter);
- localVue.use(
+ app.use(router);
+ app.use(
VueGtag,
{
config: {
@@ -54,8 +58,6 @@ describe("track", () => {
router
);
- mount(App, { router, localVue });
-
router.push("/");
await flushPromises();
@@ -68,10 +70,10 @@ describe("track", () => {
});
test("tracks route without name", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueRouter);
- localVue.use(
+ app.use(router);
+ app.use(
VueGtag,
{
config: {
@@ -81,8 +83,6 @@ describe("track", () => {
router
);
- mount(App, { router, localVue });
-
router.push("/about");
await flushPromises();
@@ -96,11 +96,11 @@ describe("track", () => {
describe("screenview", () => {
test("tracks route with screenview", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueRouter);
+ app.use(router);
- localVue.use(
+ app.use(
VueGtag,
{
pageTrackerScreenviewEnabled: true,
@@ -112,8 +112,6 @@ describe("track", () => {
router
);
- mount(App, { router, localVue });
-
router.push("/");
await flushPromises();
@@ -125,10 +123,10 @@ describe("track", () => {
});
test("warns when no appName is provided", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueRouter);
- localVue.use(
+ app.use(router);
+ app.use(
VueGtag,
{
pageTrackerScreenviewEnabled: true,
@@ -139,8 +137,6 @@ describe("track", () => {
router
);
- mount(App, { localVue, router });
-
router.push("/");
await flushPromises();
@@ -151,10 +147,10 @@ describe("track", () => {
});
test("warns when no route name is provided", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueRouter);
- localVue.use(
+ app.use(router);
+ app.use(
VueGtag,
{
appName: "MyApp",
@@ -166,8 +162,6 @@ describe("track", () => {
router
);
- mount(App, { localVue, router });
-
router.push("/about");
await flushPromises();
@@ -180,11 +174,11 @@ describe("track", () => {
describe("pageTrackerTemplate", () => {
test("tracks pageview", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueRouter);
+ app.use(router);
- localVue.use(
+ app.use(
VueGtag,
{
pageTrackerTemplate: (to, from) => ({
@@ -198,8 +192,6 @@ describe("track", () => {
router
);
- mount(App, { router, localVue });
-
router.push("/");
await flushPromises();
@@ -213,11 +205,11 @@ describe("track", () => {
});
test("tracks screenview", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueRouter);
+ app.use(router);
- localVue.use(
+ app.use(
VueGtag,
{
pageTrackerScreenviewEnabled: true,
@@ -232,8 +224,6 @@ describe("track", () => {
router
);
- mount(App, { router, localVue });
-
router.push("/");
await flushPromises();
@@ -251,11 +241,11 @@ describe("track", () => {
describe("pageTrackerSkipSamePath", () => {
test("tracks the same path twice", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueRouter);
+ app.use(router);
- localVue.use(
+ app.use(
VueGtag,
{
pageTrackerSkipSamePath: false,
@@ -266,8 +256,6 @@ describe("track", () => {
router
);
- mount(App, { router, localVue });
-
router.push("/about");
await flushPromises();
@@ -290,11 +278,11 @@ describe("track", () => {
});
test("tracks the same path once", async () => {
- const localVue = createLocalVue();
+ const app = createApp();
- localVue.use(VueRouter);
+ app.use(router);
- localVue.use(
+ app.use(
VueGtag,
{
config: {
@@ -304,8 +292,6 @@ describe("track", () => {
router
);
- mount(App, { router, localVue });
-
router.push("/about");
await flushPromises();
diff --git a/yarn.lock b/yarn.lock
index a403371..8d7648c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -457,6 +457,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64"
integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==
+"@babel/parser@^7.12.0":
+ version "7.14.1"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.1.tgz#1bd644b5db3f5797c4479d89ec1817fe02b84c47"
+ integrity sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==
+
"@babel/parser@^7.12.13", "@babel/parser@^7.14.0":
version "7.14.0"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.0.tgz#2f0ebfed92bcddcc8395b91f1895191ce2760380"
@@ -1319,6 +1324,14 @@
lodash "^4.17.13"
to-fast-properties "^2.0.0"
+"@babel/types@^7.12.0":
+ version "7.14.1"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.1.tgz#095bd12f1c08ab63eff6e8f7745fa7c9cc15a9db"
+ integrity sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.14.0"
+ to-fast-properties "^2.0.0"
+
"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.13.16", "@babel/types@^7.13.17", "@babel/types@^7.14.0", "@babel/types@^7.4.4":
version "7.14.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.0.tgz#3fc3fc74e0cdad878182e5f66cc6bcab1915a802"
@@ -2072,14 +2085,53 @@
"@typescript-eslint/types" "4.22.1"
eslint-visitor-keys "^2.0.0"
-"@vue/test-utils@^1.0.0-beta.29":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.2.0.tgz#3bc8c17ed549157275f0aec6b95da40887f7297f"
- integrity sha512-poBTLqeJYNq1TXVhtVfnY8vELUVOFdJY8KZZoUuaAkIqPTWsxonU1M8nMWpZT+xEMrM+49+YcuEqtMHVD9Q9gw==
+"@vue/compiler-core@3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.11.tgz#5ef579e46d7b336b8735228758d1c2c505aae69a"
+ integrity sha512-6sFj6TBac1y2cWCvYCA8YzHJEbsVkX7zdRs/3yK/n1ilvRqcn983XvpBbnN3v4mZ1UiQycTvOiajJmOgN9EVgw==
dependencies:
- dom-event-types "^1.0.0"
- lodash "^4.17.15"
- pretty "^2.0.0"
+ "@babel/parser" "^7.12.0"
+ "@babel/types" "^7.12.0"
+ "@vue/shared" "3.0.11"
+ estree-walker "^2.0.1"
+ source-map "^0.6.1"
+
+"@vue/compiler-dom@3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.11.tgz#b15fc1c909371fd671746020ba55b5dab4a730ee"
+ integrity sha512-+3xB50uGeY5Fv9eMKVJs2WSRULfgwaTJsy23OIltKgMrynnIj8hTYY2UL97HCoz78aDw1VDXdrBQ4qepWjnQcw==
+ dependencies:
+ "@vue/compiler-core" "3.0.11"
+ "@vue/shared" "3.0.11"
+
+"@vue/reactivity@3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.11.tgz#07b588349fd05626b17f3500cbef7d4bdb4dbd0b"
+ integrity sha512-SKM3YKxtXHBPMf7yufXeBhCZ4XZDKP9/iXeQSC8bBO3ivBuzAi4aZi0bNoeE2IF2iGfP/AHEt1OU4ARj4ao/Xw==
+ dependencies:
+ "@vue/shared" "3.0.11"
+
+"@vue/runtime-core@3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.11.tgz#c52dfc6acf3215493623552c1c2919080c562e44"
+ integrity sha512-87XPNwHfz9JkmOlayBeCCfMh9PT2NBnv795DSbi//C/RaAnc/bGZgECjmkD7oXJ526BZbgk9QZBPdFT8KMxkAg==
+ dependencies:
+ "@vue/reactivity" "3.0.11"
+ "@vue/shared" "3.0.11"
+
+"@vue/runtime-dom@3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.11.tgz#7a552df21907942721feb6961c418e222a699337"
+ integrity sha512-jm3FVQESY3y2hKZ2wlkcmFDDyqaPyU3p1IdAX92zTNeCH7I8zZ37PtlE1b9NlCtzV53WjB4TZAYh9yDCMIEumA==
+ dependencies:
+ "@vue/runtime-core" "3.0.11"
+ "@vue/shared" "3.0.11"
+ csstype "^2.6.8"
+
+"@vue/shared@3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.11.tgz#20d22dd0da7d358bb21c17f9bde8628152642c77"
+ integrity sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==
JSONStream@^1.0.4, JSONStream@^1.3.4, JSONStream@^1.3.5:
version "1.3.5"
@@ -3193,7 +3245,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
dependencies:
delayed-stream "~1.0.0"
-commander@^2.19.0, commander@^2.20.0, commander@~2.20.3:
+commander@^2.20.0, commander@~2.20.3:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@@ -3258,15 +3310,6 @@ concat-with-sourcemaps@^1.1.0:
dependencies:
source-map "^0.6.1"
-condense-newlines@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f"
- integrity sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=
- dependencies:
- extend-shallow "^2.0.1"
- is-whitespace "^0.3.0"
- kind-of "^3.0.2"
-
config-chain@^1.1.12:
version "1.1.12"
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
@@ -3632,6 +3675,11 @@ cssstyle@^2.3.0:
dependencies:
cssom "~0.3.6"
+csstype@^2.6.8:
+ version "2.6.17"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.17.tgz#4cf30eb87e1d1a005d8b6510f95292413f6a1c0e"
+ integrity sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==
+
currently-unhandled@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@@ -3916,11 +3964,6 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
-dom-event-types@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae"
- integrity sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==
-
dom-serializer@0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
@@ -4015,16 +4058,6 @@ editor@~1.0.0:
resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742"
integrity sha1-YMf4e9YrzGqJT6jM1q+3gjok90I=
-editorconfig@^0.15.3:
- version "0.15.3"
- resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5"
- integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==
- dependencies:
- commander "^2.19.0"
- lru-cache "^4.1.5"
- semver "^5.6.0"
- sigmund "^1.0.1"
-
electron-to-chromium@^1.3.488:
version "1.3.712"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.712.tgz#ae467ffe5f95961c6d41ceefe858fc36eb53b38f"
@@ -4346,6 +4379,11 @@ estree-walker@^1.0.1:
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
+estree-walker@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
esutils@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@@ -5876,11 +5914,6 @@ is-utf8@^0.2.1:
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-is-whitespace@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f"
- integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38=
-
is-windows@^1.0.1, is-windows@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
@@ -6440,17 +6473,6 @@ joycon@^2.2.5:
resolved "https://registry.yarnpkg.com/joycon/-/joycon-2.2.5.tgz#8d4cf4cbb2544d7b7583c216fcdfec19f6be1615"
integrity sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ==
-js-beautify@^1.6.12:
- version "1.13.13"
- resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.13.tgz#756907d1728f329f2b84c42efd56ad17514620bf"
- integrity sha512-oH+nc0U5mOAqX8M5JO1J0Pw/7Q35sAdOsM5W3i87pir9Ntx6P/5Gx1xLNoK+MGyvHk4rqqRCE4Oq58H6xl2W7A==
- dependencies:
- config-chain "^1.1.12"
- editorconfig "^0.15.3"
- glob "^7.1.3"
- mkdirp "^1.0.4"
- nopt "^5.0.0"
-
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -6999,7 +7021,7 @@ lowercase-keys@^1.0.0:
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
-lru-cache@^4.0.1, lru-cache@^4.1.5:
+lru-cache@^4.0.1:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
@@ -7341,11 +7363,6 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.0, mkdirp@~0.5.1:
dependencies:
minimist "^1.2.5"
-mkdirp@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
- integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-
mockdate@^3.0.5:
version "3.0.5"
resolved "https://registry.yarnpkg.com/mockdate/-/mockdate-3.0.5.tgz#789be686deb3149e7df2b663d2bc4392bc3284fb"
@@ -7503,13 +7520,6 @@ nopt@^4.0.1, nopt@^4.0.3:
abbrev "1"
osenv "^0.1.4"
-nopt@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88"
- integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==
- dependencies:
- abbrev "1"
-
normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
@@ -8714,15 +8724,6 @@ pretty-format@^26.6.2:
ansi-styles "^4.0.0"
react-is "^17.0.1"
-pretty@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5"
- integrity sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=
- dependencies:
- condense-newlines "^0.2.1"
- extend-shallow "^2.0.1"
- js-beautify "^1.6.12"
-
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
@@ -9651,11 +9652,6 @@ shellwords@^0.1.1:
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
-sigmund@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
- integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
-
signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
@@ -10765,10 +10761,10 @@ vue-eslint-parser@^7.6.0:
esquery "^1.4.0"
lodash "^4.17.15"
-vue-router@^3.1.3:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.1.tgz#edf3cf4907952d1e0583e079237220c5ff6eb6c9"
- integrity sha512-RRQNLT8Mzr8z7eL4p7BtKvRaTSGdCbTy2+Mm5HTJvLGYSSeG9gDzNasJPP/yOYKLy+/cLG/ftrqq5fvkFwBJEw==
+vue-router@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.6.tgz#91750db507d26642f225b0ec6064568e5fe448d6"
+ integrity sha512-Y04llmK2PyaESj+N33VxLjGCUDuv9t4q2OpItEGU7POZiuQZaugV6cJpE6Qm1sVFtxufodLKN2y2dQl9nk0Reg==
vue-template-compiler@^2.6.10:
version "2.6.12"
@@ -10778,10 +10774,14 @@ vue-template-compiler@^2.6.10:
de-indent "^1.0.2"
he "^1.1.0"
-vue@^2.6.12:
- version "2.6.12"
- resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"
- integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==
+vue@^3.0.11:
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.11.tgz#c82f9594cbf4dcc869241d4c8dd3e08d9a8f4b5f"
+ integrity sha512-3/eUi4InQz8MPzruHYSTQPxtM3LdZ1/S/BvaU021zBnZi0laRUyH6pfuE4wtUeLvI8wmUNwj5wrZFvbHUXL9dw==
+ dependencies:
+ "@vue/compiler-dom" "3.0.11"
+ "@vue/runtime-dom" "3.0.11"
+ "@vue/shared" "3.0.11"
w3c-hr-time@^1.0.2:
version "1.0.2"