updated components and strings

This commit is contained in:
vishnuraghavb 2021-04-14 14:57:40 +05:30
parent 27e0d0fe91
commit 5899821d21
11 changed files with 529 additions and 402 deletions

View file

@ -43,7 +43,8 @@ Page {
color: $gray9;
background: $gray1;
Page,
.filters {
.filters,
.sticky {
background: $gray1;
}
TextField,
@ -72,14 +73,15 @@ Page {
background: $gray9;
}
.fab {
color: $gray1;
color: #fff;
}
}
.Dark {
color: $gray1;
background: $gray9;
Page,
.filters {
.filters,
.sticky {
background: $gray9;
}
TextField,
@ -116,7 +118,8 @@ Page {
color: $gray2;
background: $gray10;
Page,
.filters {
.filters,
.sticky {
background: $gray10;
}
TextField,
@ -476,6 +479,11 @@ Button {
padding: 0;
margin: 32 0 16;
}
.sticky {
width: 100%;
padding: 0 16 16;
margin: 0;
}
.countdown {
font-size: 17;
color: $orange;

View file

@ -419,17 +419,21 @@ export default {
this.clearEmptyFields(true);
if (this.recipe.imageSrc) {
this.modalOpen = true;
this.$showModal(ConfirmDialog, {
this.$showModal(ActionDialog, {
props: {
title: "recPic",
secondButtonText: "rBtn",
cancelButtonText: "cBtn",
okButtonText: "repBtn",
list: ["aap", "rp"],
},
}).then((action) => {
this.modalOpen = false;
if (action > 0) this.imagePicker();
else if (action < 0) this.recipe.imageSrc = null;
switch (action) {
case "aap":
this.imagePicker();
break;
case "rp":
this.recipe.imageSrc = null;
break;
}
});
} else this.imagePicker();
},

View file

@ -42,7 +42,6 @@ import Interface from "./Settings/Interface.vue";
import Options from "./Settings/Options.vue";
import Database from "./Settings/Database.vue";
import Reset from "./Settings/Reset.vue";
import Help from "./Settings/Help.vue";
import About from "./Settings/About.vue";
export default {
data() {

View file

@ -270,12 +270,15 @@ export default {
// IMPORT HANDLERS
openZipFile() {
utils.getBackupFile().then((uri) => {
let dest = path.join(knownFolders.temp().path, "tempUnZip");
utils.Zip.unzip(uri, dest)
.then((res) => {
if (res) this.validateZipContent(res, uri);
})
.catch(() => this.failedImport(localize("buInc")));
console.log(uri);
if (uri) {
let dest = path.join(knownFolders.temp().path, "tempUnZip");
utils.Zip.unzip(uri, dest)
.then((res) => {
if (res) this.validateZipContent(res, uri);
})
.catch(() => this.failedImport(localize("buInc")));
}
});
},
validateZipContent(extractedFolderPath, uri) {

View file

@ -1,77 +0,0 @@
<template>
<Page @loaded="onPageLoad" actionBarHidden="true">
<GridLayout rows="*, auto" columns="auto, *">
<ListView
colSpan="2"
rowSpan="2"
class="options-list"
for="item in items"
>
<v-template if="$index == 0">
<Label class="pageTitle" :text="'help' | L" />
</v-template>
<v-template if="$index == 3">
<StackLayout class="listSpace"> </StackLayout>
</v-template>
<v-template>
<GridLayout
columns="auto, *"
class="option"
@touch="touch($event, item.url)"
>
<Label class="ico" :text="icon[item.icon]" />
<Label col="1" :text="item.title | L" class="info" />
</GridLayout>
</v-template>
</ListView>
<GridLayout row="1" class="appbar" rows="*" columns="auto, *">
<Button
class="ico"
:text="icon.back"
@tap="$navigateBack()"
/>
</GridLayout>
</GridLayout>
</Page>
</template>
<script>
import { Observable, Utils } from "@nativescript/core";
import { mapState } from "vuex";
export default {
computed: {
...mapState(["icon"]),
items() {
return [
{},
{
icon: "tg",
title: "joinTG",
url: "https://t.me/enrecipes",
},
{
icon: "help",
title: "guide",
url: "https://github.com/vishnuraghavb/EnRecipes/wiki/User-Guide",
},
{},
];
},
},
methods: {
onPageLoad(args) {
const page = args.object;
page.bindingContext = new Observable();
},
// HELPERS
openURL(url) {
Utils.openUrl(url);
},
touch({ object, action }, url) {
object.className = action.match(/down|move/) ? "option fade" : "option";
if (action == "up") this.openURL(url);
},
},
};
</script>

View file

@ -35,138 +35,161 @@
@tap="viewPhoto"
/>
</GridLayout>
<ScrollView
dock="bottom"
@loaded="onScrollLoad"
@scroll="!toast && onScroll($event)"
>
<StackLayout>
<GridLayout rows="auto" columns="*, *">
<StackLayout class="attribute">
<Label class="title sub" :text="'cui' | L" />
<Label class="value" :text="recipe.cuisine | L" />
</StackLayout>
<StackLayout class="attribute" col="1">
<Label class="title sub" :text="'cat' | L" />
<Label class="value" :text="recipe.category | L" />
</StackLayout>
</GridLayout>
<StackLayout :hidden="!recipe.tags.length" class="attribute">
<Label class="title sub" :text="'ts' | L" />
<Label class="value" :text="getTags(recipe.tags)" />
</StackLayout>
<GridLayout rows="auto" columns="*, *">
<StackLayout
class="attribute"
:hidden="!hasTime(recipe.prepTime)"
>
<Label class="title sub" :text="'prepT' | L" />
<Label class="value" :text="formattedTime(recipe.prepTime)" />
</StackLayout>
<StackLayout
:col="hasTime(recipe.prepTime) ? 1 : 0"
class="attribute"
:hidden="!hasTime(recipe.cookTime)"
>
<Label class="title sub" :text="'cookT' | L" />
<Label class="value" :text="formattedTime(recipe.cookTime)" />
</StackLayout>
</GridLayout>
<GridLayout rows="auto" columns="*, *">
<StackLayout class="attribute">
<Label class="title sub" :text="'yld' | L" />
<Label
@touch="touchYield"
class="value clickable"
:text="`${tempYieldQuantity} ${$options.filters.L(
recipe.yield.unit
)}`"
/>
</StackLayout>
<StackLayout class="attribute" col="1">
<Label class="title sub" :text="'Difficulty level' | L" />
<Label class="value" :text="recipe.difficulty | L" />
</StackLayout>
</GridLayout>
<Label
padding="0 16"
class="sectionTitle"
:hidden="!recipe.ingredients.length"
:text="getTitleCount('ings', 'ingredients')"
/>
<StackLayout @loaded="onIngsLoad">
<GridLayout
rows="auto"
columns="auto, *"
v-for="(item, index) in recipe.ingredients"
:key="index + 'ing'"
class="ingredient"
@touch="touchIngredient($event, index)"
>
<Button class="ico min" :text="icon.uncheck" />
<Label
class="value tw"
col="1"
:text="`${
roundedQuantity(item.quantity)
? roundedQuantity(item.quantity) + ' '
: ''
}${
roundedQuantity(item.quantity)
? $options.filters.L(item.unit) + ' '
: ''
}${item.item}`"
/>
<AbsoluteLayout dock="bottom">
<ScrollView
width="100%"
height="100%"
@loaded="onScrollLoad"
@scroll="!toast && onScroll($event)"
>
<StackLayout>
<GridLayout rows="auto" columns="*, *">
<StackLayout class="attribute">
<Label class="title sub" :text="'cui' | L" />
<Label class="value" :text="recipe.cuisine | L" />
</StackLayout>
<StackLayout class="attribute" col="1">
<Label class="title sub" :text="'cat' | L" />
<Label class="value" :text="recipe.category | L" />
</StackLayout>
</GridLayout>
</StackLayout>
<Label
padding="0 16"
:hidden="!recipe.instructions.length"
class="sectionTitle"
:text="getTitleCount('inss', 'instructions')"
/>
<StackLayout @loaded="onInsLoad">
<GridLayout
@touch="touchInstruction"
columns="auto ,*"
v-for="(instruction, index) in recipe.instructions"
:key="index + 'ins'"
class="instruction"
>
<Button class="count ico min" :text="index + 1" />
<Label col="1" class="value tw" :text="instruction" />
<StackLayout :hidden="!recipe.tags.length" class="attribute">
<Label class="title sub" :text="'ts' | L" />
<Label class="value" :text="getTags(recipe.tags)" />
</StackLayout>
<GridLayout rows="auto" columns="*, *">
<StackLayout
class="attribute"
:hidden="!hasTime(recipe.prepTime)"
>
<Label class="title sub" :text="'prepT' | L" />
<Label class="value" :text="formattedTime(recipe.prepTime)" />
</StackLayout>
<StackLayout
:col="hasTime(recipe.prepTime) ? 1 : 0"
class="attribute"
:hidden="!hasTime(recipe.cookTime)"
>
<Label class="title sub" :text="'cookT' | L" />
<Label class="value" :text="formattedTime(recipe.cookTime)" />
</StackLayout>
</GridLayout>
<GridLayout rows="auto" columns="*, *">
<StackLayout class="attribute">
<Label class="title sub" :text="'yld' | L" />
<Label
@touch="touchYield"
class="value clickable"
:text="`${tempYieldQuantity} ${$options.filters.L(
recipe.yield.unit
)}`"
/>
</StackLayout>
<StackLayout class="attribute" col="1">
<Label class="title sub" :text="'Difficulty level' | L" />
<Label class="value" :text="recipe.difficulty | L" />
</StackLayout>
</GridLayout>
<StackLayout @loaded="onIngsLoad">
<Label
padding="0 16"
class="sectionTitle"
:hidden="!recipe.ingredients.length"
:text="getTitleCount('ings', 'ingredients')"
/>
<StackLayout
orientation="horizontal"
v-for="(item, index) in recipe.ingredients"
:key="index + 'ing'"
class="ingredient"
@touch="touchIngredient($event, index)"
>
<Button class="ico min" :text="icon.uncheck" />
<Label
class="value tw"
:text="`${
roundedQuantity(item.quantity)
? roundedQuantity(item.quantity) + ' '
: ''
}${
roundedQuantity(item.quantity)
? $options.filters.L(item.unit) + ' '
: ''
}${item.item}`"
/>
</StackLayout>
</StackLayout>
<StackLayout @loaded="onInsLoad">
<Label
padding="0 16"
:hidden="!recipe.instructions.length"
class="sectionTitle"
:text="getTitleCount('inss', 'instructions')"
/>
<StackLayout
orientation="horizontal"
@touch="touchInstruction"
v-for="(instruction, index) in recipe.instructions"
:key="index + 'ins'"
class="instruction"
>
<Button class="count ico min" :text="index + 1" />
<Label class="value tw" :text="instruction" />
</StackLayout>
</StackLayout>
<Label
@loaded="onCmbLoad"
padding="0 16"
:hidden="!recipe.combinations.length"
class="sectionTitle"
:text="getTitleCount('cmbs', 'combinations')"
/>
<Button
v-for="(combination, index) in recipe.combinations"
:key="index + 'comb'"
class="combination"
:text="getCombinationTitle(combination)"
@tap="viewCombination(combination)"
/>
<Label
@loaded="onNosTLoad"
padding="0 16"
:hidden="!recipe.notes.length"
class="sectionTitle"
:text="getTitleCount('nos', 'notes')"
/>
<StackLayout @loaded="onNosLoad" padding="0 16"> </StackLayout>
<Label
class="dateInfo sub tw"
:text="`${$options.filters.L('Last updated')}: ${formattedDate(
recipe.lastModified
)}\n${$options.filters.L('Created')}: ${formattedDate(
recipe.created
)}`"
/>
</StackLayout>
<Label
padding="0 16"
:hidden="!recipe.combinations.length"
class="sectionTitle"
:text="getTitleCount('cmbs', 'combinations')"
/>
<Button
v-for="(combination, index) in recipe.combinations"
:key="index + 'comb'"
class="combination"
:text="getCombinationTitle(combination)"
@tap="viewCombination(combination)"
/>
<Label
padding="0 16"
:hidden="!recipe.notes.length"
class="sectionTitle"
:text="getTitleCount('nos', 'notes')"
/>
<StackLayout @loaded="onNosLoad" padding="0 16"> </StackLayout>
<Label
class="dateInfo sub tw"
:text="`${$options.filters.L('Last updated')}: ${formattedDate(
recipe.lastModified
)}\n${$options.filters.L('Created')}: ${formattedDate(
recipe.created
)}`"
/>
</StackLayout>
</ScrollView>
</ScrollView>
<Label
class="sectionTitle sticky"
:hidden="!showTitleArr[0]"
:text="getTitleCount('ings', 'ingredients')"
/>
<Label
class="sectionTitle sticky"
:hidden="!showTitleArr[1]"
:text="getTitleCount('inss', 'instructions')"
/>
<Label
class="sectionTitle sticky"
:hidden="!showTitleArr[2]"
:text="getTitleCount('cmbs', 'combinations')"
/>
<Label
class="sectionTitle sticky"
:hidden="!showTitleArr[3]"
:text="getTitleCount('nos', 'notes')"
/>
</AbsoluteLayout>
</DockLayout>
<GridLayout
row="1"
@ -269,13 +292,16 @@ export default {
appbar: null,
ingcon: null,
inscon: null,
cmbcon: null,
notescon: null,
notesT: null,
imgZoom: null,
checks: [],
checked: 0,
stepsDid: 0,
toast: null,
photoOpen: false,
showTitleArr: [false, false, false, false],
};
},
computed: {
@ -317,6 +343,12 @@ export default {
onInsLoad({ object }) {
this.inscon = object;
},
onCmbLoad({ object }) {
this.cmbcon = object;
},
onNosTLoad({ object }) {
this.notesT = object;
},
onNosLoad({ object }) {
this.notescon = object;
this.createNotes();
@ -330,6 +362,37 @@ export default {
this.imgZoom.top = 24;
this.imgZoom.left = Screen.mainScreen.widthDIPs - 112;
},
// FIX: scroll not smooth
stickyTitle({ object }) {
// let vm = this;
// function isTop(label) {
// let pos = label.getLocationRelativeTo(object).y;
// return label === vm.cmbcon || label === vm.notesT
// ? pos < 0
// : pos + 32 < 0;
// }
// const isAllFalse = (e) => e == false;
// if (this.recipe.notes.length && isTop(this.notesT)) {
// this.showTitleArr = [false, false, false, true];
// } else if (this.recipe.combinations.length && isTop(this.cmbcon)) {
// this.showTitleArr = [false, false, true, false];
// } else if (this.recipe.instructions.length && isTop(this.inscon)) {
// this.showTitleArr = [false, true, false, false];
// } else if (this.recipe.ingredients.length && isTop(this.ingcon)) {
// this.showTitleArr = [true, false, false, false];
// } else {
// this.showTitleArr = [false, false, false, false];
// }
// if (
// this.recipe.ingredients.length &&
// !this.showTitleArr[0] &&
// isTop(this.ingcon)
// ) {
// this.showTitleArr = [true, false, false, false];
// } else if (!this.showTitleArr.every(isAllFalse) && !isTop(this.ingcon)) {
// this.showTitleArr = [false, false, false, false];
// }
},
onScroll(args) {
let scrollUp;
let y = args.scrollY;
@ -349,6 +412,7 @@ export default {
duration: 250,
curve: CoreTypes.AnimationCurve.ease,
});
// this.stickyTitle(args);
}
},
// HELPERS
@ -482,7 +546,7 @@ export default {
clearChecks() {
this.checked = 0;
this.checks = [];
for (let i = 0; i < this.ingcon.getChildrenCount(); i++) {
for (let i = 1; i < this.ingcon.getChildrenCount(); i++) {
this.ingcon.getChildAt(i).getChildAt(0).text = this.icon.uncheck;
}
},
@ -505,7 +569,7 @@ export default {
},
clearSteps() {
this.stepsDid = 0;
for (let i = 0; i < this.inscon.getChildrenCount(); i++) {
for (let i = 1; i < this.inscon.getChildrenCount(); i++) {
this.inscon.getChildAt(i).className = "instruction";
}
},

View file

@ -1,5 +1,9 @@
<template>
<Page @loaded="transparentPage" backgroundColor="transparent" :class="appTheme">
<Page
@loaded="transparentPage"
backgroundColor="transparent"
:class="appTheme"
>
<GridLayout rows="auto, auto, auto" class="modal">
<Label class="title" :text="title | L" />
<Label
@ -8,23 +12,16 @@
class="description tw"
:text="description"
/>
<GridLayout row="2" columns="auto, *, auto, auto" class="actions">
<Button
v-if="secondButtonText"
col="0"
class="text sm"
:text="secondButtonText | L"
@tap="$modal.close(-1)"
/>
<GridLayout row="2" columns="*, auto, auto" class="actions">
<Button
v-if="cancelButtonText"
col="2"
col="1"
class="text sm"
:text="cancelButtonText | L"
@tap="$modal.close(false)"
/>
<Button
col="3"
col="2"
class="text sm"
:text="okButtonText | L"
@tap="$modal.close(true)"
@ -37,13 +34,7 @@
<script>
import { mapState } from "vuex";
export default {
props: [
"title",
"description",
"secondButtonText",
"cancelButtonText",
"okButtonText",
],
props: ["title", "description", "cancelButtonText", "okButtonText"],
computed: {
...mapState(["icon", "appTheme"]),
},

View file

@ -176,7 +176,7 @@ export default {
this.localCategory = this.selectedCategory;
this.localTag = this.selectedTag;
if (this.localCuisine) this.filterType = "category";
if (this.localCategory || this.localTag) this.filterType = "tag";
if (this.localCategory && this.localTag) this.filterType = "tag";
this.scrollToRight();
},
onScrollLoad(args) {

View file

@ -175,7 +175,6 @@
"nwCat": "New category",
"req": "Required",
"recPic": "Recipe photo",
"repBtn": "REPLACE",
"cPic": "Crop photo",
"breakfast": "Breakfast",
"lunch": "lunch",
@ -311,5 +310,7 @@
"expip": "Export in progress",
"impip": "Import in progress",
"srpu": "Share recipe photo using...",
"sru": "Share recipe using..."
"sru": "Share recipe using...",
"aap": "Attach a photo",
"rp": "Remove photo"
}

View file

@ -35,8 +35,8 @@ export const openAppSettingsPage = () => {
Application.android.foregroundActivity.startActivity(intent)
}
export const hasAccelerometer = () => {
let context = Utils.ad.getApplicationContext()
let sensorManager = context.getSystemService(
let ctx = Utils.ad.getApplicationContext()
let sensorManager = ctx.getSystemService(
android.content.Context.SENSOR_SERVICE
)
return sensorManager.getDefaultSensor(
@ -62,8 +62,8 @@ export const timer = (dur, callback) => {
}, 1000)
}
function callIntent(context, intent, msg, pickerType) {
return new Promise((resolve, reject) => {
function callIntent(ctx, intent, msg, pickerType) {
return new Promise((resolve) => {
const onEvent = function(e) {
if (e.requestCode === pickerType) {
resolve(e)
@ -71,7 +71,7 @@ function callIntent(context, intent, msg, pickerType) {
}
}
Application.android.once(AndroidApplication.activityResultEvent, onEvent)
context.startActivityForResult(
ctx.startActivityForResult(
android.content.Intent.createChooser(intent, msg),
pickerType
)
@ -79,14 +79,14 @@ function callIntent(context, intent, msg, pickerType) {
}
// IMAGE PICKER
export const getRecipePhoto = () => {
const context =
const ctx =
Application.android.foregroundActivity || Application.android.startActivity
const DIR_CODE = Math.round(Math.random() * 10000)
const intent = new android.content.Intent(
android.content.Intent.ACTION_GET_CONTENT
)
intent.setType('image/*')
return callIntent(context, intent, 'Select photo', DIR_CODE).then((res) => {
return callIntent(ctx, intent, 'Select photo', DIR_CODE).then((res) => {
if (res.resultCode === android.app.Activity.RESULT_OK)
if (res.intent != null && res.intent.getData())
return res.intent.getData()
@ -114,13 +114,13 @@ export const copyPhotoToCache = (uri, filepath) => {
// BACKUP FOLDER PICKER
export const getBackupFolder = () => {
const context =
const ctx =
Application.android.foregroundActivity || Application.android.startActivity
const DIR_CODE = Math.round(Math.random() * 10000)
const intent = new android.content.Intent(
android.content.Intent.ACTION_OPEN_DOCUMENT_TREE
)
return callIntent(context, intent, 'Select folder', DIR_CODE).then((res) => {
return callIntent(ctx, intent, 'Select folder', DIR_CODE).then((res) => {
if (res.resultCode === android.app.Activity.RESULT_OK)
if (res.intent != null && res.intent.getData())
return res.intent.getData()
@ -129,7 +129,7 @@ export const getBackupFolder = () => {
// BACKUP FILE PICKER
export const getBackupFile = () => {
const context =
const ctx =
Application.android.foregroundActivity || Application.android.startActivity
const DIR_CODE = Math.round(Math.random() * 10000)
const intent = new android.content.Intent(
@ -137,7 +137,7 @@ export const getBackupFile = () => {
)
intent.addCategory(android.content.Intent.CATEGORY_OPENABLE)
intent.setType('application/zip')
return callIntent(context, intent, 'Select file to import', DIR_CODE).then(
return callIntent(ctx, intent, 'Select file to import', DIR_CODE).then(
(res) => {
if (res.resultCode === android.app.Activity.RESULT_OK) {
if (res.intent != null && res.intent.getData())
@ -240,15 +240,34 @@ export class Zip {
// SHARE OPERATIONS
function share(intent, subject) {
const context = Application.android.context
const ctx = Application.android.context
const shareIntent = android.content.Intent.createChooser(intent, subject)
shareIntent.setFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(shareIntent)
ctx.startActivity(shareIntent)
}
function getSendIntent(type) {
const intent = new android.content.Intent(android.content.Intent.ACTION_SEND)
intent.setType(type)
return intent
}
export const shareText = (text, subject) => {
const intent = new android.context.Intent(android.content.Intent.ACTION_SEND)
intent.setType('text/plain')
intent.putExtra(android.context.Intent.EXTRA_TEXT, text)
const intent = getSendIntent('text/plain')
intent.putExtra(android.content.Intent.EXTRA_TEXT, text)
share(intent, subject)
}
export const shareImage = (image, subject) => {
let ctx = Application.android.context
const intent = getSendIntent('image/jpeg')
const baos = new java.io.ByteArrayOutputStream()
image.android.compress(android.graphics.Bitmap.CompressFormat.JPEG, 100, baos)
const tmpFile = new java.io.File(ctx.getExternalCacheDir(), 'EnRecipes.jpg')
const fos = new java.io.FileOutputStream(tmpFile)
fos.write(baos.toByteArray())
fos.flush()
fos.close()
intent.putExtra(
android.content.Intent.EXTRA_STREAM,
android.net.Uri.fromFile(tmpFile)
)
share(intent, subject)
}

393
package-lock.json generated
View file

@ -43,9 +43,9 @@
"dev": true
},
"node_modules/@babel/core": {
"version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz",
"integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==",
"version": "7.13.15",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.15.tgz",
"integrity": "sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.12.13",
@ -53,9 +53,9 @@
"@babel/helper-compilation-targets": "^7.13.13",
"@babel/helper-module-transforms": "^7.13.14",
"@babel/helpers": "^7.13.10",
"@babel/parser": "^7.13.13",
"@babel/parser": "^7.13.15",
"@babel/template": "^7.12.13",
"@babel/traverse": "^7.13.13",
"@babel/traverse": "^7.13.15",
"@babel/types": "^7.13.14",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
@ -409,27 +409,29 @@
}
},
"node_modules/@nativescript/webpack": {
"version": "5.0.0-beta.5",
"resolved": "https://registry.npmjs.org/@nativescript/webpack/-/webpack-5.0.0-beta.5.tgz",
"integrity": "sha512-YYgS0BliyPK7XZDI2ZV/5eU1ppze3/7gr7prB8mpEb1vP0bGWf1Q/A+lH8zr818g0xmQ99ayGZjupnnHknPs7Q==",
"version": "5.0.0-beta.6",
"resolved": "https://registry.npmjs.org/@nativescript/webpack/-/webpack-5.0.0-beta.6.tgz",
"integrity": "sha512-/NvzzElwWpl7HUphV3MLAzzEeRFGFgi5huG5Mx8p5MxPZOIdC2nM18nT+qZT1UhoRTzYlW13Z0ZSBGBlbyPTGw==",
"dev": true,
"dependencies": {
"@babel/core": "7.13.14",
"@babel/core": "7.13.15",
"@pmmmwh/react-refresh-webpack-plugin": "0.4.3",
"acorn": "^8.1.1",
"acorn-stage3": "^4.0.0",
"babel-loader": "8.2.2",
"chalk": "4.1.0",
"cli-highlight": "2.1.11",
"commander": "7.2.0",
"copy-webpack-plugin": "8.1.0",
"copy-webpack-plugin": "8.1.1",
"css": "3.0.0",
"css-loader": "5.2.0",
"css-loader": "5.2.1",
"dotenv-webpack": "7.0.2",
"fork-ts-checker-webpack-plugin": "6.2.0",
"fork-ts-checker-webpack-plugin": "6.2.1",
"loader-utils": "2.0.0",
"lodash.get": "4.4.2",
"micromatch": "4.0.2",
"postcss": "8.2.8",
"postcss-import": "14.0.0",
"micromatch": "4.0.4",
"postcss": "8.2.10",
"postcss-import": "14.0.1",
"postcss-loader": "5.2.0",
"raw-loader": "4.0.2",
"react-refresh": "0.10.0",
@ -438,10 +440,10 @@
"sax": "1.2.4",
"source-map": "0.7.3",
"terser-webpack-plugin": "5.1.1",
"ts-dedent": "2.1.0",
"ts-dedent": "2.1.1",
"ts-loader": "8.1.0",
"vue-loader": "15.9.6",
"webpack": "5.28.0",
"webpack": "5.31.2",
"webpack-bundle-analyzer": "4.4.0",
"webpack-chain": "6.5.1",
"webpack-cli": "4.6.0",
@ -564,9 +566,9 @@
"integrity": "sha512-AiAruGY7IxgKW/Jn4+iRVPpXvXMDPnuUchJLujQ1ipZ1f8IIDgMch3A5nMxJWY1KSn72AYZLoQZxmEN3YxzZIA=="
},
"node_modules/@types/eslint": {
"version": "7.2.8",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.8.tgz",
"integrity": "sha512-RTKvBsfz0T8CKOGZMfuluDNyMFHnu5lvNr4hWEsQeHXH6FcmIDIozOyWMh36nLGMwVd5UFNXC2xztA8lln22MQ==",
"version": "7.2.9",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.9.tgz",
"integrity": "sha512-SdAAXZNvWfhtf3X3y1cbbCZhP3xyPh7mfTvzV6CgfWc/ZhiHpyr9bVroe2/RCHIf7gczaNcprhaBLsx0CCJHQA==",
"dev": true,
"dependencies": {
"@types/estree": "*",
@ -922,9 +924,9 @@
"dev": true
},
"node_modules/acorn": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz",
"integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==",
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.1.tgz",
"integrity": "sha512-xYiIVjNuqtKXMxlRMDc6mZUhXehod4a3gbZ1qRlM7icK4EbxUFNLhWoPblCvFtB2Y9CIqHP3CF/rdxLItaQv8g==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@ -933,6 +935,80 @@
"node": ">=0.4.0"
}
},
"node_modules/acorn-class-fields": {
"version": "0.3.7",
"resolved": "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.3.7.tgz",
"integrity": "sha512-jdUWSFce0fuADUljmExz4TWpPkxmRW/ZCPRqeeUzbGf0vFUcpQYbyq52l75qGd0oSwwtAepeL6hgb/naRgvcKQ==",
"dev": true,
"dependencies": {
"acorn-private-class-elements": "^0.2.7"
},
"engines": {
"node": ">=4.8.2"
},
"peerDependencies": {
"acorn": "^6 || ^7 || ^8"
}
},
"node_modules/acorn-private-class-elements": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/acorn-private-class-elements/-/acorn-private-class-elements-0.2.7.tgz",
"integrity": "sha512-+GZH2wOKNZOBI4OOPmzpo4cs6mW297sn6fgIk1dUI08jGjhAaEwvC39mN2gJAg2lmAQJ1rBkFqKWonL3Zz6PVA==",
"dev": true,
"engines": {
"node": ">=4.8.2"
},
"peerDependencies": {
"acorn": "^6.1.0 || ^7 || ^8"
}
},
"node_modules/acorn-private-methods": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/acorn-private-methods/-/acorn-private-methods-0.3.3.tgz",
"integrity": "sha512-46oeEol3YFvLSah5m9hGMlNpxDBCEkdceJgf01AjqKYTK9r6HexKs2rgSbLK81pYjZZMonhftuUReGMlbbv05w==",
"dev": true,
"dependencies": {
"acorn-private-class-elements": "^0.2.7"
},
"engines": {
"node": ">=4.8.2"
},
"peerDependencies": {
"acorn": "^6 || ^7 || ^8"
}
},
"node_modules/acorn-stage3": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/acorn-stage3/-/acorn-stage3-4.0.0.tgz",
"integrity": "sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==",
"dev": true,
"dependencies": {
"acorn-class-fields": "^0.3.7",
"acorn-private-methods": "^0.3.3",
"acorn-static-class-features": "^0.2.4"
},
"engines": {
"node": ">=4.8.2"
},
"peerDependencies": {
"acorn": "^7.4 || ^8"
}
},
"node_modules/acorn-static-class-features": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/acorn-static-class-features/-/acorn-static-class-features-0.2.4.tgz",
"integrity": "sha512-5X4mpYq5J3pdndLmIB0+WtFd/mKWnNYpuTlTzj32wUu/PMmEGOiayQ5UrqgwdBNiaZBtDDh5kddpP7Yg2QaQYA==",
"dev": true,
"dependencies": {
"acorn-private-class-elements": "^0.2.7"
},
"engines": {
"node": ">=4.8.2"
},
"peerDependencies": {
"acorn": "^6.1.0 || ^7 || ^8"
}
},
"node_modules/acorn-walk": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.0.2.tgz",
@ -1208,16 +1284,16 @@
}
},
"node_modules/browserslist": {
"version": "4.16.3",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz",
"integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==",
"version": "4.16.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.4.tgz",
"integrity": "sha512-d7rCxYV8I9kj41RH8UKYnvDYCRENUlHRgyXy/Rhr/1BaeLGfiCptEdFE8MIrvGfWbBFNjVYx76SQWvNX1j+/cQ==",
"dev": true,
"dependencies": {
"caniuse-lite": "^1.0.30001181",
"colorette": "^1.2.1",
"electron-to-chromium": "^1.3.649",
"caniuse-lite": "^1.0.30001208",
"colorette": "^1.2.2",
"electron-to-chromium": "^1.3.712",
"escalade": "^3.1.1",
"node-releases": "^1.1.70"
"node-releases": "^1.1.71"
},
"bin": {
"browserslist": "cli.js"
@ -1420,9 +1496,9 @@
}
},
"node_modules/copy-webpack-plugin": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-8.1.0.tgz",
"integrity": "sha512-Soiq8kXI2AZkpw3dSp18u6oU2JonC7UKv3UdXsKOmT1A5QT46ku9+6c0Qy29JDbSavQJNN1/eKGpd3QNw+cZWg==",
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-8.1.1.tgz",
"integrity": "sha512-rYM2uzRxrLRpcyPqGceRBDpxxUV8vcDqIKxAUKfcnFpcrPxT5+XvhTxv7XLjo5AvEJFPdAE3zCogG2JVahqgSQ==",
"dev": true,
"dependencies": {
"fast-glob": "^3.2.5",
@ -1515,9 +1591,9 @@
}
},
"node_modules/css-loader": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.0.tgz",
"integrity": "sha512-MfRo2MjEeLXMlUkeUwN71Vx5oc6EJnx5UQ4Yi9iUtYQvrPtwLUucYptz0hc6n++kdNcyF5olYBS4vPjJDAcLkw==",
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.1.tgz",
"integrity": "sha512-YCyRzlt/jgG1xanXZDG/DHqAueOtXFHeusP9TS478oP1J++JSKOyEgGW1GHVoCj/rkS+GWOlBwqQJBr9yajQ9w==",
"dev": true,
"dependencies": {
"camelcase": "^6.2.0",
@ -1742,9 +1818,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
"version": "1.3.711",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.711.tgz",
"integrity": "sha512-XbklBVCDiUeho0PZQCjC25Ha6uBwqqJeyDhPLwLwfWRAo4x+FZFsmu1pPPkXT+B4MQMQoQULfyaMltDopfeiHQ==",
"version": "1.3.713",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.713.tgz",
"integrity": "sha512-HWgkyX4xTHmxcWWlvv7a87RHSINEcpKYZmDMxkUlHcY+CJcfx7xEfBHuXVsO1rzyYs1WQJ7EgDp2CoErakBIow==",
"dev": true
},
"node_modules/emoji-regex": {
@ -2016,9 +2092,9 @@
}
},
"node_modules/fork-ts-checker-webpack-plugin": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.0.tgz",
"integrity": "sha512-DTNbOhq6lRdjYprukX54JMeYJgQ0zMow+R5BMLwWxEX2NAXthIkwnV8DBmsWjwNLSUItKZM4TCCJbtgrtKBu2Q==",
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.1.tgz",
"integrity": "sha512-Pyhn2kav/Y2g6I7aInABgcph/B78jjdXc4kGHzaAUBL4UVthknxM6aMH47JwpnuTJmdOuf6p5vMbIahsBHuWGg==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.8.3",
@ -2754,16 +2830,16 @@
}
},
"node_modules/micromatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
"integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
"dev": true,
"dependencies": {
"braces": "^3.0.1",
"picomatch": "^2.0.5"
"picomatch": "^2.2.3"
},
"engines": {
"node": ">=8"
"node": ">=8.6"
}
},
"node_modules/mime": {
@ -3120,9 +3196,9 @@
}
},
"node_modules/picomatch": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
"integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
"dev": true,
"engines": {
"node": ">=8.6"
@ -3166,13 +3242,13 @@
}
},
"node_modules/postcss": {
"version": "8.2.8",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.8.tgz",
"integrity": "sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw==",
"version": "8.2.10",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.10.tgz",
"integrity": "sha512-b/h7CPV7QEdrqIxtAf2j31U5ef05uBDuvoXv6L51Q4rcS1jdlXAVKJv+atCFdUXYl9dyTHGyoMzIepwowRJjFw==",
"dev": true,
"dependencies": {
"colorette": "^1.2.2",
"nanoid": "^3.1.20",
"nanoid": "^3.1.22",
"source-map": "^0.6.1"
},
"engines": {
@ -3184,9 +3260,9 @@
}
},
"node_modules/postcss-import": {
"version": "14.0.0",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz",
"integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==",
"version": "14.0.1",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.1.tgz",
"integrity": "sha512-Xn2+z++vWObbEPhiiKO1a78JiyhqipyrXHBb3AHpv0ks7Cdg+GxQQJ24ODNMTanldf7197gSP3axppO9yaG0lA==",
"dev": true,
"dependencies": {
"postcss-value-parser": "^4.0.0",
@ -4061,9 +4137,9 @@
}
},
"node_modules/ts-dedent": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.0.tgz",
"integrity": "sha512-HbmrG+lCgk5W8LQTALxBxQRBDeAhQKRzdqVhHLUkVd5nYT+b6zDzbRMjiA8wqrWDa33X09WdnW4zEsdwQArTaw==",
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.1.tgz",
"integrity": "sha512-riHuwnzAUCfdIeTBNUq7+Yj+ANnrMXo/7+Z74dIdudS7ys2k8aSGMzpJRMFDF7CLwUTbtvi1ZZff/Wl+XxmqIA==",
"dev": true,
"engines": {
"node": ">=6.10"
@ -4309,9 +4385,9 @@
}
},
"node_modules/webpack": {
"version": "5.28.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.28.0.tgz",
"integrity": "sha512-1xllYVmA4dIvRjHzwELgW4KjIU1fW4PEuEnjsylz7k7H5HgPOctIq7W1jrt3sKH9yG5d72//XWzsHhfoWvsQVg==",
"version": "5.31.2",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.31.2.tgz",
"integrity": "sha512-0bCQe4ybo7T5Z0SC5axnIAH+1WuIdV4FwLYkaAlLtvfBhIx8bPS48WHTfiRZS1VM+pSiYt7e/rgLs3gLrH82lQ==",
"dev": true,
"dependencies": {
"@types/eslint-scope": "^3.7.0",
@ -4703,9 +4779,9 @@
"dev": true
},
"@babel/core": {
"version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz",
"integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==",
"version": "7.13.15",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.15.tgz",
"integrity": "sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
@ -4713,9 +4789,9 @@
"@babel/helper-compilation-targets": "^7.13.13",
"@babel/helper-module-transforms": "^7.13.14",
"@babel/helpers": "^7.13.10",
"@babel/parser": "^7.13.13",
"@babel/parser": "^7.13.15",
"@babel/template": "^7.12.13",
"@babel/traverse": "^7.13.13",
"@babel/traverse": "^7.13.15",
"@babel/types": "^7.13.14",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
@ -5036,27 +5112,29 @@
}
},
"@nativescript/webpack": {
"version": "5.0.0-beta.5",
"resolved": "https://registry.npmjs.org/@nativescript/webpack/-/webpack-5.0.0-beta.5.tgz",
"integrity": "sha512-YYgS0BliyPK7XZDI2ZV/5eU1ppze3/7gr7prB8mpEb1vP0bGWf1Q/A+lH8zr818g0xmQ99ayGZjupnnHknPs7Q==",
"version": "5.0.0-beta.6",
"resolved": "https://registry.npmjs.org/@nativescript/webpack/-/webpack-5.0.0-beta.6.tgz",
"integrity": "sha512-/NvzzElwWpl7HUphV3MLAzzEeRFGFgi5huG5Mx8p5MxPZOIdC2nM18nT+qZT1UhoRTzYlW13Z0ZSBGBlbyPTGw==",
"dev": true,
"requires": {
"@babel/core": "7.13.14",
"@babel/core": "7.13.15",
"@pmmmwh/react-refresh-webpack-plugin": "0.4.3",
"acorn": "^8.1.1",
"acorn-stage3": "^4.0.0",
"babel-loader": "8.2.2",
"chalk": "4.1.0",
"cli-highlight": "2.1.11",
"commander": "7.2.0",
"copy-webpack-plugin": "8.1.0",
"copy-webpack-plugin": "8.1.1",
"css": "3.0.0",
"css-loader": "5.2.0",
"css-loader": "5.2.1",
"dotenv-webpack": "7.0.2",
"fork-ts-checker-webpack-plugin": "6.2.0",
"fork-ts-checker-webpack-plugin": "6.2.1",
"loader-utils": "2.0.0",
"lodash.get": "4.4.2",
"micromatch": "4.0.2",
"postcss": "8.2.8",
"postcss-import": "14.0.0",
"micromatch": "4.0.4",
"postcss": "8.2.10",
"postcss-import": "14.0.1",
"postcss-loader": "5.2.0",
"raw-loader": "4.0.2",
"react-refresh": "0.10.0",
@ -5065,10 +5143,10 @@
"sax": "1.2.4",
"source-map": "0.7.3",
"terser-webpack-plugin": "5.1.1",
"ts-dedent": "2.1.0",
"ts-dedent": "2.1.1",
"ts-loader": "8.1.0",
"vue-loader": "15.9.6",
"webpack": "5.28.0",
"webpack": "5.31.2",
"webpack-bundle-analyzer": "4.4.0",
"webpack-chain": "6.5.1",
"webpack-cli": "4.6.0",
@ -5138,9 +5216,9 @@
"integrity": "sha512-AiAruGY7IxgKW/Jn4+iRVPpXvXMDPnuUchJLujQ1ipZ1f8IIDgMch3A5nMxJWY1KSn72AYZLoQZxmEN3YxzZIA=="
},
"@types/eslint": {
"version": "7.2.8",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.8.tgz",
"integrity": "sha512-RTKvBsfz0T8CKOGZMfuluDNyMFHnu5lvNr4hWEsQeHXH6FcmIDIozOyWMh36nLGMwVd5UFNXC2xztA8lln22MQ==",
"version": "7.2.9",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.9.tgz",
"integrity": "sha512-SdAAXZNvWfhtf3X3y1cbbCZhP3xyPh7mfTvzV6CgfWc/ZhiHpyr9bVroe2/RCHIf7gczaNcprhaBLsx0CCJHQA==",
"dev": true,
"requires": {
"@types/estree": "*",
@ -5428,8 +5506,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.2.tgz",
"integrity": "sha512-3OBzV2fBGZ5TBfdW50cha1lHDVf9vlvRXnjpVbJBa20pSZQaSkMJZiwA8V2vD9ogyeXn8nU5s5A6mHyf5jhMzA==",
"dev": true,
"requires": {}
"dev": true
},
"@webpack-cli/info": {
"version": "1.2.3",
@ -5444,8 +5521,7 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.1.tgz",
"integrity": "sha512-0qXvpeYO6vaNoRBI52/UsbcaBydJCggoBBnIo/ovQQdn6fug0BgwsjorV1hVS7fMqGVTZGcVxv8334gjmbj5hw==",
"dev": true,
"requires": {}
"dev": true
},
"@xtuc/ieee754": {
"version": "1.2.0",
@ -5460,11 +5536,55 @@
"dev": true
},
"acorn": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz",
"integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==",
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.1.tgz",
"integrity": "sha512-xYiIVjNuqtKXMxlRMDc6mZUhXehod4a3gbZ1qRlM7icK4EbxUFNLhWoPblCvFtB2Y9CIqHP3CF/rdxLItaQv8g==",
"dev": true
},
"acorn-class-fields": {
"version": "0.3.7",
"resolved": "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.3.7.tgz",
"integrity": "sha512-jdUWSFce0fuADUljmExz4TWpPkxmRW/ZCPRqeeUzbGf0vFUcpQYbyq52l75qGd0oSwwtAepeL6hgb/naRgvcKQ==",
"dev": true,
"requires": {
"acorn-private-class-elements": "^0.2.7"
}
},
"acorn-private-class-elements": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/acorn-private-class-elements/-/acorn-private-class-elements-0.2.7.tgz",
"integrity": "sha512-+GZH2wOKNZOBI4OOPmzpo4cs6mW297sn6fgIk1dUI08jGjhAaEwvC39mN2gJAg2lmAQJ1rBkFqKWonL3Zz6PVA==",
"dev": true
},
"acorn-private-methods": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/acorn-private-methods/-/acorn-private-methods-0.3.3.tgz",
"integrity": "sha512-46oeEol3YFvLSah5m9hGMlNpxDBCEkdceJgf01AjqKYTK9r6HexKs2rgSbLK81pYjZZMonhftuUReGMlbbv05w==",
"dev": true,
"requires": {
"acorn-private-class-elements": "^0.2.7"
}
},
"acorn-stage3": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/acorn-stage3/-/acorn-stage3-4.0.0.tgz",
"integrity": "sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==",
"dev": true,
"requires": {
"acorn-class-fields": "^0.3.7",
"acorn-private-methods": "^0.3.3",
"acorn-static-class-features": "^0.2.4"
}
},
"acorn-static-class-features": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/acorn-static-class-features/-/acorn-static-class-features-0.2.4.tgz",
"integrity": "sha512-5X4mpYq5J3pdndLmIB0+WtFd/mKWnNYpuTlTzj32wUu/PMmEGOiayQ5UrqgwdBNiaZBtDDh5kddpP7Yg2QaQYA==",
"dev": true,
"requires": {
"acorn-private-class-elements": "^0.2.7"
}
},
"acorn-walk": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.0.2.tgz",
@ -5487,8 +5607,7 @@
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true,
"requires": {}
"dev": true
},
"ansi-colors": {
"version": "4.1.1",
@ -5658,16 +5777,16 @@
}
},
"browserslist": {
"version": "4.16.3",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz",
"integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==",
"version": "4.16.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.4.tgz",
"integrity": "sha512-d7rCxYV8I9kj41RH8UKYnvDYCRENUlHRgyXy/Rhr/1BaeLGfiCptEdFE8MIrvGfWbBFNjVYx76SQWvNX1j+/cQ==",
"dev": true,
"requires": {
"caniuse-lite": "^1.0.30001181",
"colorette": "^1.2.1",
"electron-to-chromium": "^1.3.649",
"caniuse-lite": "^1.0.30001208",
"colorette": "^1.2.2",
"electron-to-chromium": "^1.3.712",
"escalade": "^3.1.1",
"node-releases": "^1.1.70"
"node-releases": "^1.1.71"
}
},
"buffer-from": {
@ -5818,9 +5937,9 @@
}
},
"copy-webpack-plugin": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-8.1.0.tgz",
"integrity": "sha512-Soiq8kXI2AZkpw3dSp18u6oU2JonC7UKv3UdXsKOmT1A5QT46ku9+6c0Qy29JDbSavQJNN1/eKGpd3QNw+cZWg==",
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-8.1.1.tgz",
"integrity": "sha512-rYM2uzRxrLRpcyPqGceRBDpxxUV8vcDqIKxAUKfcnFpcrPxT5+XvhTxv7XLjo5AvEJFPdAE3zCogG2JVahqgSQ==",
"dev": true,
"requires": {
"fast-glob": "^3.2.5",
@ -5900,9 +6019,9 @@
}
},
"css-loader": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.0.tgz",
"integrity": "sha512-MfRo2MjEeLXMlUkeUwN71Vx5oc6EJnx5UQ4Yi9iUtYQvrPtwLUucYptz0hc6n++kdNcyF5olYBS4vPjJDAcLkw==",
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.1.tgz",
"integrity": "sha512-YCyRzlt/jgG1xanXZDG/DHqAueOtXFHeusP9TS478oP1J++JSKOyEgGW1GHVoCj/rkS+GWOlBwqQJBr9yajQ9w==",
"dev": true,
"requires": {
"camelcase": "^6.2.0",
@ -6055,9 +6174,9 @@
"dev": true
},
"electron-to-chromium": {
"version": "1.3.711",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.711.tgz",
"integrity": "sha512-XbklBVCDiUeho0PZQCjC25Ha6uBwqqJeyDhPLwLwfWRAo4x+FZFsmu1pPPkXT+B4MQMQoQULfyaMltDopfeiHQ==",
"version": "1.3.713",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.713.tgz",
"integrity": "sha512-HWgkyX4xTHmxcWWlvv7a87RHSINEcpKYZmDMxkUlHcY+CJcfx7xEfBHuXVsO1rzyYs1WQJ7EgDp2CoErakBIow==",
"dev": true
},
"emoji-regex": {
@ -6271,9 +6390,9 @@
}
},
"fork-ts-checker-webpack-plugin": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.0.tgz",
"integrity": "sha512-DTNbOhq6lRdjYprukX54JMeYJgQ0zMow+R5BMLwWxEX2NAXthIkwnV8DBmsWjwNLSUItKZM4TCCJbtgrtKBu2Q==",
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.1.tgz",
"integrity": "sha512-Pyhn2kav/Y2g6I7aInABgcph/B78jjdXc4kGHzaAUBL4UVthknxM6aMH47JwpnuTJmdOuf6p5vMbIahsBHuWGg==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.8.3",
@ -6493,8 +6612,7 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
"integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
"dev": true,
"requires": {}
"dev": true
},
"ignore": {
"version": "5.1.8",
@ -6832,13 +6950,13 @@
"dev": true
},
"micromatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
"integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
"dev": true,
"requires": {
"braces": "^3.0.1",
"picomatch": "^2.0.5"
"picomatch": "^2.2.3"
}
},
"mime": {
@ -7112,9 +7230,9 @@
"dev": true
},
"picomatch": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
"integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
"dev": true
},
"pify": {
@ -7143,13 +7261,13 @@
}
},
"postcss": {
"version": "8.2.8",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.8.tgz",
"integrity": "sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw==",
"version": "8.2.10",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.10.tgz",
"integrity": "sha512-b/h7CPV7QEdrqIxtAf2j31U5ef05uBDuvoXv6L51Q4rcS1jdlXAVKJv+atCFdUXYl9dyTHGyoMzIepwowRJjFw==",
"dev": true,
"requires": {
"colorette": "^1.2.2",
"nanoid": "^3.1.20",
"nanoid": "^3.1.22",
"source-map": "^0.6.1"
},
"dependencies": {
@ -7162,9 +7280,9 @@
}
},
"postcss-import": {
"version": "14.0.0",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz",
"integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==",
"version": "14.0.1",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.1.tgz",
"integrity": "sha512-Xn2+z++vWObbEPhiiKO1a78JiyhqipyrXHBb3AHpv0ks7Cdg+GxQQJ24ODNMTanldf7197gSP3axppO9yaG0lA==",
"dev": true,
"requires": {
"postcss-value-parser": "^4.0.0",
@ -7226,8 +7344,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
"integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
"dev": true,
"requires": {}
"dev": true
},
"postcss-modules-local-by-default": {
"version": "4.0.0",
@ -7784,9 +7901,9 @@
"dev": true
},
"ts-dedent": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.0.tgz",
"integrity": "sha512-HbmrG+lCgk5W8LQTALxBxQRBDeAhQKRzdqVhHLUkVd5nYT+b6zDzbRMjiA8wqrWDa33X09WdnW4zEsdwQArTaw==",
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.1.1.tgz",
"integrity": "sha512-riHuwnzAUCfdIeTBNUq7+Yj+ANnrMXo/7+Z74dIdudS7ys2k8aSGMzpJRMFDF7CLwUTbtvi1ZZff/Wl+XxmqIA==",
"dev": true
},
"ts-loader": {
@ -7961,8 +8078,7 @@
"vuex": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz",
"integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==",
"requires": {}
"integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw=="
},
"watchpack": {
"version": "2.1.1",
@ -7975,9 +8091,9 @@
}
},
"webpack": {
"version": "5.28.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.28.0.tgz",
"integrity": "sha512-1xllYVmA4dIvRjHzwELgW4KjIU1fW4PEuEnjsylz7k7H5HgPOctIq7W1jrt3sKH9yG5d72//XWzsHhfoWvsQVg==",
"version": "5.31.2",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.31.2.tgz",
"integrity": "sha512-0bCQe4ybo7T5Z0SC5axnIAH+1WuIdV4FwLYkaAlLtvfBhIx8bPS48WHTfiRZS1VM+pSiYt7e/rgLs3gLrH82lQ==",
"dev": true,
"requires": {
"@types/eslint-scope": "^3.7.0",
@ -8168,8 +8284,7 @@
"version": "7.4.4",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz",
"integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==",
"dev": true,
"requires": {}
"dev": true
},
"xmlbuilder": {
"version": "9.0.7",