add support for meta tags on share pages (#867)

This commit is contained in:
Hayden 2021-12-06 17:14:14 -09:00 committed by GitHub
parent 5454d2c8b8
commit 5839992c19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 190 additions and 118 deletions

View File

@ -24,7 +24,7 @@ import { GroupReportsApi } from "./class-interfaces/group-reports";
import { ApiRequestInstance } from "~/types/api";
class Api {
private static instance: Api;
// private static instance: Api;
public recipes: RecipeAPI;
public users: UserApi;
public groups: GroupAPI;
@ -50,9 +50,9 @@ class Api {
public upload: UploadFile;
constructor(requests: ApiRequestInstance) {
if (Api.instance instanceof Api) {
return Api.instance;
}
// if (Api.instance instanceof Api) {
// return Api.instance;
// }
// Recipes
this.recipes = new RecipeAPI(requests);
@ -88,7 +88,7 @@ class Api {
this.bulk = new BulkActionsAPI(requests);
Object.freeze(this);
Api.instance = this;
// Api.instance = this;
}
}

View File

@ -1,25 +1,29 @@
import { useContext } from "@nuxtjs/composition-api";
import { detectServerBaseUrl } from "../use-utils";
export const useStaticRoutes = () => {
const { $config } = useContext();
const { $config, req } = useContext();
const serverBase = detectServerBaseUrl(req);
const prefix = `${$config.SUB_PATH}/api`.replace("//", "/");
const fullBase = serverBase + prefix;
// Methods to Generate reference urls for assets/images *
function recipeImage(recipeSlug: string, version = null, key = null) {
return `${prefix}/media/recipes/${recipeSlug}/images/original.webp?&rnd=${key}&version=${version}`;
return `${fullBase}/media/recipes/${recipeSlug}/images/original.webp?&rnd=${key}&version=${version}`;
}
function recipeSmallImage(recipeSlug: string, version = null, key = null) {
return `${prefix}/media/recipes/${recipeSlug}/images/min-original.webp?&rnd=${key}&version=${version}`;
return `${fullBase}/media/recipes/${recipeSlug}/images/min-original.webp?&rnd=${key}&version=${version}`;
}
function recipeTinyImage(recipeSlug: string, version = null, key = null) {
return `${prefix}/media/recipes/${recipeSlug}/images/tiny-original.webp?&rnd=${key}&version=${version}`;
return `${fullBase}/media/recipes/${recipeSlug}/images/tiny-original.webp?&rnd=${key}&version=${version}`;
}
function recipeAssetPath(recipeSlug: string, assetName: string) {
return `${prefix}/media/recipes/${recipeSlug}/assets/${assetName}`;
return `${fullBase}/media/recipes/${recipeSlug}/assets/${assetName}`;
}
return {

View File

@ -1,36 +1,36 @@
import { Ref } from "@nuxtjs/composition-api";
import { useStaticRoutes } from "../api";
// import { useStaticRoutes } from "../api";
import { Recipe } from "~/types/api-types/recipe";
export const useRecipeMeta = (recipe: Ref<Recipe>) => {
const { recipeImage } = useStaticRoutes();
console.log(recipe.value);
// const { recipeImage } = useStaticRoutes();
return () => {
const imageURL = "";
return {
title: recipe?.value?.name || "Recipe",
title: recipe?.value?.name,
// @ts-ignore
mainImage: recipeImage(recipe?.value?.image),
mainImage: imageURL,
meta: [
{ hid: "og:title", property: "og:title", content: recipe?.value?.name || "Recipe" },
{
hid: "og:desc",
property: "og:description",
content: recipe?.value?.description || "",
content: recipe?.value?.description,
},
{
hid: "og-image",
property: "og:image",
content: recipeImage(recipe?.value?.image || ""),
content: imageURL,
},
{
hid: "twitter:title",
property: "twitter:title",
content: recipe?.value?.name || "Recipe",
content: recipe?.value?.name,
},
{
hid: "twitter:desc",
property: "twitter:description",
content: recipe?.value?.description || "",
content: recipe?.value?.description,
},
{ hid: "t-type", name: "twitter:card", content: "summary_large_image" },
],

View File

@ -2,6 +2,24 @@ export const useAsyncKey = function () {
return String(Date.now());
};
export function detectServerBaseUrl(req: any) {
if (!req || req === undefined) {
return "";
}
if (req.headers.referer) {
const url = new URL(req.headers.referer);
return `${url.protocol}//${url.host}`;
} else if (req.headers.host) {
const protocol = req.connection.encrypted ? "https" : "http:";
return `${protocol}//${req.headers.host}`;
} else if (req.connection.remoteAddress) {
const protocol = req.connection.encrypted ? "https" : "http:";
return `${protocol}//${req.connection.localAddress}:${req.connection.localPort}`;
}
return "";
}
export function uuid4() {
// @ts-ignore
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>

View File

@ -1,4 +1,5 @@
export default {
mode: "universal",
// Global page headers: https://go.nuxtjs.dev/config-head
head: {
title: "Home",

View File

@ -26,7 +26,7 @@
"core-js": "^3.15.1",
"date-fns": "^2.23.0",
"fuse.js": "^6.4.6",
"nuxt": "^2.15.7",
"nuxt": "^2.15.8",
"v-jsoneditor": "^1.4.5",
"vuedraggable": "^2.24.3",
"vuetify": "^2.5.5"
@ -35,7 +35,7 @@
"@babel/eslint-parser": "^7.14.7",
"@nuxt/types": "^2.15.7",
"@nuxt/typescript-build": "^2.1.0",
"@nuxtjs/composition-api": "^0.30.0",
"@nuxtjs/composition-api": "^0.31.0",
"@nuxtjs/eslint-config-typescript": "^6.0.1",
"@nuxtjs/eslint-module": "^3.0.2",
"@nuxtjs/vuetify": "^1.12.1",
@ -54,4 +54,4 @@
"resolutions": {
"vite": "2.3.8"
}
}
}

View File

@ -271,12 +271,14 @@
class="mt-10"
:edit="form"
/>
<RecipeAssets
v-if="recipe.settings.showAssets"
v-model="recipe.assets"
:edit="form"
:slug="recipe.slug"
/>
<client-only>
<RecipeAssets
v-if="recipe.settings.showAssets"
v-model="recipe.assets"
:edit="form"
:slug="recipe.slug"
/>
</client-only>
</div>
</v-col>
<v-divider v-if="$vuetify.breakpoint.mdAndUp" class="my-divider" :vertical="true"></v-divider>
@ -347,12 +349,14 @@
class="mt-10"
:edit="form"
/>
<RecipeAssets
v-if="recipe.settings.showAssets"
v-model="recipe.assets"
:edit="form"
:slug="recipe.slug"
/>
<client-only>
<RecipeAssets
v-if="recipe.settings.showAssets"
v-model="recipe.assets"
:edit="form"
:slug="recipe.slug"
/>
</client-only>
</div>
<RecipeNotes v-model="recipe.notes" :edit="form" />
@ -449,7 +453,6 @@ import RecipeChips from "~/components/Domain/Recipe/RecipeChips.vue";
import RecipeIngredients from "~/components/Domain/Recipe/RecipeIngredients.vue";
import RecipeRating from "~/components/Domain/Recipe/RecipeRating.vue";
import RecipeTimeCard from "~/components/Domain/Recipe/RecipeTimeCard.vue";
import RecipeAssets from "~/components/Domain/Recipe/RecipeAssets.vue";
import RecipeNutrition from "~/components/Domain/Recipe/RecipeNutrition.vue";
import RecipeInstructions from "~/components/Domain/Recipe/RecipeInstructions.vue";
import RecipeNotes from "~/components/Domain/Recipe/RecipeNotes.vue";
@ -468,7 +471,11 @@ export default defineComponent({
components: {
draggable,
RecipeActionMenu,
RecipeAssets,
RecipeAssets: () => {
if (process.client) {
return import(/* webpackChunkName: "RecipeAssets" */ "~/components/Domain/Recipe/RecipeAssets.vue");
}
},
RecipeCategoryTagSelector,
RecipeChips,
RecipeComments,
@ -519,9 +526,6 @@ export default defineComponent({
}
});
// ===============================================================
// Guest Mode
// ===============================================================
// Check Before Leaving
@ -544,7 +548,7 @@ export default defineComponent({
const { recipe, loading, fetchRecipe } = useRecipe(slug);
// Manage a deep copy of the recipe so we can detect if changes have occured and inform
// Manage a deep copy of the recipe so we can detect if changes have occurred and inform
// the user if they try to navigate away from the page without saving.
const originalRecipe = ref<Recipe | null>(null);
@ -769,4 +773,3 @@ export default defineComponent({
});
</script>
<style scoped></style>

View File

@ -229,12 +229,6 @@
class="mt-10"
:edit="form"
/>
<RecipeAssets
v-if="recipe.settings.showAssets"
v-model="recipe.assets"
:edit="form"
:slug="recipe.slug"
/>
</div>
<RecipeNotes v-model="recipe.notes" :edit="form" />
@ -278,7 +272,7 @@ import {
} from "@nuxtjs/composition-api";
// @ts-ignore
import VueMarkdown from "@adapttive/vue-markdown";
import { useRecipeMeta } from "~/composables/recipes";
// import { useRecipeMeta } from "~/composables/recipes";
import { useStaticRoutes, useUserApi } from "~/composables/api";
import RecipeChips from "~/components/Domain/Recipe/RecipeChips.vue";
import RecipeIngredients from "~/components/Domain/Recipe/RecipeIngredients.vue";
@ -322,26 +316,55 @@ export default defineComponent({
},
});
// @ts-ignore
const { recipeImage } = useStaticRoutes();
const { meta, title } = useMeta();
const recipe = useAsync(async () => {
const { data } = await api.recipes.getShared(id);
if (data) {
if (data && data !== undefined) {
console.log("Computed Meta. RefKey=");
const imageURL = recipeImage(data.slug);
title.value = data.name;
meta.value = [
{ hid: "og:title", property: "og:title", content: data.name },
// @ts-ignore
{
hid: "og:desc",
property: "og:description",
content: data.description,
},
{
hid: "og-image",
property: "og:image",
content: imageURL,
},
// @ts-ignore
{
hid: "twitter:title",
property: "twitter:title",
content: data.name,
},
// @ts-ignore
{
hid: "twitter:desc",
property: "twitter:description",
content: data.description,
},
{ hid: "t-type", name: "twitter:card", content: "summary_large_image" },
];
}
return data;
}
});
// @ts-ignore
const recipeMeta = useRecipeMeta(recipe);
useMeta(recipeMeta);
// @ts-ignore
const { $vuetify } = useContext();
const enableLandscape = computed(() => {
const preferLandscape = recipe?.value?.settings?.landscapeView;
const preferLandscape = recipe.value?.settings?.landscapeView;
const smallScreen = !$vuetify.breakpoint.smAndUp;
if (preferLandscape) {

View File

@ -77,7 +77,7 @@
semver "^6.3.0"
source-map "^0.5.0"
"@babel/core@^7.15.5":
"@babel/core@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4"
integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==
@ -452,11 +452,16 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.5.tgz#d33a58ca69facc05b26adfe4abebfed56c1c2dac"
integrity sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==
"@babel/parser@^7.15.6", "@babel/parser@^7.16.0":
"@babel/parser@^7.16.0":
version "7.16.2"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.2.tgz#3723cd5c8d8773eef96ce57ea1d9b7faaccd12ac"
integrity sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==
"@babel/parser@^7.16.3":
version "7.16.4"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e"
integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e"
@ -1136,6 +1141,21 @@
debug "^4.1.0"
globals "^11.1.0"
"@babel/traverse@^7.16.3":
version "7.16.3"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787"
integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==
dependencies:
"@babel/code-frame" "^7.16.0"
"@babel/generator" "^7.16.0"
"@babel/helper-function-name" "^7.16.0"
"@babel/helper-hoist-variables" "^7.16.0"
"@babel/helper-split-export-declaration" "^7.16.0"
"@babel/parser" "^7.16.3"
"@babel/types" "^7.16.0"
debug "^4.1.0"
globals "^11.1.0"
"@babel/types@^7.0.0", "@babel/types@^7.15.0", "@babel/types@^7.15.4", "@babel/types@^7.3.0", "@babel/types@^7.4.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.4.tgz#74eeb86dbd6748d2741396557b9860e57fce0a0d"
@ -1144,7 +1164,7 @@
"@babel/helper-validator-identifier" "^7.14.9"
to-fast-properties "^2.0.0"
"@babel/types@^7.15.6", "@babel/types@^7.16.0":
"@babel/types@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba"
integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==
@ -1646,18 +1666,18 @@
consola "^2.15.3"
defu "^5.0.0"
"@nuxtjs/composition-api@^0.30.0":
version "0.30.0"
resolved "https://registry.yarnpkg.com/@nuxtjs/composition-api/-/composition-api-0.30.0.tgz#ea123798b8a9b2e74f80e22ccb38a3879b931e38"
integrity sha512-IEuzCY5oUmXOTYkMNwdYQMagAxtlJRzQSDJ1o7LYt5KulOawfOm+wyyNfQxQMIPz/p5Df1UQ14ORDdQ+ZjWXIw==
"@nuxtjs/composition-api@^0.31.0":
version "0.31.0"
resolved "https://registry.yarnpkg.com/@nuxtjs/composition-api/-/composition-api-0.31.0.tgz#4baa645ee45e306a49b72de6257fdb9438eb2b07"
integrity sha512-xplH/EJ17W/EjNP7M11URTOrQcjMYqQn1wXUkMOdMiSLKM58VWuCyt0uT9jNCHMUspeQ+SPzr9dxQkNBGvwfiA==
dependencies:
"@vue/composition-api" "^1.3.3"
"@vue/composition-api" "^1.4.1"
defu "^5.0.0"
estree-walker "^2.0.2"
fs-extra "^9.1.0"
magic-string "^0.25.7"
ufo "^0.7.9"
unplugin-vue2-script-setup "^0.6.13"
unplugin-vue2-script-setup "^0.7.3"
upath "^2.0.1"
"@nuxtjs/eslint-config-typescript@^6.0.1":
@ -2279,13 +2299,13 @@
"@vue/babel-plugin-transform-vue-jsx" "^1.2.1"
camelcase "^5.0.0"
"@vue/compiler-core@3.2.21":
version "3.2.21"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.21.tgz#26566c32b2ad838199d471ef5df620a83846f24e"
integrity sha512-NhhiQZNG71KNq1h5pMW/fAXdTF7lJRaSI7LDm2edhHXVz1ROMICo8SreUmQnSf4Fet0UPBVqJ988eF4+936iDQ==
"@vue/compiler-core@3.2.24", "@vue/compiler-core@^3.2.23":
version "3.2.24"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.24.tgz#cadcda0e026e7f1cd453ce87160be51a5f313fe0"
integrity sha512-A0SxB2HAggKzP57LDin5gfgWOTwFyGCtQ5MTMNBADnfQYALWnYuC8kMI0DhRSplGTWRvn9Z2DAnG8f35BnojuA==
dependencies:
"@babel/parser" "^7.15.0"
"@vue/shared" "3.2.21"
"@vue/shared" "3.2.24"
estree-walker "^2.0.2"
source-map "^0.6.1"
@ -2312,10 +2332,10 @@
dependencies:
tslib "^2.3.0"
"@vue/composition-api@^1.3.3":
version "1.3.3"
resolved "https://registry.yarnpkg.com/@vue/composition-api/-/composition-api-1.3.3.tgz#a782f2d40e41d4cbb6b4550692c7e01d2182d457"
integrity sha512-mjhfLjpCBecARYVJX65F0TYerlJQWtEgKjom4Btuu0x7k701EcvL66zyWQryf64HuIj9YR4h6aNRhM0AP/E3eQ==
"@vue/composition-api@^1.4.1":
version "1.4.1"
resolved "https://registry.yarnpkg.com/@vue/composition-api/-/composition-api-1.4.1.tgz#2b4a6bfabc5e8277c4b890e0c9ca55d1252ca5b8"
integrity sha512-ZTat9ru/rwecveRnFzlO2mduOBpGfnBdXn+WtBcFLV9UsL/D+6nX47RWuLiVdNxNDX0qphGZRC+JDjwt+YTnRA==
dependencies:
tslib "^2.3.1"
@ -2326,14 +2346,14 @@
dependencies:
"@vue/shared" "3.2.9"
"@vue/ref-transform@^3.2.11":
version "3.2.21"
resolved "https://registry.yarnpkg.com/@vue/ref-transform/-/ref-transform-3.2.21.tgz#b0c554c9f640c3f005f77e676066aa0faba90984"
integrity sha512-uiEWWBsrGeun9O7dQExYWzXO3rHm/YdtFNXDVqCSoPypzOVxWxdiL+8hHeWzxMB58fVuV2sT80aUtIVyaBVZgQ==
"@vue/ref-transform@^3.2.23":
version "3.2.24"
resolved "https://registry.yarnpkg.com/@vue/ref-transform/-/ref-transform-3.2.24.tgz#335bf06e0b25be16e7056cc4117c51a79f0c9122"
integrity sha512-j6oNbsGLvea2rF8GQB9w6q7UFL1So7J+t6ducaMeWPSyjYZ+slWpwPVK6mmyghg5oGqC41R+HC5BV036Y0KhXQ==
dependencies:
"@babel/parser" "^7.15.0"
"@vue/compiler-core" "3.2.21"
"@vue/shared" "3.2.21"
"@vue/compiler-core" "3.2.24"
"@vue/shared" "3.2.24"
estree-walker "^2.0.2"
magic-string "^0.25.7"
@ -2354,10 +2374,10 @@
"@vue/shared" "3.2.9"
csstype "^2.6.8"
"@vue/shared@3.2.21", "@vue/shared@^3.2.11":
version "3.2.21"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.21.tgz#4cd80c0e62cf65a7adab2449e86b6f0cb33a130b"
integrity sha512-5EQmIPK6gw4UVYUbM959B0uPsJ58+xoMESCZs3N89XyvJ9e+fX4pqEPrOGV8OroIk3SbEvJcC+eYc8BH9JQrHA==
"@vue/shared@3.2.24", "@vue/shared@^3.2.23":
version "3.2.24"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.24.tgz#d74615e856013b17fb60b19b09d712729ad5e090"
integrity sha512-BUgRiZCkCrqDps5aQ9av05xcge3rn092ztKIh17tHkeEFgP4zfXMQWBA2zfdoCdCEdBL26xtOv+FZYiOp9RUDA==
"@vue/shared@3.2.9":
version "3.2.9"
@ -4659,7 +4679,14 @@ domelementtype@^2.0.1, domelementtype@^2.2.0:
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.2.2:
domhandler@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a"
integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==
dependencies:
domelementtype "^2.0.1"
domhandler@^4.0.0, domhandler@^4.2.0:
version "4.2.2"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f"
integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==
@ -4674,7 +4701,7 @@ domutils@^1.7.0:
dom-serializer "0"
domelementtype "1"
domutils@^2.5.2, domutils@^2.6.0, domutils@^2.8.0:
domutils@^2.4.2, domutils@^2.5.2, domutils@^2.6.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
@ -4789,11 +4816,6 @@ entities@^2.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
entities@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
entities@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5"
@ -5961,6 +5983,16 @@ html-webpack-plugin@^4.5.1:
tapable "^1.1.3"
util.promisify "1.0.0"
htmlparser2@5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7"
integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==
dependencies:
domelementtype "^2.0.1"
domhandler "^3.3.0"
domutils "^2.4.2"
entities "^2.0.0"
htmlparser2@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
@ -5971,16 +6003,6 @@ htmlparser2@^6.1.0:
domutils "^2.5.2"
entities "^2.0.0"
htmlparser2@^7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.1.2.tgz#587923d38f03bc89e03076e00cba2c7473f37f7c"
integrity sha512-d6cqsbJba2nRdg8WW2okyD4ceonFHn9jLFxhwlNcLhQWcFPdxXeJulgOLjLKtAK9T6ahd+GQNZwG9fjmGW7lyg==
dependencies:
domelementtype "^2.0.1"
domhandler "^4.2.2"
domutils "^2.8.0"
entities "^3.0.1"
http-errors@1.7.2:
version "1.7.2"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
@ -7562,7 +7584,7 @@ nuxt-vite@^0.1.1:
vite "^2.4.4"
vite-plugin-vue2 "^1.8.0"
nuxt@^2.15.7:
nuxt@^2.15.8:
version "2.15.8"
resolved "https://registry.yarnpkg.com/nuxt/-/nuxt-2.15.8.tgz#946cba46bdaaf0e3918aa27fd9ea0fed8ed303b0"
integrity sha512-ceK3qLg/Baj7J8mK9bIxqw9AavrF+LXqwYEreBdY/a4Sj8YV4mIvhqea/6E7VTCNNGvKT2sJ/TTJjtfQ597lTA==
@ -10400,24 +10422,25 @@ unpipe@1.0.0, unpipe@~1.0.0:
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
unplugin-vue2-script-setup@^0.6.13:
version "0.6.13"
resolved "https://registry.yarnpkg.com/unplugin-vue2-script-setup/-/unplugin-vue2-script-setup-0.6.13.tgz#ec492ce0101684facbc0b116be3314df23d337f5"
integrity sha512-3jfzUhdKdI2gv1j62JZnuusbVWgBivUU24L3eAtezYe78xxa1CzEllTv34aCSAVC8ET6IdmiHcGvgSysmrv0pQ==
unplugin-vue2-script-setup@^0.7.3:
version "0.7.3"
resolved "https://registry.yarnpkg.com/unplugin-vue2-script-setup/-/unplugin-vue2-script-setup-0.7.3.tgz#edf63f7f183d8f50d2991d12f120f78faeb78a5a"
integrity sha512-3C32JkCS7BsNsgUkVnCEIJynHy+N/xwqiaUiMkeTm3Rk+HfHMhEPQ5Gysg3tejWY7KJyk8CohUKswTChurI1ng==
dependencies:
"@antfu/utils" "^0.3.0"
"@babel/core" "^7.15.5"
"@babel/generator" "^7.15.4"
"@babel/parser" "^7.15.6"
"@babel/traverse" "^7.15.4"
"@babel/types" "^7.15.6"
"@babel/core" "^7.16.0"
"@babel/generator" "^7.16.0"
"@babel/parser" "^7.16.3"
"@babel/traverse" "^7.16.3"
"@babel/types" "^7.16.0"
"@rollup/pluginutils" "^4.1.1"
"@vue/ref-transform" "^3.2.11"
"@vue/shared" "^3.2.11"
"@vue/compiler-core" "^3.2.23"
"@vue/ref-transform" "^3.2.23"
"@vue/shared" "^3.2.23"
defu "^5.0.0"
htmlparser2 "^7.1.2"
htmlparser2 "5.0.1"
magic-string "^0.25.7"
unplugin "^0.2.11"
unplugin "^0.2.21"
unplugin@^0.0.6:
version "0.0.6"
@ -10426,10 +10449,10 @@ unplugin@^0.0.6:
dependencies:
webpack-virtual-modules "^0.4.3"
unplugin@^0.2.11:
version "0.2.20"
resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.2.20.tgz#fd579b8f302459eb1ae3616f71c2ba93e6076187"
integrity sha512-CGnCaTqNjqeixpIlNEkpysxfR2hb4xv21xa4IURXnhYTfCp73UWuG0KcdanuhFJbwO5w+EGK4XaAaqdb/1vWbg==
unplugin@^0.2.21:
version "0.2.21"
resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.2.21.tgz#7852cddd9f78f0b32881812fd2efd5a39dcc64e5"
integrity sha512-IJ15/L5XbhnV7J09Zjk0FT5HEkBjkXucWAXQWRsmEtUxmmxwh23yavrmDbCF6ZPxWiVB28+wnKIHePTRRpQPbQ==
dependencies:
webpack-virtual-modules "^0.4.3"