diff --git a/CHANGELOG.md b/CHANGELOG.md
index cac9cf3..9265665 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,17 @@
+# Version 1.0.3 - 2020/08/25
+
+- Update to buttplug-js 0.13.2 (Android workaround)
+
+# Version 1.0.2 - 2019/10/05
+
+- Update to buttplug-js 0.12.1 (Motorbunny support)
+- Fix bug with intiface desktop websocket loading
+
+# Version 1.0.1 - 2019/07/27
+
+- Update to buttplug-js 0.12.0
+- Try loading device config from web CDN by default
+
# Version 1.0.0 - 2019/06/10
- Rebuild component from the ground up, using vue-cli
diff --git a/README.md b/README.md
index 78c9ee7..ca5a1aa 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,6 @@ features like:
- Connecting to Websocket and Local (In-Browser) servers
- Device listing and management
- Log display
-- Buttplug crash/exception handling
## Table Of Contents
diff --git a/manual/intiface1.png b/manual/intiface1.png
new file mode 100755
index 0000000..bccc286
Binary files /dev/null and b/manual/intiface1.png differ
diff --git a/manual/manual.md b/manual/manual.md
new file mode 100644
index 0000000..75335e6
--- /dev/null
+++ b/manual/manual.md
@@ -0,0 +1,144 @@
+## Connecting to Hardware
+
+Using this app will require connecting to hardware of some kind. This
+may be a bluetooth sex toy, a fucking machine controlled over serial
+port, or some other type of device.
+
+The steps are as follows:
+
+- Decide whether you using Intiface Desktop or the browser itself (not
+ all browsers support this) to talk to hardware.
+- Scan for devices
+- Once devices are found, make them "active" so the application can
+ use them.
+
+### Connection Interface
+
+Connections will begin by using the Connection portion of the
+interface.
+
+
+
+You have two options for connections:
+
+* [Intiface Desktop](https://intiface.com/desktop), a cross platform
+ application for connecting to Bluetooth/Serial/etc... devices.
+* In Browser Connection, which allows you to connect to bluetooth
+ devices if you are using [Google Chrome](https://chrome.google.com)
+ derived web browsers.
+
+#### Via Intiface Desktop
+
+For Intiface Desktop, you will need to use either Insecure or Secure
+Websockets.
+
+
+
+This application will, by default, try to connect to all of the
+default address/ports on localhost. This should work for most
+installations.
+
+If you are using **Google Chrome** and connecting to a copy of
+Intiface Desktop on the same machine as your browser, you can use
+_Insecure Websockets_ and do not need to worry about secure
+certificates.
+
+If you are using **Firefox** or **Safari**, you will need to use
+Secure Websockets and go through the secure certificate
+generation/acceptance steps in Intiface Desktop.
+
+#### Via the Browser
+
+If you are using **[Google Chrome](https://chrome.google.com)** on
+Windows, Mac, Linux, ChromeOS, or Android, or
+**[WebBLE](https://apps.apple.com/us/app/webble/id1193531073)** on
+iPhone/iPad (iOS), you can also use your hardware in the browser
+without using an outside program. Click the "Connect In Browser"
+button.
+
+If you are not using a browser that has the proper requirements (in
+this case, WebBluetooth), the button will be disabled and will read
+_"Requires WebBluetooth"_.
+
+#### Advanced Settings
+
+_Advanced Settings_ allows you to change how certain portions of
+connecting work.
+
+
+
+- By default, we will scan for devices on connect. This can be turned
+ off here.
+- If you need to connect to Intiface Desktop on another machine or
+ port, that can also be set up here. All interfaces and ports that
+ are listed will be tried, and the first successful connection will
+ proceed. You can also choose whether _insecure_ (ws://) or _secure_
+ (wss://) connections will be used.
+
+### Discovering and Using Hardware
+
+Once you have connected, either via Intiface Desktop or In Browser,
+you can then _scan for devices_. By default, this will happen
+automatically when you connect.
+
+
+
+When devices are found, they will show up in the _Devices_ portion of
+the dialog, as shown above.
+
+To use a device in the application, click on the checkbox next to the
+device. This will mark is as "active", so that the application can
+access and use it.
+
+Unchecking the box should stop the hardware from whatever it is doing,
+and no longer allow it to take commands from the application.
+
+### Disconnecting
+
+To disconnect, hit the _Disconnect_ button. This will disconnect and
+should cause all toys to stop whatever commands they were taking (i.e.
+vibrations should stop running, etc...)
+
+### Troubleshooting
+
+#### Why can't I connect to Intiface Desktop?
+
+Here's a few things to check and try if you can't connect to Intiface
+Desktop.
+
+- Is the server running? Check the _Server Status_ page on Intiface
+ desktop and make sure it's running.
+- Do you have either _Insecure Websockets_, _Secure Websockets_ or
+ both selected on Intiface Desktop? IPC won't work for web.
+- If you are using _Firefox_ or _Safari_, you will have to use _Secure
+ Websockets_. Have you accepted the cert in your browser yet? This
+ can be done in Intiface Desktop in _Settings -> Other Settings ->
+ Run Certificate Setup_.
+
+#### Why does the browser button show _Requires WebBluetooth_?
+
+If your browser does not support WebBluetooth, you will see a
+_Requires Bluetooth_ button where _Connect In Browser_ would normally
+be. This is because your browser cannot connect to Bluetooth hardware,
+and therefore won't be able to provide hardware access to the
+application.
+
+Currently, browsers supporting WebBluetooth are:
+
+- [Google Chrome](https://chrome.google.com)
+- [WebBLE](https://apps.apple.com/us/app/webble/id1193531073)
+
+#### I've connected, why can't I see my hardware listed?
+
+- Did you scan for hardware?
+- Is your hardware on and close to your computer or phone?
+- Assuming you are using Bluetooth hardware, is your bluetooth on?
+- If your hardware is not being listed, and you are using Intiface
+ Desktop, did Intiface Desktop show any errors in its log panel?
+
+#### None of this answers my question, how can I ask for help?
+
+Here's a few places you can ask questions and get help in real time:
+
+- [Metafetish Forums](https://metafetish.club)
+- [Metafetish Discord Chat Server](https://discord.buttplug.io)
diff --git a/manual/manual1.png b/manual/manual1.png
new file mode 100644
index 0000000..868cc59
Binary files /dev/null and b/manual/manual1.png differ
diff --git a/manual/manual2.png b/manual/manual2.png
new file mode 100644
index 0000000..2385d5b
Binary files /dev/null and b/manual/manual2.png differ
diff --git a/manual/manual3.png b/manual/manual3.png
new file mode 100644
index 0000000..b87bef8
Binary files /dev/null and b/manual/manual3.png differ
diff --git a/package.json b/package.json
index bffa09a..59132f1 100644
--- a/package.json
+++ b/package.json
@@ -1,37 +1,48 @@
{
"name": "vue-buttplug-material-component",
- "version": "1.0.0",
- "private": true,
+ "version": "1.0.3",
+ "main": "dist/index.js",
"scripts": {
"serve": "vue-cli-service serve",
- "build": "vue-cli-service build",
+ "build:vue-cli": "vue-cli-service build",
+ "build:vue-cli:lib": "vue-cli-service build --target lib --name vue-buttplug-material-component src/ButtplugPanel.vue",
+ "build:main": "tsc -p tsconfig.json",
+ "build:dev": "yarn build:main && webpack --progress --hide-modules --config=build/webpack.base.js",
+ "build:webpack": "yarn build:main && webpack --progress --hide-modules --config=build/webpack.production.js",
+ "build:analyze": "webpack --hide-modules --config=build/webpack.analyzer.js",
+ "build:example:dev": "yarn build:main && webpack --progress --hide-modules --config=build/webpack.example.js",
"lint": "vue-cli-service lint",
"test:unit": "vue-cli-service test:unit"
},
"peerDependencies": {
- "buttplug": ">=0.11.6"
+ "buttplug": ">=0.12.1",
+ "vue": "^2.6.10",
+ "vuetify": "^1.5.16"
},
"dependencies": {
- "vue": "^2.6.10",
"vue-class-component": "^7.1.0",
- "vue-property-decorator": "^8.1.1",
- "vuetify": "^1.5.14"
+ "vue-cookies": "^1.5.13",
+ "vue-property-decorator": "^8.2.1"
},
"devDependencies": {
- "@mdi/font": "^3.6.95",
- "@types/jest": "^24.0.13",
- "@vue/cli-plugin-typescript": "^3.8.1",
- "@vue/cli-plugin-unit-jest": "^3.8.0",
- "@vue/cli-service": "^3.8.0",
+ "@mdi/font": "^3.8.95",
+ "@types/jest": "^24.0.15",
+ "@vue/cli-plugin-typescript": "^3.9.0",
+ "@vue/cli-plugin-unit-jest": "^3.9.0",
+ "@vue/cli-service": "^3.9.3",
"@vue/test-utils": "1.0.0-beta.29",
- "buttplug": "^0.11.6",
+ "buttplug": "^0.13.2",
+ "style-loader": "^0.23.1",
"stylus": "^0.54.5",
"stylus-loader": "^3.0.2",
"ts-jest": "^24.0.2",
- "ts-loader": "^6.0.2",
- "typescript": "^3.5.1",
- "vue-cli-plugin-vuetify": "^0.5.0",
+ "ts-loader": "^6.0.4",
+ "typescript": "^4.0.2",
+ "vue": "^2.6.10",
+ "vue-cli-plugin-vuetify": "^0.6.1",
"vue-template-compiler": "^2.6.10",
- "vuetify-loader": "^1.2.2"
+ "vuetify": "^1.5.16",
+ "vuetify-loader": "^1.3.0",
+ "webpack-cli": "^3.3.6"
}
}
diff --git a/src/App.ts b/src/App.ts
index ab8afae..f50e8d0 100644
--- a/src/App.ts
+++ b/src/App.ts
@@ -1,11 +1,11 @@
import Vue from "vue";
import { Component } from "vue-property-decorator";
-import ConnectionPanel from "./ConnectionPanel";
+import ButtplugPanel from "./ButtplugPanel";
import { ButtplugClient } from "buttplug";
@Component({
components: {
- ConnectionPanel,
+ ButtplugPanel,
},
})
export default class App extends Vue {
diff --git a/src/App.vue b/src/App.vue
index 3de806c..f4aca9d 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -32,9 +32,9 @@
-
-
+
diff --git a/src/ButtplugPanel.ts b/src/ButtplugPanel.ts
new file mode 100644
index 0000000..2b56d20
--- /dev/null
+++ b/src/ButtplugPanel.ts
@@ -0,0 +1,250 @@
+import Vue from "vue";
+import { Component, Prop } from "vue-property-decorator";
+import { ButtplugClient, IButtplugClientConnector, ButtplugBrowserWebsocketClientConnector,
+ ButtplugEmbeddedClientConnector,
+ ButtplugClientDevice,
+ DeviceConfigurationManager} from "buttplug";
+Vue.use(require("vue-cookies"));
+
+class ConnectionAddress {
+ public static FromObject(aObj: any): ConnectionAddress {
+ return new ConnectionAddress(aObj.Host, aObj.Port, aObj.Insecure, aObj.Secure);
+ }
+
+ private static sIdNumber: number = 0;
+ public Id: number;
+
+ public constructor(public Host: string,
+ public Port: number,
+ public Insecure: boolean,
+ public Secure: boolean) {
+ this.Id = ConnectionAddress.sIdNumber;
+ ConnectionAddress.sIdNumber += 1;
+ }
+
+ public AsObject(): object {
+ return {
+ Host: this.Host,
+ Port: this.Port,
+ Insecure: this.Insecure,
+ Secure: this.Secure,
+ };
+ }
+
+ public get IsValidURL(): boolean {
+ try {
+ const url = new URL(`ws://${this.Host}:${this.Port}`);
+ return true;
+ } catch (e) {
+ return false;
+ }
+ }
+}
+
+enum UiMessageType {
+ Error,
+ Status,
+}
+
+@Component({})
+export default class ButtplugPanel extends Vue {
+
+ @Prop()
+ private client: ButtplugClient;
+ private isScanning: boolean = false;
+ private isConnecting: boolean = false;
+ // 30 second scanning limit
+ private scanTime: number = 30000;
+ private scanOnConnect: boolean = true;
+ private selectedDevices: number[] = [];
+ // Blank array when disconnected. Mirrors ButtplugClient device array
+ // otherwise. Takes some extra logic to get vue to keep up with it.
+ private clientDevices: ButtplugClientDevice[] = [];
+ private desktopAddresses = [new ConnectionAddress("localhost", 12345, true, true),
+ new ConnectionAddress("localhost", 12346, true, true)];
+ private uiMessage: [UiMessageType, string] | null = null;
+ private cookies: any = (window as any).$cookies;
+
+ public mounted() {
+ this.cookies.config("999d");
+ try {
+ const addresses = JSON.parse(this.cookies.get("intiface-addresses"));
+ if (addresses && Array.isArray(addresses) && addresses.length > 0) {
+ this.RetrieveAddressCookie(addresses);
+ } else {
+ console.log("Don't have config addresses available in cookie!");
+ this.StoreAddressCookie();
+ }
+ } catch {
+ console.log("Can't load cookie!");
+ this.StoreAddressCookie();
+ }
+
+ DeviceConfigurationManager.LoadFromWebConfig().then(() => {
+ console.log("Config loaded from web");
+ }).catch((e) => {
+ console.log(`Config not loaded from web: ${e}`);
+ });
+ }
+
+ public async ConnectToIntifaceDesktop(): Promise {
+ this.CloseUiMessage();
+ this.isConnecting = true;
+ const connectPromises: Array> = [];
+ let isConnected = false;
+ const urls: string[] = [];
+ for (const address of this.desktopAddresses) {
+ const baseUrl = `${address.Host}:${address.Port}`;
+ if (address.Insecure) {
+ urls.push(`ws://${baseUrl}`);
+ }
+ if (address.Secure) {
+ urls.push(`wss://${baseUrl}`);
+ }
+ }
+
+ for (const url of urls) {
+ try {
+ await this.Connect(new ButtplugBrowserWebsocketClientConnector(`${url}`));
+ isConnected = true;
+ break;
+ } catch (e) {
+ continue;
+ }
+ }
+
+ if (!isConnected) {
+ this.SetErrorMessage("Cannot connect to Intiface Desktop. Is the application up, and is the server running?");
+ }
+ this.isConnecting = false;
+ }
+
+ private StoreAddressCookie() {
+ const addrs: object[] = [];
+ for (const addr of this.desktopAddresses) {
+ addrs.push(addr.AsObject());
+ }
+ this.cookies.set("intiface-addresses", JSON.stringify(addrs));
+ }
+
+ private RetrieveAddressCookie(aAddrs: object[]) {
+ this.desktopAddresses = [];
+ for (const addr of aAddrs) {
+ this.desktopAddresses.push(ConnectionAddress.FromObject(addr));
+ }
+ }
+
+ private SetErrorMessage(aMsg: string) {
+ this.uiMessage = [UiMessageType.Error, aMsg];
+ }
+
+ private SetStatusMessage(aMsg: string) {
+ this.uiMessage = [UiMessageType.Status, aMsg];
+ }
+
+ private get HasWebBluetooth(): boolean {
+ return typeof(window) !== "undefined" &&
+ typeof(window.navigator) !== "undefined" &&
+ (navigator as any).bluetooth !== undefined;
+ }
+
+ private OnDeviceListChanged(aDevice: ButtplugClientDevice) {
+ // Just reset our internal device array.
+ this.clientDevices = this.client.Devices;
+ }
+
+ private async ConnectInBrowser(): Promise {
+ await this.Connect(new ButtplugEmbeddedClientConnector());
+ }
+
+ private async Connect(aConnector: IButtplugClientConnector): Promise {
+ this.client.addListener("deviceadded", this.OnDeviceListChanged);
+ this.client.addListener("deviceremoved", this.OnDeviceListChanged);
+ this.client.addListener("scanningfinished", this.OnScanningFinished);
+ this.client.addListener("disconnect", this.RemoveListeners);
+ try {
+ await this.client.Connect(aConnector).catch((e) => { return; });
+ } catch (e) {
+ this.RemoveListeners();
+ return Promise.reject("test");
+ }
+ // If we don't connect successfully, the above line will throw. Assume that
+ // we're connected if we get this far.
+ this.clientDevices = this.client.Devices;
+ await this.StartScanning();
+ }
+
+ private RemoveListeners() {
+ this.client.removeListener("deviceremoveed", this.OnDeviceListChanged);
+ this.client.removeListener("deviceremoved", this.OnDeviceListChanged);
+ this.client.removeListener("scanningfinished", this.OnScanningFinished);
+ this.client.removeListener("disconnect", this.RemoveListeners);
+ this.clientDevices = [];
+ this.selectedDevices = [];
+ }
+
+ private get Connected() {
+ return this.client.Connected;
+ }
+
+ private async StartScanning() {
+ await this.client.StartScanning();
+ setTimeout(async () => await this.StopScanning(), this.scanTime);
+ this.isScanning = true;
+ }
+
+ private async StopScanning() {
+ // The setTimeout to call this may fire after disconnect. If so, just drop
+ // it.
+ if (!this.client.Connected) {
+ return;
+ }
+ await this.client.StopScanning();
+ this.isScanning = false;
+ }
+
+ private OnScanningFinished() {
+ this.isScanning = false;
+ }
+
+ private async ToggleScanning() {
+ if (this.isScanning) {
+ await this.StopScanning();
+ return;
+ }
+ await this.StartScanning();
+ }
+
+ private async Disconnect() {
+ await this.client.Disconnect();
+ this.RemoveListeners();
+ this.SetStatusMessage("Client disconnected.");
+
+ }
+
+ private RemoveAddress(index: number) {
+ this.desktopAddresses = this.desktopAddresses.filter((x) => x.Id !== index);
+ this.StoreAddressCookie();
+ }
+
+ private AddAddress() {
+ this.desktopAddresses.push(new ConnectionAddress("", 0, true, true));
+ this.StoreAddressCookie();
+ }
+
+ private ResetAddresses() {
+ this.desktopAddresses = [new ConnectionAddress("localhost", 12345, true, true),
+ new ConnectionAddress("localhost", 12346, true, true)];
+ this.StoreAddressCookie();
+ }
+
+ private FireChange() {
+ const devices = this.clientDevices.filter((x: ButtplugClientDevice) =>
+ this.selectedDevices.indexOf(x.Index) !== -1);
+ this.$emit("selecteddeviceschange", devices);
+ }
+
+ private CloseUiMessage() {
+ this.uiMessage = null;
+ }
+}
diff --git a/src/ConnectionPanel.vue b/src/ButtplugPanel.vue
similarity index 72%
rename from src/ConnectionPanel.vue
rename to src/ButtplugPanel.vue
index 82641b0..8d33531 100644
--- a/src/ConnectionPanel.vue
+++ b/src/ButtplugPanel.vue
@@ -5,6 +5,7 @@
color="red lighten-2"
@click="ConnectToIntifaceDesktop"
class="white--text"
+ :disabled="isConnecting"
>
Connect To Intiface Desktop
@@ -16,7 +17,30 @@
>
{{ HasWebBluetooth ? "Connect In Browser" : "Requires WebBluetooth" }}
-
+
+
+
+
+ close
+
+
+
+ Error:
+ {{ uiMessage[1] }}
+
+
+
+
+
+
+ Trying to connect to Intiface Desktop...
+
+
+
+
Advanced Settings
@@ -39,6 +63,7 @@
@@ -46,17 +71,20 @@
label="Port"
mask="#####"
v-model="address.Port"
+ @change="StoreAddressCookie()"
>
@@ -100,15 +128,16 @@
No Devices Available
-
diff --git a/src/ConnectionPanel.ts b/src/ConnectionPanel.ts
deleted file mode 100644
index 6050506..0000000
--- a/src/ConnectionPanel.ts
+++ /dev/null
@@ -1,141 +0,0 @@
-import Vue from "vue";
-import { Component, Prop } from "vue-property-decorator";
-import { ButtplugClient, IButtplugClientConnector, ButtplugBrowserWebsocketClientConnector,
- ButtplugEmbeddedClientConnector,
- ButtplugClientDevice} from "buttplug";
-
-class ConnectionAddress {
- private static sIdNumber: number = 0;
- public Id: number;
-
- public constructor(public Host: string,
- public Port: number,
- public Insecure: boolean,
- public Secure: boolean) {
- this.Id = ConnectionAddress.sIdNumber;
- ConnectionAddress.sIdNumber += 1;
- }
-
- public get IsValidURL(): boolean {
- try {
- const url = new URL(`ws://${this.Host}:${this.Port}`);
- return true;
- } catch (e) {
- return false;
- }
- }
-}
-
-@Component({})
-export default class ConnectionPanel extends Vue {
- @Prop()
- private client: ButtplugClient;
- private isScanning: boolean = false;
- // 30 second scanning limit
- private scanTime: number = 30000;
- private scanOnConnect: boolean = true;
- private selectedDevices: ButtplugClientDevice[] = [];
- // Blank array when disconnected. Mirrors ButtplugClient device array
- // otherwise. Takes some extra logic to get vue to keep up with it.
- private clientDevices: ButtplugClientDevice[] = [];
- private desktopAddresses = [new ConnectionAddress("localhost", 12345, true, true),
- new ConnectionAddress("localhost", 12346, true, true)];
-
- public async ConnectToIntifaceDesktop() {
- const connectPromises: Array> = [];
- for (const address of this.desktopAddresses) {
- const baseUrl = `${address.Host}:${address.Port}`;
- const urls: string[] = [];
- if (address.Insecure) {
- urls.push(`ws://${baseUrl}`);
- }
- if (address.Secure) {
- urls.push(`wss://${baseUrl}`);
- }
- for (const url of urls) {
- connectPromises.push(this.Connect(new ButtplugBrowserWebsocketClientConnector(`${url}`))
- .then(() => Promise.resolve(true), (e) => Promise.resolve(false)));
- }
- }
- const connectReturns = await Promise.all(connectPromises);
- if (connectReturns.indexOf(true) === -1) {
- console.log("No valid connection!");
- return;
- }
- }
-
- private get HasWebBluetooth(): boolean {
- console.log(typeof(window) !== "undefined" &&
- typeof(window.navigator) !== "undefined" &&
- (navigator as any).bluetooth !== undefined);
- return typeof(window) !== "undefined" &&
- typeof(window.navigator) !== "undefined" &&
- (navigator as any).bluetooth !== undefined;
- }
-
- private OnDeviceListChanged(aDevice: ButtplugClientDevice) {
- // Just reset our internal device array.
- this.clientDevices = this.client.Devices;
- }
-
- private async ConnectInBrowser(): Promise {
- await this.Connect(new ButtplugEmbeddedClientConnector());
- }
-
- private async Connect(aConnector: IButtplugClientConnector): Promise {
- this.client.addListener("deviceadded", this.OnDeviceListChanged);
- this.client.addListener("deviceremoved", this.OnDeviceListChanged);
- this.client.addListener("scanningfinished", this.OnScanningFinished);
- await this.client.Connect(aConnector);
- // If we don't connect successfully, the above line will throw. Assume that
- // we're connected if we get this far.
- this.clientDevices = this.client.Devices;
- await this.StartScanning();
- }
-
- private get Connected() {
- return this.client.Connected;
- }
-
- private async StartScanning() {
- await this.client.StartScanning();
- setTimeout(async () => await this.StopScanning(), this.scanTime);
- console.log("Starting scanning");
- this.isScanning = true;
- }
-
- private async StopScanning() {
- await this.client.StopScanning();
- console.log("Stopping scanning");
- this.isScanning = false;
- }
-
- private OnScanningFinished() {
- this.isScanning = false;
- }
-
- private async ToggleScanning() {
- if (this.isScanning) {
- await this.StopScanning();
- return;
- }
- await this.StartScanning();
- }
-
- private async Disconnect() {
- await this.client.Disconnect();
- }
-
- private RemoveAddress(index: number) {
- this.desktopAddresses = this.desktopAddresses.filter((x) => x.Id !== index);
- }
-
- private AddAddress() {
- this.desktopAddresses.push(new ConnectionAddress("", 0, true, true));
- }
-
- private ResetAddresses() {
- this.desktopAddresses = [new ConnectionAddress("localhost", 12345, true, true),
- new ConnectionAddress("localhost", 12346, true, true)];
- }
-}
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..9f289e3
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,12 @@
+import Vue from "vue";
+
+import ButtplugPanelComponent from "./ButtplugPanel.vue";
+
+const ButtplugPanel = ButtplugPanelComponent;
+
+export default ButtplugPanel;
+
+export function install(vue: typeof Vue, options = { prefix: "buttplug" }) {
+ const { prefix } = options;
+ vue.component(`${prefix}-panel`, ButtplugPanelComponent);
+}
diff --git a/yarn.lock b/yarn.lock
index 4560b27..16ba83c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -53,10 +53,10 @@
cssnano-preset-default "^4.0.0"
postcss "^7.0.0"
-"@mdi/font@^3.6.95":
- version "3.6.95"
- resolved "https://registry.yarnpkg.com/@mdi/font/-/font-3.6.95.tgz#0bbde766ca2d94cfa0e469f25523b23d3112bdd3"
- integrity sha512-wUbkF/RRCIh51TPzAL9qUeRSUFla9I3x1nGq62HkfWzIebRHbDY5HPaYCQuZO7398dWaLHTu4BwnBA58YbhfEA==
+"@mdi/font@^3.8.95":
+ version "3.8.95"
+ resolved "https://registry.yarnpkg.com/@mdi/font/-/font-3.8.95.tgz#772094ed7046b126457b1f3b8c82e26b209e71e8"
+ integrity sha512-KR6TBdVYV3p1ZOM+Ge45Kk3P8yHfSGt3YOryVlkEKdO3vMiPjRaaDcQsdogGxVl8FcXsAt/Gz8MoXObbOF1Pzg==
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
@@ -99,10 +99,10 @@
resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-20.0.1.tgz#35cc15b9c4f30a18ef21852e255fdb02f6d59b89"
integrity sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==
-"@types/jest@^24.0.13":
- version "24.0.13"
- resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.13.tgz#10f50b64cb05fb02411fbba49e9042a3a11da3f9"
- integrity sha512-3m6RPnO35r7Dg+uMLj1+xfZaOgIHHHut61djNjzwExXN4/Pm9has9C6I1KMYSfz7mahDhWUOVg4HW/nZdv5Pww==
+"@types/jest@^24.0.15":
+ version "24.0.15"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.15.tgz#6c42d5af7fe3b44ffff7cc65de7bf741e8fa427f"
+ integrity sha512-MU1HIvWUme74stAoc3mgAi+aMlgKOudgEvQDIm1v4RkrDudBh1T+NFp5sftpBAdXdx1J0PbdpJ+M2EsSOi1djA==
dependencies:
"@types/jest-diff" "*"
@@ -141,30 +141,31 @@
resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.13.9.tgz#a67287861c928ebf4159a908d1fb1a2a34d4097a"
integrity sha512-p8zp5xqkly3g4cCmo2mKOHI9+Z/kObmDj0BmjbDDJQlgDTiEGTbm17MEwTAusV6XceCy+bNw9q/ZHXHyKo3zkg==
-"@vue/cli-overlay@^3.8.0":
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-3.8.0.tgz#e4e8e2fa92b06fc282916df9c924f1dba50eeabb"
- integrity sha512-4hY/+r9OwpMb7BPFnQGKftMC8CrfbV00REEFOij52+L4swQw+m879+5zX3Z0xHfPftw6JyaqJB0rmQ0ILI6Ovw==
+"@vue/cli-overlay@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-3.9.0.tgz#11f513d1fa11b0135fb8ba8b88d228df0dc542e0"
+ integrity sha512-QfyvpJl2ChehBT2qzb5EvW921JxW94uFL3+lHa6VT42ImH8awrvkTGZmxTQWhHvATa7r0LKy7M7ZRMyo547esg==
-"@vue/cli-plugin-typescript@^3.8.1":
- version "3.8.1"
- resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-3.8.1.tgz#fbe1298710ed0f6feecba61640c3aab29bcc35b2"
- integrity sha512-CAD19+Z46OtUHYkZaLFeDJPuQWVLFJ+1rSL3PdESVQ9Pm0ZVVsCCZYGeQAGyAbHNWtvY7Gt0CbxsZTj+5ChSpw==
+"@vue/cli-plugin-typescript@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-3.9.0.tgz#8969f2df898a68b4c1d49f5a928ec9ba35a0c0fe"
+ integrity sha512-QXL98MLM2gdqcrLkEG3bjwyQDIhzKdJqUdVghH/ZAttSj5G3hDKklI5HPqz3TJV7FVDOocFr1szP2BcXCCLh8Q==
dependencies:
"@types/webpack-env" "^1.13.9"
- "@vue/cli-shared-utils" "^3.8.0"
+ "@vue/cli-shared-utils" "^3.9.0"
fork-ts-checker-webpack-plugin "^0.5.2"
globby "^9.2.0"
ts-loader "^5.3.3"
tslint "^5.15.0"
webpack ">=4 < 4.29"
+ yorkie "^2.0.0"
-"@vue/cli-plugin-unit-jest@^3.8.0":
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-3.8.0.tgz#13cd3b4f5d1c9e0ef1982cbaea19b73f7df947d6"
- integrity sha512-8kvoh6NZYY7FjuqRorqo47VTi62a3u69+oAxqBiIOkc28OGaju/FrL0Vm95vRB8tMkU6EPXKVRtCjPz8R2QeZA==
+"@vue/cli-plugin-unit-jest@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-3.9.0.tgz#0662adee9467006381b9cddc7fb3b0a21ccbbd07"
+ integrity sha512-FzUeTXXM7VUbjNDrqbj/AoUXZd0FZVrW936VO0W57r7uDgv+bh5hcEyzZnOaqFUOHYNFhl0RYD528/Uq5Dgm0A==
dependencies:
- "@vue/cli-shared-utils" "^3.8.0"
+ "@vue/cli-shared-utils" "^3.9.0"
babel-jest "^23.6.0"
babel-plugin-transform-es2015-modules-commonjs "^6.26.2"
jest "^23.6.0"
@@ -173,15 +174,15 @@
jest-watch-typeahead "0.2.1"
vue-jest "^3.0.4"
-"@vue/cli-service@^3.8.0":
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-3.8.0.tgz#47eaa169a7bd96522c1a0df89214f1afee843cd6"
- integrity sha512-ipJF4RHjyLyLC4oLx+JM1Jk6tiIG0KjCFAqfOscQ44K4CdyS03oFMAUR+SZYy/UXKccMnoeY6Ld4YrGXSytQsg==
+"@vue/cli-service@^3.9.3":
+ version "3.9.3"
+ resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-3.9.3.tgz#4bd5786465afb8b608c5c7fc9661390e747ea756"
+ integrity sha512-CZE9PP4HH9bK4qAaLbTUB3tubggI+aRSbgB/QYSZrVlhtMpuVFZPj2QHbIvJQZTI2cG6LFQtLTZWXKeqo5lbAQ==
dependencies:
"@intervolga/optimize-cssnano-plugin" "^1.0.5"
"@soda/friendly-errors-webpack-plugin" "^1.7.1"
- "@vue/cli-overlay" "^3.8.0"
- "@vue/cli-shared-utils" "^3.8.0"
+ "@vue/cli-overlay" "^3.9.0"
+ "@vue/cli-shared-utils" "^3.9.0"
"@vue/component-compiler-utils" "^2.6.0"
"@vue/preload-webpack-plugin" "^1.1.0"
"@vue/web-component-wrapper" "^1.2.0"
@@ -201,6 +202,7 @@
cssnano "^4.1.10"
current-script-polyfill "^1.0.0"
debug "^4.1.1"
+ default-gateway "^5.0.2"
dotenv "^7.0.0"
dotenv-expand "^5.1.0"
escape-string-regexp "^1.0.5"
@@ -210,7 +212,7 @@
hash-sum "^1.0.2"
html-webpack-plugin "^3.2.0"
launch-editor-middleware "^2.2.1"
- lodash.defaultsdeep "^4.6.0"
+ lodash.defaultsdeep "^4.6.1"
lodash.mapvalues "^4.6.0"
lodash.transform "^4.6.0"
mini-css-extract-plugin "^0.6.0"
@@ -233,12 +235,11 @@
webpack-chain "^4.11.0"
webpack-dev-server "^3.4.1"
webpack-merge "^4.2.1"
- yorkie "^2.0.0"
-"@vue/cli-shared-utils@^3.8.0":
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-3.8.0.tgz#e7e728164eb92bd9e205fcd08dae896ee79cba5a"
- integrity sha512-wn1L8pmQnotfftHOYm0VeXs2+cQTySd73uhWXwyO6pT0ehjqlY5c2RTipClmFF3Q+YCYjwlNpsV650F3l1tV8w==
+"@vue/cli-shared-utils@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-3.9.0.tgz#cb56a443bf763a873849a11d07e9e7638aa16cc2"
+ integrity sha512-wumeMZTz5aQ+1Y6uxTKegIsgOXEWT3hT8f9sW2mj5SwNDVyQ+AHZTgSynYExTUJg3dH81uKgFDUpPdAvGxzh8g==
dependencies:
"@hapi/joi" "^15.0.1"
chalk "^2.4.1"
@@ -502,7 +503,7 @@ ajv-keywords@^3.1.0:
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d"
integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==
-ajv@^6.1.0, ajv@^6.10.0, ajv@^6.5.5:
+ajv@^6.1.0, ajv@^6.5.5:
version "6.10.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
@@ -512,6 +513,16 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.5.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
+ajv@^6.12.0:
+ version "6.12.4"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234"
+ integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
alphanum-sort@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
@@ -1237,14 +1248,13 @@ builtin-status-codes@^3.0.0:
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
-buttplug@^0.11.6:
- version "0.11.6"
- resolved "https://registry.yarnpkg.com/buttplug/-/buttplug-0.11.6.tgz#4ac85e92fdd46bf17b08b33c3266e8eb8b005fc5"
- integrity sha512-UOFL+GHEcU78Xh4fJ8i6HGcP1egoYh/9iWhHOUcbTY4OhqdMnxvoQT8D2X0tM9gjr9rNTZRweR7/N8oSYR8ftQ==
+buttplug@^0.13.2:
+ version "0.13.2"
+ resolved "https://registry.yarnpkg.com/buttplug/-/buttplug-0.13.2.tgz#11953d12513cc280547c47d46ac08c118c42af69"
+ integrity sha512-eR3/zMUXTRR2MtzWa74VfsxsbnsobYSu2eS2/gqMEz07vHLr0/Sdi1IHTMMayXJ+vR8Gv44cwc/Sztd7WL5STA==
dependencies:
- ajv "^6.10.0"
+ ajv "^6.12.0"
class-transformer "^0.2.3"
- js-yaml "^3.13.1"
reflect-metadata "^0.1.13"
bytes@3.0.0:
@@ -1396,6 +1406,15 @@ caseless@~0.12.0:
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
+chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -1407,15 +1426,6 @@ chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
check-types@^7.3.0:
version "7.4.0"
resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4"
@@ -1840,16 +1850,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-cross-spawn@^5.0.1:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
- integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
- dependencies:
- lru-cache "^4.0.1"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
-cross-spawn@^6.0.0:
+cross-spawn@6.0.5, cross-spawn@^6.0.0:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
@@ -1860,6 +1861,15 @@ cross-spawn@^6.0.0:
shebang-command "^1.2.0"
which "^1.2.9"
+cross-spawn@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
crypto-browserify@^3.11.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@@ -2180,6 +2190,14 @@ default-gateway@^4.2.0:
execa "^1.0.0"
ip-regex "^2.1.0"
+default-gateway@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-5.0.2.tgz#d2d8a13d6fee406d9365d19ec9adccb8a60b82b3"
+ integrity sha512-wXuT0q8T5vxQNecrTgz/KbU2lPUMRc98I9Y5dnH3yhFB3BGYqtADK4lhivLlG0OfjhmfKx1PGILG2jR4zjI+WA==
+ dependencies:
+ execa "^1.0.0"
+ ip-regex "^2.1.0"
+
default-require-extensions@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
@@ -2264,6 +2282,11 @@ destroy@~1.0.4:
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+detect-file@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
+ integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
+
detect-indent@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
@@ -2492,7 +2515,7 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0:
dependencies:
once "^1.4.0"
-enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
+enhanced-resolve@4.1.0, enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==
@@ -2615,10 +2638,10 @@ event-pubsub@4.3.0:
resolved "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e"
integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==
-eventemitter3@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
- integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
+eventemitter3@^4.0.0:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
events@^3.0.0:
version "3.0.0"
@@ -2718,6 +2741,13 @@ expand-range@^1.8.1:
dependencies:
fill-range "^2.1.0"
+expand-tilde@^2.0.0, expand-tilde@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+ integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
+ dependencies:
+ homedir-polyfill "^1.0.1"
+
expect@^23.6.0:
version "23.6.0"
resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98"
@@ -2829,6 +2859,11 @@ fast-deep-equal@^2.0.1:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
fast-glob@^2.2.6:
version "2.2.7"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
@@ -2997,6 +3032,16 @@ find-up@^3.0.0:
dependencies:
locate-path "^3.0.0"
+findup-sync@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
+ integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==
+ dependencies:
+ detect-file "^1.0.0"
+ is-glob "^4.0.0"
+ micromatch "^3.0.4"
+ resolve-dir "^1.0.1"
+
flush-write-stream@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
@@ -3006,11 +3051,9 @@ flush-write-stream@^1.0.0:
readable-stream "^2.3.6"
follow-redirects@^1.0.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76"
- integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==
- dependencies:
- debug "^3.2.6"
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db"
+ integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==
for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
@@ -3219,6 +3262,42 @@ glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
once "^1.3.0"
path-is-absolute "^1.0.0"
+global-modules@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
+ dependencies:
+ global-prefix "^3.0.0"
+
+global-modules@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+ integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
+ dependencies:
+ global-prefix "^1.0.1"
+ is-windows "^1.0.1"
+ resolve-dir "^1.0.0"
+
+global-prefix@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+ integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
+ dependencies:
+ expand-tilde "^2.0.2"
+ homedir-polyfill "^1.0.1"
+ ini "^1.3.4"
+ is-windows "^1.0.1"
+ which "^1.2.14"
+
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
globals@^9.18.0:
version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
@@ -3426,6 +3505,13 @@ home-or-tmp@^2.0.0:
os-homedir "^1.0.0"
os-tmpdir "^1.0.1"
+homedir-polyfill@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
+ integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
+ dependencies:
+ parse-passwd "^1.0.0"
+
hoopy@^0.1.2:
version "0.1.4"
resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
@@ -3553,11 +3639,11 @@ http-proxy-middleware@^0.19.1:
micromatch "^3.1.10"
http-proxy@^1.17.0:
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
- integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==
+ version "1.18.1"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
dependencies:
- eventemitter3 "^3.0.0"
+ eventemitter3 "^4.0.0"
follow-redirects "^1.0.0"
requires-port "^1.0.0"
@@ -3643,6 +3729,14 @@ import-from@^2.1.0:
dependencies:
resolve-from "^3.0.0"
+import-local@2.0.0, import-local@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
+ integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
+ dependencies:
+ pkg-dir "^3.0.0"
+ resolve-cwd "^2.0.0"
+
import-local@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
@@ -3651,14 +3745,6 @@ import-local@^1.0.0:
pkg-dir "^2.0.0"
resolve-cwd "^2.0.0"
-import-local@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
- integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
- dependencies:
- pkg-dir "^3.0.0"
- resolve-cwd "^2.0.0"
-
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -3692,7 +3778,7 @@ inherits@2.0.1:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
-ini@^1.3.4, ini@~1.3.0:
+ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
version "1.3.5"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
@@ -3705,6 +3791,11 @@ internal-ip@^4.3.0:
default-gateway "^4.2.0"
ipaddr.js "^1.9.0"
+interpret@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
+ integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
+
invariant@^2.2.2, invariant@^2.2.4:
version "2.2.4"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
@@ -4039,7 +4130,7 @@ is-whitespace@^0.3.0:
resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f"
integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38=
-is-windows@^1.0.2:
+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"
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
@@ -4743,6 +4834,15 @@ loader-runner@^2.3.0, loader-runner@^2.3.1:
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.0, loader-utils@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
+ integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^2.0.0"
+ json5 "^1.0.1"
+
loader-utils@^0.2.16:
version "0.2.17"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
@@ -4753,15 +4853,6 @@ loader-utils@^0.2.16:
json5 "^0.5.0"
object-assign "^4.0.1"
-loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
- integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
- dependencies:
- big.js "^5.2.2"
- emojis-list "^2.0.0"
- json5 "^1.0.1"
-
locate-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
@@ -4783,10 +4874,10 @@ lodash.clonedeep@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
-lodash.defaultsdeep@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.0.tgz#bec1024f85b1bd96cbea405b23c14ad6443a6f81"
- integrity sha1-vsECT4WxvZbL6kBbI8FK1kQ6b4E=
+lodash.defaultsdeep@^4.6.1:
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6"
+ integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==
lodash.mapvalues@^4.6.0:
version "4.6.0"
@@ -5004,7 +5095,7 @@ micromatch@^2.3.11:
parse-glob "^3.0.4"
regex-cache "^0.4.2"
-micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8:
+micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8:
version "3.1.10"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
@@ -5795,6 +5886,11 @@ parse-json@^4.0.0:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+ integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
+
parse5@4.0.0, parse5@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
@@ -6761,6 +6857,14 @@ resolve-cwd@^2.0.0:
dependencies:
resolve-from "^3.0.0"
+resolve-dir@^1.0.0, resolve-dir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+ integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
+ dependencies:
+ expand-tilde "^2.0.0"
+ global-modules "^1.0.0"
+
resolve-from@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
@@ -7458,6 +7562,14 @@ strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+style-loader@^0.23.1:
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
+ integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==
+ dependencies:
+ loader-utils "^1.1.0"
+ schema-utils "^1.0.0"
+
stylehacks@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
@@ -7488,6 +7600,13 @@ stylus@^0.54.5:
sax "0.5.x"
source-map "0.1.x"
+supports-color@6.1.0, supports-color@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
@@ -7507,13 +7626,6 @@ supports-color@^5.3.0, supports-color@^5.4.0:
dependencies:
has-flag "^3.0.0"
-supports-color@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
- integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
- dependencies:
- has-flag "^3.0.0"
-
svgo@^1.0.0:
version "1.2.2"
resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316"
@@ -7762,10 +7874,10 @@ ts-loader@^5.3.3:
micromatch "^3.1.4"
semver "^5.0.1"
-ts-loader@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.0.2.tgz#cbd46a1495668ed9d59813f5c66f4bb49ff0c14c"
- integrity sha512-kkF3sGf3oBUehlvXI9fkbItbFTnNgGkYAz91vtWnsKAU4m+LAmQjuby7uTZNo3As+/zHLuyB052SkQDY6vLXtg==
+ts-loader@^6.0.4:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.0.4.tgz#bc331ad91a887a60632d94c9f79448666f2c4b63"
+ integrity sha512-p2zJYe7OtwR+49kv4gs7v4dMrfYD1IPpOtqiSPCbe8oR+4zEBtdHwzM7A7M91F+suReqgzZrlClk4LRSSp882g==
dependencies:
chalk "^2.3.0"
enhanced-resolve "^4.0.0"
@@ -7856,10 +7968,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript@^3.5.1:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.1.tgz#ba72a6a600b2158139c5dd8850f700e231464202"
- integrity sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw==
+typescript@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2"
+ integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==
uglify-js@3.4.x:
version "3.4.10"
@@ -8028,6 +8140,11 @@ uuid@^3.0.1, uuid@^3.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
+v8-compile-cache@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
+ integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
+
validate-npm-package-license@^3.0.1:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
@@ -8067,10 +8184,15 @@ vue-class-component@^7.0.1, vue-class-component@^7.1.0:
resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-7.1.0.tgz#b33efcb10e17236d684f70b1e96f1946ec793e87"
integrity sha512-G9152NzUkz0i0xTfhk0Afc8vzdXxDR1pfN4dTwE72cskkgJtdXfrKBkMfGvDuxUh35U500g5Ve4xL8PEGdWeHg==
-vue-cli-plugin-vuetify@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-0.5.0.tgz#14c9a61884da58cf6aaf8ff3309044931907f184"
- integrity sha512-TigfiZUs7SN3Z6uxKilqJUtYxte8vp0F4QxabCli6hkKPqU97JzAZc3P7AL6omkRAd2DMI26fOrIGjuALTvXww==
+vue-cli-plugin-vuetify@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-0.6.1.tgz#4fe0b7322a90a9c9f0aff2e18fd9249088b33080"
+ integrity sha512-WZzXXTdFOXWXVhSL4zXs1nJvC/6Py9kXm4S+bdh+W0xucwXlIAr19cgqCjV9ahR4cznQ/SBDv8x4RFCpPgGAHQ==
+
+vue-cookies@^1.5.13:
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/vue-cookies/-/vue-cookies-1.5.13.tgz#b1ca79a2663bf9a4f36982557011cab5ee2196c0"
+ integrity sha512-8pjpXnvbNWx1Lft0t3MJnW+ylv0Wa2Tb6Ch617u/pQah3+SfXUZZdkh3EL3bSpe/Sw2Wdw3+DhycgQsKANSxXg==
vue-hot-reload-api@^2.3.0:
version "2.3.3"
@@ -8104,11 +8226,12 @@ vue-loader@^15.7.0:
vue-hot-reload-api "^2.3.0"
vue-style-loader "^4.1.0"
-vue-property-decorator@^8.1.1:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-8.1.1.tgz#80dadbe5ffa0e7eb6a0ba0a07036365471a7d5ee"
- integrity sha512-K+PUT17ZEMWyhrKZnl4Fc9qMyFpMcjVbZJBwx4BpA8BXfaspaTeFdoHuk1aywC/+4G86sxIr/5n4IQUQLecSWw==
+vue-property-decorator@^8.2.1:
+ version "8.2.1"
+ resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-8.2.1.tgz#3791662033b20d20d098cb20e86fd23842982508"
+ integrity sha512-zgtcvzGB2JpDqnIxVhTK+6m+dv3uyhYs+tL8elL+DWiXj9kDonKcPY7f1DHYX1NlnWPCj7ht0nL/i8+S1gg76Q==
dependencies:
+ vue "^2.6.10"
vue-class-component "^7.0.1"
vue-style-loader@^4.1.0:
@@ -8137,17 +8260,17 @@ vue@^2.6.10:
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637"
integrity sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==
-vuetify-loader@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/vuetify-loader/-/vuetify-loader-1.2.2.tgz#7c221dcfd8482344518818d598f9cef8ddd85b6b"
- integrity sha512-j6KWPuwQ4xTxPDksbFwbSJle7+3oSjNvJ/CViTEgbPLFPqnNsR8JUtRldURIQ0cmAmr0/CoLSZkj0B8JKqOBMA==
+vuetify-loader@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/vuetify-loader/-/vuetify-loader-1.3.0.tgz#759f1d16f3f211eddbeeffc5c0b24105f2582b07"
+ integrity sha512-emKS3GWpx+0kWRHfoxpDpLR4HaXvhDn9bYNQf+IaaD5iU5S3xktDyS0egG7dp/oHLQr1U/Ui9g2ElhZUkdgRqw==
dependencies:
- loader-utils "^1.1.0"
+ loader-utils "^1.2.0"
-vuetify@^1.5.14:
- version "1.5.14"
- resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-1.5.14.tgz#ff67d0b8a398be5297da159b6cd1b31f4d2898b8"
- integrity sha512-7iM+TfghR/wu/Gl+k37lKr0N8Ddr6SxzqHtoK1dIyHgCH6SJRkpaXPw2MC5/FsAg9aUDJbYNWrzSeu5eHw+Q/w==
+vuetify@^1.5.16:
+ version "1.5.16"
+ resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-1.5.16.tgz#cc9d0199c389d64d15787ddc85ca47a28225eeee"
+ integrity sha512-yBgOsfurKQkeS+l+rrTQZ2bFk0D9ezjHhkuVM5A/yVzcg62sY2nfYaq/H++uezBWC9WYFrp/5OmSocJQcWn9Qw==
w3c-hr-time@^1.0.1:
version "1.0.1"
@@ -8226,6 +8349,23 @@ webpack-chain@^4.11.0:
deepmerge "^1.5.2"
javascript-stringify "^1.6.0"
+webpack-cli@^3.3.6:
+ version "3.3.6"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.6.tgz#2c8c399a2642133f8d736a359007a052e060032c"
+ integrity sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==
+ dependencies:
+ chalk "2.4.2"
+ cross-spawn "6.0.5"
+ enhanced-resolve "4.1.0"
+ findup-sync "3.0.0"
+ global-modules "2.0.0"
+ import-local "2.0.0"
+ interpret "1.2.0"
+ loader-utils "1.2.3"
+ supports-color "6.1.0"
+ v8-compile-cache "2.0.3"
+ yargs "13.2.4"
+
webpack-dev-middleware@^3.7.0:
version "3.7.0"
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff"
@@ -8379,7 +8519,7 @@ which-module@^2.0.0:
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-which@^1.2.12, which@^1.2.9, which@^1.3.0:
+which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
@@ -8533,6 +8673,23 @@ yargs@12.0.5:
y18n "^3.2.1 || ^4.0.0"
yargs-parser "^11.1.1"
+yargs@13.2.4, yargs@^13.0.0:
+ version "13.2.4"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83"
+ integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==
+ dependencies:
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ os-locale "^3.1.0"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.0"
+
yargs@^11.0.0:
version "11.1.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77"
@@ -8551,23 +8708,6 @@ yargs@^11.0.0:
y18n "^3.2.1"
yargs-parser "^9.0.2"
-yargs@^13.0.0:
- version "13.2.4"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83"
- integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==
- dependencies:
- cliui "^5.0.0"
- find-up "^3.0.0"
- get-caller-file "^2.0.1"
- os-locale "^3.1.0"
- require-directory "^2.1.1"
- require-main-filename "^2.0.0"
- set-blocking "^2.0.0"
- string-width "^3.0.0"
- which-module "^2.0.0"
- y18n "^4.0.0"
- yargs-parser "^13.1.0"
-
yorkie@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/yorkie/-/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9"