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

View file

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

View file

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

View file

@ -270,12 +270,15 @@ export default {
// IMPORT HANDLERS // IMPORT HANDLERS
openZipFile() { openZipFile() {
utils.getBackupFile().then((uri) => { utils.getBackupFile().then((uri) => {
let dest = path.join(knownFolders.temp().path, "tempUnZip"); console.log(uri);
utils.Zip.unzip(uri, dest) if (uri) {
.then((res) => { let dest = path.join(knownFolders.temp().path, "tempUnZip");
if (res) this.validateZipContent(res, uri); utils.Zip.unzip(uri, dest)
}) .then((res) => {
.catch(() => this.failedImport(localize("buInc"))); if (res) this.validateZipContent(res, uri);
})
.catch(() => this.failedImport(localize("buInc")));
}
}); });
}, },
validateZipContent(extractedFolderPath, uri) { 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" @tap="viewPhoto"
/> />
</GridLayout> </GridLayout>
<ScrollView <AbsoluteLayout dock="bottom">
dock="bottom" <ScrollView
@loaded="onScrollLoad" width="100%"
@scroll="!toast && onScroll($event)" height="100%"
> @loaded="onScrollLoad"
<StackLayout> @scroll="!toast && onScroll($event)"
<GridLayout rows="auto" columns="*, *"> >
<StackLayout class="attribute"> <StackLayout>
<Label class="title sub" :text="'cui' | L" /> <GridLayout rows="auto" columns="*, *">
<Label class="value" :text="recipe.cuisine | L" /> <StackLayout class="attribute">
</StackLayout> <Label class="title sub" :text="'cui' | L" />
<StackLayout class="attribute" col="1"> <Label class="value" :text="recipe.cuisine | L" />
<Label class="title sub" :text="'cat' | L" /> </StackLayout>
<Label class="value" :text="recipe.category | L" /> <StackLayout class="attribute" col="1">
</StackLayout> <Label class="title sub" :text="'cat' | L" />
</GridLayout> <Label class="value" :text="recipe.category | L" />
<StackLayout :hidden="!recipe.tags.length" class="attribute"> </StackLayout>
<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}`"
/>
</GridLayout> </GridLayout>
</StackLayout> <StackLayout :hidden="!recipe.tags.length" class="attribute">
<Label <Label class="title sub" :text="'ts' | L" />
padding="0 16" <Label class="value" :text="getTags(recipe.tags)" />
:hidden="!recipe.instructions.length" </StackLayout>
class="sectionTitle" <GridLayout rows="auto" columns="*, *">
:text="getTitleCount('inss', 'instructions')" <StackLayout
/> class="attribute"
<StackLayout @loaded="onInsLoad"> :hidden="!hasTime(recipe.prepTime)"
<GridLayout >
@touch="touchInstruction" <Label class="title sub" :text="'prepT' | L" />
columns="auto ,*" <Label class="value" :text="formattedTime(recipe.prepTime)" />
v-for="(instruction, index) in recipe.instructions" </StackLayout>
:key="index + 'ins'" <StackLayout
class="instruction" :col="hasTime(recipe.prepTime) ? 1 : 0"
> class="attribute"
<Button class="count ico min" :text="index + 1" /> :hidden="!hasTime(recipe.cookTime)"
<Label col="1" class="value tw" :text="instruction" /> >
<Label class="title sub" :text="'cookT' | L" />
<Label class="value" :text="formattedTime(recipe.cookTime)" />
</StackLayout>
</GridLayout> </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> </StackLayout>
<Label </ScrollView>
padding="0 16" <Label
:hidden="!recipe.combinations.length" class="sectionTitle sticky"
class="sectionTitle" :hidden="!showTitleArr[0]"
:text="getTitleCount('cmbs', 'combinations')" :text="getTitleCount('ings', 'ingredients')"
/> />
<Button <Label
v-for="(combination, index) in recipe.combinations" class="sectionTitle sticky"
:key="index + 'comb'" :hidden="!showTitleArr[1]"
class="combination" :text="getTitleCount('inss', 'instructions')"
:text="getCombinationTitle(combination)" />
@tap="viewCombination(combination)" <Label
/> class="sectionTitle sticky"
<Label :hidden="!showTitleArr[2]"
padding="0 16" :text="getTitleCount('cmbs', 'combinations')"
:hidden="!recipe.notes.length" />
class="sectionTitle" <Label
:text="getTitleCount('nos', 'notes')" class="sectionTitle sticky"
/> :hidden="!showTitleArr[3]"
<StackLayout @loaded="onNosLoad" padding="0 16"> </StackLayout> :text="getTitleCount('nos', 'notes')"
<Label />
class="dateInfo sub tw" </AbsoluteLayout>
:text="`${$options.filters.L('Last updated')}: ${formattedDate(
recipe.lastModified
)}\n${$options.filters.L('Created')}: ${formattedDate(
recipe.created
)}`"
/>
</StackLayout>
</ScrollView>
</DockLayout> </DockLayout>
<GridLayout <GridLayout
row="1" row="1"
@ -269,13 +292,16 @@ export default {
appbar: null, appbar: null,
ingcon: null, ingcon: null,
inscon: null, inscon: null,
cmbcon: null,
notescon: null, notescon: null,
notesT: null,
imgZoom: null, imgZoom: null,
checks: [], checks: [],
checked: 0, checked: 0,
stepsDid: 0, stepsDid: 0,
toast: null, toast: null,
photoOpen: false, photoOpen: false,
showTitleArr: [false, false, false, false],
}; };
}, },
computed: { computed: {
@ -317,6 +343,12 @@ export default {
onInsLoad({ object }) { onInsLoad({ object }) {
this.inscon = object; this.inscon = object;
}, },
onCmbLoad({ object }) {
this.cmbcon = object;
},
onNosTLoad({ object }) {
this.notesT = object;
},
onNosLoad({ object }) { onNosLoad({ object }) {
this.notescon = object; this.notescon = object;
this.createNotes(); this.createNotes();
@ -330,6 +362,37 @@ export default {
this.imgZoom.top = 24; this.imgZoom.top = 24;
this.imgZoom.left = Screen.mainScreen.widthDIPs - 112; 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) { onScroll(args) {
let scrollUp; let scrollUp;
let y = args.scrollY; let y = args.scrollY;
@ -349,6 +412,7 @@ export default {
duration: 250, duration: 250,
curve: CoreTypes.AnimationCurve.ease, curve: CoreTypes.AnimationCurve.ease,
}); });
// this.stickyTitle(args);
} }
}, },
// HELPERS // HELPERS
@ -482,7 +546,7 @@ export default {
clearChecks() { clearChecks() {
this.checked = 0; this.checked = 0;
this.checks = []; 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; this.ingcon.getChildAt(i).getChildAt(0).text = this.icon.uncheck;
} }
}, },
@ -505,7 +569,7 @@ export default {
}, },
clearSteps() { clearSteps() {
this.stepsDid = 0; 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"; this.inscon.getChildAt(i).className = "instruction";
} }
}, },

View file

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

View file

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

View file

@ -175,7 +175,6 @@
"nwCat": "New category", "nwCat": "New category",
"req": "Required", "req": "Required",
"recPic": "Recipe photo", "recPic": "Recipe photo",
"repBtn": "REPLACE",
"cPic": "Crop photo", "cPic": "Crop photo",
"breakfast": "Breakfast", "breakfast": "Breakfast",
"lunch": "lunch", "lunch": "lunch",
@ -311,5 +310,7 @@
"expip": "Export in progress", "expip": "Export in progress",
"impip": "Import in progress", "impip": "Import in progress",
"srpu": "Share recipe photo using...", "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) Application.android.foregroundActivity.startActivity(intent)
} }
export const hasAccelerometer = () => { export const hasAccelerometer = () => {
let context = Utils.ad.getApplicationContext() let ctx = Utils.ad.getApplicationContext()
let sensorManager = context.getSystemService( let sensorManager = ctx.getSystemService(
android.content.Context.SENSOR_SERVICE android.content.Context.SENSOR_SERVICE
) )
return sensorManager.getDefaultSensor( return sensorManager.getDefaultSensor(
@ -62,8 +62,8 @@ export const timer = (dur, callback) => {
}, 1000) }, 1000)
} }
function callIntent(context, intent, msg, pickerType) { function callIntent(ctx, intent, msg, pickerType) {
return new Promise((resolve, reject) => { return new Promise((resolve) => {
const onEvent = function(e) { const onEvent = function(e) {
if (e.requestCode === pickerType) { if (e.requestCode === pickerType) {
resolve(e) resolve(e)
@ -71,7 +71,7 @@ function callIntent(context, intent, msg, pickerType) {
} }
} }
Application.android.once(AndroidApplication.activityResultEvent, onEvent) Application.android.once(AndroidApplication.activityResultEvent, onEvent)
context.startActivityForResult( ctx.startActivityForResult(
android.content.Intent.createChooser(intent, msg), android.content.Intent.createChooser(intent, msg),
pickerType pickerType
) )
@ -79,14 +79,14 @@ function callIntent(context, intent, msg, pickerType) {
} }
// IMAGE PICKER // IMAGE PICKER
export const getRecipePhoto = () => { export const getRecipePhoto = () => {
const context = const ctx =
Application.android.foregroundActivity || Application.android.startActivity Application.android.foregroundActivity || Application.android.startActivity
const DIR_CODE = Math.round(Math.random() * 10000) const DIR_CODE = Math.round(Math.random() * 10000)
const intent = new android.content.Intent( const intent = new android.content.Intent(
android.content.Intent.ACTION_GET_CONTENT android.content.Intent.ACTION_GET_CONTENT
) )
intent.setType('image/*') 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.resultCode === android.app.Activity.RESULT_OK)
if (res.intent != null && res.intent.getData()) if (res.intent != null && res.intent.getData())
return res.intent.getData() return res.intent.getData()
@ -114,13 +114,13 @@ export const copyPhotoToCache = (uri, filepath) => {
// BACKUP FOLDER PICKER // BACKUP FOLDER PICKER
export const getBackupFolder = () => { export const getBackupFolder = () => {
const context = const ctx =
Application.android.foregroundActivity || Application.android.startActivity Application.android.foregroundActivity || Application.android.startActivity
const DIR_CODE = Math.round(Math.random() * 10000) const DIR_CODE = Math.round(Math.random() * 10000)
const intent = new android.content.Intent( const intent = new android.content.Intent(
android.content.Intent.ACTION_OPEN_DOCUMENT_TREE 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.resultCode === android.app.Activity.RESULT_OK)
if (res.intent != null && res.intent.getData()) if (res.intent != null && res.intent.getData())
return res.intent.getData() return res.intent.getData()
@ -129,7 +129,7 @@ export const getBackupFolder = () => {
// BACKUP FILE PICKER // BACKUP FILE PICKER
export const getBackupFile = () => { export const getBackupFile = () => {
const context = const ctx =
Application.android.foregroundActivity || Application.android.startActivity Application.android.foregroundActivity || Application.android.startActivity
const DIR_CODE = Math.round(Math.random() * 10000) const DIR_CODE = Math.round(Math.random() * 10000)
const intent = new android.content.Intent( const intent = new android.content.Intent(
@ -137,7 +137,7 @@ export const getBackupFile = () => {
) )
intent.addCategory(android.content.Intent.CATEGORY_OPENABLE) intent.addCategory(android.content.Intent.CATEGORY_OPENABLE)
intent.setType('application/zip') 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) => { (res) => {
if (res.resultCode === android.app.Activity.RESULT_OK) { if (res.resultCode === android.app.Activity.RESULT_OK) {
if (res.intent != null && res.intent.getData()) if (res.intent != null && res.intent.getData())
@ -240,15 +240,34 @@ export class Zip {
// SHARE OPERATIONS // SHARE OPERATIONS
function share(intent, subject) { function share(intent, subject) {
const context = Application.android.context const ctx = Application.android.context
const shareIntent = android.content.Intent.createChooser(intent, subject) const shareIntent = android.content.Intent.createChooser(intent, subject)
shareIntent.setFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK) 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) => { export const shareText = (text, subject) => {
const intent = new android.context.Intent(android.content.Intent.ACTION_SEND) const intent = getSendIntent('text/plain')
intent.setType('text/plain') intent.putExtra(android.content.Intent.EXTRA_TEXT, text)
intent.putExtra(android.context.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) share(intent, subject)
} }

393
package-lock.json generated
View file

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