diff --git a/.eslintrc.js b/.eslintrc.js index 64c6c52ccb53248e01395d32484e94017320da2a..bdf306698301433a5ac5a6cb0771997f083e5e8f 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -25,6 +25,7 @@ module.exports = { { "allowWholeFile": true } ], "@typescript-eslint/no-empty-interface": 1, // empty Interfaces will be only warnings for now. + "@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }], // will only ignore variables that start with an underscore _ "vue/multi-word-component-names": "off" }, } diff --git a/package.json b/package.json index 13050ae8ef793f7ec7e617f05a6bb2fbcba8a7e0..159c10204bd19b74231ee34990ca888540d6a131 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,9 @@ "axios": "^0.26.1", "bootstrap": "^4.6.1", "bootstrap-icons": "^1.8.1", - "bootstrap-vue": "^2.21.2", + "bootstrap-vue": "^2.22.0", "core-js": "^3.21.1", + "deep-object-diff": "^1.1.7", "file-saver": "^2.0.5", "http-status-codes": "^2.2.0", "jose": "^4.6.0", diff --git a/src/App.vue b/src/App.vue index e32d09d368f9cad61691e41d3920b5361a6fe399..887be908a5acc56d7dcec4535fda0cbea84fcb98 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,7 +1,7 @@ <template> <div id="app"> <Navbar /> - <LoadingIndicator :show="loading" /> + <LoadingIndicator /> <main> <div class="mr-0 d-flex"> <SidebarMenu class="mr-2" /> @@ -14,7 +14,6 @@ </div> </main> <ExpiryToast /> - <!--DevFooter /--> </div> </template> @@ -22,9 +21,9 @@ import { defineComponent } from "vue-demi"; // import the main store -import { useMainStore } from "@/store/index"; -import { useProjectStore } from "@/modules/project/store"; -import { useUserStore } from "@/modules/user/store"; +import useMainStore from "@/store/index"; +import useProjectStore from "@/modules/project/store"; +import useUserStore from "@/modules/user/store"; export default defineComponent({ setup() { @@ -40,10 +39,6 @@ export default defineComponent({ }, computed: { - loading(): boolean { - return this.mainStore.coscine.loading.counter > 0; - }, - loggedIn(): boolean { return this.mainStore.loggedIn; }, diff --git a/src/components.d.ts b/src/components.d.ts index 8794e88216dc8a339deb13d95938a3a6b5270efc..e3dea2052cf883015212f42df3b8b4f3e75acfe4 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -9,7 +9,6 @@ declare module "vue" { CoscineFormGroup: typeof import("./components/CoscineFormGroup.vue")["default"]; CoscineHeadline: typeof import("./components/CoscineHeadline.vue")["default"]; CoscineModal: typeof import("./components/CoscineModal.vue")["default"]; - DevFooter: typeof import("./components/DevFooter.vue")["default"]; ExpiryToast: typeof import("./components/ExpiryToast.vue")["default"]; LoadingIndicator: typeof import("./components/LoadingIndicator.vue")["default"]; LoadingSpinner: typeof import("./components/LoadingSpinner.vue")["default"]; diff --git a/src/components/BreadCrumbs.vue b/src/components/BreadCrumbs.vue index ba0ed448ba60dc849b9a4e1e099f7c083bced8a1..370f4d86a183b8960819fb94b54894e80732dea6 100644 --- a/src/components/BreadCrumbs.vue +++ b/src/components/BreadCrumbs.vue @@ -23,11 +23,11 @@ import { defineComponent } from "vue-demi"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; // import the project store -import { useProjectStore } from "@/modules/project/store"; +import useProjectStore from "@/modules/project/store"; // import the resource store -import { useResourceStore } from "@/modules/resource/store"; +import useResourceStore from "@/modules/resource/store"; import type { ProjectObject, @@ -84,11 +84,14 @@ export default defineComponent({ projectName: this.project ? this.project.displayName : path, - resourceName: this.resource - ? `${this.resource.type?.displayName?.toUpperCase()}: ${ - this.resource.displayName - }` - : path, + resourceName: + this.resource && this.resource.type + ? `${this.$t( + "resourceTypes." + + this.resource.type.displayName + + ".displayName" + )}: ${this.resource.displayName}` + : path, } ).toString() : path, diff --git a/src/components/CoscineFormGroup.vue b/src/components/CoscineFormGroup.vue index 626b30eb4822dbbd3bc723bfb16724c8c9abd780..89cf9b6db2b0692a5d92747e4a93ccf99504cc08 100644 --- a/src/components/CoscineFormGroup.vue +++ b/src/components/CoscineFormGroup.vue @@ -4,14 +4,36 @@ :label-for="labelFor" :label-cols-sm="labelColsSm" :label-align-sm="labelAlignSm" - :label="label" > + <!-- Loading Skeleton --> <b-skeleton-wrapper :loading="isLoading"> <template #loading> <b-skeleton :type="type" animation="fade"></b-skeleton> </template> - <slot></slot> + <slot /> </b-skeleton-wrapper> + + <!-- Label Template --> + <template #label> + <!-- Label --> + <span id="label" class="text-break">{{ label }}</span> + + <div class="d-inline ml-1" v-if="info"> + <!-- Information Circle Icon --> + <b-icon icon="info-circle" :id="labelFor" /> + + <!-- Popover --> + <b-popover + over + :target="labelFor" + triggers="hover focus" + placement="bottom" + > + <!-- Popover Contents --> + <slot name="popover" /> + </b-popover> + </div> + </template> </b-form-group> </template> @@ -21,6 +43,10 @@ import { defineComponent } from "vue-demi"; export default defineComponent({ name: "CoscineFormGroup", props: { + info: { + default: false, + type: Boolean, + }, isLoading: { default: false, type: Boolean, @@ -38,7 +64,7 @@ export default defineComponent({ type: String, }, type: { - default: "text", + default: "input", type: String, }, labelColsSm: { diff --git a/src/components/CoscineHeadline.vue b/src/components/CoscineHeadline.vue index 745b908caf315ed4e35d1e3d81b7dd8205a19762..1a6a7686516c6b1f5f80df83fa26fa50b053a777 100644 --- a/src/components/CoscineHeadline.vue +++ b/src/components/CoscineHeadline.vue @@ -1,5 +1,5 @@ <template> - <p class="h4 mt-3 text-left">{{ headline }}:</p> + <p :class="`${h} mt-3 text-left`">{{ headline }}:</p> </template> <script lang="ts"> @@ -9,6 +9,10 @@ export default { default: "", type: String, }, + h: { + default: "h4", + type: String, + }, }, }; </script> diff --git a/src/components/DevFooter.vue b/src/components/DevFooter.vue deleted file mode 100644 index 85d629f67cb47868f80d0adaac88186bc10b71be..0000000000000000000000000000000000000000 --- a/src/components/DevFooter.vue +++ /dev/null @@ -1,123 +0,0 @@ -<template> - <footer class="fixed-bottom mb-5"> - <b-row align-h="center"> - <b-card class="progress-bar-striped bg-light border-warning w-50"> - <b-card-sub-title class="text-center">Dev-Footer:</b-card-sub-title> - <hr class="mt-1 mb-1 b-1" /> - <nav - class="flex flex-wrap items-center justify-center text-base md:ml-auto" - > - <RouterLink - v-for="(route, index) in routes" - :key="index" - class="mr-4 font-semibold cursor-pointer" - :class="{ - 'text-blue-500 hover:blue-300': route.name === currentRoute, - 'hover:text-gray-800 dark:text-gray-800 dark:hover:text-gray-500': - route.name !== currentRoute, - }" - :to="{ name: route.name }" - > - {{ route.name }} - </RouterLink> - - <RouterLink - class="flex items-center justify-center mx-2 text-black w-9 dark:text-black" - to="/broken" - > - <b-icon icon="hammer" /> - </RouterLink> - <button - @click="toggleLighting" - class="flex items-center justify-center mx-2 w-9 focus:outline-none" - > - <b-icon icon="sun" variant="warning" v-if="isDark" /> - <b-icon icon="moon" variant="secondary" v-else /> - </button> - - <button - @click="toggleLoading" - class="flex items-center justify-center mx-2 w-9 focus:outline-none" - > - <b-icon icon="pause-fill" variant="warning" v-if="loading" /> - <b-icon icon="skip-forward-fill" v-else /> - </button> - </nav> - </b-card> - </b-row> - </footer> -</template> - -<script lang="ts"> -import { computed, defineComponent } from "vue-demi"; -import { routes } from "@/router"; -import { useDark, useToggle } from "@vueuse/core"; - -// import the main store -import { useMainStore } from "@/store/index"; - -import { RouteConfig } from "vue-router"; - -export default defineComponent({ - setup: (_, ctx) => { - // Import config from .evn - const appName = import.meta.env.VITE_APP_NAME; - let availableRoutes = [] as RouteConfig[]; - - let processRoutes = function (input: RouteConfig[]) { - let filterEntries = function (route: RouteConfig) { - if ( - route.name !== undefined && - route.name !== "not-found" && - route.name !== "pid-page" - ) { - return route; - } else { - return undefined; - } - }; - input.forEach((route) => { - if (route.children !== undefined) { - processRoutes(route.children); - } else { - const temp = filterEntries(route); - if (temp !== undefined) { - availableRoutes.push(temp); - } - } - }); - }; - - const mainStore = useMainStore(); - - processRoutes(routes); - const currentRoute = computed(() => ctx.root.$route.name); - - const isDark = useDark(); - const toggleLighting = useToggle(isDark); - - return { - appName, - routes: availableRoutes, - currentRoute, - toggleLighting, - isDark, - mainStore, - }; - }, - computed: { - loading(): boolean { - return this.mainStore.$state.coscine.loading.counter > 0; - }, - }, - methods: { - toggleLoading() { - if (this.loading) { - this.mainStore.decreasePageLoadingContent(); - } else { - this.mainStore.increasePageLoadingContent(); - } - }, - }, -}); -</script> diff --git a/src/components/ExpiryToast.vue b/src/components/ExpiryToast.vue index 48c28960385a1937eeadce97471fa021ad00c92c..bbd03bda38831b9951f2d126bc3d719f80c3bfa5 100644 --- a/src/components/ExpiryToast.vue +++ b/src/components/ExpiryToast.vue @@ -28,8 +28,8 @@ import { defineComponent } from "@vue/composition-api"; import * as jose from "jose"; import moment from "moment"; -import { useMainStore } from "@/store/index"; -import { useLoginStore } from "@/modules/login/store"; +import useMainStore from "@/store/index"; +import useLoginStore from "@/modules/login/store"; export default defineComponent({ setup() { diff --git a/src/components/LoadingIndicator.vue b/src/components/LoadingIndicator.vue index 5f89cbbcd924fffb147f73d267b18f9ee3e09a93..ab33c3ba8b77a759b1d59862f74cce9e49d23acd 100644 --- a/src/components/LoadingIndicator.vue +++ b/src/components/LoadingIndicator.vue @@ -6,13 +6,38 @@ </template> <script lang="ts"> +import useAdminStore from "@/modules/admin/store"; +import useErrorStore from "@/modules/error/store"; +import useLoginStore from "@/modules/login/store"; +import useMainStore from "@/store"; +import usePidStore from "@/modules/pid/store"; +import useProjectStore from "@/modules/project/store"; +import useResourceStore from "@/modules/resource/store"; +import useSearchStore from "@/modules/search/store"; +import useUserStore from "@/modules/user/store"; + +import { loadingCounterEventHandler } from "@/plugins/loadingCounter"; import { defineComponent } from "vue-demi"; export default defineComponent({ - props: { - show: { - default: false, - type: Boolean, + setup() { + const mainStore = useMainStore(); + + loadingCounterEventHandler(useAdminStore); + loadingCounterEventHandler(useErrorStore); + loadingCounterEventHandler(useLoginStore); + loadingCounterEventHandler(usePidStore); + loadingCounterEventHandler(useProjectStore); + loadingCounterEventHandler(useResourceStore); + loadingCounterEventHandler(useSearchStore); + loadingCounterEventHandler(useUserStore); + + return { mainStore }; + }, + + computed: { + show(): boolean { + return this.mainStore.isLoading; }, }, }); diff --git a/src/components/Navbar.vue b/src/components/Navbar.vue index a352d3cb3cc73d45410d316e10fd9fde65473bf3..ffcd08c91ec4ed544633247d1958970475a013f0 100644 --- a/src/components/Navbar.vue +++ b/src/components/Navbar.vue @@ -118,11 +118,11 @@ <script lang="ts"> import { defineComponent } from "vue-demi"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; // import the login store -import { useLoginStore } from "@/modules/login/store"; +import useLoginStore from "@/modules/login/store"; // import the user store -import { useUserStore } from "@/modules/user/store"; +import useUserStore from "@/modules/user/store"; import type { UserObject } from "@coscine/api-client/dist/types/Coscine.Api.User"; export default defineComponent({ diff --git a/src/components/SidebarMenu.vue b/src/components/SidebarMenu.vue index bbac2c7ac60f17cce3d76143f78b11282ee178c8..38b90f02db84ef45c2ef8e681c716730e7eed6b9 100644 --- a/src/components/SidebarMenu.vue +++ b/src/components/SidebarMenu.vue @@ -27,11 +27,11 @@ import "bootstrap-icons/font/fonts/bootstrap-icons.woff"; import "bootstrap-icons/font/fonts/bootstrap-icons.woff2"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; // import the project store -import { useProjectStore } from "@/modules/project/store"; +import useProjectStore from "@/modules/project/store"; // import the resource store -import { useResourceStore } from "@/modules/resource/store"; +import useResourceStore from "@/modules/resource/store"; import type { ProjectObject, @@ -149,8 +149,12 @@ export default defineComponent({ child: this.resources.map((resource) => { return { title: - (resource.type?.displayName - ? resource.type.displayName.toUpperCase() + ": " + (resource.type + ? `${this.$t( + "resourceTypes." + + resource.type.displayName + + ".displayName" + )}: ` : "") + resource.displayName, href: { name: "resource-page", diff --git a/src/components/banner/Maintenance.vue b/src/components/banner/Maintenance.vue index 9dfebc8af87a984f38eee80d58a725e5290a0fb6..da121db853479694ab7653bcb3b613b9e0aa41a7 100644 --- a/src/components/banner/Maintenance.vue +++ b/src/components/banner/Maintenance.vue @@ -1,9 +1,7 @@ <template> <b-alert v-if="visibility" - :show=" - visibility && maintenance.type !== undefined && maintenance.type !== null - " + :show="show" @dismissed="saveVisibility" dismissible variant="warning" @@ -21,7 +19,7 @@ <script lang="ts"> import { defineComponent } from "vue-demi"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; import type { MaintenanceReturnObject } from "@coscine/api-client/dist/types/Coscine.Api.Notices"; export default defineComponent({ @@ -44,9 +42,12 @@ export default defineComponent({ return ( this.mainStore.coscine.banner.maintenanceVisibility !== this.mainStore.coscine.banner.dateString && - this.mainStore.coscine.banner.dateString !== "" + this.mainStore.coscine.banner.dateString.trim() !== "" ); }, + show(): boolean { + return this.visibility && this.maintenance.type ? true : false; + }, }, watch: { diff --git a/src/components/banner/Pilot.vue b/src/components/banner/Pilot.vue index fd537b559601cce441f51354a6ce79d6dff6ce5c..e84a8d0d1fd9285a5a6c5171b42c19ce378168ae 100644 --- a/src/components/banner/Pilot.vue +++ b/src/components/banner/Pilot.vue @@ -7,7 +7,7 @@ variant="warning" > <i18n path="banner.pilot.pilotBannerText" tag="p"> - <template v-slot:link> + <template #link> <a :href="$t('email.serviceDeskMailTo')" target="_blank">{{ $t("email.serviceDeskName") }}</a> @@ -18,7 +18,7 @@ <script lang="ts"> import { defineComponent } from "vue-demi"; -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { const mainStore = useMainStore(); diff --git a/src/i18n/de.ts b/src/i18n/de.ts index c2760bfc4ec16938220d5b49d744ca7d21381824..58a8510463457f2c95469d5a30961ec72a36a17a 100644 --- a/src/i18n/de.ts +++ b/src/i18n/de.ts @@ -44,13 +44,17 @@ export default { buttons: { addUser: "Benutzer hinzufügen", + archive: "@:(default.archive)", back: "Zurück", cancel: "Abbrechen", close: "Schließen", + confirm: "Bestätigen", connect: "Verbinden", connected: "Verbunden", copyMetadata: "Metadaten kopieren", + create: "Erstellen", delete: "Löschen", + next: "Weiter", reset: "Zurücksetzen", import: "Importieren", invite: "Einladen", @@ -61,13 +65,16 @@ export default { save: "Speichern", submit: "Abschicken", tokenCreate: "Zugriffstoken erstellen", + unarchive: "Archivieren rückgängig", } as VueI18n.LocaleMessageObject, default: { - serviceDeskEmail: "servicedesk@rwth-aachen.de", archive: "Archivieren", archived: "Archiviert", + help: "Hilfe", loading: "Laden...", + or: "ODER", + none: "k. A.", }, toast: { @@ -76,7 +83,7 @@ export default { message: "Um weiterzuarbeiten, loggen Sie sich erneut ein:", link: "@:(nav.userLogIn)", }, - save: { + onSave: { success: { title: "Änderungen erfolgreich", message: "Die Daten wurden erfolgreich gespeichert.", @@ -84,7 +91,18 @@ export default { failure: { title: "Fehler beim Speichern", message: - "Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut. Falls der Fehler weiterhin auftritt, wenden Sie sich bitte an @:(default.serviceDeskEmail).", + "Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut. Falls der Fehler weiterhin auftritt, wenden Sie sich bitte an @:(email.serviceDeskEmail).", + }, + }, + onDelete: { + success: { + title: "Löschung erfolgreich", + message: "Die Daten wurden erfolgreich gelöscht.", + }, + failure: { + title: "Fehler beim Löschen", + message: + "Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut. Falls der Fehler weiterhin auftritt, wenden Sie sich bitte an @:(email.serviceDeskEmail).", }, }, }, @@ -115,7 +133,7 @@ export default { }, }, - ResourceTypes: { + resourceTypes: { rds: { displayName: "RWTH-FDS-Web", fullName: "Forschungsdatenspeicher (FDS)", @@ -214,8 +232,9 @@ export default { }, email: { - serviceDeskName: "Servicedesk", + serviceDeskEmail: "servicedesk@rwth-aachen.de", serviceDeskMailTo: - "mailto:servicedesk@itc.rwth-aachen.de?subject=CoScInE%20Pilot%20Program", + "mailto:servicedesk@rwth-aachen.de?subject=CoScInE%20Pilot%20Program", + serviceDeskName: "Servicedesk", }, } as VueI18n.LocaleMessageObject; diff --git a/src/i18n/en.ts b/src/i18n/en.ts index e72fbedfd02380616e671b3a8317803cf7569dfb..1cf6727f4efcb3dc6343be3cef430461b1442322 100644 --- a/src/i18n/en.ts +++ b/src/i18n/en.ts @@ -42,13 +42,17 @@ export default { buttons: { addUser: "Add User", + archive: "@:(default.archive)", back: "Back", cancel: "Cancel", close: "Close", + confirm: "Confirm", connect: "Connect", connected: "Connected", copyMetadata: "Copy Metadata", + create: "Create", delete: "Delete", + next: "Next", reset: "Reset", import: "Import", invite: "Invite", @@ -59,12 +63,16 @@ export default { save: "Save", submit: "Submit", tokenCreate: "Create Access Token", + unarchive: "Unarchive", } as VueI18n.LocaleMessageObject, default: { archive: "Archive", archived: "Archived", + help: "Help", loading: "Loading...", + or: "OR", + none: "n/a", }, toast: { @@ -81,7 +89,18 @@ export default { failure: { title: "Error on saving", message: - "An error occured. Please try again. If the error persists, please contact @:(default.serviceDeskEmail).", + "An error occured. Please try again. If the error persists, please contact @:(email.serviceDeskEmail).", + }, + }, + onDelete: { + success: { + title: "Deleted successfully", + message: "The data has been deleted successfully.", + }, + failure: { + title: "Error on deletion", + message: + "An error occured. Please try again. If the error persists, please contact @:(email.serviceDeskEmail).", }, }, }, @@ -112,7 +131,7 @@ export default { }, }, - ResourceTypes: { + resourceTypes: { rds: { displayName: "RWTH-RDS-Web", fullName: "Research Data Storage (RDS)", @@ -210,8 +229,9 @@ export default { }, email: { - serviceDeskName: "Servicedesk", + serviceDeskEmail: "servicedesk@rwth-aachen.de", serviceDeskMailTo: - "mailto:servicedesk@itc.rwth-aachen.de?subject=CoScInE%20Pilot%20Program", + "mailto:servicedesk@rwth-aachen.de?subject=Coscine%20Pilot%20Program", + serviceDeskName: "Servicedesk", }, } as VueI18n.LocaleMessageObject; diff --git a/src/modules/admin/AdminModule.vue b/src/modules/admin/AdminModule.vue index 0bcde6289101a45c3d87237d1151186f1536071d..bb98cfb53a04fb8a2cfcca9690344c63a0fd9cd1 100644 --- a/src/modules/admin/AdminModule.vue +++ b/src/modules/admin/AdminModule.vue @@ -6,12 +6,11 @@ <script lang="ts"> import { defineComponent } from "vue-demi"; -import { AdminI18nMessages } from "./i18n"; // import the store for current module -import { useAdminStore } from "./store"; +import useAdminStore from "./store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { @@ -20,7 +19,6 @@ export default defineComponent({ return { mainStore, adminStore }; }, - i18n: { messages: AdminI18nMessages }, created() { this.initialize(); diff --git a/src/modules/admin/pages/Admin.vue b/src/modules/admin/pages/Admin.vue index 8ab5b95e9e20ccba9955fbbae97661e8930970a5..5f19ae17089fab68d6251813414797d2d9a0e4a3 100644 --- a/src/modules/admin/pages/Admin.vue +++ b/src/modules/admin/pages/Admin.vue @@ -4,9 +4,9 @@ class="container flex flex-col items-center px-5 py-12 mx-auto text-gray-600 body-font md:flex-row" > <div> - <CoscineHeadline :headline="$parent.$t('page.admin.title')" /> + <CoscineHeadline :headline="$t('page.admin.title')" /> <p class="mb-8 leading-relaxed dark:text-white"> - {{ $parent.$t("page.admin.description") }} + {{ $t("page.admin.description") }} </p> <img alt="From Coscine Old" src="@/assets/images/Admin.png" /> </div> @@ -19,9 +19,9 @@ import { defineComponent } from "vue-demi"; import CoscineHeadline from "@/components/CoscineHeadline.vue"; // import the store for current module -import { useAdminStore } from "../store"; +import useAdminStore from "../store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { diff --git a/src/modules/admin/routes.ts b/src/modules/admin/routes.ts index 45e8e6753c33336db4df2fcf85c9906a496da988..5c4893ea379a2188de13dfd6f63fc5dc4fe6207f 100644 --- a/src/modules/admin/routes.ts +++ b/src/modules/admin/routes.ts @@ -3,6 +3,8 @@ import { RouteConfig } from "vue-router"; const AdminModule = () => import("./AdminModule.vue"); const Admin = () => import("./pages/Admin.vue"); +import { AdminI18nMessages } from "@/modules/admin/i18n/index"; + export const AdminRoutes: RouteConfig[] = [ { path: "/admin", @@ -12,6 +14,7 @@ export const AdminRoutes: RouteConfig[] = [ breadCrumb: "admin", requiresAdmin: true, requiresAuth: true, + i18n: AdminI18nMessages, }, children: [ { diff --git a/src/modules/error/ErrorModule.vue b/src/modules/error/ErrorModule.vue index 051f34015ac7467619e62e32000dccdc6239b6e6..b0c836e15071ec59543c3d4c2cf60472db4c21a8 100644 --- a/src/modules/error/ErrorModule.vue +++ b/src/modules/error/ErrorModule.vue @@ -6,12 +6,11 @@ <script lang="ts"> import { defineComponent } from "vue-demi"; -import { ErrorI18nMessages } from "./i18n"; // import the store for current module -import { useErrorStore } from "./store"; +import useErrorStore from "./store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { @@ -20,7 +19,6 @@ export default defineComponent({ return { mainStore, errorStore }; }, - i18n: { messages: ErrorI18nMessages }, created() { this.initialize(); diff --git a/src/modules/error/pages/NotFound.vue b/src/modules/error/pages/NotFound.vue index 55316f0bcb5d565233c5a0b765618fe58b8028c9..37431cd9ed7ad6a6b9162e4a1c0e246766041d23 100644 --- a/src/modules/error/pages/NotFound.vue +++ b/src/modules/error/pages/NotFound.vue @@ -4,9 +4,9 @@ class="container flex flex-col items-center px-5 py-12 mx-auto text-gray-600 body-font md:flex-row" > <div> - <CoscineHeadline :headline="$parent.$t('page.notFound.title')" /> + <CoscineHeadline :headline="$t('page.notFound.title')" /> <p class="mb-8 leading-relaxed dark:text-white"> - {{ $parent.$t("page.notFound.description") }} + {{ $t("page.notFound.description") }} </p> <img alt="Oopsie!" src="@/assets/images/404.jpg" /> </div> @@ -19,9 +19,9 @@ import { defineComponent } from "vue-demi"; import CoscineHeadline from "@/components/CoscineHeadline.vue"; // import the store for current module -import { useErrorStore } from "../store"; +import useErrorStore from "../store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { diff --git a/src/modules/error/routes.ts b/src/modules/error/routes.ts index 5b8fd1ca9a596729df90450e69d0e598e66d3879..16e4d43c2896d1f5ddadef3d0f44a9a6e2aa37dc 100644 --- a/src/modules/error/routes.ts +++ b/src/modules/error/routes.ts @@ -3,11 +3,16 @@ import { RouteConfig } from "vue-router"; const ErrorModule = () => import("./ErrorModule.vue"); const NotFound = () => import("./pages/NotFound.vue"); +import { ErrorI18nMessages } from "@/modules/error/i18n/index"; + export const ErrorRoutes: RouteConfig[] = [ // Not Found (404) Page { path: "/:path(^(?!(/coscine/api/|/coscine/apps/)))", component: ErrorModule, + meta: { + i18n: ErrorI18nMessages, + }, children: [ { path: "/", diff --git a/src/modules/login/LoginModule.vue b/src/modules/login/LoginModule.vue index aa378dfb4de6f08c6722a99cbdc405f7f7c88723..9e15fabc356cedc112ad3022da2e4a24c627c12e 100644 --- a/src/modules/login/LoginModule.vue +++ b/src/modules/login/LoginModule.vue @@ -6,12 +6,11 @@ <script lang="ts"> import { defineComponent } from "vue-demi"; -import { LoginI18nMessages } from "./i18n"; // import the store for current module -import { useLoginStore } from "./store"; +import useLoginStore from "./store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { @@ -20,7 +19,6 @@ export default defineComponent({ return { mainStore, loginStore }; }, - i18n: { messages: LoginI18nMessages }, created() { this.initialize(); diff --git a/src/modules/login/pages/Login.vue b/src/modules/login/pages/Login.vue index a3559fe5a945fc1c8c269eb283cde1bbba46839c..db12620ac6ab4c97163cab9cf60f40c12d2588d9 100644 --- a/src/modules/login/pages/Login.vue +++ b/src/modules/login/pages/Login.vue @@ -6,9 +6,9 @@ import { defineComponent } from "vue-demi"; // import the store for current module -import { useLoginStore } from "../store"; +import useLoginStore from "../store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { diff --git a/src/modules/login/routes.ts b/src/modules/login/routes.ts index 230b6d758249ba6597263c17a77567cbf2ec975a..5fcb379f0aad6c88e7505fc18c1ef06237ac26ab 100644 --- a/src/modules/login/routes.ts +++ b/src/modules/login/routes.ts @@ -3,10 +3,15 @@ import { RouteConfig } from "vue-router"; const LoginModule = () => import("./LoginModule.vue"); const Login = () => import("./pages/Login.vue"); +import { LoginI18nMessages } from "@/modules/login/i18n/index"; + export const LoginRoutes: RouteConfig[] = [ { path: "/login", component: LoginModule, + meta: { + i18n: LoginI18nMessages, + }, children: [ { path: "/", diff --git a/src/modules/login/store.ts b/src/modules/login/store.ts index 42659cfee8daf791ba112740fd7e49bbf5773f5e..33ca895890673b816945f75f94878a5c644ef67f 100644 --- a/src/modules/login/store.ts +++ b/src/modules/login/store.ts @@ -3,7 +3,7 @@ import { LoginState } from "./types"; import { RawLocation, Route } from "vue-router"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; /* Store variable name is "this.<id>Store" diff --git a/src/modules/pid/PidModule.vue b/src/modules/pid/PidModule.vue index c75661c458d63ed152ee4ba531a9a08ed65ef2be..8010d3fde3cbcfc7dc0a82f381886d1de1bd2ef5 100644 --- a/src/modules/pid/PidModule.vue +++ b/src/modules/pid/PidModule.vue @@ -6,12 +6,11 @@ <script lang="ts"> import { defineComponent } from "vue-demi"; -import { PidI18nMessages } from "./i18n"; // import the store for current module -import { usePidStore } from "./store"; +import usePidStore from "./store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { @@ -20,7 +19,6 @@ export default defineComponent({ return { mainStore, pidStore }; }, - i18n: { messages: PidI18nMessages }, created() { this.initialize(); diff --git a/src/modules/pid/pages/Pid.vue b/src/modules/pid/pages/Pid.vue index 2e4b3c7ed36c65a55840c78004f62745319f8f75..3e863c39311a7a757c59fda22c88e3fbe5a1d716 100644 --- a/src/modules/pid/pages/Pid.vue +++ b/src/modules/pid/pages/Pid.vue @@ -4,9 +4,9 @@ class="container flex flex-col items-center px-5 py-12 mx-auto text-gray-600 body-font md:flex-row" > <div> - <CoscineHeadline :headline="$parent.$t('page.pid.title')" /> + <CoscineHeadline :headline="$t('page.pid.title')" /> <p class="mb-8 leading-relaxed dark:text-white"> - {{ $parent.$t("page.pid.description") }} + {{ $t("page.pid.description") }} </p> </div> </section> @@ -18,9 +18,9 @@ import { defineComponent } from "vue-demi"; import CoscineHeadline from "@/components/CoscineHeadline.vue"; // import the store for current module -import { usePidStore } from "../store"; +import usePidStore from "../store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { diff --git a/src/modules/pid/routes.ts b/src/modules/pid/routes.ts index 1b826cdcc0fb95c9324dea4495d4224942b54ebe..252c57d4e9ada14ebb833d5b0e13dabd59463fe0 100644 --- a/src/modules/pid/routes.ts +++ b/src/modules/pid/routes.ts @@ -3,10 +3,15 @@ import { RouteConfig } from "vue-router"; const PidModule = () => import("./PidModule.vue"); const Pid = () => import("./pages/Pid.vue"); +import { PidI18nMessages } from "@/modules/pid/i18n/index"; + export const PidRoutes: RouteConfig[] = [ { path: "/pid/:pid", component: PidModule, + meta: { + i18n: PidI18nMessages, + }, children: [ { path: "/", diff --git a/src/modules/project/ProjectModule.vue b/src/modules/project/ProjectModule.vue index dd57b6002ce6323491250944caf36ede1121baec..3666440bc4ab0fe54f51c7c0957d01cff67a0fcc 100644 --- a/src/modules/project/ProjectModule.vue +++ b/src/modules/project/ProjectModule.vue @@ -6,13 +6,12 @@ <script lang="ts"> import { defineComponent } from "vue-demi"; -import { ProjectI18nMessages } from "./i18n"; // import the store for current module -import { useProjectStore } from "./store"; -import { useResourceStore } from "@/modules/resource/store"; +import useProjectStore from "./store"; +import useResourceStore from "@/modules/resource/store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.Project"; import type { Route } from "vue-router"; @@ -25,7 +24,6 @@ export default defineComponent({ return { mainStore, projectStore, resourceStore }; }, - i18n: { messages: ProjectI18nMessages }, created() { this.initialize(); diff --git a/src/modules/project/RootProjectModule.vue b/src/modules/project/RootProjectModule.vue index bf17c26cd05c086685c5d2f809bb6834fc4a2caa..47570e87ca1bfc0f0433ae24abf27c00d7c6a426 100644 --- a/src/modules/project/RootProjectModule.vue +++ b/src/modules/project/RootProjectModule.vue @@ -6,12 +6,11 @@ <script lang="ts"> import { defineComponent } from "vue-demi"; -import { ProjectI18nMessages } from "./i18n"; // import the store for current module -import { useProjectStore } from "./store"; +import useProjectStore from "./store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { @@ -20,7 +19,6 @@ export default defineComponent({ return { mainStore, projectStore }; }, - i18n: { messages: ProjectI18nMessages }, created() { this.initialize(); diff --git a/src/modules/project/i18n/de.ts b/src/modules/project/i18n/de.ts index 860a8fc5cabc5ee8ee951cc4945a60277d461046..c455e76fbd750d337405d455fde78b45a0f233e7 100644 --- a/src/modules/project/i18n/de.ts +++ b/src/modules/project/i18n/de.ts @@ -232,9 +232,9 @@ export default { "@:(form.project.projectKeywords)@:(form.project.labelSymbol)", tagPlaceholder: "Sie können diesen Tag hinzufügen", - projectVisibility: "Sichtbarkeit", - projectVisibilityLabel: - "@:(form.project.projectVisibility)@:(form.project.labelSymbol)", + projectMetadataVisibility: "Sichtbarkeit der Metadaten", + projectMetadataVisibilityLabel: + "@:(form.project.projectMetadataVisibility)@:(form.project.labelSymbol)", projectGrantId: "Grant ID", projectGrantIdHelp: diff --git a/src/modules/project/i18n/en.ts b/src/modules/project/i18n/en.ts index 3b0a52dfc0119de6382b917150d5cd35cbbc8c34..308050af07536f9f8e620342263f9c058fa60bb4 100644 --- a/src/modules/project/i18n/en.ts +++ b/src/modules/project/i18n/en.ts @@ -136,7 +136,7 @@ export default { connectionErrorTitle: "Resource quota retrieval not successfull", connectionErrorBody: - "An error occured while retrieving the resource type quota. Please try again. If the error persists, contact us at servicedesk@itc.rwth-aachen.de", + "An error occured while retrieving the resource type quota. Please try again. If the error persists, contact us at servicedesk@rwth-aachen.de", resourceTypeQuotaChangedSuccessTitle: "Quota extended successfully", resourceTypeQuotaChangedSuccessBody: @@ -144,14 +144,14 @@ export default { resourceTypeQuotaChangedFailureTitle: "Resource quota extension not successfull", resourceTypeQuotaChangedFailureBody: - "An error occured while extending the resource type quota. Please try again. If the error persists, contact us at servicedesk@itc.rwth-aachen.de", + "An error occured while extending the resource type quota. Please try again. If the error persists, contact us at servicedesk@rwth-aachen.de", resourceQuotaChangedSuccessTitle: "Quota extended successfully", resourceQuotaChangedSuccessBody: "The quota for resource {ResourceName} was successfully extended to {AmountInGB} GB.", resourceQuotaChangedFailureTitle: "Quota extension not successfull", resourceQuotaChangedFailureBody: - "An error occured while extending the quota. Please try again. If the error persists, contact us at servicedesk@itc.rwth-aachen.de", + "An error occured while extending the quota. Please try again. If the error persists, contact us at servicedesk@rwth-aachen.de", }, // Settíngs.vue @@ -227,9 +227,9 @@ export default { "@:(form.project.projectKeywords)@:(form.project.labelSymbol)", tagPlaceholder: "You can add this tag", - projectVisibility: "Visibility", - projectVisibilityLabel: - "@:(form.project.projectVisibility)@:(form.project.labelSymbol)", + projectMetadataVisibility: "Metadata Visibility", + projectMetadataVisibilityLabel: + "@:(form.project.projectMetadataVisibility)@:(form.project.labelSymbol)", projectGrantId: "Grant ID", projectGrantIdHelp: diff --git a/src/modules/project/pages/CreateProject.vue b/src/modules/project/pages/CreateProject.vue index ae2dd23ffc8a3cd4ed59b2ce1991864ff069cb37..a138e27cec9b37090c100af1eb695c8bbaf7b14f 100644 --- a/src/modules/project/pages/CreateProject.vue +++ b/src/modules/project/pages/CreateProject.vue @@ -1,6 +1,6 @@ <template> - <div id="project"> - <CoscineHeadline :headline="$parent.$t('page.createProject.title')" /> + <div id="createProject"> + <CoscineHeadline :headline="$t('page.createProject.title')" /> <b-row> <div class="col-sm-2" /> <div class="col-sm-8"> @@ -13,7 +13,7 @@ class="m-0" > <b-form-text id="AffiliationMessage"> - {{ $parent.$t("page.createProject.affiliationMessage") }} + {{ $t("page.createProject.affiliationMessage") }} </b-form-text> </b-form-group> @@ -47,15 +47,15 @@ isWaitingForResponse " > - {{ $parent.$t("buttons.submit") }}</b-button + {{ $t("buttons.submit") }}</b-button > </b-form-group> </b-form> + + <!-- Loading Spinner on Submit --> <LoadingSpinner :isWaitingForResponse="isWaitingForResponse" - :textAfter=" - $parent.$t('page.createProject.loadingSpinnerProjectCreation') - " + :textAfter="$t('page.createProject.loadingSpinnerProjectCreation')" /> </div> <div class="col-sm-2" /> @@ -80,10 +80,10 @@ import type { } from "@coscine/api-client/dist/types/Coscine.Api.Project"; // import the store for current module -import { useProjectStore } from "../store"; +import useProjectStore from "../store"; // import the main store -import { useMainStore } from "@/store/index"; -import { useResourceStore } from "@/modules/resource/store"; +import useMainStore from "@/store/index"; +import useResourceStore from "@/modules/resource/store"; import { navigateToProject } from "@/router"; export default defineComponent({ @@ -158,7 +158,7 @@ export default defineComponent({ givenTitle = "Title", variant: string | undefined = undefined ) { - this.$bvToast.toast(text, { + this.$root.$bvToast.toast(text, { title: givenTitle, autoHideDelay: 5000, toaster: "b-toaster-bottom-right", @@ -198,8 +198,8 @@ export default defineComponent({ this.isWaitingForResponse = false; // On Failure this.makeToast( - this.$parent.$t("toast.onSave.failure.message").toString(), - this.$parent.$t("toast.onSave.failure.title").toString(), + this.$t("toast.onSave.failure.message").toString(), + this.$t("toast.onSave.failure.title").toString(), "danger" ); } diff --git a/src/modules/project/pages/ListProjects.vue b/src/modules/project/pages/ListProjects.vue index aeb91ad6b8201bf62c8858c1e2fa0800792386af..536f2e4e90d26918cb6139c54e012b64e4ae1aca 100644 --- a/src/modules/project/pages/ListProjects.vue +++ b/src/modules/project/pages/ListProjects.vue @@ -1,10 +1,10 @@ <template> <div id="project"> - <CoscineHeadline :headline="$parent.$tc('page.listProjects.title', 0)" /> + <CoscineHeadline :headline="$tc('page.listProjects.title', 0)" /> <div class="list"> <b-card-group deck> <CoscineCard - :title="$parent.$t('page.listProjects.addProject')" + :title="$t('page.listProjects.addProject')" type="create" :to="toCreateProject()" @open-card="openCreateProject($event)" @@ -28,9 +28,9 @@ import { RawLocation } from "vue-router"; import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.Project"; // import the store for current module -import { useProjectStore } from "../store"; +import useProjectStore from "../store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { diff --git a/src/modules/project/pages/Members.vue b/src/modules/project/pages/Members.vue index 57cd4a6b1ce0671f610c5899be25e9c2ff66c066..0791f1e36c677b10be76a3c3d627ee331cd9ecfb 100644 --- a/src/modules/project/pages/Members.vue +++ b/src/modules/project/pages/Members.vue @@ -1,6 +1,6 @@ <template> <div id="users"> - <CoscineHeadline :headline="$parent.$t('page.members.title')" /> + <CoscineHeadline :headline="$t('page.members.title')" /> <div class="UserManagement"> <!-- Search Row --> @@ -17,7 +17,7 @@ <b-col> <b-tabs content-class="mt-2"> <!-- Project Members --> - <b-tab :title="$parent.$t('page.members.membersTabTitle')"> + <b-tab :title="$t('page.members.membersTabTitle')"> <MembersTable id="userTable" :headers="memberHeaders" @@ -25,10 +25,10 @@ :filter="filter" :busy="isBusy" :roles="roles" - :emptyText="$parent.$t('page.members.emptyTableText')" - :emptyFilteredText="$parent.$t('page.members.emptyFilterText')" - :deleteText="$parent.$t('buttons.delete')" - :removeText="$parent.$t('buttons.remove')" + :emptyText="$t('page.members.emptyTableText')" + :emptyFilteredText="$t('page.members.emptyFilterText')" + :deleteText="$t('buttons.delete')" + :removeText="$t('buttons.remove')" :ownerCount="ownerCount" :ownerRole="ownerRole" @tableFilteredRows="onFilteredRows" @@ -38,7 +38,7 @@ </b-tab> <!-- Invited Users --> - <b-tab :title="$parent.$t('page.members.externalUsersTabTitle')"> + <b-tab :title="$t('page.members.externalUsersTabTitle')"> <MembersTable id="invitationTable" :headers="invitationHeaders" @@ -46,10 +46,10 @@ :filter="filter" :busy="isBusy" :roles="roles" - :emptyText="$parent.$t('page.members.emptyTableText')" - :emptyFilteredText="$parent.$t('page.members.emptyFilterText')" - :deleteText="$parent.$t('buttons.delete')" - :removeText="$parent.$t('buttons.remove')" + :emptyText="$t('page.members.emptyTableText')" + :emptyFilteredText="$t('page.members.emptyFilterText')" + :deleteText="$t('buttons.delete')" + :removeText="$t('buttons.remove')" :ownerCount="ownerCount" :ownerRole="ownerRole" sort-by="email" @@ -120,10 +120,10 @@ import InvitationPendingModal from "./components/modals/InvitationPendingModal.v import InviteUserModal from "./components/modals/InviteUserModal.vue"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; // import the store for current module -import { useProjectStore } from "../store"; -import { useUserStore } from "@/modules/user/store"; +import useProjectStore from "../store"; +import useUserStore from "@/modules/user/store"; import type { InvitationReturnObject, @@ -197,27 +197,27 @@ export default defineComponent({ // header text react on language changes. return [ { - label: this.$parent.$t("page.members.firstName"), + label: this.$t("page.members.firstName"), key: "user.givenname", sortable: true, }, { - label: this.$parent.$t("page.members.lastName"), + label: this.$t("page.members.lastName"), key: "user.surname", sortable: true, }, { - label: this.$parent.$t("page.members.email"), + label: this.$t("page.members.email"), key: "user.emailAddress", sortable: true, }, { - label: this.$parent.$t("page.members.role"), + label: this.$t("page.members.role"), key: "role", sortable: true, }, { - label: this.$parent.$t("page.members.actions"), + label: this.$t("page.members.actions"), key: "memberActions", sortable: true, }, @@ -228,22 +228,22 @@ export default defineComponent({ // header text react on language changes. return [ { - label: this.$parent.$t("page.members.email"), + label: this.$t("page.members.email"), key: "userMail", sortable: true, }, { - label: this.$parent.$t("page.members.role"), + label: this.$t("page.members.role"), key: "roleId", sortable: true, }, { - label: this.$parent.$t("page.members.status"), + label: this.$t("page.members.status"), key: "expiration", sortable: true, }, { - label: this.$parent.$t("page.members.actions"), + label: this.$t("page.members.actions"), key: "invitationActions", sortable: true, }, @@ -284,12 +284,12 @@ export default defineComponent({ await this.projectStore.retrieveInvitations(this.project); this.makeToast( toastText, - this.$parent.$t("page.members.userManagement").toString() + this.$t("page.members.userManagement").toString() ); } catch { this.makeToast( errorText, - this.$parent.$t("page.members.userManagement").toString(), + this.$t("page.members.userManagement").toString(), "danger" ); } @@ -339,7 +339,7 @@ export default defineComponent({ await this.projectStore.retrieveInvitations(this.project); this.makeToast( text, - this.$parent.$t("page.members.userManagement").toString() + this.$t("page.members.userManagement").toString() ); } else { const errorMsg = this.$parent @@ -350,7 +350,7 @@ export default defineComponent({ this.makeToast( errorMsg, - this.$parent.$t("page.members.userManagement").toString(), + this.$t("page.members.userManagement").toString(), "danger" ); } @@ -396,10 +396,7 @@ export default defineComponent({ await this.projectStore.storeProjectRole(projectRole); await this.getProjectRoles(); - this.makeToast( - text, - this.$parent.$t("page.members.userManagement").toString() - ); + this.makeToast(text, this.$t("page.members.userManagement").toString()); }, getRoleNameFromId(roleId: string): string | null | undefined { @@ -435,10 +432,7 @@ export default defineComponent({ await this.projectStore.storeProjectRole(projectRole); await this.getProjectRoles(); - this.makeToast( - text, - this.$parent.$t("page.members.userManagement").toString() - ); + this.makeToast(text, this.$t("page.members.userManagement").toString()); if (callback) { callback(); } @@ -493,10 +487,7 @@ export default defineComponent({ .toString(); await this.projectStore.deleteProjectRole(this.candidateForDeletion); await this.getProjectRoles(); - this.makeToast( - text, - this.$parent.$t("page.members.userManagement").toString() - ); + this.makeToast(text, this.$t("page.members.userManagement").toString()); this.isDeleteUserModalVisible = false; }, @@ -513,7 +504,7 @@ export default defineComponent({ }, makeToast(text = "Message", givenTitle = "Title", toastVariant = "") { - this.$bvToast.toast(text, { + this.$root.$bvToast.toast(text, { title: givenTitle, autoHideDelay: 5000, variant: toastVariant, diff --git a/src/modules/project/pages/ProjectPage.vue b/src/modules/project/pages/ProjectPage.vue index 1a8fa516e5d7cf9410dc848eeaef232e3ff798cc..a122dd17a8f01f3ee2f2bad8fa08bf331f34c51a 100644 --- a/src/modules/project/pages/ProjectPage.vue +++ b/src/modules/project/pages/ProjectPage.vue @@ -3,12 +3,12 @@ <b-row align-h="between"> <!-- Resources --> <b-col id="resources"> - <CoscineHeadline :headline="$parent.$tc('page.project.resource', 2)" /> + <CoscineHeadline :headline="$tc('page.project.resource', 2)" /> <div class="list"> <b-card-group deck> <CoscineCard - :title="$parent.$t('page.project.addResource')" + :title="$t('page.project.addResource')" type="create" :to="toCreateResource()" @open-card="openCreateResource($event)" @@ -37,12 +37,12 @@ <!-- Sub-Projects --> <div id="sub-projects"> - <CoscineHeadline :headline="$parent.$tc('page.project.subProject', 0)" /> + <CoscineHeadline :headline="$tc('page.project.subProject', 0)" /> <div class="list"> <b-card-group deck> <CoscineCard - :title="$parent.$t('page.listProjects.addProject')" + :title="$t('page.listProjects.addProject')" type="create" :to="toCreateSubProject()" @open-card="openCreateProject($event)" @@ -71,10 +71,10 @@ import type { } from "@coscine/api-client/dist/types/Coscine.Api.Project"; // import the store for current module -import { useProjectStore } from "../store"; +import useProjectStore from "../store"; // import the main store -import { useMainStore } from "@/store/index"; -import { useResourceStore } from "@/modules/resource/store"; +import useMainStore from "@/store/index"; +import useResourceStore from "@/modules/resource/store"; export default defineComponent({ setup() { diff --git a/src/modules/project/pages/Quota.vue b/src/modules/project/pages/Quota.vue index 6889db2bf3ad739174e98642e41c390c1e621347..2b1374e840835510660165ae109faa8695cbe2cf 100644 --- a/src/modules/project/pages/Quota.vue +++ b/src/modules/project/pages/Quota.vue @@ -3,14 +3,14 @@ <b-row> <b-col> <!-- Quota Management --> - <CoscineHeadline :headline="$parent.$t('page.quota.headline')" /> + <CoscineHeadline :headline="$t('page.quota.headline')" /> <!-- Dropdowns Row --> <coscine-form-group> <b-row> <!-- Project Dropdown --> <b-col> - {{ $parent.$t("page.quota.projectLabel") }} + {{ $t("page.quota.projectLabel") }} <b-form-select :options="projects" value-field="id" @@ -20,7 +20,7 @@ > <template #first> <b-form-select-option :value="null" disabled>{{ - $parent.$t("page.quota.emptyProjectSelect") + $t("page.quota.emptyProjectSelect") }}</b-form-select-option> </template> </b-form-select> @@ -28,7 +28,7 @@ <!-- Resource Type Dropdown --> <b-col> - {{ $parent.$t("page.quota.resourceTypeLabel") }} + {{ $t("page.quota.resourceTypeLabel") }} <b-form-select v-model="selectedResourceTypeId" :options="resourceTypesSorted" @@ -37,7 +37,7 @@ > <template #first> <b-form-select-option :value="null" disabled>{{ - $parent.$t("page.quota.emptyResourceTypeSelect") + $t("page.quota.emptyResourceTypeSelect") }}</b-form-select-option> </template> </b-form-select> @@ -50,9 +50,9 @@ class="projectQuotaSlider" :label=" selectedQuota.allocated + - $parent.$t('page.quota.rangeText1').toString() + + $t('page.quota.rangeText1').toString() + selectedQuota.maximum + - $parent.$t('page.quota.rangeText2').toString() + $t('page.quota.rangeText2').toString() " :disabled=" selectedResourceTypeInformation && @@ -60,7 +60,7 @@ " > <div class="rangeVisual"> - {{ totalAllocatedSpace }}{{ $parent.$t("page.quota.gb") }} + {{ totalAllocatedSpace }}{{ $t("page.quota.gb") }} <b-form-input v-model="selectedQuota.allocated" type="range" @@ -69,7 +69,7 @@ :disabled="storingQuota" @change="changeProjectQuota" ></b-form-input> - {{ selectedQuota.maximum }}{{ $parent.$t("page.quota.gb") }} + {{ selectedQuota.maximum }}{{ $t("page.quota.gb") }} </div> </coscine-form-group> @@ -78,17 +78,17 @@ <b-col> <b-button class="float-right" - :href="$parent.$t('page.quota.moreHelpLink')" + :href="$t('page.quota.moreHelpLink')" target="_blank" > - {{ $parent.$t("page.quota.moreHelp") }} + {{ $t("page.quota.moreHelp") }} </b-button> </b-col> </b-row> <div class="h-divider" /> <!-- Resources --> - <CoscineHeadline :headline="$parent.$t('page.quota.resources')" /> + <CoscineHeadline :headline="$t('page.quota.resources')" /> <!-- Resources Table --> <coscine-form-group> @@ -99,33 +99,33 @@ show-empty :empty-text=" selectedResourceTypeId !== '' - ? $parent.$t('page.quota.emptyTableText') - : $parent.$t('page.quota.noResourceTypeChoosen') + ? $t('page.quota.emptyTableText') + : $t('page.quota.noResourceTypeChoosen') " > <!-- Resource (Name) Column Header --> <template #head(name)> - <span>{{ $parent.$t("page.quota.resource") }}</span> + <span>{{ $t("page.quota.resource") }}</span> </template> <!-- Reserved Column Header --> <template #head(allocated)> - <span>{{ $parent.$t("page.quota.allocated") }}</span> + <span>{{ $t("page.quota.allocated") }}</span> </template> <!-- Used Column Header --> <template #head(used)> - <span>{{ $parent.$t("page.quota.used") }}</span> + <span>{{ $t("page.quota.used") }}</span> </template> <!-- Adjust Quota Column Header --> <template #head(adjust)> - <span>{{ $parent.$t("page.quota.adjustQuota") }}</span> + <span>{{ $t("page.quota.adjustQuota") }}</span> </template> <!-- Reserved Cell Contents --> <template #cell(allocated)="data"> - {{ data.item.allocated }}{{ $parent.$t("page.quota.gb") }} + {{ data.item.allocated }}{{ $t("page.quota.gb") }} </template> <!-- Used Cell Contents --> @@ -136,7 +136,7 @@ <!-- Adjust Quota Slider Contents --> <template #cell(adjust)="data"> <div class="rangeVisual"> - {{ data.item.used }}{{ $parent.$t("page.quota.gb") }} + {{ data.item.used }}{{ $t("page.quota.gb") }} <b-form-input v-model="data.item.allocated" type="range" @@ -145,7 +145,7 @@ :disabled="storingQuota" @change="changeResourceQuota(data.item)" /> - {{ data.item.maximum }}{{ $parent.$t("page.quota.gb") }} + {{ data.item.maximum }}{{ $t("page.quota.gb") }} </div> </template> @@ -153,7 +153,7 @@ <template #table-busy> <div class="text-center text-danger my-2"> <b-spinner class="align-middle"></b-spinner> - <strong>{{ $parent.$t("page.quota.loading") }}</strong> + <strong>{{ $t("page.quota.loading") }}</strong> </div> </template> </b-table> @@ -167,10 +167,10 @@ import { defineComponent } from "vue-demi"; // import the store for current module -import { useProjectStore } from "../store"; -import { useResourceStore } from "@/modules/resource/store"; +import useProjectStore from "../store"; +import useResourceStore from "@/modules/resource/store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; import type { ProjectObject, @@ -221,7 +221,7 @@ export default defineComponent({ // Ensure DisplayName sortedResourceTypes.forEach((resourceType) => { resourceType.displayName = this.$t( - "ResourceTypes." + resourceType.displayName + ".displayName" + "resourceTypes." + resourceType.displayName + ".displayName" ).toString(); }); sortedResourceTypes.sort( @@ -304,12 +304,12 @@ export default defineComponent({ this.project, this.selectedResourceTypeInformation ); - if (result !== undefined) { + if (result) { this.resourceQuotas = result; this.calculateSpaceNeeds(); } } catch { - console.error("Quotas cannot be received!"); + console.error("Quotas cannot be retrieved!"); } finally { this.loadingData = false; } @@ -404,14 +404,14 @@ export default defineComponent({ }, makeToast(givenTitle = "Title", text = "Message", error = false) { if (error) { - this.$bvToast.toast(text, { + this.$root.$bvToast.toast(text, { title: givenTitle, noAutoHide: true, variant: "warning", toaster: "b-toaster-bottom-right", }); } else { - this.$bvToast.toast(text, { + this.$root.$bvToast.toast(text, { title: givenTitle, toaster: "b-toaster-bottom-right", noCloseButton: true, diff --git a/src/modules/project/pages/Settings.vue b/src/modules/project/pages/Settings.vue index f2b73c51228b748a569801c5b775383e1d9cb447..a9fd4a1f15911bc5ab89b6237aa9ae37d33a3d5d 100644 --- a/src/modules/project/pages/Settings.vue +++ b/src/modules/project/pages/Settings.vue @@ -1,6 +1,6 @@ <template> <div id="project"> - <CoscineHeadline :headline="$parent.$t('sidebar.projectSettings')" /> + <CoscineHeadline :headline="$t('sidebar.projectSettings')" /> <b-row> <div class="col-sm-2" /> <div class="col-sm-8"> @@ -38,7 +38,7 @@ isWaitingForResponse " > - {{ $parent.$t("buttons.submit") }}</b-button + {{ $t("buttons.submit") }}</b-button > <!-- Delete Button --> @@ -48,7 +48,7 @@ class="float-left" @click.prevent="isDeleteModalVisible = true" > - {{ $parent.$t("buttons.delete") }}</b-button + {{ $t("buttons.delete") }}</b-button > </b-form-group> </b-form> @@ -57,8 +57,8 @@ <DeleteProjectModal v-if="project" :open="isDeleteModalVisible" - @close="isDeleteModalVisible = false" :displayName="project.displayName" + @close="isDeleteModalVisible = false" @clickDelete="clickDelete" /> @@ -79,9 +79,9 @@ import FormMetadata from "./components/FormMetadata.vue"; import DeleteProjectModal from "./components/modals/DeleteProjectModal.vue"; // import the store for current module -import { useProjectStore } from "../store"; +import useProjectStore from "../store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; import type { ProjectObject, @@ -195,7 +195,7 @@ export default defineComponent({ givenTitle = "Title", variant: string | undefined = undefined ) { - this.$bvToast.toast(text, { + this.$root.$bvToast.toast(text, { title: givenTitle, autoHideDelay: 5000, toaster: "b-toaster-bottom-right", @@ -213,22 +213,19 @@ export default defineComponent({ const parentProject = this.projectStore.currentParentProjects ? this.projectStore.currentParentProjects[0] : null; - // On Success - this.formValidations.naming.$reset(); - this.formValidations.metadata.$reset(); // Refresh the project information in the store await this.projectStore.refreshProjectInformation(parentProject); // Replace the current location with parent project or project list - navigateToProject(parentProject); this.makeToast( - this.$parent.$t("toast.onSave.success.message").toString(), - this.$parent.$t("toast.onSave.success.title").toString() + this.$t("toast.onDelete.success.message").toString(), + this.$t("toast.onDelete.success.title").toString() ); + navigateToProject(parentProject); } else { // On Failure this.makeToast( - this.$parent.$t("toast.onSave.failure.message").toString(), - this.$parent.$t("toast.onSave.failure.title").toString(), + this.$t("toast.onDelete.failure.message").toString(), + this.$t("toast.onDelete.failure.title").toString(), "danger" ); } @@ -259,14 +256,14 @@ export default defineComponent({ // Refresh the project information in the store await this.projectStore.refreshProjectInformation(this.project); this.makeToast( - this.$parent.$t("toast.onSave.success.message").toString(), - this.$parent.$t("toast.onSave.success.title").toString() + this.$t("toast.onSave.success.message").toString(), + this.$t("toast.onSave.success.title").toString() ); } else { // On Failure this.makeToast( - this.$parent.$t("toast.onSave.failure.message").toString(), - this.$parent.$t("toast.onSave.failure.title").toString(), + this.$t("toast.onSave.failure.message").toString(), + this.$t("toast.onSave.failure.title").toString(), "danger" ); } diff --git a/src/modules/project/pages/components/FormMetadata.vue b/src/modules/project/pages/components/FormMetadata.vue index 047a155660e52865ba616b9553ec369daf5b8aae..af92c2fc22390a1038fced1c16a33440d5a9e1e3 100644 --- a/src/modules/project/pages/components/FormMetadata.vue +++ b/src/modules/project/pages/components/FormMetadata.vue @@ -1,9 +1,7 @@ <template> <div> <!-- Project Metadata Section --> - <CoscineHeadline - :headline="$parent.$parent.$t('form.project.activatedImportFromParent')" - /> + <CoscineHeadline :headline="$t('form.project.activatedImportFromParent')" /> <!-- Copy Metadata --> <coscine-form-group @@ -11,7 +9,7 @@ :mandatory="false" labelFor="CopyData" :label=" - $parent.$parent.$t('form.project.copyMetadataLabel', { + $t('form.project.copyMetadataLabel', { project: parentProject.projectName, }) " @@ -26,7 +24,7 @@ @click.prevent="copyMetadataFromParent" :disabled="disabled" > - {{ $parent.$parent.$t("buttons.copyMetadata") }}</b-button + {{ $t("buttons.copyMetadata") }}</b-button > </coscine-form-group> @@ -34,9 +32,7 @@ <coscine-form-group :mandatory="true" labelFor="PrincipleInvestigators" - :label=" - $parent.$parent.$t('form.project.projectPrincipleInvestigatorsLabel') - " + :label="$t('form.project.projectPrincipleInvestigatorsLabel')" :isLoading="isLoading" type="input" > @@ -48,9 +44,7 @@ ? !$v.projectForm.principleInvestigators.$error : null " - :placeholder=" - $parent.$parent.$t('form.project.projectPrincipleInvestigators') - " + :placeholder="$t('form.project.projectPrincipleInvestigators')" :maxlength=" maxLengthFromValidation($v.projectForm.principleInvestigators) " @@ -59,7 +53,7 @@ /> <div class="invalid-tooltip"> {{ - $parent.$parent.$t("form.project.projectPrincipleInvestigatorsHelp", { + $t("form.project.projectPrincipleInvestigatorsHelp", { maxLength: maxLengthFromValidation( $v.projectForm.principleInvestigators ), @@ -72,7 +66,7 @@ <coscine-form-group :mandatory="true" labelFor="StartDate" - :label="$parent.$parent.$t('form.project.projectStartLabel')" + :label="$t('form.project.projectStartLabel')" :isLoading="isLoading" type="input" > @@ -89,7 +83,7 @@ required calendar-width="100%" start-weekday="1" - :placeholder="$parent.$parent.$t('form.project.projectStart')" + :placeholder="$t('form.project.projectStart')" /> </coscine-form-group> @@ -97,7 +91,7 @@ <coscine-form-group :mandatory="true" labelFor="EndDate" - :label="$parent.$parent.$t('form.project.projectEndLabel')" + :label="$t('form.project.projectEndLabel')" :isLoading="isLoading" type="input" > @@ -113,7 +107,7 @@ required calendar-width="100%" start-weekday="1" - :placeholder="$parent.$parent.$t('form.project.projectEnd')" + :placeholder="$t('form.project.projectEnd')" /> </coscine-form-group> @@ -121,7 +115,7 @@ <coscine-form-group :mandatory="true" labelFor="Discipline" - :label="$parent.$parent.$t('form.project.projectDisciplineLabel')" + :label="$t('form.project.projectDisciplineLabel')" :isLoading="isLoading" type="input" > @@ -134,7 +128,7 @@ :hide-selected="true" :label="disciplineLabel" :track-by="disciplineLabel" - :placeholder="$parent.$parent.$t('form.project.projectDiscipline')" + :placeholder="$t('form.project.projectDiscipline')" > <template #singleLabel(props)> <div :disabled="disabled"> @@ -153,7 +147,7 @@ <coscine-form-group :mandatory="true" labelFor="Organization" - :label="$parent.$parent.$t('form.project.projectOrganizationLabel')" + :label="$t('form.project.projectOrganizationLabel')" :isLoading="isLoading" type="input" > @@ -167,7 +161,7 @@ :hide-selected="true" label="displayName" track-by="url" - :placeholder="$parent.$parent.$t('form.project.projectOrganization')" + :placeholder="$t('form.project.projectOrganization')" @search-change="retrieveOrganizations" > <template #singleLabel(props)> @@ -181,10 +175,10 @@ </div> </template> <template #noOptions> - {{ $parent.$parent.$t("form.project.projectOrganizationNoOptions") }} + {{ $t("form.project.projectOrganizationNoOptions") }} </template> <template #noResult> - {{ $parent.$parent.$t("form.project.projectOrganizationNoResult") }} + {{ $t("form.project.projectOrganizationNoResult") }} </template> </multiselect> </coscine-form-group> @@ -192,7 +186,7 @@ <!-- Project Keywords --> <coscine-form-group labelFor="Keywords" - :label="$parent.$parent.$t('form.project.projectKeywordsLabel')" + :label="$t('form.project.projectKeywordsLabel')" :isLoading="isLoading" type="input" > @@ -201,26 +195,24 @@ v-model="selectedKeyword" :disabled="disabled" :options="selectedKeyword" - :placeholder=" - $parent.$parent.$t('form.project.projectKeywordsPlaceholder') - " + :placeholder="$t('form.project.projectKeywordsPlaceholder')" :multiple="true" :taggable="true" :max="limitKeywords(selectedKeyword)" - :tag-placeholder="$parent.$parent.$t('form.project.tagPlaceholder')" + :tag-placeholder="$t('form.project.tagPlaceholder')" @tag="addTag" @remove="$v.projectForm.keywords.$touch()" > <template #maxElements> {{ - $parent.$parent.$t("form.project.projectKeywordsHelp", { + $t("form.project.projectKeywordsHelp", { maxLength: maxLengthFromValidation($v.projectForm.keywords), }) }} </template> <template #noOptions> {{ - $parent.$parent.$t("form.project.projectKeywordsEmpty", { + $t("form.project.projectKeywordsEmpty", { maxLength: maxLengthFromValidation($v.projectForm.keywords), }) }} @@ -232,7 +224,7 @@ <coscine-form-group :mandatory="true" labelFor="Visibility" - :label="$parent.$parent.$t('form.project.projectVisibilityLabel')" + :label="$t('form.project.projectMetadataVisibilityLabel')" :isLoading="isLoading" type="input" > @@ -245,13 +237,13 @@ value-field="id" stacked :disabled="disabled" - ></b-form-radio-group> + /> </coscine-form-group> <!-- Grant ID --> <coscine-form-group labelFor="GrantId" - :label="$parent.$parent.$t('form.project.projectGrantIdLabel')" + :label="$t('form.project.projectGrantIdLabel')" :isLoading="isLoading" type="input" > @@ -261,14 +253,14 @@ :state=" $v.projectForm.grantId.$dirty ? !$v.projectForm.grantId.$error : null " - :placeholder="$parent.$parent.$t('form.project.projectGrantId')" + :placeholder="$t('form.project.projectGrantId')" :maxlength="maxLengthFromValidation($v.projectForm.grantId)" required :disabled="disabled" /> <div class="invalid-tooltip"> {{ - $parent.$parent.$t("form.project.projectGrantIdHelp", { + $t("form.project.projectGrantIdHelp", { maxLength: maxLengthFromValidation($v.projectForm.grantId), }) }} @@ -292,9 +284,9 @@ import type { } from "@coscine/api-client/dist/types/Coscine.Api.Project"; // import the store for current module -import { useProjectStore } from "../../store"; +import useProjectStore from "../../store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { @@ -367,7 +359,6 @@ export default defineComponent({ return { projectForm: this.value, isLoadingOrganizations: false, - disciplineLabel: "displayNameEn", selectedKeyword: [] as Array<string>, selectedVisibility: "" as string | undefined, queryTimer: 0, @@ -387,6 +378,11 @@ export default defineComponent({ disciplines(): DisciplineObject[] { return this.projectStore.disciplines ?? []; }, + disciplineLabel(): string { + let locale = this.$root.$i18n.locale; + locale = locale.charAt(0).toUpperCase() + locale.slice(1); + return `displayName${locale}`; + }, }, emits: { @@ -400,7 +396,7 @@ export default defineComponent({ this.onProjectLoaded(); }, visibilities() { - // Used in Create Project + // Used in Project Create if (!this.currentProject) { this.setDefaultVisibility(); } @@ -428,7 +424,7 @@ export default defineComponent({ "projectForm.organizations"() { this.getLabels(); }, - value: { + projectForm: { handler() { this.$emit("validation", this.$v.projectForm); }, diff --git a/src/modules/project/pages/components/FormNaming.vue b/src/modules/project/pages/components/FormNaming.vue index e37d477417ceb5ce522465e06ccac9cc3c8ec045..e2be4519bdb0f1fe21f6473ffdb35f21b264de7a 100644 --- a/src/modules/project/pages/components/FormNaming.vue +++ b/src/modules/project/pages/components/FormNaming.vue @@ -4,7 +4,7 @@ <CoscineFormGroup :mandatory="true" labelFor="ProjectName" - :label="$parent.$parent.$t('form.project.projectNameLabel')" + :label="$t('form.project.projectNameLabel')" :isLoading="isLoading" type="input" > @@ -17,14 +17,14 @@ ? !$v.projectForm.projectName.$error : null " - :placeholder="$parent.$parent.$t('form.project.projectName')" + :placeholder="$t('form.project.projectName')" :maxlength="maxLengthFromValidation($v.projectForm.projectName)" required :disabled="disabled" /> <div class="invalid-tooltip"> {{ - $parent.$parent.$t("form.project.projectNameHelp", { + $t("form.project.projectNameHelp", { maxLength: maxLengthFromValidation($v.projectForm.projectName), }) }} @@ -35,7 +35,7 @@ <CoscineFormGroup :mandatory="true" labelFor="DisplayName" - :label="$parent.$parent.$t('form.project.displayNameLabel')" + :label="$t('form.project.displayNameLabel')" :isLoading="isLoading" type="input" > @@ -48,14 +48,14 @@ ? !$v.projectForm.displayName.$error : null " - :placeholder="$parent.$parent.$t('form.project.displayName')" + :placeholder="$t('form.project.displayName')" :maxlength="maxLengthFromValidation($v.projectForm.displayName)" required :disabled="disabled" /> <div class="invalid-tooltip"> {{ - $parent.$parent.$t("form.project.displayNameHelp", { + $t("form.project.displayNameHelp", { maxLength: maxLengthFromValidation($v.projectForm.displayName), }) }} @@ -66,7 +66,7 @@ <CoscineFormGroup :mandatory="true" labelFor="Description" - :label="$parent.$parent.$t('form.project.projectDescriptionLabel')" + :label="$t('form.project.projectDescriptionLabel')" :isLoading="isLoading" type="input" > @@ -78,14 +78,14 @@ ? !$v.projectForm.description.$error : null " - :placeholder="$parent.$parent.$t('form.project.projectDescription')" + :placeholder="$t('form.project.projectDescription')" :maxlength="maxLengthFromValidation($v.projectForm.description)" required :disabled="disabled" /> <div class="invalid-tooltip"> {{ - $parent.$parent.$t("form.project.projectDescriptionHelp", { + $t("form.project.projectDescriptionHelp", { maxLength: maxLengthFromValidation($v.projectForm.description), }) }} diff --git a/src/modules/project/pages/components/MembersList.vue b/src/modules/project/pages/components/MembersList.vue index e8c2fe8b1fced3a008a4314a54c09cd6fda9c113..540f88afbc6ec61b94c7fa7dd4530dbb8aeeeb65 100644 --- a/src/modules/project/pages/components/MembersList.vue +++ b/src/modules/project/pages/components/MembersList.vue @@ -1,8 +1,6 @@ <template> <div> - <CoscineHeadline - :headline="$parent.$parent.$tc('page.project.member', 2)" - /> + <CoscineHeadline :headline="$tc('page.project.member', 2)" /> <!-- Members --> <div class="list"> <div class="user-complete-name-list container-fluid"> @@ -37,8 +35,8 @@ v-b-tooltip.hover.bottom :title=" ownerCount < 2 && isOwner - ? $parent.$parent.$t('page.project.members.tooltipDisabled') - : $parent.$parent.$t('page.project.members.tooltip') + ? $t('page.project.members.tooltipDisabled') + : $t('page.project.members.tooltip') " >{{ $t("buttons.leave") }}</b-button > @@ -49,7 +47,7 @@ <!-- Manage Members Link --> <div v-if="isOwner" class="mt-2"> <router-link :to="{ name: 'project-members' }"> - {{ $parent.$parent.$t("page.project.members.toProjectMembers") }} + {{ $t("page.project.members.toProjectMembers") }} </router-link> </div> @@ -59,7 +57,7 @@ v-model="leaveModal" hide-footer :title=" - $parent.$parent.$t('page.project.members.modal.title', { + $t('page.project.members.modal.title', { name: project.displayName, }) " @@ -67,7 +65,7 @@ <!-- Leave Modal Body --> <div class="mb-3"> {{ - $parent.$parent.$t("page.project.members.modal.body", { + $t("page.project.members.modal.body", { name: project.displayName, }) }} @@ -80,10 +78,10 @@ @click="leaveModal = false" ref="modalLeaveProjectCancel" autofocus - >{{ $parent.$parent.$t("buttons.cancel") }}</b-button + >{{ $t("buttons.cancel") }}</b-button > <b-button class="float-Left" variant="danger" @click="leaveProject">{{ - $parent.$parent.$t("buttons.leave") + $t("buttons.leave") }}</b-button> </b-modal> </div> @@ -100,10 +98,10 @@ import type { } from "@coscine/api-client/dist/types/Coscine.Api.Project"; // import the store for current module -import { useProjectStore } from "../../store"; +import useProjectStore from "../../store"; // import the main store -import { useMainStore } from "@/store/index"; -import { useUserStore } from "@/modules/user/store"; +import useMainStore from "@/store/index"; +import useUserStore from "@/modules/user/store"; export default defineComponent({ setup() { diff --git a/src/modules/project/pages/components/MembersTable.vue b/src/modules/project/pages/components/MembersTable.vue index c8106b8ece61fd5380534085d68c72ec634af260..29d748c6a610bd95f52b483f754afed10efaa3e3 100644 --- a/src/modules/project/pages/components/MembersTable.vue +++ b/src/modules/project/pages/components/MembersTable.vue @@ -99,7 +99,7 @@ size="sm" @click="resendInvitation(selectedInvitation.item)" :disabled="!checkExpiration(selectedInvitation.item.expiration)" - >{{ $parent.$parent.$parent.$parent.$t("buttons.resend") }} + >{{ $t("buttons.resend") }} </b-button> </div> </template> @@ -205,13 +205,9 @@ export default defineComponent({ }, getStatus(expiration: string) { if (this.checkExpiration(expiration)) { - return this.$parent.$parent.$parent.$parent.$t( - "page.members.expiredStatus" - ); + return this.$t("page.members.expiredStatus"); } else { - return this.$parent.$parent.$parent.$parent.$t( - "page.members.pendingStatus" - ); + return this.$t("page.members.pendingStatus"); } }, revokeInvitation(selectedInvitation: InvitationReturnObject) { diff --git a/src/modules/project/pages/components/UserSearchRow.vue b/src/modules/project/pages/components/UserSearchRow.vue index 2dfe5c9388d76d4fd8fb68b03aafeaae864254ea..180d78e32b52416b2ee15acb97a4e3e5d783604b 100644 --- a/src/modules/project/pages/components/UserSearchRow.vue +++ b/src/modules/project/pages/components/UserSearchRow.vue @@ -7,9 +7,7 @@ <b-col sm="5" @keydown.enter.prevent.self="" id="firstCol"> <v-select v-model="selectedAddingUser" - :placeholder=" - $parent.$parent.$t('page.members.searchUserPlaceholder') - " + :placeholder="$t('page.members.searchUserPlaceholder')" :class="{ adaptSelect: true, 'no-results': queriedUsers.length === 0, @@ -22,24 +20,22 @@ label="displayName" > <template v-if="searchString === ''" slot="no-options"> - {{ $parent.$parent.$t("page.members.pleaseTypeSomething") }} + {{ $t("page.members.pleaseTypeSomething") }} </template> <template v-else-if="validEmail" slot="no-options"> - {{ $parent.$parent.$t("page.members.searchEmailInvite") }} + {{ $t("page.members.searchEmailInvite") }} </template> <template v-else-if="searchString.length < 3" slot="no-options"> - {{ - $parent.$parent.$t("page.members.searchNotEnoughCharacters") - }} + {{ $t("page.members.searchNotEnoughCharacters") }} </template> <template v-else slot="no-options"> - {{ $parent.$parent.$t("page.members.noUserOptions") }} + {{ $t("page.members.noUserOptions") }} </template> <template slot="option" slot-scope="option"> <div class="d-center"> <span v-if="validEmail"> {{ - $parent.$parent.$t("page.members.inviteUserCaption", { + $t("page.members.inviteUserCaption", { displayName: option.displayName, }) }} @@ -48,7 +44,7 @@ {{ option.displayName }} </span> <span v-if="option.hasProjectRole">{{ - $parent.$parent.$t("page.members.alreadyGotRole") + $t("page.members.alreadyGotRole") }}</span> </div> </template> @@ -86,7 +82,7 @@ name="inviteUserToProject" @click="prepareInvitation(newUserRole)" :disabled="!validInvitation" - >{{ $parent.$parent.$t("buttons.invite") }}</b-button + >{{ $t("buttons.invite") }}</b-button > <!-- Import --> <b-button @@ -94,12 +90,12 @@ name="addUserToProject" @click="addUser(newUserRole)" :disabled="!validSelection" - >{{ $parent.$parent.$t("buttons.addUser") }}</b-button + >{{ $t("buttons.addUser") }}</b-button > <b-button name="importUser" @click="$bvModal.show('importUserModal')" - >{{ $parent.$parent.$t("buttons.import") }}</b-button + >{{ $t("buttons.import") }}</b-button > </b-col> </b-row> @@ -118,7 +114,7 @@ type="search" id="filterInput" @input="setFilter" - :placeholder="$parent.$parent.$t('page.members.typeToSearch')" + :placeholder="$t('page.members.typeToSearch')" ></b-form-input> </b-input-group> </b-col> @@ -134,7 +130,7 @@ import "vue-select/dist/vue-select.css"; Vue.component("v-select", vSelect); -import { useUserStore } from "@/modules/user/store"; +import useUserStore from "@/modules/user/store"; import type { ProjectObject, diff --git a/src/modules/project/pages/components/modals/DeleteModal.vue b/src/modules/project/pages/components/modals/DeleteModal.vue index 6456c1d7881ace53cfa8a94badfc98aec3d190a1..75518c90d7c26595c40809850bc864d74080dbf5 100644 --- a/src/modules/project/pages/components/modals/DeleteModal.vue +++ b/src/modules/project/pages/components/modals/DeleteModal.vue @@ -2,17 +2,17 @@ <div> <b-modal :visible="visible" - :title="$parent.$parent.$t(titleKey)" + :title="$t(titleKey)" ok-variant="danger" - :ok-title="$parent.$parent.$t('buttons.delete')" - :cancel-title="$parent.$parent.$t('buttons.cancel')" + :ok-title="$t('buttons.delete')" + :cancel-title="$t('buttons.cancel')" @hidden="$emit('close', $event.target.value)" @ok="$emit('ok', $event.target.value)" @cancel="$emit('close', $event.target.value)" > <div v-html=" - $parent.$parent.$t(descriptionKey, { + $t(descriptionKey, { user: selectedUser, projectName: selectedProject, }) diff --git a/src/modules/project/pages/components/modals/DeleteProjectModal.vue b/src/modules/project/pages/components/modals/DeleteProjectModal.vue index 78f7e70e505778faea5847135c4c5e1620f0f831..e5963bb0fd315806629a84ae678812f2d4de2f92 100644 --- a/src/modules/project/pages/components/modals/DeleteProjectModal.vue +++ b/src/modules/project/pages/components/modals/DeleteProjectModal.vue @@ -6,10 +6,15 @@ @close="close" @hidden="hidden" :hide-footer="true" - :title="$parent.$parent.$t(titleKey)" > + <!-- Title --> + <template #modal-title> + <span class="h6"> {{ $t(titleKey) }} </span> + </template> + + <!-- Body --> <div> - {{ $parent.$parent.$t(descriptionKey) }} + {{ $t(descriptionKey) }} </div> <b-form-group> @@ -21,13 +26,13 @@ <!-- Modal Input Text Field --> <b-form-input v-model="deleteName" - :state="deleteName ? deleteName === displayName : null" + :state="nameValid" :placeholder="displayName" required @keyup.enter.prevent="clickDelete" ></b-form-input> <div class="invalid-tooltip"> - {{ $parent.$parent.$t("page.settings.modal.deleteModalHelp") }} + {{ $t("page.settings.modal.deleteModalHelp") }} </div> </b-form-group> @@ -39,7 +44,7 @@ @click="clickDelete" variant="danger" class="float-right" - :disabled="deleteName !== displayName" + :disabled="!nameValid" >{{ $t("buttons.delete") }}</b-button > </template> @@ -79,6 +84,14 @@ export default defineComponent({ }; }, + computed: { + nameValid(): boolean | null { + return this.deleteName && this.displayName + ? this.deleteName.trim() === this.displayName.trim() + : null; + }, + }, + watch: { open() { this.isOpen = this.open; @@ -93,11 +106,16 @@ export default defineComponent({ this.$emit("close"); }, clickDelete() { - if (this.deleteName === this.displayName) { + if (this.nameValid) { this.$emit("clickDelete"); } }, }, + + emits: { + clickDelete: null, + close: null, + }, }); </script> diff --git a/src/modules/project/pages/components/modals/ImportUserModal.vue b/src/modules/project/pages/components/modals/ImportUserModal.vue index 08c55e0898c6037275ccab95ee8893b460873e7e..148ab409092bf2b7d8d64dacbf3890ba39c74326 100644 --- a/src/modules/project/pages/components/modals/ImportUserModal.vue +++ b/src/modules/project/pages/components/modals/ImportUserModal.vue @@ -1,7 +1,7 @@ <template> <b-modal id="importUserModal" - :title="$parent.$parent.$t('page.members.importUserTitle')" + :title="$t('page.members.importUserTitle')" @hidden="resetModal" size="lg" hide-footer @@ -12,7 +12,7 @@ <b-form-select v-model="selectedProject" @change="getProjectRoles"> <template #first> <b-form-select-option :value="null" disabled>{{ - $parent.$parent.$t("page.members.searchProjectPlaceholder") + $t("page.members.searchProjectPlaceholder") }}</b-form-select-option> </template> <b-form-select-option @@ -37,11 +37,9 @@ :headers="memberHeaders" :items="additionalMembers" :roles="roles" - :emptyText="$parent.$parent.$t('page.members.emptyImportTableText')" - :emptyFilteredText=" - $parent.$parent.$t('page.members.emptyImportTableFilterText') - " - :removeText="$parent.$parent.$t('page.members.removeUser')" + :emptyText="$t('page.members.emptyImportTableText')" + :emptyFilteredText="$t('page.members.emptyImportTableFilterText')" + :removeText="$t('page.members.removeUser')" @selectedItem="removeSelectedRow" /> </div> @@ -58,7 +56,7 @@ name="importUsers" @click="importUser" :disabled="additionalMembers.length === 0" - >{{ $parent.$parent.$t("buttons.import") }}</b-button + >{{ $t("buttons.import") }}</b-button > </div> </b-col> @@ -71,7 +69,7 @@ <script lang="ts"> import { defineComponent, PropType } from "vue-demi"; -import { useProjectStore } from "../../../store"; +import useProjectStore from "../../../store"; import MembersTable from "../MembersTable.vue"; diff --git a/src/modules/project/pages/components/modals/InvitationPendingModal.vue b/src/modules/project/pages/components/modals/InvitationPendingModal.vue index 82c7142cb6a5d412f1cc96b6a71b9a29110f5bf2..74493cec37b047e37e4905a75885b31cc6c068c7 100644 --- a/src/modules/project/pages/components/modals/InvitationPendingModal.vue +++ b/src/modules/project/pages/components/modals/InvitationPendingModal.vue @@ -1,24 +1,24 @@ <template> <b-modal id="invitationPendingModal" - :title="$parent.$parent.$t('page.members.inviteUserTitle')" + :title="$t('page.members.inviteUserTitle')" :hide-footer="true" > <ul> <li v-html=" - $parent.$parent.$t('page.members.invitationPendingTextTop', { + $t('page.members.invitationPendingTextTop', { email: candidateForInvitation.email, }) " ></li> <li> - {{ $parent.$parent.$t("page.members.invitationPendingTextBottom") }} + {{ $t("page.members.invitationPendingTextBottom") }} </li> </ul> <br /> <b-button @click="$bvModal.hide('invitationPendingModal')">{{ - $parent.$parent.$t("buttons.cancel") + $t("buttons.cancel") }}</b-button> </b-modal> </template> diff --git a/src/modules/project/pages/components/modals/InviteUserModal.vue b/src/modules/project/pages/components/modals/InviteUserModal.vue index d14bef5f832041b838feb92e0aa7a2b530b43c8a..0854a6a00d04e0cecbd3bc7742dd19eb8e2516fc 100644 --- a/src/modules/project/pages/components/modals/InviteUserModal.vue +++ b/src/modules/project/pages/components/modals/InviteUserModal.vue @@ -1,14 +1,14 @@ <template> <b-modal id="inviteUserModal" - :title="$parent.$parent.$t('page.members.inviteUserTitle')" + :title="$t('page.members.inviteUserTitle')" :hide-footer="true" > <!-- Body Text - New Invitation --> <div v-if="candidateForInvitation && !candidateForInvitation.invited" v-html=" - $parent.$parent.$t('page.members.inviteUserText', { + $t('page.members.inviteUserText', { email: candidateForInvitation.email, role: getRoleNameFromId(candidateForInvitation.role), projectName: projectName, @@ -20,7 +20,7 @@ <div v-else-if="candidateForInvitation && candidateForInvitation.invited" v-html=" - $parent.$parent.$t('page.members.existingEmailInvitation', { + $t('page.members.existingEmailInvitation', { email: candidateForInvitation.email, }) " @@ -37,8 +37,8 @@ > {{ !candidateForInvitation.invited - ? $parent.$parent.$t("page.members.inviteUser") - : $parent.$parent.$t("page.members.reInviteUser") + ? $t("page.members.inviteUser") + : $t("page.members.reInviteUser") }} </b-button> @@ -48,7 +48,7 @@ variant="secondary" @click="$bvModal.hide('inviteUserModal')" > - {{ $parent.$parent.$t("buttons.cancel") }} + {{ $t("buttons.cancel") }} </b-button> </div> </b-modal> @@ -86,7 +86,7 @@ export default defineComponent({ } }, inviteUser() { - const text = this.$parent.$parent + const text = this.$parent .$t("page.members.invitedUserText", { email: this.candidateForInvitation.email, role: this.candidateForInvitation.role @@ -95,7 +95,7 @@ export default defineComponent({ projectName: this.projectName, }) .toString(); - const errorText = this.$parent.$parent + const errorText = this.$parent .$t("page.members.invitedUserError", { email: this.candidateForInvitation.email, }) diff --git a/src/modules/project/routes.ts b/src/modules/project/routes.ts index 52b2a179fb1afb648cbf311dc36104245d331f8a..8a9c82bb01ce28afb98eaf8555b78e28a3de56d9 100644 --- a/src/modules/project/routes.ts +++ b/src/modules/project/routes.ts @@ -10,11 +10,15 @@ const Members = () => import("./pages/Members.vue"); const Settings = () => import("./pages/Settings.vue"); import { ResourceRoutes } from "@/modules/resource/routes"; +import { ProjectI18nMessages } from "@/modules/project/i18n/index"; export const ProjectRoutes: RouteConfig[] = [ { path: "/", component: RootProjectModule, + meta: { + i18n: ProjectI18nMessages, + }, children: [ { path: "/", @@ -41,6 +45,7 @@ export const ProjectRoutes: RouteConfig[] = [ meta: { breadCrumb: "project.page", default: "project-page", + i18n: ProjectI18nMessages, }, children: [ { diff --git a/src/modules/project/store.ts b/src/modules/project/store.ts index 66b5b07de3953ee2d1456188647ae2490e545fe5..78d963ef0556f2c60ecd4f6a0a054ea75712b353 100644 --- a/src/modules/project/store.ts +++ b/src/modules/project/store.ts @@ -14,6 +14,7 @@ import { RoleApi, SubProjectApi, VisibilityApi, + LicenseApi, } from "@coscine/api-client"; import type { OrganizationObject, @@ -32,6 +33,7 @@ import type { UpdateResourceObject, } from "@coscine/api-client/dist/types/Coscine.Api.Quota"; import type { Route } from "vue-router"; +import { updatedDiff } from "deep-object-diff"; import useUserStore from "../user/store"; @@ -54,6 +56,7 @@ export const useProjectStore = defineStore({ topLevelProjects: null, disciplines: null, + licenses: null, organizations: null, roles: null, visibilities: null, @@ -70,11 +73,8 @@ export const useProjectStore = defineStore({ */ getters: { currentProject(): ProjectObject | null { - if (this.currentSlug && this.allProjects) { - const project = this.allProjects?.find( - (p) => p.slug === this.currentSlug - ); - return project ? project : null; + if (this.currentSlug && this.visitedProjects[this.currentSlug]) { + return this.visitedProjects[this.currentSlug]; } else { return null; } @@ -256,7 +256,9 @@ export const useProjectStore = defineStore({ if (project && project.id && project.slug) { const apiResponse = await ProjectApi.projectGetResources(project.id); if (apiResponse.status === StatusCodes.OK) { - this.visitedProjects[project.slug].resources = apiResponse.data; + this.visitedProjects[project.slug].resources = reactive( + apiResponse.data + ); } else { // Handle other Status Codes } @@ -291,7 +293,7 @@ export const useProjectStore = defineStore({ async getResourceQuotas( project: ProjectObject, resourceType: ResourceTypeInformation - ) { + ): Promise<ResourceQuota[] | undefined> { if (project.id && resourceType.id) { const apiResponse = await QuotaApi.quotaGetResourceQuotas( project.id, @@ -303,9 +305,27 @@ export const useProjectStore = defineStore({ // Handle other Status Codes } } else { - console.error( - "Selected project's or resource types' e.g. ID is undefined." + console.error("Selected project's or resource types' ID is undefined."); + } + }, + + // ToDo: Consider removing if unused in coscine/issues#2003 + async getResourceTypeQuota( + project: ProjectObject, + resourceType: ResourceTypeInformation + ): Promise<ProjectQuotaReturnObject | undefined> { + if (project.id && resourceType.id) { + const apiResponse = await ProjectApi.projectQuota( + project.id, + resourceType.id ); + if (apiResponse.status === StatusCodes.OK) { + return apiResponse.data; + } else { + // Handle other Status Codes + } + } else { + console.error("Selected project's or resource types' ID is undefined."); } }, @@ -360,6 +380,15 @@ export const useProjectStore = defineStore({ } }, + async retrieveLicenses() { + const apiResponse = await LicenseApi.licenseIndex(); + if (apiResponse.status === StatusCodes.OK) { + this.licenses = apiResponse.data; + } else { + // Handle other Status Codes + } + }, + async retrieveDisciplines() { const apiResponse = await DisciplineApi.disciplineIndex(); if (apiResponse.status === StatusCodes.OK) { @@ -460,26 +489,38 @@ export const useProjectStore = defineStore({ async refreshProjectInformation(parentProject: ProjectObject | null) { await Promise.all([ - this.retrieveAllProjects(), // Please make that method obsolete... + this.retrieveAllProjects(), this.retrieveTopLevelProjects(), ]); if (parentProject && parentProject.slug) { await this.retrieveProjectBySlug(parentProject.slug); + await Promise.all([ + this.retrieveSubProjects(parentProject), + this.retrieveResources(parentProject), + ]); } }, addProjectAsVisited(project: ProjectObject | null) { if (project && project.slug) { - // Important! Keep object assignment reactive() - const visitedProject: VisitedProjectObject = reactive({ - ...project, - invitations: null, - resources: null, - subProjects: null, - roles: null, - quotas: null, - }); - this.visitedProjects[project.slug] = visitedProject; + const updatedKeys = updatedDiff( + this.visitedProjects[project.slug], + project + ); + if (!this.visitedProjects[project.slug]) { + // Important! Keep object assignment reactive() + const visitedProject: VisitedProjectObject = reactive({ + ...project, + invitations: null, + resources: null, + subProjects: null, + roles: null, + quotas: null, + }); + this.visitedProjects[project.slug] = visitedProject; + } else if (updatedKeys && Object.keys(updatedKeys).length > 0) { + Object.assign(this.visitedProjects[project.slug], updatedKeys); + } } }, @@ -530,6 +571,14 @@ export const useProjectStore = defineStore({ }); }, + async createApplicationProfileAnalytics(project: ProjectObject | null) { + if (project && project.id) { + await ProjectApi.projectCreateApplicationProfile(project.id); + } else { + console.error("Selected project is null or its ID is undefined."); + } + }, + async deleteInvitation(invitationId: string) { try { await ProjectApi.projectDeleteInvitation(invitationId); diff --git a/src/modules/project/types.d.ts b/src/modules/project/types.d.ts index 36614cf98894d5ca00d8b3933c227fecd588b3b7..ad3a8f4db4e1917de56a02cd41fd5b53411a14c3 100644 --- a/src/modules/project/types.d.ts +++ b/src/modules/project/types.d.ts @@ -1,6 +1,7 @@ import type { DisciplineObject, InvitationReturnObject, + LicenseObject, OrganizationObject, ProjectObject, ProjectQuotaReturnObject, @@ -36,6 +37,7 @@ export interface ProjectState { topLevelProjects: ProjectObject[] | null; disciplines: DisciplineObject[] | null; + licenses: LicenseObject[] | null; organizations: OrganizationObject[] | null; roles: RoleObject[] | null; visibilities: VisibilityObject[] | null; diff --git a/src/modules/resource/ResourceModule.vue b/src/modules/resource/ResourceModule.vue index ffbc91c75fcf4d3b02025712cee35bf5fa25618b..d1d2f808b5d5719e2dd4ba9bf8f695ce51352529 100644 --- a/src/modules/resource/ResourceModule.vue +++ b/src/modules/resource/ResourceModule.vue @@ -9,10 +9,10 @@ import { defineComponent } from "vue-demi"; import { ResourceI18nMessages } from "./i18n"; // import the store for current module -import { useResourceStore } from "./store"; -import { useProjectStore } from "@/modules/project/store"; +import useResourceStore from "./store"; +import useProjectStore from "@/modules/project/store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; import type { VisitedResourceObject } from "./types"; import type { ResourceTypeInformation } from "@coscine/api-client/dist/types/Coscine.Api.Resources"; @@ -27,7 +27,6 @@ export default defineComponent({ return { mainStore, resourceStore, projectStore }; }, - i18n: { messages: cloneDeep(ResourceI18nMessages) }, created() { this.initialize(); @@ -52,6 +51,7 @@ export default defineComponent({ watch: { resourceTypeInformation() { + this.retrieveUsedQuota(); this.setI18n(); }, }, @@ -67,15 +67,23 @@ export default defineComponent({ if (!this.resourceStore.currentFullApplicationProfile) { this.resourceStore.retrieveApplicationProfile(this.resource); } + } + // Extract Quota Retrieval, resourceTypeInformation is not loaded yet on direct links and is undefined + this.retrieveUsedQuota(); + this.setI18n(); + }, + + retrieveUsedQuota() { + if (this.resource) { if ( !this.resourceStore.currentUsedQuota && - this.resourceTypeInformation?.isQuotaAdjustable + this.resourceTypeInformation?.isQuotaAvailable ) { this.resourceStore.retrieveUsedQuota(this.resource); } } - this.setI18n(); }, + setI18n() { this.$i18n.mergeLocaleMessage("de", cloneDeep(ResourceI18nMessages.de)); this.$i18n.mergeLocaleMessage("en", cloneDeep(ResourceI18nMessages.en)); diff --git a/src/modules/resource/components/create-resource/Configuration.vue b/src/modules/resource/components/create-resource/Configuration.vue new file mode 100644 index 0000000000000000000000000000000000000000..621822ffbc3ba4f888a35d5f884a4bb127c6a6c3 --- /dev/null +++ b/src/modules/resource/components/create-resource/Configuration.vue @@ -0,0 +1,281 @@ +<template> + <div class="setup"> + <!-- Resource Type Dropdown --> + <div v-if="resourceTypes && resourceTypes.length > 0"> + <coscine-form-group + :mandatory="true" + labelFor="ResourceTypes" + :label="$t('page.createResource.configuration.labels.resourceType')" + :isLoading="isLoading" + > + <multiselect + v-if="resourceTypes.length > 1" + id="ResourceTypes" + v-model="selectedResourceType" + :options="resourceTypes" + @input="setSelectedResourceTypeInformation" + :multiple="false" + :hide-selected="false" + label="iDisplayName" + track-by="iDisplayName" + :placeholder=" + $t('page.createResource.multiselect.placeholderResourceText') + " + select-label="" + selected-label="" + deselect-label="" + > + <span slot="noResult">{{ + $t("page.createResource.multiselect.noResults") + }}</span> + <span slot="noOptions">{{ + $t("page.createResource.multiselect.noOptions") + }}</span> + </multiselect> + + <!-- Resource Text Field (see condition) --> + <b-input + v-else-if="resourceTypes.length === 1" + id="ResourceType" + v-model="selectedResourceType.iDisplayName" + disabled + /> + </coscine-form-group> + + <!-- Resource Description --> + <coscine-form-group + v-if="selectedResourceType" + :label="`${selectedResourceType.iFullName}:`" + > + <p>{{ selectedResourceType.iDescription }}</p> + </coscine-form-group> + </div> + + <!-- Setup Slider --> + <ConfigurationSizeSlider v-if="resourceTypeHasSize" v-model="resource" /> + + <!-- Button Next (wrapper needed for Popover) --> + <div id="divButtonNext" class="float-right"> + <b-button + @click.prevent="next" + variant="outline-primary" + :disabled="!valid" + >{{ $t("buttons.next") }} + </b-button> + </div> + + <!-- Popover --> + <b-popover + v-if=" + resource.resourceTypeOption && + resource.resourceTypeOption.Size <= 0 && + resourceTypeHasSize + " + target="divButtonNext" + :title="$t('page.createResource.configuration.popover.title')" + placement="top" + triggers="hover" + :delay="{ show: 0, hide: 500 }" + > + {{ $t("page.createResource.configuration.popover.body") }} + + <!-- Router Link --> + <router-link v-if="isOwner" :to="{ name: 'project-quota' }"> + {{ $t("page.createResource.configuration.needMore") }} + </router-link> + </b-popover> + </div> +</template> + +<script lang="ts"> +import { defineComponent, PropType } from "vue-demi"; +// import the store for current module +import useResourceStore from "../../store"; +import useProjectStore from "@/modules/project/store"; +// import the main store +import useMainStore from "@/store/index"; +import ConfigurationSizeSlider from "./ConfigurationSizeSlider.vue"; +import "@/plugins/deprecated/vue-multiselect"; +import type { + ResourceCreateObject, + ResourceObject, + ResourceTypeInformation, + ResourceTypeObject, +} from "@coscine/api-client/dist/types/Coscine.Api.Resources"; +import type { LabeledResourceObject, ResourceTypeOption } from "../../types"; + +export default defineComponent({ + setup() { + const mainStore = useMainStore(); + const projectStore = useProjectStore(); + const resourceStore = useResourceStore(); + + return { mainStore, projectStore, resourceStore }; + }, + + components: { + ConfigurationSizeSlider, + }, + + data() { + return { + resource: this.value, + selectedResourceType: null as LabeledResourceObject | null, + }; + }, + + props: { + value: { + type: Object as PropType<ResourceObject>, + required: true, + }, + isLoading: { + default: false, + type: Boolean, + }, + }, + + computed: { + isOwner(): boolean | undefined { + return this.projectStore.currentUserRoleIsOwner; + }, + resourceTypes(): LabeledResourceObject[] | null { + let labeledResourceTypes: LabeledResourceObject[] = []; + const resourceTypes = this.resourceStore.resourceTypes; + if (resourceTypes) { + resourceTypes.forEach((r) => { + let labeledResourceType: LabeledResourceObject = { + iDisplayName: this.$t( + "resourceTypes." + r.displayName + ".displayName" + ).toString(), + iFullName: this.$t( + "resourceTypes." + r.displayName + ".fullName" + ).toString(), + iDescription: this.$t( + "resourceTypes." + r.displayName + ".description" + ).toString(), + }; + Object.assign(labeledResourceType, r); + labeledResourceTypes.push(labeledResourceType); + }); + return labeledResourceTypes.sort((a, b) => { + const valueA = a.iDisplayName.toUpperCase(); + const valueB = b.iDisplayName.toUpperCase(); + return valueA < valueB ? -1 : valueA > valueB ? 1 : 0; + }); + } else { + return null; + } + }, + resourceTypeHasSize(): boolean { + if ( + this.selectedResourceType && + this.selectedResourceType.resourceCreate && + this.selectedResourceType.resourceCreate.components + ) { + return ( + this.selectedResourceType.resourceCreate.components.flatMap((e) => + e.filter((z) => z === "Size") + ).length > 0 + ); + } else { + return false; + } + }, + valid(): boolean { + return !( + !this.selectedResourceType || + (this.resource.resourceTypeOption as ResourceTypeOption).Size <= 0 + ); + }, + }, + + watch: { + resource: { + handler() { + this.$emit("input", this.resource); + }, + deep: true, + }, + resourceTypes() { + this.onResourceTypesLoaded(); + this.initTabContent(); + }, + valid() { + this.$emit("valid", this.valid); + }, + }, + + created() { + this.onResourceTypesLoaded(); + this.initTabContent(); + + this.mainStore.$subscribe((mutation) => { + if (mutation.type == "patch function") { + this.initTabContent(); + } + }); + }, + + methods: { + next() { + this.$emit("next"); + }, + + initTabContent() { + if (this.resourceTypes && this.resource.type && this.resource.type.id) { + // A resource type has been selected, but the dropdown is empty. Set selection in dropdown. + const selection = this.resourceTypes.find( + (r) => r.id === this.resource.type?.id + ); + if (selection) { + this.selectedResourceType = selection; + } + } + }, + + onResourceTypesLoaded() { + if (this.resourceTypes && this.resourceTypes.length === 1) { + this.setSelectedResourceTypeInformation(this.resourceTypes[0]); + } + }, + + setSelectedResourceTypeInformation( + resourceTypeInformation: ResourceTypeInformation | null + ) { + if (resourceTypeInformation) { + // Set Resource Type + const type: ResourceTypeObject = { + id: resourceTypeInformation.id, + displayName: resourceTypeInformation.displayName, + }; + this.$set(this.resource, "type", type); + + // Set Resource Type Options + let resourceTypeOptions: ResourceCreateObject = {}; + if ( + resourceTypeInformation.resourceCreate && + resourceTypeInformation.resourceCreate.components + ) { + for (const key of resourceTypeInformation.resourceCreate + .components[0]) { + Object.assign(resourceTypeOptions, { [key]: undefined }); + } + this.$set(this.resource, "resourceTypeOption", resourceTypeOptions); + } + } else { + this.$set(this.resource, "type", undefined); + this.$set(this.resource, "resourceTypeOption", undefined); + } + }, + }, + + emits: { + valid: (_: boolean) => null, + next: null, + input: (_: ResourceObject) => null, + }, +}); +</script> + +<style></style> diff --git a/src/modules/resource/components/create-resource/ConfigurationSizeSlider.vue b/src/modules/resource/components/create-resource/ConfigurationSizeSlider.vue new file mode 100644 index 0000000000000000000000000000000000000000..8ef0793a2db2e0d530d28002ff63171b0d577f65 --- /dev/null +++ b/src/modules/resource/components/create-resource/ConfigurationSizeSlider.vue @@ -0,0 +1,162 @@ +<template> + <div class="SetupPageRds"> + <coscine-form-group + :mandatory="true" + :label="$t('page.createResource.configuration.labels.size')" + > + <!-- Slider --> + <b-form-input + id="slider" + :disabled="!sliderValue || max < min" + @change="update" + type="range" + :min="min" + :max="max" + :value="sliderValue" + /> + <div> + {{ sliderText }} + + <!-- Router Link --> + <router-link v-if="isOwner" :to="{ name: 'project-quota' }"> + {{ $t("page.createResource.configuration.needMore") }} + </router-link> + </div> + </coscine-form-group> + </div> +</template> + +<script lang="ts"> +import { defineComponent, PropType } from "vue-demi"; +import useProjectStore from "@/modules/project/store"; +import { isNumber } from "lodash"; +import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.Project"; +import type { ResourceObject } from "@coscine/api-client/dist/types/Coscine.Api.Resources"; +import { ResourceTypeOption } from "../../types"; + +export default defineComponent({ + setup() { + const projectStore = useProjectStore(); + + return { projectStore }; + }, + + data() { + return { + resource: this.value, + min: 1, + max: 1, + sliderValue: 0, // used to set the Resource Size + }; + }, + + props: { + value: { + type: Object as PropType<ResourceObject>, + required: true, + }, + }, + + computed: { + project(): ProjectObject | null { + return this.projectStore.currentProject; + }, + isOwner(): boolean | undefined { + return this.projectStore.currentUserRoleIsOwner; + }, + sliderText(): string { + const formatNumber = (num: number) => { + if (isNaN(num)) { + return num; + } + const locale = this.$root.$i18n.locale; + return num.toLocaleString(locale); + }; + const text = this.$t("page.createResource.configuration.bucketSize", { + size: formatNumber(this.sliderValue), + files: formatNumber(this.sliderValue * 2048), + }).toString(); + return text; + }, + }, + + watch: { + resource: { + handler() { + this.$emit("input", this.resource); + }, + deep: true, + }, + "resource.resourceTypeOption": { + handler() { + this.initTabContent(); + this.retrieveQuota(); + this.setResourceSize(this.sliderValue); + }, + deep: true, + }, + }, + + created() { + this.initTabContent(); + this.retrieveQuota(); + this.setResourceSize(this.sliderValue); + }, + + methods: { + update(value: string) { + const pos = parseInt(value, 10); + this.sliderValue = pos; + this.setResourceSize(pos); + }, + + retrieveQuota() { + if (this.projectStore.currentQuotas && this.resource.type) { + const resourceDisplayName = this.resource.type.displayName; + const quota = this.projectStore.currentQuotas.find( + (q) => q.name === resourceDisplayName + ); + if (quota) { + // Calculate slider maximum from Reserved and Used + if (isNumber(quota.allocated) && isNumber(quota.used)) { + this.max = quota.allocated - quota.used; // allocated == reserved + // Prevent negative maximum values + if (this.max < 0) { + this.max = 0; + } + // Prevent above maximum values + if (this.sliderValue > this.max) { + this.sliderValue = this.max; + } + // Set slider to 1 when maximum is available + if (this.max > 0 && this.sliderValue === 0) { + this.sliderValue = 1; + } + } + } + } + }, + initTabContent() { + if ( + this.sliderValue == 0 && + this.resource.resourceTypeOption && + isNumber((this.resource.resourceTypeOption as ResourceTypeOption).Size) + ) { + // A resource type has been selected, but the slider's value is unset. Set slider value. + this.sliderValue = ( + this.resource.resourceTypeOption as ResourceTypeOption + ).Size; + } + }, + setResourceSize(size: number) { + this.$set(this.resource.resourceTypeOption, "Size", size); + }, + }, + + emits: { + input: (_: ResourceObject) => null, + }, +}); +</script> + +<style></style> diff --git a/src/modules/resource/components/create-resource/General.vue b/src/modules/resource/components/create-resource/General.vue new file mode 100644 index 0000000000000000000000000000000000000000..6f7c98c1227a4192ed1e1b28d5f905b2483c311a --- /dev/null +++ b/src/modules/resource/components/create-resource/General.vue @@ -0,0 +1,526 @@ +<template> + <div class="general"> + <!-- Form --> + <b-form id="edit_form" @submit.stop.prevent="next"> + <!-- Resource Name --> + <coscine-form-group + :mandatory="true" + labelFor="ResourceName" + :label="$t('form.resource.resourceNameLabel')" + :isLoading="isLoading" + > + <b-form-input + id="ResourceName" + v-model="$v.resourceForm.resourceName.$model" + @input="translateResourceNameToDisplayName" + :state=" + $v.resourceForm.resourceName.$dirty + ? !$v.resourceForm.resourceName.$error + : null + " + :placeholder="$t('form.resource.resourceName')" + :maxlength="maxLengthFromValidation($v.resourceForm.resourceName)" + required + :readonly="readonly" + /> + <div class="invalid-tooltip"> + {{ + $t("form.resource.resourceNameHelp", { + maxLength: maxLengthFromValidation($v.resourceForm.resourceName), + }) + }} + </div> + </coscine-form-group> + + <!-- Display Name --> + <coscine-form-group + :mandatory="true" + labelFor="DisplayName" + :label="$t('form.resource.displayNameLabel')" + :isLoading="isLoading" + > + <b-form-input + id="DisplayName" + v-model="$v.resourceForm.displayName.$model" + @input="isLockedDisplayName = true" + :state=" + $v.resourceForm.displayName.$dirty + ? !$v.resourceForm.displayName.$error + : null + " + :placeholder="$t('form.resource.displayName')" + :maxlength="maxLengthFromValidation($v.resourceForm.displayName)" + required + :readonly="readonly" + /> + <div class="invalid-tooltip"> + {{ + $t("form.resource.displayNameHelp", { + maxLength: maxLengthFromValidation($v.resourceForm.displayName), + }) + }} + </div> + </coscine-form-group> + + <!-- Description --> + <coscine-form-group + :mandatory="true" + labelFor="Description" + :label="$t('form.resource.resourceDescriptionLabel')" + :isLoading="isLoading" + > + <b-form-textarea + id="Description" + v-model="$v.resourceForm.description.$model" + :state=" + $v.resourceForm.description.$dirty + ? !$v.resourceForm.description.$error + : null + " + :placeholder="$t('form.resource.resourceDescription')" + :maxlength="maxLengthFromValidation($v.resourceForm.description)" + required + :readonly="readonly" + /> + <div class="invalid-tooltip"> + {{ + $t("form.resource.resourceDescriptionHelp", { + maxLength: maxLengthFromValidation($v.resourceForm.description), + }) + }} + </div> + </coscine-form-group> + + <!-- Discipline --> + <coscine-form-group + :mandatory="true" + labelFor="Discipline" + :label="$t('form.resource.resourceDisciplineLabel')" + :isLoading="isLoading" + > + <multiselect + id="Discipline" + v-model="$v.resourceForm.disciplines.$model" + :options="disciplines" + :multiple="true" + :hide-selected="true" + :label="disciplineLabel" + :track-by="disciplineLabel" + :placeholder="$t('form.resource.resourceDiscipline')" + :disabled="readonly" + > + <template #singleLabel(props)> + <div> + {{ props.option[disciplineLabel] }} + </div> + </template> + <template #option(props)> + <div> + {{ props.option[disciplineLabel] }} + </div> + </template> + </multiselect> + </coscine-form-group> + + <!-- Keywords --> + <coscine-form-group + labelFor="Keywords" + :label="$t('form.resource.resourceKeywordsLabel')" + :isLoading="isLoading" + > + <multiselect + id="Keywords" + v-model="selectedKeyword" + :options="selectedKeyword" + :placeholder="$t('form.resource.resourceKeywordsPlaceholder')" + :multiple="true" + :taggable="true" + :max="limitKeywords(selectedKeyword)" + :tag-placeholder="$t('form.resource.tagPlaceholder')" + @tag="addTag" + @remove="$v.resourceForm.keywords.$touch()" + :disabled="readonly" + > + <template #maxElements> + {{ + $t("form.resource.resourceKeywordsHelp", { + maxLength: maxLengthFromValidation($v.resourceForm.keywords), + }) + }} + </template> + <template #noOptions> + {{ + $t("form.resource.resourceKeywordsEmpty", { + maxLength: maxLengthFromValidation($v.resourceForm.keywords), + }) + }} + </template> + </multiselect> + </coscine-form-group> + + <!-- Visibility --> + <coscine-form-group + :mandatory="true" + labelFor="Visibility" + :label="$t('form.resource.resourceMetadataVisibilityLabel')" + :isLoading="isLoading" + > + <b-form-radio-group + name="radios-stacked" + v-model="selectedVisibility" + @change="setVisibility(selectedVisibility)" + :options="visibilities" + text-field="displayName" + value-field="id" + stacked + :disabled="readonly" + /> + </coscine-form-group> + + <!-- License --> + <coscine-form-group + labelFor="ResourceLicense" + :label="$t('form.resource.resourceLicenseLabel')" + :isLoading="isLoading" + :info="true" + > + <template #popover> + {{ $t("form.resource.resourceLicensePopover") }} + <b-link + :href="$t('form.resource.resourceLicensePopoverUrl').toString()" + target="_blank" + >{{ $t("default.help") }} + </b-link> + </template> + <b-form-select + id="ResourceLicense" + v-model="selectedLicense" + @change="setLicense(selectedLicense)" + :options="licenses" + text-field="displayName" + value-field="id" + :state=" + $v.resourceForm.license.$dirty + ? !$v.resourceForm.license.$error + : null + " + :placeholder="$t('form.resource.resourceLicense')" + :disabled="readonly" + > + <template #first> + <option :value="null" disabled> + {{ $t("form.resource.resourceLicenseSelect") }} + </option> + </template> + </b-form-select> + </coscine-form-group> + + <!-- Internal Rules for Reuse --> + <coscine-form-group + labelFor="InternalRulesForReuse" + :label="$t('form.resource.resourceReuseLabel')" + :isLoading="isLoading" + :info="true" + > + <template #popover> + {{ $t("form.resource.resourceReusePopover") }} + <b-link + :href="$t('form.resource.resourceReusePopoverUrl').toString()" + target="_blank" + >{{ $t("default.help") }} + </b-link> + </template> + <b-form-input + id="InternalRulesForReuse" + v-model="$v.resourceForm.usageRights.$model" + :state=" + $v.resourceForm.usageRights.$dirty + ? !$v.resourceForm.usageRights.$error + : null + " + :placeholder="$t('form.resource.resourceReuse')" + :maxlength="maxLengthFromValidation($v.resourceForm.usageRights)" + required + :readonly="readonly" + /> + <div class="invalid-tooltip"> + {{ + $t("form.resource.resourceReuseHelp", { + maxLength: maxLengthFromValidation($v.resourceForm.usageRights), + }) + }} + </div> + </coscine-form-group> + </b-form> + </div> +</template> + +<script lang="ts"> +import { defineComponent, PropType } from "vue-demi"; +// import the store for current module +import useResourceStore from "../../store"; +import useProjectStore from "@/modules/project/store"; +// import the main store +import useMainStore from "@/store/index"; +import { Validation, validationMixin } from "vuelidate"; +import { required, maxLength } from "vuelidate/lib/validators"; +import "@/plugins/deprecated/vue-multiselect"; +import type { + DisciplineObject, + LicenseObject, + ResourceObject, + VisibilityObject, +} from "@coscine/api-client/dist/types/Coscine.Api.Resources"; +import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.Project"; + +export default defineComponent({ + setup() { + const mainStore = useMainStore(); + const projectStore = useProjectStore(); + const resourceStore = useResourceStore(); + + return { mainStore, projectStore, resourceStore }; + }, + + mixins: [validationMixin], + + validations: { + resourceForm: { + resourceName: { + required, + maxLength: maxLength(200), + }, + displayName: { + required, + maxLength: maxLength(25), + }, + description: { + required, + maxLength: maxLength(5000), + }, + disciplines: { + required, + }, + license: {}, + keywords: { + maxLength: maxLength(1000), + }, + visibility: { + required, + }, + usageRights: { + maxLength: maxLength(500), + }, + }, + }, + + props: { + value: { + type: Object as PropType<ResourceObject>, + required: true, + }, + isLoading: { + default: false, + type: Boolean, + }, + readonly: { + default: false, + type: Boolean, + }, + }, + + data() { + return { + resourceForm: this.value, + selectedKeyword: [] as Array<string>, + selectedLicense: null as string | null, + selectedVisibility: "" as string | undefined, + isLockedDisplayName: false, + }; + }, + + computed: { + project(): ProjectObject | null { + return this.projectStore.currentProject; + }, + resource(): ResourceObject | null { + return this.resourceStore.currentResource; + }, + visibilities(): VisibilityObject[] | null { + return this.projectStore.visibilities; + }, + licenses(): LicenseObject[] { + return this.projectStore.licenses ?? []; + }, + disciplines(): DisciplineObject[] { + return this.projectStore.disciplines ?? []; + }, + disciplineLabel(): string { + let locale = this.$root.$i18n.locale; + locale = locale.charAt(0).toUpperCase() + locale.slice(1); + return `displayName${locale}`; + }, + valid(): boolean { + return !this.$v.resourceForm.$invalid; + }, + }, + + watch: { + project() { + this.initTabContent(); + }, + resource() { + this.initTabContent(); + }, + visibilities() { + // Used in Create Resource + if (!this.resourceForm.visibility) { + this.setDefaultVisibility(); + } + }, + selectedKeyword() { + const delimiter = ";"; + let keywords = ""; + this.selectedKeyword.forEach((element) => { + keywords += `${element}${delimiter}`; + }); + if (keywords.charAt(keywords.length - 1) === delimiter) { + keywords = keywords.substring(0, keywords.length - 1); + } + this.resourceForm.keywords = keywords; + }, + resourceForm: { + handler() { + this.$emit("input", this.resourceForm); + }, + deep: true, + }, + "$v.resourceForm": { + handler() { + this.$emit("validation", this.$v.resourceForm); + }, + deep: true, + }, + valid() { + this.$emit("valid", this.valid); + }, + }, + + created() { + this.initTabContent(); + }, + + methods: { + initTabContent() { + if (this.project) { + this.loadDisciplines(this.project); + this.loadKeywords(); + } + if (this.resourceForm.license && this.resourceForm.license.id) { + this.selectedLicense = this.resourceForm.license.id; + } + if (this.resourceForm.visibility && this.resourceForm.visibility.id) { + this.selectedVisibility = this.resourceForm.visibility.id; + } else { + this.setDefaultVisibility(); + } + }, + + maxLengthFromValidation(validation: Validation): string { + let value = ""; + try { + const prop: string = validation.$params.maxLength.max.toString(); + if (prop) { + value = prop; + } + } catch (error) { + return value; + } + return value; + }, + + limitKeywords(values: []): number | null { + // Should the max number of allowed characters is exceeded, prevent the addition of further tags + if (this.$v.resourceForm.keywords?.$invalid) { + return values.length; + } else { + return null; + } + }, + + addTag(newTag: string) { + this.selectedKeyword.push(newTag); + this.$v.resourceForm.keywords?.$touch(); + }, + + loadDisciplines(project: ProjectObject) { + let fromProject = [] as DisciplineObject[]; + // When there are no disciplines selected, take the disciplines provided by the project + if ( + !this.resourceForm.disciplines || + this.resourceForm.disciplines.length == 0 + ) { + fromProject = project.disciplines ? project.disciplines : []; + } + let fromResource: DisciplineObject[] = this.resourceForm.disciplines + ? this.resourceForm.disciplines + : []; + this.resourceForm.disciplines = [...fromProject, ...fromResource]; + }, + + loadKeywords() { + let fromResource = this.resourceForm.keywords + ? this.resourceForm.keywords.split(";") + : []; + let keywords = fromResource; + this.selectedKeyword = [...new Set(keywords)]; // get only unique values + }, + + setVisibility(id: string) { + if (this.visibilities) { + const visibility = this.visibilities.find( + (entry) => entry.id === id + ) as VisibilityObject; + this.resourceForm.visibility = visibility; + this.$v.resourceForm.visibility?.$touch(); + } + }, + + setLicense(id: string) { + if (this.licenses) { + const license = this.licenses.find( + (entry) => entry.id === id + ) as LicenseObject; + this.resourceForm.license = license; + this.$v.resourceForm.license?.$touch(); + } + }, + + setDefaultVisibility() { + if (this.visibilities) { + const visibility = this.visibilities.find( + (entry) => entry.displayName === "Project Members" + ) as VisibilityObject; + this.selectedVisibility = visibility.id; + this.resourceForm.visibility = visibility; + } + }, + + translateResourceNameToDisplayName() { + if (!this.isLockedDisplayName && this.resourceForm.resourceName) { + this.resourceForm.displayName = + this.resourceForm.resourceName.substring(0, 25); + this.$v.resourceForm.displayName?.$touch(); + } + }, + }, + + emits: { + valid: (_: boolean) => null, + validation: (_: Validation) => null, + input: (_: ResourceObject) => null, + }, +}); +</script> + +<style></style> diff --git a/src/modules/resource/components/create-resource/Metadata.vue b/src/modules/resource/components/create-resource/Metadata.vue new file mode 100644 index 0000000000000000000000000000000000000000..02887dd7a69638e8527df7038599e563c50e1a53 --- /dev/null +++ b/src/modules/resource/components/create-resource/Metadata.vue @@ -0,0 +1,202 @@ +<template> + <div class="metadata"> + <div> + <!-- Application Profile Dropdown --> + <coscine-form-group + labelFor="ApplicationProfiles" + :mandatory="true" + :label="$t('page.createResource.metadata.applicationProfileLabel')" + > + <div class="d-flex align-items-center"> + <b-form-select + id="ApplicationProfiles" + v-model="selectedApplicationProfile" + :options="applicationProfileList" + @change="notifyFormGenerator" + :placeholder=" + $t('page.createResource.metadata.selectApplicationProfile') + " + > + <template #first> + <b-form-select-option :value="null" disabled> + {{ + $t("page.createResource.metadata.selectApplicationProfile") + }} + </b-form-select-option> + </template> + </b-form-select> + + <span class="font-weight-bold mx-1"> + {{ $t("default.or") }} + </span> + + <!-- Create Button --> + <span id="createButton"> + <b-button + variant="outline-primary" + name="createAP" + :disabled="!isEmailValid" + @click="$bvModal.show('createAPModal')" + >{{ $t("buttons.create") }} + </b-button> + </span> + </div> + + <b-tooltip target="createButton" triggers="hover"> + <i18n + v-if="!isEmailValid" + path="page.createResource.metadata.createAp.tooltipDisabled" + > + <template #linkToUserProfile> + <router-link + :to="{ name: 'userprofile' }" + class="font-weight-bold" + > + {{ $t("page.createResource.metadata.createAp.tooltipHere") }} + </router-link> + </template> + </i18n> + <i18n v-else path="page.createResource.metadata.createAp.tooltip" /> + </b-tooltip> + </coscine-form-group> + </div> + + <!-- Create Application Profile Modal --> + <CreateAPModal id="createAPModal" /> + + <!-- Form Generator --> + <b-row v-if="isLoadingFormGenerator" align-h="center" class="my-2"> + <b-spinner variant="secondary" /> + </b-row> + <FormGenerator + v-else + :key="resource.applicationProfile" + :fixedValueMode="fixedValueMode" + :fixedValues="resource.fixedValues" + :applicationProfileId="resource.applicationProfile" + :SHACLDefinition="applicationProfileString" + :classReceiver="receiveClass" + :userReceiver="async () => user" + mimeType="application/ld+json" + /> + </div> +</template> + +<script lang="ts"> +import { defineComponent, PropType } from "vue-demi"; +// import the store for current module +import useResourceStore from "../../store"; +import useUserStore from "@/modules/user/store"; +import "@/plugins/form-generator"; +import CreateAPModal from "./modals/CreateAPModal.vue"; +import type { ResourceObject } from "@coscine/api-client/dist/types/Coscine.Api.Resources"; +import type { GroupedApplicationProfiles } from "../../types"; +import type { BilingualLabels } from "@coscine/api-client/dist/types/Coscine.Api.Metadata"; +import type { UserObject } from "@coscine/api-client/dist/types/Coscine.Api.User"; + +export default defineComponent({ + setup() { + const resourceStore = useResourceStore(); + const userStore = useUserStore(); + + return { resourceStore, userStore }; + }, + + components: { + CreateAPModal, + }, + + props: { + value: { + type: Object as PropType<ResourceObject>, + required: true, + }, + applicationProfileList: { + type: Array as PropType<GroupedApplicationProfiles[]>, + required: true, + }, + applicationProfileString: { + type: [String, null] as PropType<string | null>, + default: null, + }, + isLoadingFormGenerator: { + type: Boolean, + required: true, + }, + }, + + data() { + return { + resource: this.value, + selectedApplicationProfile: null as string | null, + fixedValueMode: true, + showModal: false, + }; + }, + + computed: { + isEmailValid(): boolean { + if ( + this.user && + this.user.emailAddress && + this.user.emailAddress.trim() !== "" + ) { + // Assume API contains only valid email addresses + return true; + } else { + return false; + } + }, + user(): UserObject | null { + return this.userStore.user; + }, + valid(): boolean { + return !( + !this.resource.applicationProfile || + this.resource.applicationProfile.trim() === "" + ); + }, + }, + + watch: { + resource: { + handler() { + this.$emit("input", this.resource); + }, + deep: true, + }, + valid() { + this.$emit("valid", this.valid); + }, + }, + + created() { + if (this.resource && this.resource.applicationProfile) { + this.selectedApplicationProfile = this.resource.applicationProfile; + } + }, + + methods: { + async receiveClass(className: string): Promise<BilingualLabels> { + return await this.resourceStore.getClass(className); + }, + notifyFormGenerator() { + if (!this.resource.fixedValues) { + this.$set(this.resource, "fixedValues", {}); + } + this.$set( + this.resource, + "applicationProfile", + this.selectedApplicationProfile + ); + }, + }, + + emits: { + valid: (_: boolean) => null, + input: (_: ResourceObject) => null, + }, +}); +</script> + +<style></style> diff --git a/src/modules/resource/components/create-resource/Overview.vue b/src/modules/resource/components/create-resource/Overview.vue new file mode 100644 index 0000000000000000000000000000000000000000..4911072f22f59bce641024b95af6e5ad4b1f6acf --- /dev/null +++ b/src/modules/resource/components/create-resource/Overview.vue @@ -0,0 +1,224 @@ +<template> + <div class="overview"> + <!-- Resource Configuration --> + <b-card @click.prevent="toTab(tabs[0])" class="my-2"> + <CoscineHeadline :headline="$t('form.steps.first')" h="h5" /> + + <coscine-form-group + v-if="resource && resource.resourceTypeOption" + :mandatory="true" + :label="$t('page.createResource.configuration.labels.resourceType')" + > + <b-form-input + readonly + :value=" + $t('resourceTypes.' + resource.type.displayName + '.displayName') + " + /> + </coscine-form-group> + + <coscine-form-group + v-if="resource && resource.resourceTypeOption" + :mandatory="true" + :label="$t('page.createResource.configuration.labels.size')" + > + <b-form-input readonly :value="resourceSizeText" /> + </coscine-form-group> + </b-card> + + <!-- General Information --> + <b-card @click.prevent="toTab(tabs[1])" class="my-2"> + <CoscineHeadline :headline="$t('form.steps.second')" h="h5" /> + + <!-- General --> + <General v-model="resource" :readonly="true" /> + </b-card> + + <!-- Metadata --> + <b-card @click.prevent="toTab(tabs[2])" class="my-2 p-0"> + <CoscineHeadline :headline="$t('form.steps.third')" h="h5" /> + + <!-- Form Generator --> + <b-row v-if="isLoadingFormGenerator" align-h="center" class="my-2"> + <b-spinner variant="secondary" /> + </b-row> + <FormGenerator + v-else + :key="resource.applicationProfile" + :projectId="project.id" + :fixedValueMode="fixedValueMode" + :fixedValues="resource.fixedValues" + :applicationProfileId="resource.applicationProfile" + :disabledMode="true" + :SHACLDefinition="applicationProfileString" + :classReceiver="receiveClass" + :userReceiver="async () => user" + mimeType="application/ld+json" + /> + </b-card> + + <!-- Buttons --> + <b-form-group> + <!-- Button Back --> + <b-button @click.prevent="back" variant="outline-primary" + >{{ $t("buttons.back") }} + </b-button> + + <!-- Button Confirm --> + <b-button + @click.prevent="clickSave" + :disabled="isUploadInProgress || isLoadingFormGenerator" + class="float-right" + variant="outline-primary" + >{{ $t("buttons.confirm") }} + </b-button> + </b-form-group> + </div> +</template> + +<script lang="ts"> +import { defineComponent, PropType } from "vue-demi"; +// import the store for current module +import useResourceStore from "@/modules/resource/store"; +import useProjectStore from "@/modules/project/store"; +import useUserStore from "@/modules/user/store"; +import "@/plugins/form-generator"; +import General from "./General.vue"; +import { navigateToProject } from "@/router"; +import type { ResourceObject } from "@coscine/api-client/dist/types/Coscine.Api.Resources"; +import type { ResourceCreationTab, ResourceTypeOption } from "../../types"; +import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.Project"; +import type { BilingualLabels } from "@coscine/api-client/dist/types/Coscine.Api.Metadata"; +import type { UserObject } from "@coscine/api-client/dist/types/Coscine.Api.User"; + +export default defineComponent({ + components: { General }, + setup() { + const projectStore = useProjectStore(); + const resourceStore = useResourceStore(); + const userStore = useUserStore(); + + return { projectStore, resourceStore, userStore }; + }, + + data() { + return { + resource: this.value, + fixedValueMode: true, + isUploadInProgress: false, + }; + }, + + props: { + value: { + type: Object as PropType<ResourceObject>, + required: true, + }, + tabs: { + type: Array as PropType<ResourceCreationTab[]>, + required: true, + }, + applicationProfileString: { + type: [String, null] as PropType<string | null>, + default: null, + }, + isLoadingFormGenerator: { + type: Boolean, + required: true, + }, + }, + + computed: { + project(): ProjectObject | null { + return this.projectStore.currentProject; + }, + user(): null | UserObject { + return this.userStore.user; + }, + resourceSizeText(): string { + if ((this.resource.resourceTypeOption as ResourceTypeOption).Size) { + return ( + (this.resource.resourceTypeOption as ResourceTypeOption).Size + " GB" + ); + } else { + return this.$t("default.none").toString(); + } + }, + }, + + watch: { + resource: { + handler() { + this.$emit("input", this.resource); + }, + deep: true, + }, + }, + + methods: { + async receiveClass(className: string): Promise<BilingualLabels> { + return await this.resourceStore.getClass(className); + }, + + back() { + this.$emit("back"); + }, + + toTab(tab: ResourceCreationTab) { + this.$emit("toTab", tab); + }, + + async clickSave() { + if (this.project) { + this.$emit("waitingForResponse", true); + this.isUploadInProgress = true; + const createdResource = await this.resourceStore.createResource( + this.project, + this.resource + ); + + if (createdResource) { + // On Success + // Refresh the project information in the store + await this.projectStore.refreshProjectInformation(this.project); + // Navigate inside the parent project + navigateToProject(this.project); + } else { + this.$emit("waitingForResponse", false); + // On Failure + this.makeToast( + this.$t("toast.onSave.failure.message").toString(), + this.$t("toast.onSave.failure.title").toString(), + "danger" + ); + } + + this.isUploadInProgress = false; + } + }, + + makeToast( + text = "Message", + givenTitle = "Title", + variant: string | undefined = undefined + ) { + this.$root.$bvToast.toast(text, { + title: givenTitle, + autoHideDelay: 5000, + toaster: "b-toaster-bottom-right", + variant: variant, + noCloseButton: true, + }); + }, + }, + + emits: { + back: null, + toTab: (_: ResourceCreationTab) => null, + waitingForResponse: (_: boolean) => null, + input: (_: ResourceObject) => null, + }, +}); +</script> + +<style></style> diff --git a/src/modules/resource/components/create-resource/modals/CreateAPModal.vue b/src/modules/resource/components/create-resource/modals/CreateAPModal.vue new file mode 100644 index 0000000000000000000000000000000000000000..827f9335c4ef6d376e32cee6043e78a7659316d8 --- /dev/null +++ b/src/modules/resource/components/create-resource/modals/CreateAPModal.vue @@ -0,0 +1,70 @@ +<template> + <div class="modal"> + <b-modal + id="createAPModal" + :title="$t('page.createResource.metadata.createAp.title')" + :hide-footer="true" + > + <!-- Body --> + <i18n path="page.createResource.metadata.createAp.body" tag="p"> + <template #br><br /></template> + </i18n> + + <!-- Buttons --> + <div class="mt-3"> + <!-- Confirm Button --> + <b-button + class="createAPModalRightBtn float-right" + variant="primary" + @click="toAIMS" + >{{ $t("buttons.confirm") }} + </b-button> + + <!-- Cancel Button --> + <b-button + class="createAPModalLeftBtn" + variant="secondary" + @click="$bvModal.hide('createAPModal')" + >{{ $t("buttons.cancel") }} + </b-button> + </div> + </b-modal> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from "vue-demi"; +import useProjectStore from "@/modules/project/store"; +// import the main store +import useMainStore from "@/store/index"; +import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.Project"; + +export default defineComponent({ + setup() { + const mainStore = useMainStore(); + const projectStore = useProjectStore(); + + return { mainStore, projectStore }; + }, + + computed: { + project(): ProjectObject | null { + return this.projectStore.currentProject; + }, + }, + + methods: { + async toAIMS() { + this.projectStore.createApplicationProfileAnalytics(this.project); + const accessToken = this.mainStore.coscine.authorization.bearer; + const url = this.$router.resolve({ + path: "/coscine/apps/aimsfrontend/", + query: { token: accessToken }, + }).href; + window.open(url); + }, + }, +}); +</script> + +<style></style> diff --git a/src/modules/resource/components/FilesView.vue b/src/modules/resource/components/resource-page/FilesView.vue similarity index 95% rename from src/modules/resource/components/FilesView.vue rename to src/modules/resource/components/resource-page/FilesView.vue index 32f1f895fdf981d897e0713a9a7ee0b10a73697b..3f96e72dbcff8b47a5a81b2a08177235f7f49780 100644 --- a/src/modules/resource/components/FilesView.vue +++ b/src/modules/resource/components/resource-page/FilesView.vue @@ -26,15 +26,13 @@ ref="adaptTable" @row-selected="onRowSelected" show-empty - :empty-text="$parent.$parent.$t('page.resource.emptyTableText')" - :empty-filtered-text=" - $parent.$parent.$t('page.resource.emptyFilterText') - " + :empty-text="$t('page.resource.emptyTableText')" + :empty-filtered-text="$t('page.resource.emptyFilterText')" > <div slot="table-busy" class="text-center text-danger my-2"> <b-spinner class="align-middle"></b-spinner> <strong style="margin-left: 1%">{{ - $parent.$parent.$t("page.resource.loading") + $t("page.resource.loading") }}</strong> </div> <template v-slot:head(name)="row"> @@ -42,7 +40,7 @@ v-model="selectAll" @change="allSelect(row)" ></b-form-checkbox> - <span>{{ $parent.$parent.$t("page.resource.fileName") }}</span> + <span>{{ $t("page.resource.fileName") }}</span> </template> <template v-slot:head(lastModified)="row"> <span>{{ row.label }}</span> @@ -111,7 +109,7 @@ row.item.isFolder ? openFolder(row.item) : openFile(row.item) " >{{ - $parent.$parent.$t("page.resource.metadataManagerBtnDownload") + $t("page.resource.metadataManagerBtnDownload") }}</b-dropdown-item > <b-dropdown-item @@ -136,10 +134,10 @@ import { defineComponent, PropType, reactive } from "vue-demi"; // import the store for current module -import { useResourceStore } from "../store"; -import { useProjectStore } from "@/modules/project/store"; +import useResourceStore from "../../store"; +import useProjectStore from "@/modules/project/store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; import FilesViewHeader from "./FilesViewHeader.vue"; @@ -148,9 +146,9 @@ import type { FolderContent, FolderInformation, ReadOnlyFolderInformation, -} from "../utils/EntryDefinition"; +} from "../../utils/EntryDefinition"; -import MetadataManagerUtil from "../utils/MetadataManagerUtil"; +import MetadataManagerUtil from "../../utils/MetadataManagerUtil"; import fileSaver from "file-saver"; @@ -159,9 +157,9 @@ import type { ApplicationProfile, Metadata, VisitedResourceObject, -} from "../types"; +} from "../../types"; import type { BFormRow, BTable, BvTableField } from "bootstrap-vue"; -import { FileUtil } from "../utils/FileUtil"; +import { FileUtil } from "../../utils/FileUtil"; import { v4 as uuidv4 } from "uuid"; @@ -251,21 +249,19 @@ export default defineComponent({ return { defaultHeaders: [ { - label: this.$parent.$parent.$t("page.resource.fileName").toString(), + label: this.$t("page.resource.fileName").toString(), key: "name", sortable: true, active: true, }, { - label: this.$parent.$parent - .$t("page.resource.lastModified") - .toString(), + label: this.$parent.$t("page.resource.lastModified").toString(), key: "lastModified", sortable: true, active: true, }, { - label: this.$parent.$parent.$t("page.resource.size").toString(), + label: this.$t("page.resource.size").toString(), key: "size", sortable: true, active: true, diff --git a/src/modules/resource/components/FilesViewHeader.vue b/src/modules/resource/components/resource-page/FilesViewHeader.vue similarity index 79% rename from src/modules/resource/components/FilesViewHeader.vue rename to src/modules/resource/components/resource-page/FilesViewHeader.vue index 56ce5d8ebaaa3a8a6564bc09e9d97f40f5d1a454..61a580dc994932133d67a0cec166a20b82d42e4f 100644 --- a/src/modules/resource/components/FilesViewHeader.vue +++ b/src/modules/resource/components/resource-page/FilesViewHeader.vue @@ -12,16 +12,14 @@ " > {{ - $parent.$parent.$parent.$t( - "ResourceTypes." + resource.type.displayName + ".displayName" - ) + $t("resourceTypes." + resource.type.displayName + ".displayName") }}: {{ resource.displayName }} </p> </span> <b-icon id="resourceDetails" icon="info-circle" - :title="$parent.$parent.$parent.$t('page.resource.info')" + :title="$t('page.resource.info')" /> <b-popover v-if="resource" @@ -36,31 +34,23 @@ > <div v-if="resource.displayName"> <span - ><b - >{{ $parent.$parent.$parent.$t("page.resource.displayName") }}: - </b> </span + ><b>{{ $t("page.resource.displayName") }}: </b> </span ><span>{{ resource.displayName }}</span> </div> <div v-if="resource.pid"> <span - ><b - >{{ $parent.$parent.$parent.$t("page.resource.PID") }}: - </b> </span + ><b>{{ $t("page.resource.PID") }}: </b> </span ><span>{{ resource.pid }}</span> </div> <div v-if="resource.description"> <span - ><b - >{{ $parent.$parent.$parent.$t("page.resource.description") }}: - </b> </span + ><b>{{ $t("page.resource.description") }}: </b> </span ><span>{{ resource.description }}</span ><br /> </div> <div v-if="resource.disciplines && resource.disciplines.length > 0"> <span - ><b - >{{ $parent.$parent.$parent.$t("page.resource.disciplines") }}: - </b> + ><b>{{ $t("page.resource.disciplines") }}: </b> </span> <ul> <li @@ -78,9 +68,7 @@ </div> <div v-if="resource.keywords && resource.keywords.length > 0"> <span - ><b - >{{ $parent.$parent.$parent.$t("page.resource.keywords") }}: - </b> </span + ><b>{{ $t("page.resource.keywords") }}: </b> </span ><br /> <ul> <li v-for="keyword in resource.keywords" v-bind:key="keyword"> @@ -90,52 +78,38 @@ </div> <div v-if="resource.visibility"> <span - ><b - >{{ $parent.$parent.$parent.$t("page.resource.visibility") }}: - </b> </span + ><b>{{ $t("page.resource.visibility") }}: </b> </span ><span>{{ resource.visibility.displayName }}</span ><br /> </div> <div v-if="resource.license"> <span - ><b - >{{ - $parent.$parent.$parent.$t("page.resource.resourceLicense") - }}: - </b> </span + ><b>{{ $t("page.resource.resourceLicense") }}: </b> </span ><span>{{ resource.license.displayName }}</span ><br /> </div> <div v-if="resource.usageRights"> <span - ><b - >{{ $parent.$parent.$parent.$t("page.resource.usageRights") }}: - </b> </span + ><b>{{ $t("page.resource.usageRights") }}: </b> </span ><span>{{ resource.usageRights }}</span ><br /> </div> </b-popover> <b-button @click="edit" - :title="$parent.$parent.$parent.$t('page.resource.edit')" + :title="$t('page.resource.edit')" class="btn btn-sm" v-if="canEditResource" > - <b-icon - icon="pencil-fill" - :title="$parent.$parent.$parent.$t('page.resource.edit')" - /> + <b-icon icon="pencil-fill" :title="$t('page.resource.edit')" /> </b-button> <b-button @click="upload" - :title="$parent.$parent.$parent.$t('page.resource.upload')" + :title="$t('page.resource.upload')" class="btn btn-sm" :disabled="isUploading || readOnly || (resource && resource.archived)" > - <b-icon - icon="plus" - :title="$parent.$parent.$parent.$t('page.resource.upload')" - /> + <b-icon icon="plus" :title="$t('page.resource.upload')" /> </b-button> <span v-if="resource && resource.archived" class="badgeWrap"> <b-badge pill variant="warning">{{ $t("default.archived") }}</b-badge> @@ -170,9 +144,7 @@ <b-form-input type="search" id="filterInput" - :placeholder=" - $parent.$parent.$parent.$t('page.resource.typeToSearch') - " + :placeholder="$t('page.resource.typeToSearch')" :value="value" @input="$emit('input', $event)" ></b-form-input> @@ -185,23 +157,22 @@ import { defineComponent } from "vue-demi"; // import the store for current module -import { useResourceStore } from "../store"; -import { useProjectStore } from "@/modules/project/store"; +import useResourceStore from "../../store"; +import useProjectStore from "@/modules/project/store"; // import the user store -import { useUserStore } from "@/modules/user/store"; +import useUserStore from "@/modules/user/store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; -import { FileUtil } from "../utils/FileUtil"; -import { +import { FileUtil } from "../../utils/FileUtil"; +import router from "@/router"; +import type { ProjectObject, ProjectQuotaReturnObject, UserObject, } from "@coscine/api-client/dist/types/Coscine.Api.Project"; -import router from "@/router"; - import type { ResourceTypeInformation } from "@coscine/api-client/dist/types/Coscine.Api.Resources"; -import type { VisitedResourceObject } from "../types"; +import type { VisitedResourceObject } from "../../types"; export default defineComponent({ setup() { diff --git a/src/modules/resource/components/MetadataManager.vue b/src/modules/resource/components/resource-page/MetadataManager.vue similarity index 95% rename from src/modules/resource/components/MetadataManager.vue rename to src/modules/resource/components/resource-page/MetadataManager.vue index ea7d5ff2c02a6d56464af0c535145f0019134cf1..c9a221543194bf9769f91f6db06043638aec460a 100644 --- a/src/modules/resource/components/MetadataManager.vue +++ b/src/modules/resource/components/resource-page/MetadataManager.vue @@ -101,15 +101,15 @@ import { defineComponent, PropType, VNode } from "vue-demi"; // import the store for current module -import { useResourceStore } from "../store"; -import { useProjectStore } from "@/modules/project/store"; -import { useUserStore } from "@/modules/user/store"; +import useResourceStore from "../../store"; +import useProjectStore from "@/modules/project/store"; +import useUserStore from "@/modules/user/store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; import fileSaver from "file-saver"; -import MetadataManagerUtil from "../utils/MetadataManagerUtil"; +import MetadataManagerUtil from "../../utils/MetadataManagerUtil"; import MetadataManagerHeader from "./metadata/MetadataManagerHeader.vue"; import MetadataManagerTable from "./metadata/MetadataManagerTable.vue"; @@ -121,7 +121,10 @@ import DeleteFolderContentsModal from "./modals/DeleteFolderContentsModal.vue"; import SaveDuplicateFilesModal from "./modals/SaveDuplicateFilesModal.vue"; import ValidationPopover from "./popovers/ValidationPopover.vue"; -import type { FileInformation, FolderContent } from "../utils/EntryDefinition"; +import type { + FileInformation, + FolderContent, +} from "../../utils/EntryDefinition"; import "@/plugins/form-generator"; import { cloneDeep } from "lodash"; @@ -137,7 +140,7 @@ import type ValidationReport from "rdf-validate-shacl/src/validation-report"; import { v4 as uuidv4 } from "uuid"; import type { ValidationResult } from "rdf-validate-shacl/src/validation-report"; -import type { ApplicationProfile, Metadata } from "../types"; +import type { ApplicationProfile, Metadata } from "../../types"; export default defineComponent({ setup() { @@ -175,7 +178,6 @@ export default defineComponent({ user(): null | UserObject { return this.userStore.user; }, - resourceTypeInformation(): null | undefined | ResourceTypeInformation { if (this.resourceStore.resourceTypes && this.resource) { return this.resourceStore.resourceTypes.find( @@ -394,10 +396,7 @@ export default defineComponent({ const h = this.$createElement; const content = []; content.push( - "" + - this.$parent.$parent.$t( - "page.resource.toastSavingFailedBodyTop" - ) + "" + this.$t("page.resource.toastSavingFailedBodyTop") ); content.push(h("br")); @@ -407,30 +406,21 @@ export default defineComponent({ } content.push( - "" + - this.$parent.$parent.$t( - "page.resource.toastSavingFailedBodyBottom" - ) + "" + this.$t("page.resource.toastSavingFailedBodyBottom") ); const vNodesMsg = h("span", {}, content); this.makeToast( - "" + - this.$parent.$parent.$t("page.resource.toastSavingFailedTitle"), + "" + this.$t("page.resource.toastSavingFailedTitle"), vNodesMsg, true ); } if (numberOfSuccessfulUploadedFiles > 0) { this.makeToast( + "" + this.$t("page.resource.toastSavingSuccessfulTitle"), "" + - this.$parent.$parent.$t( - "page.resource.toastSavingSuccessfulTitle" - ), - "" + - this.$parent.$parent.$t( - "page.resource.toastSavingSuccessfulBody" - ) + + this.$t("page.resource.toastSavingSuccessfulBody") + numberOfSuccessfulUploadedFiles ); } diff --git a/src/modules/resource/components/metadata/MetadataManagerFileInformation.vue b/src/modules/resource/components/resource-page/metadata/MetadataManagerFileInformation.vue similarity index 64% rename from src/modules/resource/components/metadata/MetadataManagerFileInformation.vue rename to src/modules/resource/components/resource-page/metadata/MetadataManagerFileInformation.vue index ab0a60141612e744207d21080287c8a62f7c7dac..b899014670fbfa74ce68d7abe1c1e5e20bee005d 100644 --- a/src/modules/resource/components/metadata/MetadataManagerFileInformation.vue +++ b/src/modules/resource/components/resource-page/metadata/MetadataManagerFileInformation.vue @@ -1,50 +1,42 @@ <template> <span> - <coscine-form-group - :label="$parent.$parent.$parent.$t('page.resource.infoFileName')" - > + <coscine-form-group :label="$t('page.resource.infoFileName')"> <div class="fileInfoField"> {{ !fileListEdit[currentFileId].name - ? $parent.$parent.$parent.$t("page.resource.infoFileNoInformation") + ? $t("page.resource.infoFileNoInformation") : fileListEdit[currentFileId].name }} </div> </coscine-form-group> - <coscine-form-group - :label="$parent.$parent.$parent.$t('page.resource.infoFileLastModified')" - > + <coscine-form-group :label="$t('page.resource.infoFileLastModified')"> <div class="fileInfoField"> {{ !fileListEdit[currentFileId].lastModified - ? $parent.$parent.$parent.$t("page.resource.infoFileNoInformation") + ? $t("page.resource.infoFileNoInformation") : new Date( fileListEdit[currentFileId].lastModified ).toLocaleDateString($i18n.locale) }} </div> </coscine-form-group> - <coscine-form-group - :label="$parent.$parent.$parent.$t('page.resource.infoFileCreated')" - > + <coscine-form-group :label="$t('page.resource.infoFileCreated')"> <div class="fileInfoField"> {{ !fileListEdit[currentFileId].created - ? $parent.$parent.$parent.$t("page.resource.infoFileNoInformation") + ? $t("page.resource.infoFileNoInformation") : new Date(fileListEdit[currentFileId].created).toLocaleDateString( $i18n.locale ) }} </div> </coscine-form-group> - <coscine-form-group - :label="$parent.$parent.$parent.$t('page.resource.infoFileSize')" - > + <coscine-form-group :label="$t('page.resource.infoFileSize')"> <div class="fileInfoField"> {{ fileListEdit[currentFileId].size === undefined || fileListEdit[currentFileId].size === null - ? $parent.$parent.$parent.$t("page.resource.infoFileNoInformation") + ? $t("page.resource.infoFileNoInformation") : fileListEdit[currentFileId].size + " Bytes" }} </div> @@ -55,7 +47,7 @@ <script lang="ts"> import { defineComponent, PropType } from "vue-demi"; -import type { FolderContent } from "../../utils/EntryDefinition"; +import type { FolderContent } from "../../../utils/EntryDefinition"; export default defineComponent({ props: { diff --git a/src/modules/resource/components/metadata/MetadataManagerFooter.vue b/src/modules/resource/components/resource-page/metadata/MetadataManagerFooter.vue similarity index 88% rename from src/modules/resource/components/metadata/MetadataManagerFooter.vue rename to src/modules/resource/components/resource-page/metadata/MetadataManagerFooter.vue index d689a450d44c51dad3c1a018fbed578807ca0ec1..e3c3e7f5e2a11841e13c23e3212ae3d1ff36d1f9 100644 --- a/src/modules/resource/components/metadata/MetadataManagerFooter.vue +++ b/src/modules/resource/components/resource-page/metadata/MetadataManagerFooter.vue @@ -35,16 +35,10 @@ ><b-spinner label="Spinning" v-show="isUploading"></b-spinner >{{ isUploading - ? $parent.$parent.$parent.$t( - "page.resource.metadataManagerBtnSaving" - ) + ? $t("page.resource.metadataManagerBtnSaving") : !showDetail - ? $parent.$parent.$parent.$t( - "page.resource.metadataManagerBtnUpload" - ) - : $parent.$parent.$parent.$t( - "page.resource.metadataManagerBtnUpdate" - ) + ? $t("page.resource.metadataManagerBtnUpload") + : $t("page.resource.metadataManagerBtnUpdate") }}</b-button > </b-col> diff --git a/src/modules/resource/components/metadata/MetadataManagerHeader.vue b/src/modules/resource/components/resource-page/metadata/MetadataManagerHeader.vue similarity index 80% rename from src/modules/resource/components/metadata/MetadataManagerHeader.vue rename to src/modules/resource/components/resource-page/metadata/MetadataManagerHeader.vue index 746a6866a72f143f38a831be80c0bd6b3a15b42d..7d13b717768a380e040ce9a8638ebe13092c3a46 100644 --- a/src/modules/resource/components/metadata/MetadataManagerHeader.vue +++ b/src/modules/resource/components/resource-page/metadata/MetadataManagerHeader.vue @@ -5,18 +5,10 @@ id="buttonSelectFiles" variant="secondary" @click="$emit('selectFiles')" - :placeholder=" - $parent.$parent.$parent.$t( - 'page.resource.metadataManagerBtnSelectFiles' - ) - " + :placeholder="$t('page.resource.metadataManagerBtnSelectFiles')" :disabled="isUploading || readOnly || (resource && resource.archived)" autofocus - >{{ - $parent.$parent.$parent.$t( - "page.resource.metadataManagerBtnSelectFiles" - ) - }} + >{{ $t("page.resource.metadataManagerBtnSelectFiles") }} </b-button> </b-col> <b-col> @@ -42,11 +34,7 @@ v-if="!editableDataUrl" @click="$emit('download')" :disabled="!showDetail || shownFiles.length === 0" - >{{ - $parent.$parent.$parent.$t( - "page.resource.metadataManagerBtnDownload" - ) - }}</b-button + >{{ $t("page.resource.metadataManagerBtnDownload") }}</b-button > </b-input-group> </b-col> @@ -57,7 +45,7 @@ import { defineComponent, PropType } from "vue-demi"; import type { ResourceObject } from "@coscine/api-client/dist/types/Coscine.Api.Resources"; -import type { FolderContent } from "../../utils/EntryDefinition"; +import type { FolderContent } from "../../../utils/EntryDefinition"; export default defineComponent({ props: { diff --git a/src/modules/resource/components/metadata/MetadataManagerSpecialProperties.vue b/src/modules/resource/components/resource-page/metadata/MetadataManagerSpecialProperties.vue similarity index 90% rename from src/modules/resource/components/metadata/MetadataManagerSpecialProperties.vue rename to src/modules/resource/components/resource-page/metadata/MetadataManagerSpecialProperties.vue index 73837dde786e970b98198ead2cce6334d1b4e842..680b65b57ee87720f93b8be8591099558527b14a 100644 --- a/src/modules/resource/components/metadata/MetadataManagerSpecialProperties.vue +++ b/src/modules/resource/components/resource-page/metadata/MetadataManagerSpecialProperties.vue @@ -4,14 +4,14 @@ <coscine-form-group :mandatory="true" labelFor="dataUrl" - :label="$parent.$parent.$parent.$t('page.resource.dataUrl')" + :label="$t('page.resource.dataUrl')" > <b-input-group> <b-form-input id="dataUrl" @input="updateDataUrl(currentFolderContent, $event)" :value="currentFolderContent.dataUrl" - :placeholder="$parent.$parent.$parent.$t('page.resource.dataUrl')" + :placeholder="$t('page.resource.dataUrl')" :disabled="resource.archived || readOnly" /> <b-button id="URLBtn" @click="openURL" :disabled="!isValidUrl" @@ -24,12 +24,12 @@ <coscine-form-group :mandatory="true" labelFor="metadataKey" - :label="$parent.$parent.$parent.$t('page.resource.metadataKey')" + :label="$t('page.resource.metadataKey')" > <b-form-input @change="updateAbsolutePath(currentFolderContent, $event)" :value="currentFolderContent.name" - :placeholder="$parent.$parent.$parent.$t('page.resource.metadataKey')" + :placeholder="$t('page.resource.metadataKey')" :disabled="resource.archived || readOnly" /> </coscine-form-group> @@ -43,7 +43,7 @@ import { defineComponent, PropType } from "vue-demi"; import type { FileInformation, FolderContent, -} from "../../utils/EntryDefinition"; +} from "../../../utils/EntryDefinition"; import type { ResourceObject } from "@coscine/api-client/dist/types/Coscine.Api.Resources"; export default defineComponent({ diff --git a/src/modules/resource/components/metadata/MetadataManagerTable.vue b/src/modules/resource/components/resource-page/metadata/MetadataManagerTable.vue similarity index 95% rename from src/modules/resource/components/metadata/MetadataManagerTable.vue rename to src/modules/resource/components/resource-page/metadata/MetadataManagerTable.vue index c3a8b940ac30cb5a2b55f2d2c2205749c21ed372..abc8293c7b6fc0e1e1c2018b43b0d23d310116b9 100644 --- a/src/modules/resource/components/metadata/MetadataManagerTable.vue +++ b/src/modules/resource/components/resource-page/metadata/MetadataManagerTable.vue @@ -36,7 +36,7 @@ @click="$emit('loadAllFilesTab')" :pressed="currentFileId === -1" variant="outline-secondary" - >{{ $parent.$parent.$t("page.resource.allFiles") }}</b-button + >{{ $t("page.resource.allFiles") }}</b-button > <span v-if="shownFiles.length > 1 && shownFiles.length <= 10"> <b-button @@ -64,7 +64,7 @@ {{ currentFolderContent.name }} </span> <span v-else-if="shownFiles.length > 0">{{ - $parent.$parent.$t("page.resource.allFiles") + $t("page.resource.allFiles") }}</span> </b-col> </b-row> @@ -74,7 +74,7 @@ <script lang="ts"> import { defineComponent, PropType } from "vue-demi"; -import type { FolderContent } from "../../utils/EntryDefinition"; +import type { FolderContent } from "../../../utils/EntryDefinition"; export default defineComponent({ props: { diff --git a/src/modules/resource/components/modals/DeleteFolderContentsModal.vue b/src/modules/resource/components/resource-page/modals/DeleteFolderContentsModal.vue similarity index 82% rename from src/modules/resource/components/modals/DeleteFolderContentsModal.vue rename to src/modules/resource/components/resource-page/modals/DeleteFolderContentsModal.vue index 45fca191cbc596b1b7c71adcf584e7ca65e6f2e8..066826c37f0d4bafa49e33086eb05e195c97273d 100644 --- a/src/modules/resource/components/modals/DeleteFolderContentsModal.vue +++ b/src/modules/resource/components/resource-page/modals/DeleteFolderContentsModal.vue @@ -4,22 +4,14 @@ :visible="visible" size="lg" hide-footer - :title=" - $parent.$parent.$parent.$t( - 'page.resource.modalDeleteFolderContentsHeader' - ) - " + :title="$t('page.resource.modalDeleteFolderContentsHeader')" @hidden="$emit('close', $event.target.value)" @ok="$emit('ok', $event.target.value)" @cancel="$emit('close', $event.target.value)" @shown="$emit('shown', $event.target.value)" > <div> - {{ - $parent.$parent.$parent.$t( - "page.resource.modalDeleteFolderContentsBody" - ) - }} + {{ $t("page.resource.modalDeleteFolderContentsBody") }} </div> <br /> <div diff --git a/src/modules/resource/components/modals/SaveDuplicateFilesModal.vue b/src/modules/resource/components/resource-page/modals/SaveDuplicateFilesModal.vue similarity index 67% rename from src/modules/resource/components/modals/SaveDuplicateFilesModal.vue rename to src/modules/resource/components/resource-page/modals/SaveDuplicateFilesModal.vue index ed5efa652338537f3bb19b5399bedb57b27e0c78..c8e42d4612089fe16aa4b10ca97e7ead38b95185 100644 --- a/src/modules/resource/components/modals/SaveDuplicateFilesModal.vue +++ b/src/modules/resource/components/resource-page/modals/SaveDuplicateFilesModal.vue @@ -4,18 +4,14 @@ :visible="visible" size="lg" hide-footer - :title=" - $parent.$parent.$parent.$t('page.resource.modalSaveDuplicateFilesHeader') - " + :title="$t('page.resource.modalSaveDuplicateFilesHeader')" @hidden="$emit('close', $event.target.value)" @ok="$emit('ok', $event.target.value)" @cancel="$emit('close', $event.target.value)" @shown="$emit('shown', $event.target.value)" > <div> - {{ - $parent.$parent.$parent.$t("page.resource.modalSaveDuplicateFilesBody") - }} + {{ $t("page.resource.modalSaveDuplicateFilesBody") }} </div> <br /> <div @@ -31,30 +27,18 @@ class="float-left" @click="$emit('close', $event.target.value)" autofocus - >{{ - $parent.$parent.$parent.$t( - "page.resource.modalSaveDuplicateFilesBtnCancel" - ) - }}</b-button + >{{ $t("page.resource.modalSaveDuplicateFilesBtnCancel") }}</b-button > <b-button class="modalButtonFloatCenter" @click="$emit('skip', $event.target.value)" - >{{ - $parent.$parent.$parent.$t( - "page.resource.modalSaveDuplicateFilesBtnSkip" - ) - }}</b-button + >{{ $t("page.resource.modalSaveDuplicateFilesBtnSkip") }}</b-button > <b-button class="float-right" style="justify-content: flex-end" @click="$emit('ok', $event.target.value)" - >{{ - $parent.$parent.$parent.$t( - "page.resource.modalSaveDuplicateFilesBtnOverwrite" - ) - }}</b-button + >{{ $t("page.resource.modalSaveDuplicateFilesBtnOverwrite") }}</b-button > </div> </b-modal> diff --git a/src/modules/resource/components/popovers/ValidationPopover.vue b/src/modules/resource/components/resource-page/popovers/ValidationPopover.vue similarity index 91% rename from src/modules/resource/components/popovers/ValidationPopover.vue rename to src/modules/resource/components/resource-page/popovers/ValidationPopover.vue index b077902d39ec1f93b41f5b323e99ffb3a58c1d83..5a3c5e4308a20bd144f1edff823be47e29808eac 100644 --- a/src/modules/resource/components/popovers/ValidationPopover.vue +++ b/src/modules/resource/components/resource-page/popovers/ValidationPopover.vue @@ -8,9 +8,7 @@ placement="top" > <template v-slot:title - ><b>{{ - $parent.$parent.$parent.$t("page.resource.validationErrors") - }}</b></template + ><b>{{ $t("page.resource.validationErrors") }}</b></template > <div> <ul> diff --git a/src/modules/resource/components/settings/Actions.vue b/src/modules/resource/components/settings/Actions.vue new file mode 100644 index 0000000000000000000000000000000000000000..ff0aeed9fd8044668ab4e5415f8441d2a8880772 --- /dev/null +++ b/src/modules/resource/components/settings/Actions.vue @@ -0,0 +1,143 @@ +<template> + <div> + <!-- Archive --> + <coscine-form-group + labelFor="Archive" + :label="$t('page.settings.actions.resourceArchiveLabel')" + :isLoading="isLoading" + class="d-flex align-items-center" + > + <b-form-checkbox + id="Archive" + v-model="resourceForm.archived" + :disabled="!(isOwner || isResourceCreator) || !resourceForm" + @click.native.prevent="isArchiveModalVisible = true" + switch + size="lg" + /> + </coscine-form-group> + + <!-- Delete Resource --> + <coscine-form-group + labelFor="DeleteResource" + :label="$t('page.settings.actions.resourceDeleteLabel')" + :isLoading="isLoading" + class="d-flex align-items-center" + > + <!-- Delete Button --> + <b-button + id="DeleteResource" + type="delete" + variant="danger" + :disabled="!resourceForm" + @click.prevent="isDeleteModalVisible = true" + > + {{ $t("buttons.delete") }}</b-button + > + </coscine-form-group> + + <!-- Archive Resource Modal --> + <ArchiveResourceModal + :open="isArchiveModalVisible" + :archived="resourceForm.archived" + @close="isArchiveModalVisible = false" + @toggleArchive="toggleArchive" + /> + + <!-- Delete Resource Modal --> + <DeleteResourceModal + :open="isDeleteModalVisible" + :displayName="resourceForm.displayName" + @close="isDeleteModalVisible = false" + @clickDelete="clickDelete" + /> + </div> +</template> + +<script lang="ts"> +import { defineComponent, PropType } from "vue-demi"; +import useProjectStore from "@/modules/project/store"; +import useUserStore from "@/modules/user/store"; +import ArchiveResourceModal from "./modals/ArchiveResourceModal.vue"; +import DeleteResourceModal from "./modals/DeleteResourceModal.vue"; +import type { ResourceObject } from "@coscine/api-client/dist/types/Coscine.Api.Resources"; +import type { UserObject } from "@coscine/api-client/dist/types/Coscine.Api.User"; + +export default defineComponent({ + setup() { + const projectStore = useProjectStore(); + const userStore = useUserStore(); + + return { projectStore, userStore }; + }, + + components: { + ArchiveResourceModal, + DeleteResourceModal, + }, + + props: { + value: { + type: Object as PropType<ResourceObject>, + required: true, + }, + isLoading: { + default: false, + type: Boolean, + }, + }, + + data() { + return { + resourceForm: this.value, + isArchiveModalVisible: false, + isDeleteModalVisible: false, + }; + }, + + computed: { + isOwner(): boolean | undefined { + return this.projectStore.currentUserRoleIsOwner; + }, + user(): UserObject | null { + return this.userStore.user; + }, + isResourceCreator(): boolean | undefined { + if (this.resourceForm.creator && this.user && this.user.id) { + return this.resourceForm.creator === this.user.id; + } else { + return undefined; + } + }, + }, + + watch: { + resource: { + handler() { + this.$emit("input", this.resourceForm); + }, + deep: true, + }, + }, + + methods: { + toggleArchive() { + this.$emit("toggleArchive"); + this.isArchiveModalVisible = false; + }, + + clickDelete() { + this.$emit("clickDelete"); + this.isDeleteModalVisible = false; + }, + }, + + emits: { + toggleArchive: null, + clickDelete: null, + input: (_: ResourceObject) => null, + }, +}); +</script> + +<style></style> diff --git a/src/modules/resource/components/settings/Configuration.vue b/src/modules/resource/components/settings/Configuration.vue new file mode 100644 index 0000000000000000000000000000000000000000..35a7866020c55ae83dbc2980139178210ffe3077 --- /dev/null +++ b/src/modules/resource/components/settings/Configuration.vue @@ -0,0 +1,120 @@ +<template> + <div> + <!-- Content --> + <div v-if="resource"> + <!-- Individual Fields --> + <div + v-for="(resourceOption, index) of Object.keys( + resource.resourceTypeOption + )" + :key="index" + > + <!-- Field Definition --> + <coscine-form-group + v-if="resourceOption !== 'Id'" + :labelFor="resourceOption" + :label=" + $t( + 'page.settings.configuration.resource' + resourceOption + 'Label' + ) + " + > + <!-- Resource Size Field --> + <b-form-input + v-if="resourceOption === 'Size'" + :value="resourceSizeText" + :readonly="readonly" + /> + + <!-- Other Fields --> + <b-button-group v-else class="w-100"> + <!-- Text Field --> + <b-form-input + v-model="resource.resourceTypeOption[resourceOption]" + :readonly="readonly" + /> + + <!-- Copy Button --> + <b-button + :id="`copyButton${index}`" + @click=" + copyText(resource.resourceTypeOption[resourceOption], index) + " + > + <b-icon icon="clipboard" /> + </b-button> + + <!-- Copied Tooltip --> + <b-tooltip + :id="`copyTooltip${index}`" + :target="`copyButton${index}`" + placement="top" + triggers="blur" + > + {{ + $t("page.settings.configuration.toClipboard", { + resourceOption: $t( + "page.settings.configuration.resource" + resourceOption + ), + }) + }} + </b-tooltip> + </b-button-group> + </coscine-form-group> + </div> + </div> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from "vue-demi"; +// import the store for current module +import useResourceStore from "../../store"; +import type { ResourceObject } from "@coscine/api-client/dist/types/Coscine.Api.Resources"; +import type { ResourceTypeOption } from "../../types"; + +export default defineComponent({ + setup() { + const resourceStore = useResourceStore(); + + return { resourceStore }; + }, + + components: {}, + + data() { + return { + readonly: true, + }; + }, + + computed: { + resource(): ResourceObject | null { + return this.resourceStore.currentResource; + }, + resourceSizeText(): string { + if ( + this.resource && + (this.resource.resourceTypeOption as ResourceTypeOption).Size + ) { + return ( + (this.resource.resourceTypeOption as ResourceTypeOption).Size + " GB" + ); + } else { + return this.$t("default.none").toString(); + } + }, + }, + + methods: { + copyText(value: string, index: number) { + if (this.resource) { + navigator.clipboard.writeText(value); + this.$root.$emit("bv::show::tooltip", `copyTooltip${index}`); + } + }, + }, +}); +</script> + +<style></style> diff --git a/src/modules/resource/components/settings/Metadata.vue b/src/modules/resource/components/settings/Metadata.vue new file mode 100644 index 0000000000000000000000000000000000000000..87a7d3e0ab2b403f963c1b9eff9d50cd40d9d6ab --- /dev/null +++ b/src/modules/resource/components/settings/Metadata.vue @@ -0,0 +1,96 @@ +<template> + <div> + <!-- Form Generator --> + <b-row v-if="isLoadingFormGenerator" align-h="center" class="my-2"> + <b-spinner variant="secondary" /> + </b-row> + <FormGenerator + v-else + :key="resourceForm.applicationProfile" + :disabledMode="!isOwner || resource.archived" + :fixedValueMode="true" + :fixedValues="resourceForm.fixedValues" + :applicationProfileId="resourceForm.applicationProfile" + :SHACLDefinition="applicationProfileString" + :classReceiver="receiveClass" + :userReceiver="async () => user" + mimeType="application/ld+json" + /> + </div> +</template> + +<script lang="ts"> +import { defineComponent, PropType } from "vue-demi"; +// import the store for current module +import useResourceStore from "../../store"; +import useProjectStore from "@/modules/project/store"; +import useUserStore from "@/modules/user/store"; +import "@/plugins/form-generator"; +import type { ResourceObject } from "@coscine/api-client/dist/types/Coscine.Api.Resources"; +import type { BilingualLabels } from "@coscine/api-client/dist/types/Coscine.Api.Metadata"; +import type { UserObject } from "@coscine/api-client/dist/types/Coscine.Api.User"; + +export default defineComponent({ + setup() { + const resourceStore = useResourceStore(); + const projectStore = useProjectStore(); + const userStore = useUserStore(); + + return { resourceStore, projectStore, userStore }; + }, + + props: { + value: { + type: Object as PropType<ResourceObject>, + required: true, + }, + applicationProfileString: { + type: [String, null] as PropType<string | null>, + default: null, + }, + isLoadingFormGenerator: { + type: Boolean, + required: true, + }, + }, + + data() { + return { + resourceForm: this.value, + }; + }, + + computed: { + resource(): ResourceObject | null { + return this.resourceStore.currentResource; + }, + isOwner(): boolean | undefined { + return this.projectStore.currentUserRoleIsOwner; + }, + user(): UserObject | null { + return this.userStore.user; + }, + }, + + watch: { + resourceForm: { + handler() { + this.$emit("input", this.resourceForm); + }, + deep: true, + }, + }, + + methods: { + async receiveClass(className: string): Promise<BilingualLabels> { + return await this.resourceStore.getClass(className); + }, + }, + + emits: { + input: (_: ResourceObject) => null, + }, +}); +</script> + +<style></style> diff --git a/src/modules/resource/components/settings/Overview.vue b/src/modules/resource/components/settings/Overview.vue new file mode 100644 index 0000000000000000000000000000000000000000..d01f1079a4cf884edae201a373ef46466969e2af --- /dev/null +++ b/src/modules/resource/components/settings/Overview.vue @@ -0,0 +1,277 @@ +<template> + <div class="overview"> + <!-- First Row --> + <b-row id="selectBoxes"> + <!-- Project --> + <b-col> + <coscine-form-group + labelFor="ProjectName" + :label="$t('form.project.projectNameLabel')" + :isLoading="!project" + type="input" + > + <b-form-input + v-if="project" + id="ProjectName" + v-model="project.displayName" + :readonly="readonly" + required + /> + </coscine-form-group> + </b-col> + + <!-- Resource Dropdown --> + <b-col> + <coscine-form-group + labelFor="Resource" + :label="$t('page.settings.overview.resourceLabel')" + :isLoading="!resource" + > + <b-form-select + v-if="resource" + id="Resource" + v-model="selectedResource" + :options="allResources" + value-field="id" + text-field="displayName" + @change="switchResource" + > + <template #first> + <b-form-select-option :value="undefined" disabled> + {{ $t("page.settings.overview.resourceSelect") }} + </b-form-select-option> + </template> + </b-form-select> + </coscine-form-group> + </b-col> + </b-row> + + <!-- Second Row --> + <b-row> + <!-- Display Name --> + <b-col> + <coscine-form-group + labelFor="DisplayName" + :label="$t('form.resource.resourceNameLabel')" + :isLoading="!resource" + > + <b-form-input + v-if="resource" + id="DisplayName" + v-model="resource.displayName" + required + :readonly="readonly" + /> + </coscine-form-group> + </b-col> + + <!-- Persistent ID --> + <b-col> + <coscine-form-group + labelFor="PersistentId" + :label="$t('page.settings.overview.persistentIdLabel')" + :isLoading="!resource" + > + <b-button-group class="w-100"> + <!-- Text Field --> + <b-form-input + v-if="resource" + id="PersistentId" + v-model="resource.pid" + required + :readonly="readonly" + /> + + <!-- Copy Button --> + <b-button id="copyPidButton" @click="copyPID()"> + <b-icon icon="clipboard" /> + </b-button> + + <!-- Copied Tooltip --> + <b-tooltip + id="copyPidTooltip" + target="copyPidButton" + placement="top" + triggers="blur" + > + {{ + $t("page.settings.configuration.toClipboard", { + resourceOption: $t("page.settings.overview.persistentId"), + }) + }} + </b-tooltip> + </b-button-group> + </coscine-form-group> + </b-col> + </b-row> + + <!-- Third Row --> + <b-row> + <!-- Resource Type --> + <b-col> + <coscine-form-group + labelFor="ResourceType" + :label="$t('page.settings.overview.resourceTypeLabel')" + :isLoading="!resource" + type="input" + > + <b-form-input + v-if="resource" + id="ResourceType" + :value=" + $t('resourceTypes.' + resource.type.displayName + '.displayName') + " + required + :readonly="readonly" + /> + </coscine-form-group> + </b-col> + + <!-- Resource Quota --> + <b-col> + <coscine-form-group + v-if="resource && resource.resourceTypeOption.Size" + labelFor="Quota" + :label="$t('page.settings.overview.quotaLabel')" + :isLoading="!(resource && quotaCurrent >= 0 && quotaCurrent !== null)" + > + <b-button-group class="progressContainer h-100 w-100"> + <!-- Progress Bar --> + <b-progress + :max="quotaMaximum" + height="inherit" + class="w-100 border-1 light" + > + <b-progress-bar + :value="quotaCurrent" + :variant=" + quotaCurrent / quotaMaximum >= 0.8 ? 'danger' : 'primary' + " + > + <span> + <strong + :class=" + quotaCurrent / quotaMaximum < 0.5 + ? 'justify-content-center d-flex position-absolute w-100 text-body' + : '' + " + > + {{ formatBytes(quotaCurrent) }} / + {{ formatBytes(quotaMaximum) }} + </strong> + </span> + </b-progress-bar> + </b-progress> + + <!-- Quota Page --> + <b-button v-if="isOwner" :to="{ name: 'project-quota' }"> + <b-icon icon="gear" /> + </b-button> + </b-button-group> + </coscine-form-group> + </b-col> + </b-row> + </div> +</template> + +<script lang="ts"> +import { defineComponent, PropType } from "vue-demi"; +// import the store for current module +import useResourceStore from "../../store"; +import useProjectStore from "@/modules/project/store"; +import { FileUtil } from "../../utils/FileUtil"; +import type { ResourceObject } from "@coscine/api-client/dist/types/Coscine.Api.Resources"; +import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.Project"; +import type { RawLocation } from "vue-router"; + +export default defineComponent({ + setup() { + const resourceStore = useResourceStore(); + const projectStore = useProjectStore(); + + return { resourceStore, projectStore }; + }, + + components: {}, + + props: { + value: { + type: Object as PropType<ResourceObject>, + required: false, + }, + }, + + data() { + return { + readonly: true, + selectedResource: undefined as string | undefined, + conversionFactor: Math.pow(1024, 3), // Byte <-> GB + }; + }, + + created() { + // Fill the resource form + this.onResourceLoaded(); + }, + + computed: { + project(): ProjectObject | null { + return this.projectStore.currentProject; + }, + resource(): ResourceObject | null { + return this.resourceStore.currentResource; + }, + isOwner(): boolean | undefined { + return this.projectStore.currentUserRoleIsOwner; + }, + allResources(): ResourceObject[] | null { + return this.projectStore.currentResources; + }, + quotaCurrent(): number | null { + return this.resourceStore.currentUsedQuota; // value is in Bytes + }, + quotaMaximum(): number | null { + if (this.resource) { + return this.resource.resourceTypeOption.Size * this.conversionFactor; // GB to Byte + } else { + return null; + } + }, + }, + + watch: { + resource() { + this.onResourceLoaded(); + }, + }, + + methods: { + onResourceLoaded() { + if (this.resource) { + this.selectedResource = this.resource.id; + } + }, + copyPID() { + if (this.resource) { + navigator.clipboard.writeText( + "http://hdl.handle.net/" + this.resource.pid + ); + this.$root.$emit("bv::show::tooltip", "copyPidTooltip"); + } + }, + switchResource(id: string) { + const route = { + name: "resource-settings", + params: { guid: id }, + } as RawLocation; + const url = this.$router.resolve(route).href; + window.location.href = url; + }, + formatBytes(bytes: number) { + return FileUtil.formatBytes(bytes); + }, + }, +}); +</script> + +<style scoped></style> diff --git a/src/modules/resource/components/settings/modals/ArchiveResourceModal.vue b/src/modules/resource/components/settings/modals/ArchiveResourceModal.vue new file mode 100644 index 0000000000000000000000000000000000000000..fcbe449b46fe7f03f1fd7f5fb4f12e2a73a3955f --- /dev/null +++ b/src/modules/resource/components/settings/modals/ArchiveResourceModal.vue @@ -0,0 +1,87 @@ +<template> + <!-- Archive Resource Modal --> + <b-modal v-model="isOpen" @close="close" @hidden="hidden" :hide-footer="true"> + <!-- Title --> + <template #modal-title> + <span class="h6"> + {{ $t(`page.settings.actions.${action}.modal.title`) }} + </span> + </template> + + <!-- Body --> + <i18n + :path="`page.settings.actions.${action}.modal.body`" + tag="p" + class="mb-3" + > + <template #br><br /></template> + </i18n> + + <template> + <!-- Modal Cancel Button --> + <b-button @click="close">{{ $t("buttons.cancel") }}</b-button> + <!-- Modal Delete Button --> + <b-button @click="toggleArchive" variant="primary" class="float-right"> + {{ $t(`buttons.${action}`) }} + </b-button> + </template> + </b-modal> +</template> + +<script lang="ts"> +import { defineComponent, PropType } from "vue-demi"; + +export default defineComponent({ + props: { + archived: { + type: [Boolean, null] as PropType<boolean | null>, + default: null, + }, + open: { + required: true, + default: () => false, + type: Boolean, + }, + }, + + data() { + return { + isOpen: false, + deleteName: "", + inputState: false, + showHelp: false, + }; + }, + + computed: { + action(): string { + return this.archived ? "unarchive" : "archive"; + }, + }, + + watch: { + open() { + this.isOpen = this.open; + }, + }, + + methods: { + close() { + this.isOpen = false; + }, + hidden() { + this.$emit("close"); + }, + toggleArchive() { + this.$emit("toggleArchive"); + }, + }, + + emits: { + toggleArchive: null, + close: null, + }, +}); +</script> + +<style></style> diff --git a/src/modules/resource/components/settings/modals/DeleteResourceModal.vue b/src/modules/resource/components/settings/modals/DeleteResourceModal.vue new file mode 100644 index 0000000000000000000000000000000000000000..4da11940a68ad0d677419f97e661f2c292bcf902 --- /dev/null +++ b/src/modules/resource/components/settings/modals/DeleteResourceModal.vue @@ -0,0 +1,115 @@ +<template> + <!-- Delete Resource Modal --> + <b-modal v-model="isOpen" @close="close" @hidden="hidden" :hide-footer="true"> + <!-- Title --> + <template #modal-title> + <span class="h6"> {{ $t(titleKey) }} </span> + </template> + + <div> + {{ $t(descriptionKey) }} + </div> + + <b-form-group> + <!-- Modal Resource Display Name --> + <p class="h6 my-2"> + {{ displayName }} + </p> + + <!-- Modal Input Text Field --> + <b-form-input + v-model="deleteName" + :state="nameValid" + :placeholder="displayName" + required + @keyup.enter.prevent="clickDelete" + ></b-form-input> + <div class="invalid-tooltip"> + {{ $t("page.settings.actions.delete.modal.help") }} + </div> + </b-form-group> + + <template> + <!-- Modal Cancel Button --> + <b-button @click="close">{{ $t("buttons.cancel") }}</b-button> + <!-- Modal Delete Button --> + <b-button + @click="clickDelete" + variant="danger" + class="float-right" + :disabled="!nameValid" + >{{ $t("buttons.delete") }}</b-button + > + </template> + </b-modal> +</template> + +<script lang="ts"> +import { defineComponent } from "vue-demi"; + +export default defineComponent({ + props: { + descriptionKey: { + default: "page.settings.actions.delete.modal.body", + type: String, + }, + titleKey: { + default: "page.settings.actions.delete.modal.title", + type: String, + }, + open: { + required: true, + default: () => false, + type: Boolean, + }, + displayName: { + default: "", + type: String, + }, + }, + + data() { + return { + isOpen: false, + deleteName: "", + inputState: false, + showHelp: false, + }; + }, + + computed: { + nameValid(): boolean | null { + return this.deleteName && this.displayName + ? this.deleteName.trim() === this.displayName.trim() + : null; + }, + }, + + watch: { + open() { + this.isOpen = this.open; + }, + }, + + methods: { + close() { + this.isOpen = false; + }, + hidden() { + this.$emit("close"); + }, + clickDelete() { + if (this.nameValid) { + this.$emit("clickDelete"); + } + }, + }, + + emits: { + clickDelete: null, + close: null, + }, +}); +</script> + +<style></style> diff --git a/src/modules/resource/i18n/de.ts b/src/modules/resource/i18n/de.ts index ba14de5cdfccf1205e869cc74d952fddd87acd32..83cbe6ddd81ba0b82c2960994df8407d982edab4 100644 --- a/src/modules/resource/i18n/de.ts +++ b/src/modules/resource/i18n/de.ts @@ -8,9 +8,54 @@ export default { */ page: { createResource: { - title: "Create-Resource-Seite", - description: - "Das ist die @:page.createResource.title des Coscine UIv2 Apps", + title: "Ressource hinzufügen", + configuration: { + title: "Schritt 1: @:(form.steps.first)", + needMore: "Benötigen Sie mehr Speicher?", + bucketSize: "{size} GB, dies entspricht circa {files} Dateien.", + labels: { + resourceType: "Ressourcentyp:", + size: "Ressourcengröße:", + }, + popover: { + title: "Quota nicht ausreichend", + body: "Dieses Projekt hat nicht genug Quota um weitere Ressourcen anlegen zu können. Im Quotamanagement können Sie zusätzlichen Speicher beantragen.", + }, + validation: { + errorMessage: + "Es konnte keine Verbindung zur Ressource hergestellt werden. Bitte überprüfen Sie die Eingaben.", + }, + }, + general: { + title: "Schritt 2: @:(form.steps.second)", + }, + metadata: { + title: "Schritt 3: @:(form.steps.third)", + createAp: { + tooltip: "Anfrage zur Erstellung eines Applikationsprofils", + tooltipDisabled: + "Fügen Sie bitte {linkToUserProfile} Ihre Emailadresse hinzu und verfizieren Sie diese, um eine Anfrage zur Erstellung von neuen Applikationsprofilen senden zu können", + tooltipHere: "hier", + title: "Erstellung von Applikationsprofilen:", + body: "Zur Konfiguration und Erstellung eines individuellen Applikationsprofils werden Sie auf eine andere Webseite umgeleitet. {br}{br}Der Review-Prozess für die Bereitstellung des Profils dauert für gewöhnlich einige Tage. Falls nötig, werden Sie von unserem Consulting-Team kontaktiert, um Sie in diesem Prozess zu unterstützen. {br}{br}Möchten Sie zur Webseite zur Erstellung eines Applikationsprofils weiterleitet werden?", + }, + applicationProfileLabel: "Applikationsprofil:", + selectApplicationProfile: "Bitte wählen sie ein Applikationsprofil aus", + }, + overview: { + title: "Schritt 4: @:(form.steps.fourth)", + resourceConfiguration: "Ressourcen Konfiguration", + }, + multiselect: { + placeholderResourceText: "Bitte wählen Sie einen Ressourcentyp aus.", + placeholderApplicationProfileText: + "Bitte wählen Sie ein Applikationsprofil aus.", + + selectEnter: "Zum Auswählen Enter drücken.", + noResults: + "Keine Ergebnisse verfügbar. Bitte passen Sie die Suchanfrage an.", + noOptions: "Die Liste ist leer.", + }, }, resource: { resources: "Ressourcen", @@ -37,7 +82,7 @@ export default { description: "Ressourcenbeschreibung", disciplines: "Disziplin", keywords: "Ressourcenschlagwörter", - visibility: "Sichtbarkeit", + visibility: "Sichtbarkeit der Metadaten", license: "Lizenz", usageRights: "Verwendungsrechte", @@ -119,8 +164,108 @@ export default { size: "Dateigröße", }, settings: { - title: "Settings-Seite", - description: "Das ist die @:page.settings.title des Coscine UIv2 Apps", + title: "@:(breadcrumbs.resource.settings)", + overview: { + resource: "Ressource", + resourceLabel: + "@:(page.settings.overview.resource)@:(form.labelSymbol)", + resourceSelect: "Bitte wählen Sie eine Ressource aus", + + resourceTypeLabel: + "@:(page.createResource.configuration.labels.resourceType)", + + persistentId: "Persistent Identifier (PID)", + persistentIdLabel: + "@:(page.settings.overview.persistentId)@:(form.labelSymbol)", + + quota: "Quota", + quotaLabel: "@:(page.settings.overview.quota)@:(form.labelSymbol)", + }, + configuration: { + resourceBucketName: "Bucket-Name", + resourceBucketNameLabel: + "@:(page.settings.configuration.resourceBucketName)@:(form.labelSymbol)", + + resourceSize: "Ressourcengröße", + resourceSizeLabel: + "@:(page.settings.configuration.resourceSize)@:(form.labelSymbol)", + + resourceAccessKey: "Access Key", + resourceReadAccessKey: + "@:(page.settings.configuration.resourceAccessKey) (Lesen)", + resourceReadAccessKeyLabel: + "@:(page.settings.configuration.resourceReadAccessKey)@:(form.labelSymbol)", + + resourceWriteAccessKey: + "@:(page.settings.configuration.resourceAccessKey) (Schreiben)", + resourceWriteAccessKeyLabel: + "@:(page.settings.configuration.resourceWriteAccessKey)@:(form.labelSymbol)", + + resourceSecretKey: "Secret Key", + resourceReadSecretKey: + "@:(page.settings.configuration.resourceSecretKey) (Lesen)", + resourceReadSecretKeyLabel: + "@:(page.settings.configuration.resourceReadSecretKey)@:(form.labelSymbol)", + + resourceWriteSecretKey: + "@:(page.settings.configuration.resourceSecretKey) (Schreiben)", + resourceWriteSecretKeyLabel: + "@:(page.settings.configuration.resourceWriteSecretKey)@:(form.labelSymbol)", + + resourceEndpoint: "End Point", + resourceEndpointLabel: + "@:(page.settings.configuration.resourceEndpoint)@:(form.labelSymbol)", + + resourceResourceUrl: "Ressourcen-URL", + resourceResourceUrlLabel: + "@:(page.settings.configuration.resourceResourceUrl)@:(form.labelSymbol)", + + resourceRepositoryNumber: "Repository ID", + resourceRepositoryNumberLabel: + "@:(page.settings.configuration.resourceRepositoryNumber)@:(form.labelSymbol)", + + resourceRepositoryUrl: "Repository URL", + resourceRepositoryUrlLabel: + "@:(page.settings.configuration.resourceRepositoryUrl)@:(form.labelSymbol)", + + toClipboard: "{resourceOption} wurde in der Zwischenablage kopiert", + }, + actions: { + resourceArchive: "Ressource archivieren", + resourceArchiveLabel: + "@:(page.settings.actions.resourceArchive)@:(form.labelSymbol)", + + resourceDelete: "Ressource löschen", + resourceDeleteLabel: + "@:(page.settings.actions.resourceDelete)@:(form.labelSymbol)", + archive: { + modal: { + title: "Ressource archivieren", + body: "Wenn der Status einer Ressource auf archiviert gesetzt wird, können Daten und Metadaten von Benutzern nicht mehr geändert werden. Das Lesen der Daten und das Herunterladen von Dateien ist jedoch weiterhin möglich. {br}{br}Der Status kann von Projektbesitzern zurückgesetzt werden, wenn die Daten ergänzt oder aktualisiert werden sollen.", + }, + toast: { + title: "Ressource archiviert", + body: "Die Ressource wurde erfolgreich archiviert.", + }, + }, + unarchive: { + modal: { + title: "Aufheben des archivierten Status", + body: "Wenn der archivierte Status nicht mehr gesetzt ist, kehren die Ressourcen zur normalen Funktionalität zurück (z.B. Hinzufügen neuer Dateien und Aktualisieren von Metadaten). {br}{br}Der Status kann von Projektbesitzern wieder gesetzt werden, um zu verhindern, dass Benutzer Daten bearbeiten.", + }, + toast: { + title: "Ressourcenstatus zurückgesetzt", + body: "Der Archivierungsstatus der Ressource wurde erfolgreich zurückgesetzt.", + }, + }, + delete: { + modal: { + title: "Ressource wirklich entfernen?", + body: "Wenn Sie sicher sind, dass Sie diese Ressource entfernen möchten, wiederholen Sie bitte den Ressourcennamen:", + help: "Der angegebene Name stimmt nicht mit dem Ressourcenname überein.", + }, + }, + }, }, }, @@ -182,5 +327,74 @@ export default { }, }, }, - } as VueI18n.LocaleMessageObject, + }, + + form: { + labelSymbol: ":", + project: { + projectName: "Projektname", + projectNameLabel: "@:(form.project.projectName)@:(form.labelSymbol)", + }, + resource: { + resourceName: "Ressourcenname", + resourceNameHelp: + "Dieses Feld ist erforderlich und besitzt eine Maximallänge von {maxLength} Zeichen.", + resourceNameLabel: "@:(form.resource.resourceName)@:(form.labelSymbol)", + + displayName: "Anzeigename", + displayNameHelp: + "Dieses Feld ist erforderlich und besitzt eine Maximallänge von {maxLength} Zeichen.", + displayNameLabel: "@:(form.resource.displayName)@:(form.labelSymbol)", + + resourceDescription: "Ressourcenbeschreibung", + resourceDescriptionHelp: + "Dieses Feld ist erforderlich und besitzt eine Maximallänge von {maxLength} Zeichen.", + resourceDescriptionLabel: + "@:(form.resource.resourceDescription)@:(form.labelSymbol)", + + resourceDiscipline: "Disziplin", + resourceDisciplineLabel: + "@:(form.resource.resourceDiscipline)@:(form.labelSymbol)", + + resourceKeywords: "Ressourcenschlagwörter", + resourceKeywordsPlaceholder: + 'Tippen und drücken Sie "Enter", um ein Schlagwort einzufügen.', + resourceKeywordsHelp: + "Dieses Feld besitzt eine Maximallänge von {maxLength} Zeichen.", + resourceKeywordsEmpty: "Die Liste ist leer.", + resourceKeywordsLabel: + "@:(form.resource.resourceKeywords)@:(form.labelSymbol)", + tagPlaceholder: "Sie können diesen Tag hinzufügen", + + resourceMetadataVisibility: "Sichtbarkeit der Metadaten", + resourceMetadataVisibilityLabel: + "@:(form.resource.resourceMetadataVisibility)@:(form.labelSymbol)", + + resourceLicense: "Lizenz", + resourceLicenseLabel: + "@:(form.resource.resourceLicense)@:(form.labelSymbol)", + resourceLicensePopover: "Für weitere Informationen zu Lizenzen siehe ", + resourceLicensePopoverUrl: + "https://help.itc.rwth-aachen.de/service/b2b7729fd93f4c7080b475776f6b5d87/article/7812e3fcd3a241808f5b91e11b6ca3a9/", + resourceLicenseSelect: "Bitte wählen Sie eine Lizenz aus", + resourceLicenseHelp: + "Dieses Feld besitzt eine Maximallänge von {maxLength} Zeichen.", + + resourceReuse: "Interne Regeln zur Nachnutzung", + resourceReuseLabel: "@:(form.resource.resourceReuse)@:(form.labelSymbol)", + resourceReusePopover: + "Für weitere Informationen zu internen Regeln zur Nachnutzung siehe ", + resourceReusePopoverUrl: + "https://help.itc.rwth-aachen.de/service/b2b7729fd93f4c7080b475776f6b5d87/article/7812e3fcd3a241808f5b91e11b6ca3a9/", + resourceReuseHelp: + "Dieses Feld besitzt eine Maximallänge von {maxLength} Zeichen.", + }, + steps: { + first: "Ressourcen-Konfiguration", + second: "Generelle Informationen", + third: "Metadaten der Ressource", + fourth: "Übersicht & Bestätigung", + fifth: "Aktionen", + }, + }, } as VueI18n.LocaleMessageObject; diff --git a/src/modules/resource/i18n/en.ts b/src/modules/resource/i18n/en.ts index 21b970b4f9be6986dac515ffe44c9f95306ec5a1..39c2f3ae188dff91c0087bd79d417076d708705c 100644 --- a/src/modules/resource/i18n/en.ts +++ b/src/modules/resource/i18n/en.ts @@ -8,9 +8,53 @@ export default { */ page: { createResource: { - title: "Create Resource Page", - description: - "This is the @:page.createResource.title for the Coscine UIv2 App", + title: "Add Resource", + configuration: { + title: "Step 1: @:(form.steps.first)", + needMore: "Need more?", + bucketSize: "{size} GB, this equals approximately {files} files.", + labels: { + resourceType: "Resource Type:", + size: "Resource Size:", + }, + popover: { + title: "Quota not sufficient", + body: "This project does not have sufficient quota to create more resources. You can apply for more storage space in the quota management.", + }, + validation: { + errorMessage: + "No connection with the resource is possible. Please check the provided data.", + }, + }, + general: { + title: "Step 2: @:(form.steps.second)", + }, + metadata: { + title: "Step 3: @:(form.steps.third)", + createAp: { + tooltip: "Request for creation of application profiles", + tooltipDisabled: + "Please add and verify your email address {linkToUserProfile} to request for creation of application profiles", + tooltipHere: "here", + title: "Creation of Application Profiles:", + body: "You are going to get redirected to another page to configure and create a customized application profile. {br}{br}The review process for provisioning submissions usually takes a few days. If required, you will be contacted by our consulting team to support you with the process. {br}{br}Do you want to get redirected to the application profile creation page?", + }, + applicationProfileLabel: "Application Profile:", + selectApplicationProfile: "Please select an application profile", + }, + overview: { + title: "Step 4: @:(form.steps.fourth)", + resourceConfiguration: "Resource Configuration", + }, + multiselect: { + placeholderResourceText: "Please select a resource type.", + placeholderApplicationProfileText: + "Please select an application profile.", + + selectEnter: "Press enter to select.", + noResults: "No elements found. Consider changing the search query.", + noOptions: "List is empty.", + }, }, resource: { resources: "Resources", @@ -37,7 +81,7 @@ export default { description: "Resource Description", disciplines: "Discipline", keywords: "Resource Keywords", - visibility: "Visibility", + visibility: "Metadata Visibility", license: "License", usageRights: "Usage Rights", @@ -117,8 +161,108 @@ export default { size: "File Size", }, settings: { - title: "Settings Page", - description: "This is the @:page.settings.title for the Coscine UIv2 App", + title: "@:(breadcrumbs.resource.settings)", + overview: { + resource: "Resource", + resourceLabel: + "@:(page.settings.overview.resource)@:(form.labelSymbol)", + resourceSelect: "Please select a resource", + + resourceTypeLabel: + "@:(page.createResource.configuration.labels.resourceType)", + + persistentId: "Persistent Identifier (PID)", + persistentIdLabel: + "@:(page.settings.overview.persistentId)@:(form.labelSymbol)", + + quota: "Quota", + quotaLabel: "@:(page.settings.overview.quota)@:(form.labelSymbol)", + }, + configuration: { + resourceBucketName: "Bucket Name", + resourceBucketNameLabel: + "@:(page.settings.configuration.resourceBucketName)@:(form.labelSymbol)", + + resourceSize: "Resource Size", + resourceSizeLabel: + "@:(page.settings.configuration.resourceSize)@:(form.labelSymbol)", + + resourceAccessKey: "Access Key", + resourceReadAccessKey: + "@:(page.settings.configuration.resourceAccessKey) (Reading)", + resourceReadAccessKeyLabel: + "@:(page.settings.configuration.resourceReadAccessKey)@:(form.labelSymbol)", + + resourceWriteAccessKey: + "@:(page.settings.configuration.resourceAccessKey) (Writing)", + resourceWriteAccessKeyLabel: + "@:(page.settings.configuration.resourceWriteAccessKey)@:(form.labelSymbol)", + + resourceSecretKey: "Secret Key", + resourceReadSecretKey: + "@:(page.settings.configuration.resourceSecretKey) (Reading)", + resourceReadSecretKeyLabel: + "@:(page.settings.configuration.resourceReadSecretKey)@:(form.labelSymbol)", + + resourceWriteSecretKey: + "@:(page.settings.configuration.resourceSecretKey) (Writing)", + resourceWriteSecretKeyLabel: + "@:(page.settings.configuration.resourceWriteSecretKey)@:(form.labelSymbol)", + + resourceEndpoint: "End Point", + resourceEndpointLabel: + "@:(page.settings.configuration.resourceEndpoint)@:(form.labelSymbol)", + + resourceResourceUrl: "Resource Url", + resourceResourceUrlLabel: + "@:(page.settings.configuration.resourceResourceUrl)@:(form.labelSymbol)", + + resourceRepositoryNumber: "Repository ID", + resourceRepositoryNumberLabel: + "@:(page.settings.configuration.resourceRepositoryNumber)@:(form.labelSymbol)", + + resourceRepositoryUrl: "Repository URL", + resourceRepositoryUrlLabel: + "@:(page.settings.configuration.resourceRepositoryUrl)@:(form.labelSymbol)", + + toClipboard: "{resourceOption} has been copied to clipboard", + }, + actions: { + resourceArchive: "Archive Resource", + resourceArchiveLabel: + "@:(page.settings.actions.resourceArchive)@:(form.labelSymbol)", + + resourceDelete: "Delete Resource", + resourceDeleteLabel: + "@:(page.settings.actions.resourceDelete)@:(form.labelSymbol)", + archive: { + modal: { + title: "Archive resource", + body: "If the status of a resource is set to archived, data and metadata can not be changed by users any longer. However, reading the data and downloading files is still possible. {br}{br}The status can be unset by project owners if the data has to be extended or updated.", + }, + toast: { + title: "Resource archived", + body: "The resource was successfully set to archived.", + }, + }, + unarchive: { + modal: { + title: "Unset archived status", + body: "If the archived-status is unset, resources return to normal functionality (e.g. adding new files and updating metadata). {br}{br}The archived status can be set again by project owners to prevent users from editing data.", + }, + toast: { + title: "Resource status reset", + body: "The resource archived status was successfully set to normal.", + }, + }, + delete: { + modal: { + title: "Do you really want to delete this resource?", + body: "If you are sure you really want to delete this resource, please type its name:", + help: "The entered name does not match the resource name.", + }, + }, + }, }, }, @@ -175,5 +319,74 @@ export default { }, }, }, - } as VueI18n.LocaleMessageObject, + }, + + form: { + labelSymbol: ":", + project: { + projectName: "Project Name", + projectNameLabel: "@:(form.project.projectName)@:(form.labelSymbol)", + }, + resource: { + resourceName: "Resource Name", + resourceNameHelp: + "This is a required field and can only contain up to {maxLength} characters.", + resourceNameLabel: "@:(form.resource.resourceName)@:(form.labelSymbol)", + + displayName: "Display Name", + displayNameHelp: + "This is a required field and can only contain up to {maxLength} characters.", + displayNameLabel: "@:(form.resource.displayName)@:(form.labelSymbol)", + + resourceDescription: "Resource Description", + resourceDescriptionHelp: + "This is a required field and can only contain up to {maxLength} characters.", + resourceDescriptionLabel: + "@:(form.resource.resourceDescription)@:(form.labelSymbol)", + + resourceDiscipline: "Discipline", + resourceDisciplineLabel: + "@:(form.resource.resourceDiscipline)@:(form.labelSymbol)", + + resourceKeywords: "Resource Keywords", + resourceKeywordsPlaceholder: + 'Type, then press "Enter" to insert a Keyword.', + resourceKeywordsHelp: + "This field can only contain up to {maxLength} characters.", + resourceKeywordsEmpty: "The list of keywords is empty.", + resourceKeywordsLabel: + "@:(form.resource.resourceKeywords)@:(form.labelSymbol)", + tagPlaceholder: "You can add this tag", + + resourceMetadataVisibility: "Metadata Visibility", + resourceMetadataVisibilityLabel: + "@:(form.resource.resourceMetadataVisibility)@:(form.labelSymbol)", + + resourceLicense: "License", + resourceLicenseLabel: + "@:(form.resource.resourceLicense)@:(form.labelSymbol)", + resourceLicensePopover: "For more information on licenses see ", + resourceLicensePopoverUrl: + "https://help.itc.rwth-aachen.de/en/service/b2b7729fd93f4c7080b475776f6b5d87/article/7812e3fcd3a241808f5b91e11b6ca3a9/", + resourceLicenseSelect: "Please select a License", + resourceLicenseHelp: + "This field can only contain up to {maxLength} characters.", + + resourceReuse: "Internal Rules for Reuse", + resourceReuseLabel: "@:(form.resource.resourceReuse)@:(form.labelSymbol)", + resourceReusePopover: + "For more information on internal rules for reuse see ", + resourceReusePopoverUrl: + "https://help.itc.rwth-aachen.de/en/service/b2b7729fd93f4c7080b475776f6b5d87/article/7812e3fcd3a241808f5b91e11b6ca3a9/", + resourceReuseHelp: + "This field can only contain up to {maxLength} characters.", + }, + steps: { + first: "Resource Configuration", + second: "General Information", + third: "Resource Metadata", + fourth: "Overview & Confirm", + fifth: "Actions", + }, + }, } as VueI18n.LocaleMessageObject; diff --git a/src/modules/resource/pages/CreateResource.vue b/src/modules/resource/pages/CreateResource.vue index bec8fe652681b91a56c15db72c5231e33b08147f..b2e8f0aa14b480ff8661fb8240f28b8832a0ea1d 100644 --- a/src/modules/resource/pages/CreateResource.vue +++ b/src/modules/resource/pages/CreateResource.vue @@ -1,43 +1,276 @@ <template> - <div> - <section - class="container flex flex-col items-center px-5 py-12 mx-auto text-gray-600 body-font md:flex-row" - > - <div> - <CoscineHeadline :headline="$parent.$t('page.createResource.title')" /> - <p class="mb-8 leading-relaxed dark:text-white"> - {{ $parent.$t("page.createResource.description") }} - </p> - <img - alt="From Coscine Old" - src="@/assets/images/Project-Id-CreateResource.png" + <div id="createResource"> + <CoscineHeadline :headline="$t('page.createResource.title')" /> + + <!-- Navigation Tabs --> + <b-tabs justified v-model="currentTab" class="mb-4"> + <b-tab + v-for="(tab, index) in tabs" + :key="index" + :disabled="!tab.active" + @click.prevent="toTab(tab)" + :title="tab.title" + /> + </b-tabs> + + <!-- Tab Content --> + <b-row> + <div class="col-sm-2" /> + <div class="col-sm-8"> + <Configuration + v-if="currentTab === 0" + v-model="resource" + :isLoading="isLoading" + @valid="setNextTab" + @next="next" + /> + <General + v-else-if="currentTab === 1" + v-model="resource" + :isLoading="isLoading" + :readonly="false" + @valid="setNextTab" /> + <Metadata + v-else-if="currentTab === 2" + v-model="resource" + :applicationProfileList="groupedAPList" + :applicationProfileString="applicationProfileString" + :isLoadingFormGenerator="isLoadingFormGenerator" + @valid="setNextTab" + /> + <Overview + v-else-if="currentTab === 3" + v-model="resource" + :tabs="tabs" + :applicationProfileString="applicationProfileString" + :isLoadingFormGenerator="isLoadingFormGenerator" + @back="back" + @toTab="toTab" + @waitingForResponse="isWaitingForResponse = $event" + /> + + <b-form-group v-if="currentTab > 0 && currentTab < tabs.length - 1"> + <!-- Button Back --> + <b-button @click.prevent="back" variant="outline-primary" + >{{ $t("buttons.back") }} + </b-button> + + <!-- Button Next --> + <b-button + @click.prevent="next" + class="float-right" + variant="outline-primary" + :disabled="!tabs[currentTab + 1].active" + >{{ $t("buttons.next") }} + </b-button> + </b-form-group> </div> - </section> + <div class="col-sm-2" /> + </b-row> + + <!-- Loading Spinner on Submit --> + <LoadingSpinner :isWaitingForResponse="isWaitingForResponse" /> </div> </template> <script lang="ts"> import { defineComponent } from "vue-demi"; -import CoscineHeadline from "@/components/CoscineHeadline.vue"; - // import the store for current module -import { useResourceStore } from "../store"; -import { useProjectStore } from "@/modules/project/store"; -// import the main store -import { useMainStore } from "@/store/index"; +import useResourceStore from "../store"; +import useProjectStore from "@/modules/project/store"; +import Configuration from "../components/create-resource/Configuration.vue"; +import General from "../components/create-resource/General.vue"; +import Metadata from "../components/create-resource/Metadata.vue"; +import Overview from "../components/create-resource/Overview.vue"; +import type { + DisciplineObject, + ResourceObject, + VisibilityObject, +} from "@coscine/api-client/dist/types/Coscine.Api.Resources"; +import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.Project"; +import type { + GroupedApplicationProfiles, + ResourceCreationTab, + ResourceTypeOption, +} from "../types"; export default defineComponent({ + components: { Configuration, General, Metadata, Overview }, setup() { - const mainStore = useMainStore(); - const resourceStore = useResourceStore(); const projectStore = useProjectStore(); + const resourceStore = useResourceStore(); - return { mainStore, resourceStore, projectStore }; + return { projectStore, resourceStore }; }, - components: { - CoscineHeadline, + data() { + return { + currentTab: 0, + tabsStatus: [true, false, false, false], + resource: { + description: "", + displayName: "", + resourceName: "", + keywords: "", + license: "", + usageRights: "", + disciplines: [] as DisciplineObject[], + visibility: {} as VisibilityObject, + resourceTypeOption: {} as ResourceTypeOption, + } as ResourceObject, + groupedAPList: [] as GroupedApplicationProfiles[], + applicationProfileString: null as string | null, + isLoadingFormGenerator: false, + isWaitingForResponse: false, + isLoading: false, + }; + }, + + computed: { + project(): ProjectObject | null { + return this.projectStore.currentProject; + }, + tabs(): ResourceCreationTab[] { + // Order does matter + return [ + { + title: this.$t("page.createResource.configuration.title").toString(), + active: true, + step: "configuration", + }, + { + title: this.$t("page.createResource.general.title").toString(), + active: this.tabsStatus[1], + step: "general", + }, + { + title: this.$t("page.createResource.metadata.title").toString(), + active: this.tabsStatus[2], + step: "metadata", + }, + { + title: this.$t("page.createResource.overview.title").toString(), + active: this.tabsStatus[3], + step: "overview", + }, + ]; + }, + }, + + watch: { + project() { + if (this.project && this.project.id) { + this.isLoadingFormGenerator = false; + } + }, + "resource.applicationProfile"() { + this.getApplicationProfile(); + }, + }, + + async created() { + this.isLoading = true; + this.getGroupedApplicationProfilesList(); + + // Load Project Visibilities if not present + if (this.projectStore.visibilities === null) { + await this.projectStore.retrieveVisibilities(); + } + // Load Project Disciplines if not present + if (this.projectStore.disciplines === null) { + await this.projectStore.retrieveDisciplines(); + } + // Load Project Licenses if not present + if (this.projectStore.licenses === null) { + await this.projectStore.retrieveLicenses(); + } + this.isLoading = false; + }, + + methods: { + async getGroupedApplicationProfilesList() { + let list = await this.resourceStore.getApplicationProfilesList(); + if (list) { + for (const applicationProfile of list.sort()) { + // Extract AP hierarchy from URIs + let text = applicationProfile.replace( + "https://purl.org/coscine/ap/", + "" + ); + if (text.charAt(text.length - 1) === "/") { + text = text.substring(0, text.lastIndexOf("/")); + } + if (text.lastIndexOf("/") !== -1) { + // The Application Profile has a dedicated group + let indexOfSlash = text.lastIndexOf("/"); + let groupName = text.substring(0, indexOfSlash).toUpperCase(); + let optionName = text.substring(indexOfSlash + 1); + optionName = + optionName.charAt(0).toUpperCase() + optionName.slice(1); + let option = { + value: applicationProfile.toString(), + text: optionName, + }; + let groupEntry = this.groupedAPList.find( + (element) => element.label === groupName + ); + if (groupEntry && groupEntry.options) { + let indexOfGroupEntry = this.groupedAPList.indexOf(groupEntry); + groupEntry.options.push(option); + this.groupedAPList.splice(indexOfGroupEntry, 1, groupEntry); + } else { + this.groupedAPList.push({ + label: groupName, + options: [option], + }); + } + } else { + // The Application Profile does not have a dedicated group + text = text.charAt(0).toUpperCase() + text.slice(1); + this.groupedAPList.push({ + value: applicationProfile.toString(), + text: text, + }); + } + } + + // Assign the application profile directly to the resource, if only one AP is found + if (this.groupedAPList.length === 1) { + // Use .$set() to ensure property reactivity + this.$set( + this.resource, + "applicationProfile", + this.groupedAPList[0].value + ); + } + } + }, + async getApplicationProfile() { + if (this.resource && this.resource.applicationProfile) { + this.isLoadingFormGenerator = true; + const applicationProfile = + await this.resourceStore.getApplicationProfile( + this.resource.applicationProfile + ); + this.applicationProfileString = JSON.stringify(applicationProfile); + this.isLoadingFormGenerator = false; + } else { + this.applicationProfileString = null; + } + }, + back() { + this.currentTab -= 1; + }, + next() { + this.currentTab += 1; + }, + toTab(tab: ResourceCreationTab) { + this.currentTab = this.tabs.indexOf(tab); + }, + setNextTab(active: boolean) { + this.$set(this.tabsStatus, this.currentTab + 1, active); + }, }, }); </script> diff --git a/src/modules/resource/pages/ResourcePage.vue b/src/modules/resource/pages/ResourcePage.vue index ee3ac29c33dc8095638a5325c490d96f5e0770db..2817eaf19ed6e31ce1d9f75650ba9c8bb150b0eb 100644 --- a/src/modules/resource/pages/ResourcePage.vue +++ b/src/modules/resource/pages/ResourcePage.vue @@ -8,11 +8,11 @@ @drop.prevent="uploadDrop" > <div class="droppable" v-if="showDroppable && fileAddable"> - <p class="droppableText">{{ $parent.$t("page.resource.canDropFile") }}</p> + <p class="droppableText">{{ $t("page.resource.canDropFile") }}</p> </div> <coscine-headline v-show="!isFullscreen" - :headline="$parent.$t('page.resource.resources')" + :headline="$t('page.resource.resources')" /> <b-form-file ref="fileTrigger" @@ -49,9 +49,7 @@ squared id="metadataManagerToggleFullscreen" @click="toggleMenu()" - ><span>{{ - $parent.$t("page.resource.metadataManager") - }}</span></b-button + ><span>{{ $t("page.resource.metadataManager") }}</span></b-button > <div class="card"> <div class="card-body"> @@ -104,13 +102,13 @@ import { defineComponent } from "vue-demi"; import type Vue from "vue"; // import the store for current module -import { useResourceStore } from "../store"; -import { useProjectStore } from "@/modules/project/store"; +import useResourceStore from "../store"; +import useProjectStore from "@/modules/project/store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; -import FilesView from "../components/FilesView.vue"; -import MetadataManager from "../components/MetadataManager.vue"; +import FilesView from "../components/resource-page/FilesView.vue"; +import MetadataManager from "../components/resource-page/MetadataManager.vue"; import type { FileInformation, diff --git a/src/modules/resource/pages/Settings.vue b/src/modules/resource/pages/Settings.vue index 67e7e983021bf5689f404b9e8917d05e2c0c9fe3..de0b6837c685ea748f9cc23bd3644a9bb349cb32 100644 --- a/src/modules/resource/pages/Settings.vue +++ b/src/modules/resource/pages/Settings.vue @@ -1,43 +1,341 @@ <template> - <div> - <section - class="container flex flex-col items-center px-5 py-12 mx-auto text-gray-600 body-font md:flex-row" - > - <div> - <CoscineHeadline :headline="$parent.$t('page.settings.title')" /> - <p class="mb-8 leading-relaxed dark:text-white"> - {{ $parent.$t("page.settings.description") }} - </p> - <img - alt="From Coscine Old" - src="@/assets/images/Project-Id-R-Guid-Settings.png" - /> - </div> - </section> + <div id="settings"> + <CoscineHeadline :headline="$t('page.settings.title')" /> + + <!-- Overview --> + <Overview /> + + <!-- Navigation Tabs --> + <b-tabs justified v-model="currentTab" class="my-4" v-if="resource"> + <b-tab + v-for="(tab, index) in tabs" + :key="index" + :disabled="!tab.active" + @click.prevent="toTab(tab)" + :title="tab.title" + /> + </b-tabs> + <b-row v-else align-h="center" class="my-4"> + <b-spinner variant="secondary" /> + </b-row> + + <!-- Configuration --> + <Configuration v-show="tabs[currentTab].step === 'configuration'" /> + + <!-- General Overview from Create Resource --> + <General + v-show="tabs[currentTab].step === 'general'" + v-model="resourceForm" + :isLoading="isLoading" + :readonly="false" + @validation="validation = $event" + /> + + <!-- Metadata --> + <Metadata + v-show="tabs[currentTab].step === 'metadata'" + v-model="resourceForm" + :applicationProfileString="applicationProfileString" + :isLoadingFormGenerator="isLoading" + @clickSave="clickSave" + /> + + <!-- Actions --> + <Actions + v-if="resource" + v-show="tabs[currentTab].step === 'action'" + v-model="resource" + @toggleArchive="toggleArchive" + @clickDelete="clickDelete" + /> + + <!-- Button Confirm --> + <b-form-group> + <b-button + v-if="confirmButtonVisibility" + @click.prevent="clickSave" + :disabled="!validResourceForm" + class="float-right" + variant="primary" + > + {{ $t("buttons.confirm") }} + </b-button> + </b-form-group> + + <!-- Loading Spinner on Submit --> + <LoadingSpinner :isWaitingForResponse="isWaitingForResponse" /> </div> </template> <script lang="ts"> import { defineComponent } from "vue-demi"; -import CoscineHeadline from "@/components/CoscineHeadline.vue"; - // import the store for current module -import { useResourceStore } from "../store"; -import { useProjectStore } from "@/modules/project/store"; -// import the main store -import { useMainStore } from "@/store/index"; +import useResourceStore from "../store"; +import useProjectStore from "@/modules/project/store"; +import { navigateToProject } from "@/router"; +import General from "../components/create-resource/General.vue"; +import Metadata from "../components/settings/Metadata.vue"; +import Actions from "../components/settings/Actions.vue"; +import Overview from "../components/settings/Overview.vue"; +import Configuration from "../components/settings/Configuration.vue"; +import type { + DisciplineObject, + ResourceObject, + VisibilityObject, +} from "@coscine/api-client/dist/types/Coscine.Api.Resources"; +import type { ResourceCreationTab, ResourceTypeOption } from "../types"; +import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.Project"; +import type { Validation } from "vuelidate"; export default defineComponent({ setup() { - const mainStore = useMainStore(); const resourceStore = useResourceStore(); const projectStore = useProjectStore(); - return { mainStore, resourceStore, projectStore }; + return { resourceStore, projectStore }; }, components: { - CoscineHeadline, + Overview, + Configuration, + General, + Metadata, + Actions, + }, + + data() { + return { + currentTab: 0, + resourceForm: { + description: "", + displayName: "", + resourceName: "", + keywords: "", + license: "", + usageRights: "", + disciplines: [] as DisciplineObject[], + visibility: {} as VisibilityObject, + resourceTypeOption: {} as ResourceTypeOption, + } as ResourceObject, + applicationProfileString: null as string | null, + validation: {} as Validation, + isWaitingForResponse: false, + isLoading: false, + }; + }, + + computed: { + project(): ProjectObject | null { + return this.projectStore.currentProject; + }, + resource(): ResourceObject | null { + return this.resourceStore.currentResource; + }, + validResourceForm(): boolean { + if (this.resource && this.resource.archived) { + // Limit button to only changes in the "general" tab, when the resource is archived. + return !this.validation.$invalid && this.validation.$anyDirty; + } else { + // Button should always be enabled; Alternatively make the validation check here. + return true; + } + }, + confirmButtonVisibility(): boolean { + if (this.resource && this.resource.archived) { + // Limit button to only be visible in the "general" tab, when the resource is archived. + return this.tabs[this.currentTab].step === "general"; + } else { + return ( + this.tabs[this.currentTab].step === "general" || + this.tabs[this.currentTab].step === "metadata" + ); + } + }, + tabs(): ResourceCreationTab[] { + // Order does matter + const tabs = [ + { + title: this.$t("form.steps.first").toString(), + active: true, + step: "configuration", + }, + { + title: this.$t("form.steps.second").toString(), + active: true, + step: "general", + }, + { + title: this.$t("form.steps.third").toString(), + active: true, + step: "metadata", + }, + { + title: this.$t("form.steps.fifth").toString(), + active: true, + step: "action", + }, + ]; + if (this.resource && this.resource.resourceTypeOption) { + const keys = Object.keys(this.resource.resourceTypeOption); + if (keys.length === 0 || keys.filter((e) => e !== "Id").length === 0) { + return tabs.splice(1); + } + } + return tabs; + }, + }, + + watch: { + resource() { + // Filling the form requires a watcher for the cases + // when resource may be unset (e.g. when entering from a direct link) + this.onResourceLoaded(); + }, + }, + + async created() { + this.isLoading = true; + + // Load Project Visibilities if not present + if (this.projectStore.visibilities === null) { + await this.projectStore.retrieveVisibilities(); + } + // Load Project Disciplines if not present + if (this.projectStore.disciplines === null) { + await this.projectStore.retrieveDisciplines(); + } + // Load Project Licenses if not present + if (this.projectStore.licenses === null) { + await this.projectStore.retrieveLicenses(); + } + this.onResourceLoaded(); + this.isLoading = false; + }, + + methods: { + onResourceLoaded() { + if (this.resource) { + // Fill the form. Note that regular assignment makes this.resource react on this.resourceForm changes! + Object.assign(this.resourceForm, this.resource); // Use this to only copy the properties + this.getApplicationProfile(); + } + }, + + toTab(tab: ResourceCreationTab) { + this.currentTab = this.tabs.indexOf(tab); + }, + + async getApplicationProfile() { + if (this.resource && this.resource.applicationProfile) { + this.isLoading = true; + const applicationProfile = + await this.resourceStore.getApplicationProfile( + this.resource.applicationProfile + ); + this.applicationProfileString = JSON.stringify(applicationProfile); + this.isLoading = false; + } else { + this.applicationProfileString = null; + } + }, + + makeToast( + text = "Message", + givenTitle = "Title", + variant: string | undefined = undefined + ) { + this.$root.$bvToast.toast(text, { + title: givenTitle, + autoHideDelay: 5000, + toaster: "b-toaster-bottom-right", + variant: variant, + noCloseButton: true, + }); + }, + + async clickSave() { + this.isWaitingForResponse = true; + const success = await this.resourceStore.updateResource( + this.resourceForm + ); + if (success) { + // On Success + // Refresh the project information in the store + await this.projectStore.refreshProjectInformation(this.project); + if (this.resource && this.resource.id) { + await this.resourceStore.retrieveResource(this.resource.id); + } + this.makeToast( + this.$t("toast.onSave.success.message").toString(), + this.$t("toast.onSave.success.title").toString() + ); + } else { + // On Failure + this.makeToast( + this.$t("toast.onSave.failure.message").toString(), + this.$t("toast.onSave.failure.title").toString(), + "danger" + ); + } + this.isWaitingForResponse = false; + }, + + async toggleArchive() { + if (this.resource) { + this.isWaitingForResponse = true; + const success = await this.resourceStore.setResourceArchiveStatus( + this.resource, + !this.resource.archived + ); + if (success) { + // On Success + // Refresh the project information in the store + await this.projectStore.refreshProjectInformation(this.project); + if (this.resource && this.resource.id) { + await this.resourceStore.retrieveResource(this.resource.id); + } + const action = !this.resource.archived ? "unarchive" : "archive"; + this.makeToast( + this.$t(`page.settings.actions.${action}.toast.body`).toString(), + this.$t(`page.settings.actions.${action}.toast.title`).toString() + ); + } else { + // On Failure + this.makeToast( + this.$t("toast.onSave.failure.message").toString(), + this.$t("toast.onSave.failure.title").toString(), + "danger" + ); + } + this.isWaitingForResponse = false; + } + }, + + async clickDelete() { + this.isWaitingForResponse = true; + const success = await this.resourceStore.deleteResource( + this.resourceForm + ); + if (success) { + // On Success + const parentProject = this.project; + // Refresh the project information in the store + await this.projectStore.refreshProjectInformation(parentProject); + this.makeToast( + this.$t("toast.onDelete.success.message").toString(), + this.$t("toast.onDelete.success.title").toString() + ); + navigateToProject(parentProject); + } else { + // On Failure + this.makeToast( + this.$t("toast.onDelete.failure.message").toString(), + this.$t("toast.onDelete.failure.title").toString(), + "danger" + ); + } + this.isWaitingForResponse = false; + }, }, }); </script> diff --git a/src/modules/resource/routes.ts b/src/modules/resource/routes.ts index fa652fbb899f2f0a3c121a35fbe6560ef97b8a8c..27947b5ad9bdcbb36e32f4706dd31707cccf585b 100644 --- a/src/modules/resource/routes.ts +++ b/src/modules/resource/routes.ts @@ -5,18 +5,25 @@ const ResourceModule = () => import("./ResourceModule.vue"); const ResourcePage = () => import("./pages/ResourcePage.vue"); const Settings = () => import("./pages/Settings.vue"); +import { ResourceI18nMessages } from "@/modules/resource/i18n/index"; + export const ResourceRoutes: RouteConfig[] = [ { // Omit the slash "/" at the start of "path" to not reference "root". Nested under module "projects". path: "create-resource", component: ResourceModule, + meta: { + i18n: ResourceI18nMessages, + breadCrumb: "resource.create", + requiresAuth: true, + }, children: [ { path: "/", + alias: "", name: "create-resource", component: CreateResource, meta: { - breadCrumb: "resource.create", requiresAuth: true, }, }, @@ -28,6 +35,7 @@ export const ResourceRoutes: RouteConfig[] = [ meta: { breadCrumb: "resource.page", default: "resource-page", + i18n: ResourceI18nMessages, }, children: [ { diff --git a/src/modules/resource/store.ts b/src/modules/resource/store.ts index b5c0852f4bcab0f472b57ea57ec0c780cab2f11e..4725aaeaac3d348e10e4c8b366e98ff95c3a8c6a 100644 --- a/src/modules/resource/store.ts +++ b/src/modules/resource/store.ts @@ -18,7 +18,8 @@ import type { ResourceObject } from "@coscine/api-client/dist/types/Coscine.Api. import type { Route } from "vue-router/types/router"; import { useLocalStorage } from "@vueuse/core"; import type { BilingualLabels } from "@coscine/api-client/dist/types/Coscine.Api.Metadata"; - +import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.Project"; +import { updatedDiff } from "deep-object-diff"; /* Store variable name is "this.<id>Store" id: "resource" --> this.resourceStore @@ -106,6 +107,29 @@ export const useResourceStore = defineStore({ } }, + async getApplicationProfile( + applicationProfile: string + ): Promise<ApplicationProfile> { + const apiResponse = await MetadataApi.metadataGetProfile( + applicationProfile + ); + if (apiResponse.status === StatusCodes.OK) { + return apiResponse.data; + } else { + // Handle other Status Codes + return []; + } + }, + + async getApplicationProfilesList(): Promise<string[] | undefined> { + const apiResponse = await MetadataApi.metadataGetProfiles(); + if (apiResponse.status === StatusCodes.OK) { + return apiResponse.data; + } else { + // Handle other Status Codes + } + }, + async retrieveUsedQuota(resource: VisitedResourceObject) { if (resource.id) { const apiResponse = await BlobApi.blobGetQuota(resource.id); @@ -127,6 +151,82 @@ export const useResourceStore = defineStore({ } }, + async createResource( + project: ProjectObject, + resource: ResourceObject + ): Promise<ResourceObject | null> { + if (project.id) { + const apiResponse = await ResourceApi.resourceStoreToProject( + project.id, + resource + ); + if (apiResponse.status === StatusCodes.OK) { + const createdResource: ResourceObject = apiResponse.data; + return createdResource; + } else { + // Handle other Status Codes + return null; + } + } else { + console.error("Selected project's ID is undefined."); + return null; + } + }, + + async updateResource(resource: ResourceObject): Promise<boolean> { + if (resource.id) { + const apiResponse = await ResourceApi.resourceUpdate( + resource.id, + resource + ); + if (apiResponse.status === StatusCodes.OK) { + return true; + } else { + // Handle other Status Codes + return false; + } + } else { + console.error("Selected resource's ID is undefined."); + return false; + } + }, + + async setResourceArchiveStatus( + resource: ResourceObject, + status: boolean + ): Promise<boolean> { + if (resource.id) { + const apiResponse = await ResourceApi.resourceSetResourceReadonly( + resource.id, + status + ); + if (apiResponse.status === StatusCodes.OK) { + return true; + } else { + // Handle other Status Codes + return false; + } + } else { + console.error("Selected resource's ID is undefined."); + return false; + } + }, + + async deleteResource(resource: ResourceObject): Promise<boolean> { + if (resource.id) { + const apiResponse = await ResourceApi.resourceDelete(resource.id); + if (apiResponse.status === StatusCodes.OK) { + return true; + } else { + // Handle other Status Codes + return false; + } + } else { + console.error("Selected resource's ID is undefined."); + return false; + } + }, + async handleUnsetResource(resource: ResourceObject | null, route: Route) { const routeParams = route.params; if ( @@ -149,6 +249,10 @@ export const useResourceStore = defineStore({ addResourceAsVisited(resource: ResourceObject | null) { if (resource && resource.id) { + const updatedKeys = updatedDiff( + this.visitedResources[resource.id], + resource + ); if (!this.visitedResources[resource.id]) { // Important! Keep object assignment reactive() const visitedResource: VisitedResourceObject = reactive({ @@ -161,6 +265,8 @@ export const useResourceStore = defineStore({ ), }); this.visitedResources[resource.id] = visitedResource; + } else if (updatedKeys && Object.keys(updatedKeys).length > 0) { + Object.assign(this.visitedResources[resource.id], updatedKeys); } } }, diff --git a/src/modules/resource/types.ts b/src/modules/resource/types.ts index 600048033cb25c9be512a3fb150d22d6a98b2cac..a98eebd28af35d80d4fffd470546bb25d8e5f270 100644 --- a/src/modules/resource/types.ts +++ b/src/modules/resource/types.ts @@ -16,6 +16,33 @@ export interface VisitedResourceObject extends ResourceObject { storedColumns: string | null; } +export interface LabeledResourceObject extends ResourceTypeInformation { + iDisplayName: string; + iFullName: string; + iDescription: string; +} + +export interface GroupedApplicationProfiles { + label?: string; + options?: Array<{ + text: string; + value: string; + }>; + text?: string; + value?: string; +} + +export interface ResourceCreationTab { + title: string; + active: boolean; + step: string; +} + +export interface ResourceTypeOption { + Size: number; + [x: string]: unknown; +} + export interface ResourceState { /* -------------------------------------------------------------------------------------- diff --git a/src/modules/search/SearchModule.vue b/src/modules/search/SearchModule.vue index b879728276aae8daf507e36b87e1d036de984f0c..b25069d5188a30360cc3abbdcfe349928ea7c06c 100644 --- a/src/modules/search/SearchModule.vue +++ b/src/modules/search/SearchModule.vue @@ -6,12 +6,11 @@ <script lang="ts"> import { defineComponent } from "vue-demi"; -import { SearchI18nMessages } from "./i18n"; // import the store for current module -import { useSearchStore } from "./store"; +import useSearchStore from "./store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { @@ -20,7 +19,6 @@ export default defineComponent({ return { mainStore, searchStore }; }, - i18n: { messages: SearchI18nMessages }, created() { this.initialize(); diff --git a/src/modules/search/pages/Search.vue b/src/modules/search/pages/Search.vue index c12673094ab4bc7d7997c3993776aab47bebb418..9337e54aee73bf4eb0860c050faa859c41472283 100644 --- a/src/modules/search/pages/Search.vue +++ b/src/modules/search/pages/Search.vue @@ -1,6 +1,6 @@ <template> <div class="search"> - <CoscineHeadline :headline="$parent.$t('page.search.title')" /> + <CoscineHeadline :headline="$t('page.search.title')" /> <b-row id="mainRow"> <!-- Sidebar --> @@ -12,14 +12,14 @@ <b-col id="searchField" align-self="start" class="pl-0"> <b-form-input v-model="searchText" - :placeholder="$parent.$t('page.search.search')" + :placeholder="$t('page.search.search')" ></b-form-input> </b-col> <b-col sm="2" id="selectProjCol" align-self="center" class="pl-0"> <b-form-select v-model="selectProjValue"> <template #first> <b-form-select-option :value="null" disabled - >{{ $parent.$t("page.search.allProjects") }} + >{{ $t("page.search.allProjects") }} </b-form-select-option> </template> </b-form-select> @@ -28,7 +28,7 @@ <b-form-select v-model="selectResValue"> <template #first> <b-form-select-option :value="null" disabled - >{{ $parent.$t("page.search.allResources") }} + >{{ $t("page.search.allResources") }} </b-form-select-option> </template> </b-form-select> @@ -36,14 +36,14 @@ <b-col sm="0" align-self="center" class="text-right p-0"> <b-button-group> <b-button id="searchButton" variant="primary"> - {{ $parent.$t("page.search.search") }} + {{ $t("page.search.search") }} </b-button> <b-dropdown id="searchDropdown" right size="sm" variant="primary"> <b-dropdown-item>{{ - $parent.$t("page.search.buttonSearch.Item1") + $t("page.search.buttonSearch.Item1") }}</b-dropdown-item> <b-dropdown-item>{{ - $parent.$t("page.search.buttonSearch.Item2") + $t("page.search.buttonSearch.Item2") }}</b-dropdown-item> </b-dropdown> </b-button-group> @@ -121,7 +121,7 @@ <template #empty> <h6 class="text-center"> - {{ $parent.$t("page.search.emptySearch") }} + {{ $t("page.search.emptySearch") }} </h6> </template> @@ -135,7 +135,7 @@ " class="p-2 text-center text-muted border-top" > - {{ $parent.$t("page.search.endSearchResults") }} + {{ $t("page.search.endSearchResults") }} </div> </template> </b-table> @@ -175,9 +175,9 @@ import Result from "./components/Result.vue"; import Sidebar from "./components/Sidebar.vue"; // import the store for current module -import { useSearchStore } from "../store"; +import useSearchStore from "../store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; import type { DummyDataType } from "../types"; diff --git a/src/modules/search/pages/components/Result.vue b/src/modules/search/pages/components/Result.vue index e39d57afc956bd2a59b2a16ea77d79b4d016ed3a..5b72bc7ab3e415277e03d1eef508b6bf259b25c3 100644 --- a/src/modules/search/pages/components/Result.vue +++ b/src/modules/search/pages/components/Result.vue @@ -36,9 +36,9 @@ import { defineComponent, PropType } from "vue-demi"; import { DummyDataType } from "../../types"; // import the store for current module -import { useSearchStore } from "../../store"; +import useSearchStore from "../../store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { diff --git a/src/modules/search/pages/components/Sidebar.vue b/src/modules/search/pages/components/Sidebar.vue index eecf99799713fd4490d01f6609c16ac66e4b821f..8f8bb0d36c709d8bd672c3059f316663f10bc191 100644 --- a/src/modules/search/pages/components/Sidebar.vue +++ b/src/modules/search/pages/components/Sidebar.vue @@ -14,9 +14,9 @@ import { defineComponent } from "vue-demi"; // import the store for current module -import { useSearchStore } from "../../store"; +import useSearchStore from "../../store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { diff --git a/src/modules/search/routes.ts b/src/modules/search/routes.ts index 2d5e53dce8381645d975ab6df2f5f5d4cce7796f..a34aa3d1cbb4ce43d267845252c6b3a4d7182e08 100644 --- a/src/modules/search/routes.ts +++ b/src/modules/search/routes.ts @@ -3,12 +3,15 @@ import { RouteConfig } from "vue-router"; const SearchModule = () => import("./SearchModule.vue"); const Search = () => import("./pages/Search.vue"); +import { SearchI18nMessages } from "@/modules/search/i18n/index"; + export const SearchRoutes: RouteConfig[] = [ { path: "/search", component: SearchModule, meta: { breadCrumb: "search", + i18n: SearchI18nMessages, }, children: [ { diff --git a/src/modules/user/UserModule.vue b/src/modules/user/UserModule.vue index 063a6c83019e31d42193dc91e09ab33b6fa3adb6..d8ae5577583f500ea49272bc22496c17934f8764 100644 --- a/src/modules/user/UserModule.vue +++ b/src/modules/user/UserModule.vue @@ -6,12 +6,11 @@ <script lang="ts"> import { defineComponent } from "vue-demi"; -import { UserI18nMessages } from "./i18n"; // import the store for current module -import { useUserStore } from "./store"; +import useUserStore from "./store"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; export default defineComponent({ setup() { @@ -20,7 +19,6 @@ export default defineComponent({ return { mainStore, userStore }; }, - i18n: { messages: UserI18nMessages }, created() { this.initialize(); diff --git a/src/modules/user/pages/UserProfile.vue b/src/modules/user/pages/UserProfile.vue index 5ee02bc009e2a41d8aa995efbd5b9e498821ea0f..399a70cd1c8bd368c6b4f487f3a8f728771fe089 100644 --- a/src/modules/user/pages/UserProfile.vue +++ b/src/modules/user/pages/UserProfile.vue @@ -5,17 +5,13 @@ <b-form @submit.stop.prevent="onSubmit"> <!-- Personal Information --> <CoscineHeadline - :headline=" - $parent.$t('page.userprofile.form.personalInformation.header') - " + :headline="$t('page.userprofile.form.personalInformation.header')" /> <!-- Title --> <coscine-form-group labelFor="title" :label=" - $parent.$t( - 'page.userprofile.form.personalInformation.labels.titleLabel' - ) + $t('page.userprofile.form.personalInformation.labels.titleLabel') " :isLoading="isLoading" type="input" @@ -28,23 +24,23 @@ label="displayName" track-by="displayName" :placeholder=" - $parent.$t( + $t( 'page.userprofile.form.personalInformation.multiselect.placeholderTitle' ) " :selectLabel=" - $parent.$t( + $t( 'page.userprofile.form.personalInformation.multiselect.selectEnter' ) " > <span slot="noResult">{{ - $parent.$t( + $t( "page.userprofile.form.personalInformation.multiselect.noResults" ) }}</span> <span slot="noOptions">{{ - $parent.$t( + $t( "page.userprofile.form.personalInformation.multiselect.noOptions" ) }}</span> @@ -55,7 +51,7 @@ :mandatory="true" labelFor="givenname" :label=" - $parent.$t( + $t( 'page.userprofile.form.personalInformation.labels.givenNameLabel' ) " @@ -67,7 +63,7 @@ v-model="$v.form.givenname.$model" :state="$v.form.givenname.$dirty ? !$v.form.givenname.$error : null" :placeholder=" - $parent.$t('page.userprofile.form.personalInformation.givenName') + $t('page.userprofile.form.personalInformation.givenName') " /> </coscine-form-group> @@ -76,9 +72,7 @@ :mandatory="true" labelFor="surname" :label=" - $parent.$t( - 'page.userprofile.form.personalInformation.labels.surnameLabel' - ) + $t('page.userprofile.form.personalInformation.labels.surnameLabel') " :isLoading="isLoading" type="input" @@ -88,7 +82,7 @@ v-model="$v.form.surname.$model" :state="$v.form.surname.$dirty ? !$v.form.surname.$error : null" :placeholder=" - $parent.$t('page.userprofile.form.personalInformation.surname') + $t('page.userprofile.form.personalInformation.surname') " /> </coscine-form-group> @@ -97,9 +91,7 @@ :mandatory="true" labelFor="Email" :label=" - $parent.$t( - 'page.userprofile.form.personalInformation.labels.emailLabel' - ) + $t('page.userprofile.form.personalInformation.labels.emailLabel') " :isLoading="isLoading" type="input" @@ -110,9 +102,7 @@ :state=" $v.form.emailAddress.$dirty ? !$v.form.emailAddress.$error : null " - :placeholder=" - $parent.$t('page.userprofile.form.personalInformation.email') - " + :placeholder="$t('page.userprofile.form.personalInformation.email')" /> <div id="emailHint">{{ emailHint }}</div> </coscine-form-group> @@ -121,7 +111,7 @@ :mandatory="true" labelFor="organization" :label=" - $parent.$t( + $t( 'page.userprofile.form.personalInformation.labels.organizationLabel' ) " @@ -138,7 +128,7 @@ label="displayName" track-by="displayName" :placeholder=" - $parent.$t( + $t( 'page.userprofile.form.personalInformation.multiselect.placeholderText' ) " @@ -152,7 +142,7 @@ </template> <template slot="noOptions"> {{ - $parent.$t( + $t( "page.userprofile.form.personalInformation.multiselect.noOptionsOrganization" ) }} @@ -167,9 +157,7 @@ label="displayName" track-by="displayName" :placeholder=" - $parent.$t( - 'page.userprofile.form.personalInformation.organization' - ) + $t('page.userprofile.form.personalInformation.organization') " :disabled="true" > @@ -180,7 +168,7 @@ :mandatory="true" labelFor="institute" :label=" - $parent.$t( + $t( 'page.userprofile.form.personalInformation.labels.instituteLabel' ) " @@ -193,7 +181,7 @@ v-model="$v.form.institute.$model" type="text" :placeholder=" - $parent.$t('page.userprofile.form.personalInformation.institute') + $t('page.userprofile.form.personalInformation.institute') " > </b-form-input> @@ -206,7 +194,7 @@ label="displayName" track-by="displayName" :placeholder=" - $parent.$t('page.userprofile.form.personalInformation.institute') + $t('page.userprofile.form.personalInformation.institute') " :disabled="true" > @@ -217,7 +205,7 @@ :mandatory="true" labelFor="Discipline" :label=" - $parent.$t( + $t( 'page.userprofile.form.personalInformation.labels.disciplineLabel' ) " @@ -232,7 +220,7 @@ :label="disciplineLabel" :track-by="disciplineLabel" :placeholder=" - $parent.$t( + $t( 'page.userprofile.form.personalInformation.multiselect.placeholderDiscipline' ) " @@ -249,22 +237,20 @@ <!-- Access Token --> <div class="h-divider" /> <CoscineHeadline - :headline="$parent.$t('page.userprofile.form.accessToken.header')" + :headline="$t('page.userprofile.form.accessToken.header')" /> <AccessToken /> <!-- User Preferences --> <div class="h-divider"></div> <CoscineHeadline - :headline="$parent.$t('page.userprofile.form.userPreferences.header')" + :headline="$t('page.userprofile.form.userPreferences.header')" /> <coscine-form-group :mandatory="true" labelFor="language" :label=" - $parent.$t( - 'page.userprofile.form.userPreferences.labels.languageLabel' - ) + $t('page.userprofile.form.userPreferences.labels.languageLabel') " :isLoading="isLoading" type="button" @@ -289,16 +275,12 @@ <!-- Connected Accounts --> <div class="h-divider" /> <CoscineHeadline - :headline=" - $parent.$t('page.userprofile.form.connectedAccounts.header') - " + :headline="$t('page.userprofile.form.connectedAccounts.header')" /> <coscine-form-group :mandatory="true" :label=" - $parent.$t( - 'page.userprofile.form.connectedAccounts.labels.orcidLabel' - ) + $t('page.userprofile.form.connectedAccounts.labels.orcidLabel') " :isLoading="isLoading" type="button" @@ -310,18 +292,14 @@ @click.prevent="clickConnect('orcid')" :disabled="orcidConnected" >{{ - orcidConnected - ? $parent.$t("buttons.connected") - : $parent.$t("buttons.connect") + orcidConnected ? $t("buttons.connected") : $t("buttons.connect") }}</b-button > </coscine-form-group> <coscine-form-group :mandatory="true" :label=" - $parent.$t( - 'page.userprofile.form.connectedAccounts.labels.shibbolethLabel' - ) + $t('page.userprofile.form.connectedAccounts.labels.shibbolethLabel') " :isLoading="isLoading" type="button" @@ -334,8 +312,8 @@ :disabled="shibbolethConnected" >{{ shibbolethConnected - ? $parent.$t("buttons.connected") - : $parent.$t("buttons.connect") + ? $t("buttons.connected") + : $t("buttons.connect") }}</b-button > </coscine-form-group> @@ -381,7 +359,7 @@ shift-h="-4" ></b-icon> </b-iconstack> - {{ $parent.$t("buttons.save") }}</b-button + {{ $t("buttons.save") }}</b-button > </coscine-form-group> </b-form> @@ -403,9 +381,9 @@ import CoscineHeadline from "@/components/CoscineHeadline.vue"; import "@/plugins/deprecated/vue-multiselect"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; // import the store for current module -import { useUserStore } from "../store"; +import useUserStore from "../store"; import type { ContactChangeObject, DisciplineObject, @@ -599,13 +577,13 @@ export default defineComponent({ await this.userStore.updateUser(this.form); this.$v.form.$reset(); this.makeToast( - this.$parent.$t("toast.onSave.success.message").toString(), - this.$parent.$t("toast.onSave.success.title").toString() + this.$t("toast.onSave.success.message").toString(), + this.$t("toast.onSave.success.title").toString() ); } catch { this.makeToast( - this.$parent.$t("toast.onSave.failure.message").toString(), - this.$parent.$t("toast.onSave.failure.title").toString() + this.$t("toast.onSave.failure.message").toString(), + this.$t("toast.onSave.failure.title").toString() ); } finally { this.savingProfile = false; @@ -613,7 +591,7 @@ export default defineComponent({ } }, makeToast(text = "Message", givenTitle = "title") { - this.$bvToast.toast(text, { + this.$root.$bvToast.toast(text, { title: givenTitle, autoHideDelay: 5000, toaster: "b-toaster-bottom-right", diff --git a/src/modules/user/pages/components/AccessToken.vue b/src/modules/user/pages/components/AccessToken.vue index e478024cdf04ce42e047ae20778a680e1ee78f02..d05e76b06d70e0297dc90cda3d456bace04ce301 100644 --- a/src/modules/user/pages/components/AccessToken.vue +++ b/src/modules/user/pages/components/AccessToken.vue @@ -3,16 +3,8 @@ <!-- Modal Create Access Token --> <CoscineModal v-model="isCreateModalVisible" - :title=" - $parent.$parent.$t( - 'page.userprofile.form.accessToken.modal.createToken.title' - ) - " - :body=" - $parent.$parent.$t( - 'page.userprofile.form.accessToken.modal.createToken.body' - ) - " + :title="$t('page.userprofile.form.accessToken.modal.createToken.title')" + :body="$t('page.userprofile.form.accessToken.modal.createToken.body')" > <div class="create-modal-content"> <b-button-group id="tokenButtonGroup" style="width: 100%"> @@ -25,7 +17,7 @@ ><b-icon-clipboard /></b-button> <b-tooltip ref="tooltip" target="copyButton" triggers="focus">{{ - $parent.$parent.$t( + $t( "page.userprofile.form.accessToken.modal.createToken.copyToClipboard" ) }}</b-tooltip> @@ -34,7 +26,7 @@ <template #buttons> <div align="right"> <b-button name="close" @click="isCreateModalVisible = false">{{ - $parent.$parent.$t("buttons.close") + $t("buttons.close") }}</b-button> </div> </template> @@ -43,30 +35,22 @@ <!-- Modal Revoke Access Token --> <CoscineModal v-model="isRevokeModalVisible" - :title=" - $parent.$parent.$t( - 'page.userprofile.form.accessToken.modal.revokeToken.title' - ) - " - :body=" - $parent.$parent.$t( - 'page.userprofile.form.accessToken.modal.revokeToken.body' - ) - " + :title="$t('page.userprofile.form.accessToken.modal.revokeToken.title')" + :body="$t('page.userprofile.form.accessToken.modal.revokeToken.body')" > <br /> <div class="revoke-modal-content">{{ selectedTokenName }}</div> <br /> <template #buttons> <b-button name="close" @click="isRevokeModalVisible = false">{{ - $parent.$parent.$t("buttons.cancel") + $t("buttons.cancel") }}</b-button> <b-button name="deleteToken" @click="confirmRevoke" variant="danger" style="float: right" - >{{ $parent.$parent.$t("buttons.revoke") }}</b-button + >{{ $t("buttons.revoke") }}</b-button > </template> </CoscineModal> @@ -79,7 +63,7 @@ > <!-- Token Body Text --> <b-form-text id="TokenBodytext" style="text-align: left"> - {{ $parent.$parent.$t("page.userprofile.form.accessToken.bodyText") }} + {{ $t("page.userprofile.form.accessToken.bodyText") }} </b-form-text> </b-form-group> <!-- Token Name --> @@ -88,18 +72,12 @@ label-for="TokenName" label-cols-sm="3" label-align-sm="right" - :label=" - $parent.$parent.$t( - 'page.userprofile.form.accessToken.labels.tokenNameLabel' - ) - " + :label="$t('page.userprofile.form.accessToken.labels.tokenNameLabel')" > <b-form-input id="TokenName" v-model="$v.token.TokenName.$model" - :placeholder=" - $parent.$parent.$t('page.userprofile.form.accessToken.tokenName') - " + :placeholder="$t('page.userprofile.form.accessToken.tokenName')" /> </b-form-group> <!-- Expires on --> @@ -107,20 +85,14 @@ label-for="ExpiredDate" label-cols-sm="3" label-align-sm="right" - :label=" - $parent.$parent.$t( - 'page.userprofile.form.accessToken.labels.tokenExpireLabel' - ) - " + :label="$t('page.userprofile.form.accessToken.labels.tokenExpireLabel')" > <b-form-datepicker v-model="$v.token.TokenExpirationDate.$model" :min="tokenValidityBounds.minDate" :max="tokenValidityBounds.maxDate" :locale="$i18n.locale" - :placeholder=" - $parent.$parent.$t('page.userprofile.form.accessToken.tokenExpire') - " + :placeholder="$t('page.userprofile.form.accessToken.tokenExpire')" :date-format-options="dateFormatOptions" ></b-form-datepicker> </b-form-group> @@ -134,7 +106,7 @@ style="margin-right: 0px" @click.prevent="createToken" :disabled="$v.token.$invalid" - >{{ $parent.$parent.$t("buttons.tokenCreate") }}</b-button + >{{ $t("buttons.tokenCreate") }}</b-button > </b-form-group> @@ -162,11 +134,7 @@ :items="tokens" :locale="$i18n.locale" :show-empty="true" - :empty-text=" - $parent.$parent.$t( - 'page.userprofile.form.accessToken.table.emptyText' - ) - " + :empty-text="$t('page.userprofile.form.accessToken.table.emptyText')" class="mb-0 text-left" fixed small @@ -188,7 +156,7 @@ v-on:click="revokeToken(selectedToken.item)" size="sm" variant="danger" - >{{ $parent.$parent.$t("buttons.revoke") }}</b-button + >{{ $t("buttons.revoke") }}</b-button > </template> </b-table> @@ -207,13 +175,13 @@ import { BIconClipboard } from "bootstrap-vue"; import CoscineModal from "@/components/CoscineModal.vue"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; // import the store for current module -import { useUserStore } from "../../store"; +import useUserStore from "../../store"; import moment from "moment"; -import { +import type { AddApiTokenParameter, ApiTokenObject, } from "@coscine/api-client/dist/types/Coscine.Api.Token"; @@ -253,27 +221,23 @@ export default defineComponent({ isRevokeModalVisible: false, headers: [ { - label: this.$parent.$parent.$t( - "page.userprofile.form.accessToken.tokenName" - ), + label: this.$t("page.userprofile.form.accessToken.tokenName"), key: "name", }, { - label: this.$parent.$parent.$t( + label: this.$t( "page.userprofile.form.accessToken.table.tokenCreated" ), key: "created", }, { - label: this.$parent.$parent.$t( + label: this.$t( "page.userprofile.form.accessToken.table.tokenExpires" ), key: "expires", }, { - label: this.$parent.$parent.$t( - "page.userprofile.form.accessToken.table.tokenAction" - ), + label: this.$t("page.userprofile.form.accessToken.table.tokenAction"), key: "actions", }, ], diff --git a/src/modules/user/routes.ts b/src/modules/user/routes.ts index 76a2d88f005946006a6b003acf20104846cd5cc3..554da9aa663fefd643a5a6a7055c8790c0c58ee6 100644 --- a/src/modules/user/routes.ts +++ b/src/modules/user/routes.ts @@ -3,10 +3,15 @@ import { RouteConfig } from "vue-router"; const UserModule = () => import("./UserModule.vue"); const UserProfile = () => import("./pages/UserProfile.vue"); +import { UserI18nMessages } from "@/modules/user/i18n/index"; + export const UserRoutes: RouteConfig[] = [ { path: "/user", component: UserModule, + meta: { + i18n: UserI18nMessages, + }, children: [ { path: "/", diff --git a/src/modules/user/store.ts b/src/modules/user/store.ts index 1342c5235ad76273f2311208e942b59ff08ed8ec..8762e4e3071a4673e226bdeedfb77d7f58ee6acd 100644 --- a/src/modules/user/store.ts +++ b/src/modules/user/store.ts @@ -13,7 +13,7 @@ import { defineStore } from "pinia"; import type { UserState } from "./types"; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; /* Store variable name is "this.<id>Store" diff --git a/src/plugins/loadingCounter.ts b/src/plugins/loadingCounter.ts new file mode 100644 index 0000000000000000000000000000000000000000..e0927c4f911ff3f6e898728a460c985e5034ed8f --- /dev/null +++ b/src/plugins/loadingCounter.ts @@ -0,0 +1,27 @@ +import useMainStore from "@/store"; + +import type { StoreDefinition } from "pinia"; + +export function loadingCounterEventHandler(store: StoreDefinition) { + const mainStore = useMainStore(); + + store().$onAction( + ({ + after, // Hook after the action returns or resolves + onError, // Hook if the action throws or rejects + }) => { + // Increment the loading counter + mainStore.coscine.loading.counter++; + + // Decrease the loading counter + after(() => { + mainStore.coscine.loading.counter--; + }); + + // Decrease the loading counter + onError(() => { + mainStore.coscine.loading.counter--; + }); + } + ); +} diff --git a/src/router/index.ts b/src/router/index.ts index 0e0dec377113d8ce0b4ac4b2fda3669486837cda..c94909883cddb38dbc65ce3bcfaecd73d6b358ba 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -52,18 +52,28 @@ VueRouter.prototype.push = async function (location: RawLocation) { }; // import the main store -import { useMainStore } from "@/store/index"; +import useMainStore from "@/store/index"; import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.Project"; +import i18n, { def } from "@/plugins/vue-i18n"; +import type VueI18n from "vue-i18n"; router.beforeEach((to, _, next) => { + // Replace the available locale messages + const localeMessages: VueI18n.LocaleMessages | undefined = to.matched + .map((e) => e.meta.i18n) + .filter((i) => i) + .pop(); + if (localeMessages) { + i18n.availableLocales.forEach((locale) => { + i18n.setLocaleMessage(locale, def[locale]); // default locale messages + i18n.mergeLocaleMessage(locale, localeMessages[locale]); // append the locale messages for the component + }); + } + const mainStore = useMainStore(); // Handle access token from URL mainStore.setAccessTokenFromRoute(router, to); mainStore.getMaintenance(); - // Set the page not loading - mainStore.$patch((state) => { - state.coscine.loading.counter = 0; - }); if (to.meta?.requiresAuth && !mainStore.loggedIn) { // Route requires auth, check if logged in // if not, redirect to login page. diff --git a/src/router/types.d.ts b/src/router/types.d.ts index bdb56cab169dd3155ac4a1f8778c5d81d76643b1..7847671208d7861ed4a866b07f09c045385ceac1 100644 --- a/src/router/types.d.ts +++ b/src/router/types.d.ts @@ -1,5 +1,6 @@ // typings.d.ts or router.ts import "vue-router"; +import VueI18n from "vue-i18n"; declare module "vue-router" { interface RouteMeta { @@ -7,7 +8,8 @@ declare module "vue-router" { requiresAdmin?: boolean; requiresAuth?: boolean; // must be declared by every route - breadCrumb: string; + breadCrumb?: string; default?: string; + i18n?: VueI18n.LocaleMessages; } } diff --git a/src/store/index.ts b/src/store/index.ts index 4c92f2adf1d5b46f992372534bd86be2ae60819f..f9ff652165f12941e6b70d08b64b6c784d735971 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -8,7 +8,7 @@ import { removeQueryParameterFromUrl } from "@/router"; import { NoticeApi } from "@coscine/api-client"; import { StatusCodes } from "http-status-codes"; -import { useLoginStore } from "@/modules/login/store"; +import useLoginStore from "@/modules/login/store"; /* Store variable name is "this.<id>Store" @@ -31,7 +31,7 @@ export const useMainStore = defineStore({ id: useLocalStorage("coscine.clientcorrelation.id", uuidv4()), }, loading: { - counter: useLocalStorage("coscine.loading.counter", 0), + counter: 0, }, locale: useLocalStorage("coscine.locale", "en"), banner: { @@ -60,6 +60,9 @@ export const useMainStore = defineStore({ :label = "this.mainStore.<getter_name>; */ getters: { + isLoading(): boolean { + return this.coscine.loading.counter > 0; + }, loggedIn() { const loginStore = useLoginStore(); if (this.coscine.authorization.bearer && !loginStore.expiredSession) { diff --git a/src/store/types.d.ts b/src/store/types.d.ts index f6489cbf3ee4d3bb60c0599259ef1ff562cfe4cc..67edb2d70657d329d27911e38e4c080920eeddfb 100644 --- a/src/store/types.d.ts +++ b/src/store/types.d.ts @@ -15,7 +15,7 @@ export interface MainState { id: RemovableRef<string>; }; loading: { - counter: RemovableRef<number>; + counter: number; }; locale: RemovableRef<string>; banner: { diff --git a/yarn.lock-workspace b/yarn.lock-workspace index 3534621d5681dceed43a31487856f006e7cd46ab..22ada528f23ceb18bed9d75901e1b00aa918845c 100644 --- a/yarn.lock-workspace +++ b/yarn.lock-workspace @@ -30,7 +30,16 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.16.7": +"@babel/code-frame@npm:7.12.11": + version: 7.12.11 + resolution: "@babel/code-frame@npm:7.12.11" + dependencies: + "@babel/highlight": ^7.10.4 + checksum: 3963eff3ebfb0e091c7e6f99596ef4b258683e4ba8a134e4e95f77afe85be5c931e184fff6435fb4885d12eba04a5e25532f7fbc292ca13b48e7da943474e2f3 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7": version: 7.16.7 resolution: "@babel/code-frame@npm:7.16.7" dependencies: @@ -46,6 +55,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.1.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.7.2, @babel/core@npm:^7.8.0": + version: 7.17.9 + resolution: "@babel/core@npm:7.17.9" + dependencies: + "@ampproject/remapping": ^2.1.0 + "@babel/code-frame": ^7.16.7 + "@babel/generator": ^7.17.9 + "@babel/helper-compilation-targets": ^7.17.7 + "@babel/helper-module-transforms": ^7.17.7 + "@babel/helpers": ^7.17.9 + "@babel/parser": ^7.17.9 + "@babel/template": ^7.16.7 + "@babel/traverse": ^7.17.9 + "@babel/types": ^7.17.0 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.1 + semver: ^6.3.0 + checksum: 2d301e4561a170bb584a735ec412de8fdc40b2052e12380d4a5e36781be5af1fd2a60552e7f0764b0a491a242f20105265bd2a10ff57b30c2842684f02dbb5a2 + languageName: node + linkType: hard + "@babel/core@npm:^7.16.10": version: 7.17.7 resolution: "@babel/core@npm:7.17.7" @@ -80,6 +112,17 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.17.9, @babel/generator@npm:^7.7.2": + version: 7.17.9 + resolution: "@babel/generator@npm:7.17.9" + dependencies: + "@babel/types": ^7.17.0 + jsesc: ^2.5.1 + source-map: ^0.5.0 + checksum: afbdd4afbf731ba0a17e7e2d9a2291e6461259af887f88f1178f63514a86e9c18cec462ae8f9cd6df9ba15a18296f47b0e151202bb4f834f7338ac0c07ec8dc8 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.16.7": version: 7.16.7 resolution: "@babel/helper-annotate-as-pure@npm:7.16.7" @@ -140,6 +183,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.17.9": + version: 7.17.9 + resolution: "@babel/helper-function-name@npm:7.17.9" + dependencies: + "@babel/template": ^7.16.7 + "@babel/types": ^7.17.0 + checksum: a59b2e5af56d8f43b9b0019939a43774754beb7cb01a211809ca8031c71890999d07739e955343135ec566c4d8ff725435f1f60fb0af3bb546837c1f9f84f496 + languageName: node + linkType: hard + "@babel/helper-get-function-arity@npm:^7.16.7": version: 7.16.7 resolution: "@babel/helper-get-function-arity@npm:7.16.7" @@ -201,7 +254,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.16.7": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.16.7 resolution: "@babel/helper-plugin-utils@npm:7.16.7" checksum: d08dd86554a186c2538547cd537552e4029f704994a9201d41d82015c10ed7f58f9036e8d1527c3760f042409163269d308b0b3706589039c5f1884619c6d4ce @@ -264,6 +317,28 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.17.9": + version: 7.17.9 + resolution: "@babel/helpers@npm:7.17.9" + dependencies: + "@babel/template": ^7.16.7 + "@babel/traverse": ^7.17.9 + "@babel/types": ^7.17.0 + checksum: 3c6db861e4c82fff2de3efb4ad12e32658c50c29920597cd0979390659b202e5849acd9542e0e2453167a52ccc30156ee4455d64d0e330f020d991d7551566f8 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.10.4": + version: 7.17.9 + resolution: "@babel/highlight@npm:7.17.9" + dependencies: + "@babel/helper-validator-identifier": ^7.16.7 + chalk: ^2.0.0 + js-tokens: ^4.0.0 + checksum: 7bdf10228f2e4d18f48f114411ed584380d356e7c168d7582c14abd8df9909b2fc09e0a7cd334f47c3eb0bc17e639e0c8d9688c6afd5d09a2bdbf0ac193b11fd + languageName: node + linkType: hard + "@babel/highlight@npm:^7.16.7": version: 7.16.10 resolution: "@babel/highlight@npm:7.16.10" @@ -275,6 +350,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.17.9": + version: 7.17.9 + resolution: "@babel/parser@npm:7.17.9" + bin: + parser: ./bin/babel-parser.js + checksum: ea59c985ebfae7c0299c8ea63ed34903202f51665db8d59c55b4366e20270b74d7367a2c211fdd2db20f25750df89adcc85ab6c8692061c6459a88efb79f43e6 + languageName: node + linkType: hard + "@babel/parser@npm:^7.16.10, @babel/parser@npm:^7.16.7, @babel/parser@npm:^7.17.3, @babel/parser@npm:^7.17.7": version: 7.17.7 resolution: "@babel/parser@npm:7.17.7" @@ -311,6 +395,39 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.8.3": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc + languageName: node + linkType: hard + "@babel/plugin-syntax-decorators@npm:^7.17.0": version: 7.17.0 resolution: "@babel/plugin-syntax-decorators@npm:7.17.0" @@ -322,6 +439,28 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-import-meta@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a + languageName: node + linkType: hard + "@babel/plugin-syntax-jsx@npm:^7.2.0": version: 7.16.7 resolution: "@babel/plugin-syntax-jsx@npm:7.16.7" @@ -333,7 +472,84 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.16.7": +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.8.3": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.16.7, @babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.16.7 resolution: "@babel/plugin-syntax-typescript@npm:7.16.7" dependencies: @@ -357,7 +573,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.16.7": +"@babel/template@npm:^7.16.7, @babel/template@npm:^7.3.3": version: 7.16.7 resolution: "@babel/template@npm:7.16.7" dependencies: @@ -386,7 +602,25 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.16.7, @babel/types@npm:^7.17.0, @babel/types@npm:^7.8.3": +"@babel/traverse@npm:^7.17.9, @babel/traverse@npm:^7.7.2": + version: 7.17.9 + resolution: "@babel/traverse@npm:7.17.9" + dependencies: + "@babel/code-frame": ^7.16.7 + "@babel/generator": ^7.17.9 + "@babel/helper-environment-visitor": ^7.16.7 + "@babel/helper-function-name": ^7.17.9 + "@babel/helper-hoist-variables": ^7.16.7 + "@babel/helper-split-export-declaration": ^7.16.7 + "@babel/parser": ^7.17.9 + "@babel/types": ^7.17.0 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: d907c71d1617589cc0cddc9837cb27bcb9b8f2117c379e13e72653745abe01da24e8c072bd0c91b9db33323ddb1086722756fbc50b487b2608733baf9dd6fd2c + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.7, @babel/types@npm:^7.17.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": version: 7.17.0 resolution: "@babel/types@npm:7.17.0" dependencies: @@ -396,6 +630,253 @@ __metadata: languageName: node linkType: hard +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 + languageName: node + linkType: hard + +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 + languageName: node + linkType: hard + +"@commitlint/cli@npm:^13.1.0": + version: 13.2.1 + resolution: "@commitlint/cli@npm:13.2.1" + dependencies: + "@commitlint/format": ^13.2.0 + "@commitlint/lint": ^13.2.0 + "@commitlint/load": ^13.2.1 + "@commitlint/read": ^13.2.0 + "@commitlint/types": ^13.2.0 + lodash: ^4.17.19 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + yargs: ^17.0.0 + bin: + commitlint: cli.js + checksum: 41b74874ec3e3b1da69f07710ea080654017d6e9a73d98d06c061259bb255e09a4870a516da0ee92f86776f030e608eb797cdd44dac804c39f2f32e798e81a60 + languageName: node + linkType: hard + +"@commitlint/config-conventional@npm:^13.1.0": + version: 13.2.0 + resolution: "@commitlint/config-conventional@npm:13.2.0" + dependencies: + conventional-changelog-conventionalcommits: ^4.3.1 + checksum: fd659269fe31df17bf479b90e915e063c7dc61b795396458d403c4154f037e152ad015463c078a881af18456c638ab3b6c1b67966abc42b131e5a900ad3c2753 + languageName: node + linkType: hard + +"@commitlint/config-validator@npm:^16.2.1": + version: 16.2.1 + resolution: "@commitlint/config-validator@npm:16.2.1" + dependencies: + "@commitlint/types": ^16.2.1 + ajv: ^6.12.6 + checksum: 1b86832dc03fc7f9442f9358c6c73d42974e9006944b8524bc4b4cd2ce946e50f3eca972737844dc7765a874c465ff5f18dad210f979491f9ee07c831b0eb8d3 + languageName: node + linkType: hard + +"@commitlint/ensure@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/ensure@npm:13.2.0" + dependencies: + "@commitlint/types": ^13.2.0 + lodash: ^4.17.19 + checksum: c3193e871532c14da99525852589b3a7f81ee769c1dfcbfb9b79e339a53cf9dc02dfdf7209ab46252534c3e3f30fd944d42b8eb1744c560d67b7ae5d75347727 + languageName: node + linkType: hard + +"@commitlint/execute-rule@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/execute-rule@npm:13.2.0" + checksum: 785361665d0c6857eddbe918d8405f0cae2e35b9ee6320df17ba6ac8a351b0a438130ed8c18c558e91aef585546e64b3b8b21f2a7b4d43b121fc6da103e9baa0 + languageName: node + linkType: hard + +"@commitlint/execute-rule@npm:^16.2.1": + version: 16.2.1 + resolution: "@commitlint/execute-rule@npm:16.2.1" + checksum: 83be0e858fa415ba7d844fc68c7c8bcc3b14074fe862f2129e03ce5fd07a58876d88d080e0d2fbf25e10f6d3189a04bca024def48206fa0f0f1c5890d689539c + languageName: node + linkType: hard + +"@commitlint/format@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/format@npm:13.2.0" + dependencies: + "@commitlint/types": ^13.2.0 + chalk: ^4.0.0 + checksum: 2436616dfad82cf5c21a2158d84199a02af04db3bb55c1075ba6c048f6acde0e63e19f98dcbcedd5ad09b0641a3d16a40250d4f16bf8ab2816d4328b04d6a6cf + languageName: node + linkType: hard + +"@commitlint/is-ignored@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/is-ignored@npm:13.2.0" + dependencies: + "@commitlint/types": ^13.2.0 + semver: 7.3.5 + checksum: 0a06adb765236a5ebf03be69f4bf30cbb4375ce902e1d819dc428bd725fed1d83790bdad9bcdb990ac61affd63a50c31f904ded807c62ca70da4556398e7f729 + languageName: node + linkType: hard + +"@commitlint/lint@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/lint@npm:13.2.0" + dependencies: + "@commitlint/is-ignored": ^13.2.0 + "@commitlint/parse": ^13.2.0 + "@commitlint/rules": ^13.2.0 + "@commitlint/types": ^13.2.0 + checksum: f56d9029bdf7957d8c4e5af6ab621cf0dac82422550bdc84ac28965b5828e376b986be091502bc4e60240e0fd4db9f35cecf95a6b35d5c926ea78118bab06e9f + languageName: node + linkType: hard + +"@commitlint/load@npm:>6.1.1": + version: 16.2.3 + resolution: "@commitlint/load@npm:16.2.3" + dependencies: + "@commitlint/config-validator": ^16.2.1 + "@commitlint/execute-rule": ^16.2.1 + "@commitlint/resolve-extends": ^16.2.1 + "@commitlint/types": ^16.2.1 + "@types/node": ">=12" + chalk: ^4.0.0 + cosmiconfig: ^7.0.0 + cosmiconfig-typescript-loader: ^1.0.0 + lodash: ^4.17.19 + resolve-from: ^5.0.0 + typescript: ^4.4.3 + checksum: 11a34e018431c9639c84427305167a4f3a4ebffab0f42c681c5eba347690b444cf4ea3ce5fde953106b3d615a273b8b6afe34fd4f72fa480512d4f2297636191 + languageName: node + linkType: hard + +"@commitlint/load@npm:^13.2.1": + version: 13.2.1 + resolution: "@commitlint/load@npm:13.2.1" + dependencies: + "@commitlint/execute-rule": ^13.2.0 + "@commitlint/resolve-extends": ^13.2.0 + "@commitlint/types": ^13.2.0 + "@endemolshinegroup/cosmiconfig-typescript-loader": ^3.0.2 + chalk: ^4.0.0 + cosmiconfig: ^7.0.0 + lodash: ^4.17.19 + resolve-from: ^5.0.0 + typescript: ^4.4.3 + checksum: e64c32ab9f461daa6e389b613546ca3a57bac381dd57fa1252674cdbbb9c65ae4fac10f787ff305008fef9b4ea218ccfe8db09cbc716622a5695a85f1a8b5f35 + languageName: node + linkType: hard + +"@commitlint/message@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/message@npm:13.2.0" + checksum: 77e4e0670490b294d4e9c55ff4788e2c76050a23e471478494a4b8efed196f0aecb7b64ce652109ecbc6847adaa95a0d3495330b7776fecac3ff6e5a6bb5f6eb + languageName: node + linkType: hard + +"@commitlint/parse@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/parse@npm:13.2.0" + dependencies: + "@commitlint/types": ^13.2.0 + conventional-changelog-angular: ^5.0.11 + conventional-commits-parser: ^3.2.2 + checksum: ef445bd5f4bf5711fe845f3e507d5776f8f57319f527b25b049671006223419af2ca8765133683bbd42c725528bf254bc1d7ee745c027e105f602f1b78e86a7e + languageName: node + linkType: hard + +"@commitlint/read@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/read@npm:13.2.0" + dependencies: + "@commitlint/top-level": ^13.2.0 + "@commitlint/types": ^13.2.0 + fs-extra: ^10.0.0 + git-raw-commits: ^2.0.0 + checksum: 440763c8e5d8529ec7ba642af0b6996a0fcba818e5078eadb265d6134c938d6a272a99937d2158f3df09937492cc72470f46e6e2f239b588611fe5cb9092699b + languageName: node + linkType: hard + +"@commitlint/resolve-extends@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/resolve-extends@npm:13.2.0" + dependencies: + import-fresh: ^3.0.0 + lodash: ^4.17.19 + resolve-from: ^5.0.0 + resolve-global: ^1.0.0 + checksum: 21b07de2676543fd7967c36fbfebde4c9d1cc5c3213e2c4b8976b84b30f3085c686852d8f0078b5084eb9a0e0f743cc7b8a9e4d01928eff447e682ab626983f8 + languageName: node + linkType: hard + +"@commitlint/resolve-extends@npm:^16.2.1": + version: 16.2.1 + resolution: "@commitlint/resolve-extends@npm:16.2.1" + dependencies: + "@commitlint/config-validator": ^16.2.1 + "@commitlint/types": ^16.2.1 + import-fresh: ^3.0.0 + lodash: ^4.17.19 + resolve-from: ^5.0.0 + resolve-global: ^1.0.0 + checksum: e710fcb24573e1027bf0b7336983cd0539c32734b01831eb0da8a7f500d0734669d38ea75ff93e90c162417fd4db5cc460c2f122d772dfa0f4577f49caaee687 + languageName: node + linkType: hard + +"@commitlint/rules@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/rules@npm:13.2.0" + dependencies: + "@commitlint/ensure": ^13.2.0 + "@commitlint/message": ^13.2.0 + "@commitlint/to-lines": ^13.2.0 + "@commitlint/types": ^13.2.0 + execa: ^5.0.0 + checksum: 0f6d9fe431dbdbc79f1420f0ea577d2fe2010421e35a30fb87b5fda3272d5e8c257ee762de7b6affe5cf83c322383f77d5d5c7068017060c0458fae8023ea580 + languageName: node + linkType: hard + +"@commitlint/to-lines@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/to-lines@npm:13.2.0" + checksum: bd1c6597542c7dbe95817f029710ae5e206ba4523b4fded7544324832e901b8a4d4636c165bef4b911d1213606314a0c2110c3dffd2a01e7a769edc26e1da1a8 + languageName: node + linkType: hard + +"@commitlint/top-level@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/top-level@npm:13.2.0" + dependencies: + find-up: ^5.0.0 + checksum: 1dbf3940a66529fc0324741d03b63c2a18569dcbf0353de5277234c9ffe641671d80fad826e5c47cbbd1be93986b4903682eecae0eca5f475601209fc9cafd4c + languageName: node + linkType: hard + +"@commitlint/types@npm:^13.2.0": + version: 13.2.0 + resolution: "@commitlint/types@npm:13.2.0" + dependencies: + chalk: ^4.0.0 + checksum: 9035c01864bfbf9d3073c6ff45ef9fc8c47ee34bcc6135390bbfa6be868b23edc9b98dab5013f813e69c8ba1630a3a4a93f522a2aaf082588aeed0c5dd922167 + languageName: node + linkType: hard + +"@commitlint/types@npm:^16.2.1": + version: 16.2.1 + resolution: "@commitlint/types@npm:16.2.1" + dependencies: + chalk: ^4.0.0 + checksum: 93af3c26c36f3b11d99f0cbbb09c8952581eed2a6b7763eb728c0e7e7ecff5072de064a208b80225fb51533823af84ee3117d9c2efbcb63d1f5cfbf6fbfb8ed8 + languageName: node + linkType: hard + "@comunica/actor-abstract-mediatyped@npm:^1.21.1": version: 1.22.0 resolution: "@comunica/actor-abstract-mediatyped@npm:1.22.0" @@ -640,33 +1121,158 @@ __metadata: languageName: node linkType: hard -"@coscine/api-client@npm:^1.5.0, @coscine/api-client@npm:^1.5.1": - version: 1.5.1 - resolution: "@coscine/api-client@npm:1.5.1" - dependencies: +"@coscine/api-client@^1.5.0, @coscine/api-client@^1.5.1": + version: 0.0.0-use.local + resolution: "@coscine/api-client@workspace:libraries/api-client" + dependencies: + "@commitlint/cli": ^13.1.0 + "@commitlint/config-conventional": ^13.1.0 + "@hutson/semantic-delivery-gitlab": ^9.1.0 + "@rollup/plugin-commonjs": ^20.0.0 + "@rollup/plugin-json": ^4.1.0 + "@rollup/plugin-node-resolve": ^13.0.4 + "@semantic-release/commit-analyzer": ^8.0.1 + "@semantic-release/git": ^9.0.0 + "@semantic-release/gitlab": ^6.2.2 + "@semantic-release/npm": ^7.1.3 + "@semantic-release/release-notes-generator": ^9.0.3 + "@types/jest": ^27.0.1 + "@types/node": ^16.7.8 + "@typescript-eslint/eslint-plugin": ^4.0.1 + "@typescript-eslint/parser": ^4.0.1 axios: ^0.21.1 - checksum: e17dc39bc8c5fcc3eb0ef9647556cb9e17cba59567f9e63f8ce821202363b45fcde122c651c37515b317c83930dda399afacd020ce5e8a83603e84b5b2a3fe81 - languageName: node - linkType: hard + colors: ^1.4.0 + commitizen: ^4.2.4 + conventional-changelog-eslint: ^3.0.9 + coveralls: ^3.1.1 + cross-env: ^7.0.3 + cz-conventional-changelog: ^3.3.0 + eslint: ^7.8.0 + eslint-config-prettier: ^6.11.0 + eslint-import-resolver-node: ^0.3.6 + eslint-plugin-eslint-comments: ^3.2.0 + eslint-plugin-functional: ^3.0.2 + eslint-plugin-import: ^2.22.0 + husky: ^7.0.2 + jest: ^27.1.0 + jest-config: ^27.1.0 + lint-staged: ^11.1.2 + lodash.camelcase: ^4.3.0 + prettier: ^2.3.2 + prompt: ^1.2.0 + replace-in-file: ^6.2.0 + rimraf: ^3.0.2 + rollup: ^2.56.3 + rollup-plugin-sourcemaps: ^0.6.3 + rollup-plugin-typescript2: ^0.30.0 + semantic-release: ^17.4.7 + shelljs: ^0.8.4 + ts-jest: ^27.0.5 + ts-node: ^10.2.1 + tslib: ^2.3.1 + typedoc: ^0.21.9 + typescript: ~4.4.4 + languageName: unknown + linkType: soft -"@coscine/form-generator@npm:^1.18.0": - version: 1.18.0 - resolution: "@coscine/form-generator@npm:1.18.0" +"@coscine/form-generator@^1.18.0": + version: 0.0.0-use.local + resolution: "@coscine/form-generator@workspace:libraries/form-generator" dependencies: "@coscine/api-client": ^1.5.0 - bootstrap-vue: ^2.20.1 - rdf-ext: ^1.3.4 - rdf-parse: 1.8.0 - rdf-validate-shacl: ^0.2.5 + "@hutson/semantic-delivery-gitlab": ^9.1.0 + "@semantic-release/commit-analyzer": ^8.0.1 + "@semantic-release/git": ^9.0.0 + "@semantic-release/gitlab": ^6.0.5 + "@semantic-release/npm": ^7.0.6 + "@semantic-release/release-notes-generator": ^9.0.1 + "@types/node": ^14.14.20 + "@types/rdf-js": ^4.0.0 + "@types/rdf-validate-shacl": ^0.2.4 + "@types/uuid": ^8.3.1 + "@types/vuelidate": ^0.7.13 + "@typescript-eslint/eslint-plugin": ^5.15.0 + "@typescript-eslint/parser": ^5.15.0 + "@vue/cli-plugin-eslint": ^4.5.15 + "@vue/eslint-config-prettier": ^6.0.0 + "@vue/eslint-config-typescript": ^8.0.0 + bootstrap-vue: ^2.22.0 + conventional-changelog-eslint: 3.0.9 + core-js: ^3.8.2 + eslint: ^8.11.0 + eslint-import-resolver-node: ^0.3.6 + eslint-plugin-eslint-comments: ^3.2.0 + eslint-plugin-functional: ^4.2.0 + eslint-plugin-import: ^2.25.4 + eslint-plugin-prettier: ^4.0.0 + eslint-plugin-vue: ^8.5.0 + prettier: ^2.5.1 + rdf-ext: ^1.3.4 + rdf-parse: 1.8.0 + rdf-validate-shacl: ^0.2.5 + rollup-plugin-node-globals: ^1.4.0 + rollup-plugin-node-polyfills: ^0.2.1 + rollup-plugin-polyfill-node: ^0.8.0 + semantic-release: ^17.3.1 stream-browserify: ^3.0.0 + typescript: ~4.4.3 uuid: ^8.3.2 + vite: ^2.8.6 + vite-plugin-vue2: ^1.9.3 vue: ^2.6.14 vue-i18n: ^8.22.2 vue-material-design-icons: ^4.11.0 vue-multiselect: ^2.1.6 vue-runtime-helpers: ^1.1.2 + vue-template-compiler: ^2.6.14 vuelidate: ^0.7.6 - checksum: a2c4afa74bd141e27a84b558ddb1a162bec0d8a215c8a52e5efdc10752e0c85eef3fe5bbefd2676f7740804d8c41aedaee3eacae97974e5746e6359784968dda + languageName: unknown + linkType: soft + +"@cspotcode/source-map-consumer@npm:0.8.0": + version: 0.8.0 + resolution: "@cspotcode/source-map-consumer@npm:0.8.0" + checksum: c0c16ca3d2f58898f1bd74c4f41a189dbcc202e642e60e489cbcc2e52419c4e89bdead02c886a12fb13ea37798ede9e562b2321df997ebc210ae9bd881561b4e + languageName: node + linkType: hard + +"@cspotcode/source-map-support@npm:0.7.0": + version: 0.7.0 + resolution: "@cspotcode/source-map-support@npm:0.7.0" + dependencies: + "@cspotcode/source-map-consumer": 0.8.0 + checksum: 9faddda7757cd778b5fd6812137b2cc265810043680d6399acc20441668fafcdc874053be9dccd0d9110087287bfad27eb3bf342f72bceca9aa9059f5d0c4be8 + languageName: node + linkType: hard + +"@endemolshinegroup/cosmiconfig-typescript-loader@npm:^3.0.2": + version: 3.0.2 + resolution: "@endemolshinegroup/cosmiconfig-typescript-loader@npm:3.0.2" + dependencies: + lodash.get: ^4 + make-error: ^1 + ts-node: ^9 + tslib: ^2 + peerDependencies: + cosmiconfig: ">=6" + checksum: 7fe0198622b1063c40572034df7e8ba867865a1b4815afe230795929abcf785758b34d7806a8e2100ba8ab4e92c5a1c3e11a980c466c4406df6e7ec6e50df8b6 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^0.4.3": + version: 0.4.3 + resolution: "@eslint/eslintrc@npm:0.4.3" + dependencies: + ajv: ^6.12.4 + debug: ^4.1.1 + espree: ^7.3.0 + globals: ^13.9.0 + ignore: ^4.0.6 + import-fresh: ^3.2.1 + js-yaml: ^3.13.1 + minimatch: ^3.0.4 + strip-json-comments: ^3.1.1 + checksum: 03a7704150b868c318aab6a94d87a33d30dc2ec579d27374575014f06237ba1370ae11178db772f985ef680d469dc237e7b16a1c5d8edaaeb8c3733e7a95a6d3 languageName: node linkType: hard @@ -736,6 +1342,17 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/config-array@npm:^0.5.0": + version: 0.5.0 + resolution: "@humanwhocodes/config-array@npm:0.5.0" + dependencies: + "@humanwhocodes/object-schema": ^1.2.0 + debug: ^4.1.1 + minimatch: ^3.0.4 + checksum: 44ee6a9f05d93dd9d5935a006b17572328ba9caff8002442f601736cbda79c580cc0f5a49ce9eb88fbacc5c3a6b62098357c2e95326cd17bb9f1a6c61d6e95e7 + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.9.2": version: 0.9.5 resolution: "@humanwhocodes/config-array@npm:0.9.5" @@ -747,13 +1364,45 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^1.2.1": +"@humanwhocodes/object-schema@npm:^1.2.0, @humanwhocodes/object-schema@npm:^1.2.1": version: 1.2.1 resolution: "@humanwhocodes/object-schema@npm:1.2.1" checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1 languageName: node linkType: hard +"@hutson/parse-repository-url@npm:^3.0.0": + version: 3.0.2 + resolution: "@hutson/parse-repository-url@npm:3.0.2" + checksum: 39992c5f183c5ca3d761d6ed9dfabcb79b5f3750bf1b7f3532e1dc439ca370138bbd426ee250fdaba460bc948e6761fbefd484b8f4f36885d71ded96138340d1 + languageName: node + linkType: hard + +"@hutson/semantic-delivery-gitlab@npm:^9.1.0": + version: 9.1.0 + resolution: "@hutson/semantic-delivery-gitlab@npm:9.1.0" + dependencies: + commander: ^4.0.1 + conventional-changelog-angular: ^5.0.0 + conventional-commits-detector: ^1.0.0 + conventional-commits-parser: ^3.0.0 + conventional-gitlab-releaser: ^4.0.0 + conventional-recommended-bump: ^6.0.5 + debug: ^4.0.0 + get-pkg-repo: ^4.0.2 + git-raw-commits: ^2.0.0 + git-remote-origin-url: ^3.0.0 + git-semver-tags: ^3.0.1 + got: ^9.6.0 + semver: ^6.0.0 + shelljs: ^0.8.0 + stream-to-array: ^2.3.0 + bin: + semantic-delivery-gitlab: src/cli.js + checksum: 931eaf57eb18d940d0e74b06070b055aacf2c31e3722f137ef96a9ec4ef94aa888b74acb58389e3fe7407f2384f6f0903169800206a8cf88ee0e17f26166097f + languageName: node + linkType: hard + "@isaacs/string-locale-compare@npm:*, @isaacs/string-locale-compare@npm:^1.1.0": version: 1.1.0 resolution: "@isaacs/string-locale-compare@npm:1.1.0" @@ -761,6 +1410,227 @@ __metadata: languageName: node linkType: hard +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: ^5.3.1 + find-up: ^4.1.0 + get-package-type: ^0.1.0 + js-yaml: ^3.13.1 + resolve-from: ^5.0.0 + checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 + languageName: node + linkType: hard + +"@jest/console@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/console@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + "@types/node": "*" + chalk: ^4.0.0 + jest-message-util: ^27.5.1 + jest-util: ^27.5.1 + slash: ^3.0.0 + checksum: 7cb20f06a34b09734c0342685ec53aa4c401fe3757c13a9c58fce76b971a322eb884f6de1068ef96f746e5398e067371b89515a07c268d4440a867c87748a706 + languageName: node + linkType: hard + +"@jest/core@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/core@npm:27.5.1" + dependencies: + "@jest/console": ^27.5.1 + "@jest/reporters": ^27.5.1 + "@jest/test-result": ^27.5.1 + "@jest/transform": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + emittery: ^0.8.1 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-changed-files: ^27.5.1 + jest-config: ^27.5.1 + jest-haste-map: ^27.5.1 + jest-message-util: ^27.5.1 + jest-regex-util: ^27.5.1 + jest-resolve: ^27.5.1 + jest-resolve-dependencies: ^27.5.1 + jest-runner: ^27.5.1 + jest-runtime: ^27.5.1 + jest-snapshot: ^27.5.1 + jest-util: ^27.5.1 + jest-validate: ^27.5.1 + jest-watcher: ^27.5.1 + micromatch: ^4.0.4 + rimraf: ^3.0.0 + slash: ^3.0.0 + strip-ansi: ^6.0.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 904a94ad8f1b43cd6b48de3b0226659bff3696150ff8cf7680fc2faffdc8a115203bb9ab6e817c1f79f9d6a81f67953053cbc64d8a4604f2e0c42a04c28cf126 + languageName: node + linkType: hard + +"@jest/environment@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/environment@npm:27.5.1" + dependencies: + "@jest/fake-timers": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/node": "*" + jest-mock: ^27.5.1 + checksum: 2a9e18c35a015508dbec5b90b21c150230fa6c1c8cb8fabe029d46ee2ca4c40eb832fb636157da14c66590d0a4c8a2c053226b041f54a44507d6f6a89abefd66 + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/fake-timers@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + "@sinonjs/fake-timers": ^8.0.1 + "@types/node": "*" + jest-message-util: ^27.5.1 + jest-mock: ^27.5.1 + jest-util: ^27.5.1 + checksum: 02a0561ed2f4586093facd4ae500b74694f187ac24d4a00e949a39a1c5325bca8932b4fcb0388a2c5ed0656506fc1cf51fd3e32cdd48cea7497ad9c6e028aba8 + languageName: node + linkType: hard + +"@jest/globals@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/globals@npm:27.5.1" + dependencies: + "@jest/environment": ^27.5.1 + "@jest/types": ^27.5.1 + expect: ^27.5.1 + checksum: 087f97047e9dcf555f76fe2ce54aee681e005eaa837a0c0c2d251df6b6412c892c9df54cb871b180342114389a5ff895a4e52e6e6d3d0015bf83c02a54f64c3c + languageName: node + linkType: hard + +"@jest/reporters@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/reporters@npm:27.5.1" + dependencies: + "@bcoe/v8-coverage": ^0.2.3 + "@jest/console": ^27.5.1 + "@jest/test-result": ^27.5.1 + "@jest/transform": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/node": "*" + chalk: ^4.0.0 + collect-v8-coverage: ^1.0.0 + exit: ^0.1.2 + glob: ^7.1.2 + graceful-fs: ^4.2.9 + istanbul-lib-coverage: ^3.0.0 + istanbul-lib-instrument: ^5.1.0 + istanbul-lib-report: ^3.0.0 + istanbul-lib-source-maps: ^4.0.0 + istanbul-reports: ^3.1.3 + jest-haste-map: ^27.5.1 + jest-resolve: ^27.5.1 + jest-util: ^27.5.1 + jest-worker: ^27.5.1 + slash: ^3.0.0 + source-map: ^0.6.0 + string-length: ^4.0.1 + terminal-link: ^2.0.0 + v8-to-istanbul: ^8.1.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: faba5eafb86e62b62e152cafc8812d56308f9d1e8b77f3a7dcae4a8803a20a60a0909cc43ed73363ef649bf558e4fb181c7a336d144c89f7998279d1882bb69e + languageName: node + linkType: hard + +"@jest/source-map@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/source-map@npm:27.5.1" + dependencies: + callsites: ^3.0.0 + graceful-fs: ^4.2.9 + source-map: ^0.6.0 + checksum: 4fb1e743b602841babf7e22bd84eca34676cb05d4eb3b604cae57fc59e406099f5ac759ac1a0d04d901237d143f0f4f234417306e823bde732a1d19982230862 + languageName: node + linkType: hard + +"@jest/test-result@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/test-result@npm:27.5.1" + dependencies: + "@jest/console": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/istanbul-lib-coverage": ^2.0.0 + collect-v8-coverage: ^1.0.0 + checksum: 338f7c509d6a3bc6d7dd7388c8f6f548b87638e171dc1fddfedcacb4e8950583288832223ba688058cbcf874b937d22bdc0fa88f79f5fc666f77957e465c06a5 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/test-sequencer@npm:27.5.1" + dependencies: + "@jest/test-result": ^27.5.1 + graceful-fs: ^4.2.9 + jest-haste-map: ^27.5.1 + jest-runtime: ^27.5.1 + checksum: f21f9c8bb746847f7f89accfd29d6046eec1446f0b54e4694444feaa4df379791f76ef0f5a4360aafcbc73b50bc979f68b8a7620de404019d3de166be6720cb0 + languageName: node + linkType: hard + +"@jest/transform@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/transform@npm:27.5.1" + dependencies: + "@babel/core": ^7.1.0 + "@jest/types": ^27.5.1 + babel-plugin-istanbul: ^6.1.1 + chalk: ^4.0.0 + convert-source-map: ^1.4.0 + fast-json-stable-stringify: ^2.0.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^27.5.1 + jest-regex-util: ^27.5.1 + jest-util: ^27.5.1 + micromatch: ^4.0.4 + pirates: ^4.0.4 + slash: ^3.0.0 + source-map: ^0.6.1 + write-file-atomic: ^3.0.0 + checksum: a22079121aedea0f20a03a9c026be971f7b92adbfb4d5fd1fb67be315741deac4f056936d7c72a53b24aa5a1071bc942c003925fd453bf3f6a0ae5da6384e137 + languageName: node + linkType: hard + +"@jest/types@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/types@npm:27.5.1" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^16.0.0 + chalk: ^4.0.0 + checksum: d1f43cc946d87543ddd79d49547aab2399481d34025d5c5f2025d3d99c573e1d9832fa83cef25e9d9b07a8583500229d15bbb07b8e233d127d911d133e2f14b1 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:^3.0.3": version: 3.0.5 resolution: "@jridgewell/resolve-uri@npm:3.0.5" @@ -1283,7 +2153,77 @@ __metadata: languageName: node linkType: hard -"@rollup/pluginutils@npm:^4.1.1": +"@rollup/plugin-commonjs@npm:^20.0.0": + version: 20.0.0 + resolution: "@rollup/plugin-commonjs@npm:20.0.0" + dependencies: + "@rollup/pluginutils": ^3.1.0 + commondir: ^1.0.1 + estree-walker: ^2.0.1 + glob: ^7.1.6 + is-reference: ^1.2.1 + magic-string: ^0.25.7 + resolve: ^1.17.0 + peerDependencies: + rollup: ^2.38.3 + checksum: fefc4b5ab1509ff64e26dfee3eca2f23cea204bf20f3dc76c616d3aa3faf4b1035166287518a64ba07faaaea1621a0af5b94b8f8199371ca67db905562e7e619 + languageName: node + linkType: hard + +"@rollup/plugin-inject@npm:^4.0.0": + version: 4.0.4 + resolution: "@rollup/plugin-inject@npm:4.0.4" + dependencies: + "@rollup/pluginutils": ^3.1.0 + estree-walker: ^2.0.1 + magic-string: ^0.25.7 + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + checksum: 22a1847372a96296a5b176af3d5b23ac7b48143a32c77ec4efed38daf4b0d1399a3cd144496d65731299984c5f98c9e00dc6a7f53d0fe87bd4aab2d4bd7b8289 + languageName: node + linkType: hard + +"@rollup/plugin-json@npm:^4.1.0": + version: 4.1.0 + resolution: "@rollup/plugin-json@npm:4.1.0" + dependencies: + "@rollup/pluginutils": ^3.0.8 + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + checksum: 867bc9339b4ccf0b9ff3b2617a95b3b8920115163f86c8e3b1f068a14ca25949472d3c05b09a5ac38ca0fe2185756e34617eaeb219d4a2b6e2307c501c7d4552 + languageName: node + linkType: hard + +"@rollup/plugin-node-resolve@npm:^13.0.4": + version: 13.1.3 + resolution: "@rollup/plugin-node-resolve@npm:13.1.3" + dependencies: + "@rollup/pluginutils": ^3.1.0 + "@types/resolve": 1.17.1 + builtin-modules: ^3.1.0 + deepmerge: ^4.2.2 + is-module: ^1.0.0 + resolve: ^1.19.0 + peerDependencies: + rollup: ^2.42.0 + checksum: c275843aef884ff15ed7edb8a3b8fd072a72d517632098f6e9c25ef2c00f7842559565cc77e16c59eb119b8c4e2d858a8b5a94701ca6f85ae6a4f60a6e31f0ab + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^3.0.8, @rollup/pluginutils@npm:^3.0.9, @rollup/pluginutils@npm:^3.1.0": + version: 3.1.0 + resolution: "@rollup/pluginutils@npm:3.1.0" + dependencies: + "@types/estree": 0.0.39 + estree-walker: ^1.0.1 + picomatch: ^2.2.2 + peerDependencies: + rollup: ^1.20.0||^2.0.0 + checksum: 8be16e27863c219edbb25a4e6ec2fe0e1e451d9e917b6a43cf2ae5bc025a6b8faaa40f82a6e53b66d0de37b58ff472c6c3d57a83037ae635041f8df959d6d9aa + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^4.1.0, @rollup/pluginutils@npm:^4.1.1": version: 4.2.0 resolution: "@rollup/pluginutils@npm:4.2.0" dependencies: @@ -1293,6 +2233,23 @@ __metadata: languageName: node linkType: hard +"@semantic-release/commit-analyzer@npm:^8.0.0, @semantic-release/commit-analyzer@npm:^8.0.1": + version: 8.0.1 + resolution: "@semantic-release/commit-analyzer@npm:8.0.1" + dependencies: + conventional-changelog-angular: ^5.0.0 + conventional-commits-filter: ^2.0.0 + conventional-commits-parser: ^3.0.7 + debug: ^4.0.0 + import-from: ^3.0.0 + lodash: ^4.17.4 + micromatch: ^4.0.2 + peerDependencies: + semantic-release: ">=16.0.0 <18.0.0" + checksum: 94ac8035538a55a3ca1b19f2c5f0eaea5bc97986ef251149d9db0b3382be5d4271f0080ba077b070e50330844e364dd48a83e453a415dad0a1364e05ffb70f8d + languageName: node + linkType: hard + "@semantic-release/commit-analyzer@npm:^9.0.2": version: 9.0.2 resolution: "@semantic-release/commit-analyzer@npm:9.0.2" @@ -1310,7 +2267,7 @@ __metadata: languageName: node linkType: hard -"@semantic-release/error@npm:^2.2.0": +"@semantic-release/error@npm:^2.1.0, @semantic-release/error@npm:^2.2.0": version: 2.2.0 resolution: "@semantic-release/error@npm:2.2.0" checksum: a264a8e16a89e5fcb104ffb2c4339fde3135b90a6d8fe4497a95fe0776a2bf77771d4c702343c47324aefee2e2a2af72f48b5310c84e8a0902fadb631272700f @@ -1342,6 +2299,50 @@ __metadata: languageName: node linkType: hard +"@semantic-release/git@npm:^9.0.0": + version: 9.0.1 + resolution: "@semantic-release/git@npm:9.0.1" + dependencies: + "@semantic-release/error": ^2.1.0 + aggregate-error: ^3.0.0 + debug: ^4.0.0 + dir-glob: ^3.0.0 + execa: ^5.0.0 + lodash: ^4.17.4 + micromatch: ^4.0.0 + p-reduce: ^2.0.0 + peerDependencies: + semantic-release: ">=16.0.0 <18.0.0" + checksum: 00045da5b48ff09b4a3045c93f07c4bf7e7fb8355d9d4e306862a2a9a4233f728901e4949fac5fa7bed868e18931f8d5bbeae1dfc4cc298a20191789a8c70907 + languageName: node + linkType: hard + +"@semantic-release/github@npm:^7.0.0": + version: 7.2.3 + resolution: "@semantic-release/github@npm:7.2.3" + dependencies: + "@octokit/rest": ^18.0.0 + "@semantic-release/error": ^2.2.0 + aggregate-error: ^3.0.0 + bottleneck: ^2.18.1 + debug: ^4.0.0 + dir-glob: ^3.0.0 + fs-extra: ^10.0.0 + globby: ^11.0.0 + http-proxy-agent: ^4.0.0 + https-proxy-agent: ^5.0.0 + issue-parser: ^6.0.0 + lodash: ^4.17.4 + mime: ^2.4.3 + p-filter: ^2.0.0 + p-retry: ^4.0.0 + url-join: ^4.0.0 + peerDependencies: + semantic-release: ">=16.0.0 <18.0.0" + checksum: 3de4031e38be3e5c555f31845d5504a454e61cb03809177857952eb2a764a8b9291e085d59f48922cc7c6e30b2e701add299fe19279d98417c09746ed68a389d + languageName: node + linkType: hard + "@semantic-release/github@npm:^8.0.0": version: 8.0.2 resolution: "@semantic-release/github@npm:8.0.2" @@ -1368,6 +2369,28 @@ __metadata: languageName: node linkType: hard +"@semantic-release/gitlab@npm:^6.0.5, @semantic-release/gitlab@npm:^6.2.2": + version: 6.2.2 + resolution: "@semantic-release/gitlab@npm:6.2.2" + dependencies: + "@semantic-release/error": ^2.2.0 + aggregate-error: ^3.0.0 + debug: ^4.0.0 + dir-glob: ^3.0.0 + escape-string-regexp: ^3.0.0 + form-data: ^3.0.0 + fs-extra: ^9.0.0 + globby: ^11.0.0 + got: ^10.5.2 + lodash: ^4.17.11 + parse-path: ^4.0.0 + url-join: ^4.0.0 + peerDependencies: + semantic-release: ">=15.8.0 <18.0.0" + checksum: fb0085a3386f9a1da0903528bdf49180f10e058612605b6c14463834d834a8921422b6bea3ec7997dfa07c0b14a360544594be9088d6ff9cf3e5d0f3e7100f70 + languageName: node + linkType: hard + "@semantic-release/gitlab@npm:^7.0.4": version: 7.0.4 resolution: "@semantic-release/gitlab@npm:7.0.4" @@ -1390,11 +2413,11 @@ __metadata: languageName: node linkType: hard -"@semantic-release/npm@npm:^8.0.3": - version: 8.0.3 - resolution: "@semantic-release/npm@npm:8.0.3" +"@semantic-release/npm@npm:^7.0.0, @semantic-release/npm@npm:^7.0.6, @semantic-release/npm@npm:^7.1.3": + version: 7.1.3 + resolution: "@semantic-release/npm@npm:7.1.3" dependencies: - "@semantic-release/error": ^3.0.0 + "@semantic-release/error": ^2.2.0 aggregate-error: ^3.0.0 execa: ^5.0.0 fs-extra: ^10.0.0 @@ -1408,8 +2431,31 @@ __metadata: semver: ^7.1.2 tempy: ^1.0.0 peerDependencies: - semantic-release: ">=18.0.0" - checksum: 6c1e178f0fdc1b6ab24d14f02fb012302c7220e64e192293be7d11346d309b00338bd5a42e076c7849af68a91745359e750c5a1d7c85c8f11e9941e4516bb413 + semantic-release: ">=16.0.0 <18.0.0" + checksum: 4c17efb6011e37d6a02e599780b2ecf9862f046464cce0d30e62aac3ab4be2a993bff350c1cd9df7f856795044cbc70bec98bb58760f5a11880107212fb2e60e + languageName: node + linkType: hard + +"@semantic-release/npm@npm:^8.0.3": + version: 8.0.3 + resolution: "@semantic-release/npm@npm:8.0.3" + dependencies: + "@semantic-release/error": ^3.0.0 + aggregate-error: ^3.0.0 + execa: ^5.0.0 + fs-extra: ^10.0.0 + lodash: ^4.17.15 + nerf-dart: ^1.0.0 + normalize-url: ^6.0.0 + npm: ^7.0.0 + rc: ^1.2.8 + read-pkg: ^5.0.0 + registry-auth-token: ^4.0.0 + semver: ^7.1.2 + tempy: ^1.0.0 + peerDependencies: + semantic-release: ">=18.0.0" + checksum: 6c1e178f0fdc1b6ab24d14f02fb012302c7220e64e192293be7d11346d309b00338bd5a42e076c7849af68a91745359e750c5a1d7c85c8f11e9941e4516bb413 languageName: node linkType: hard @@ -1456,6 +2502,40 @@ __metadata: languageName: node linkType: hard +"@semantic-release/release-notes-generator@npm:^9.0.0, @semantic-release/release-notes-generator@npm:^9.0.1, @semantic-release/release-notes-generator@npm:^9.0.3": + version: 9.0.3 + resolution: "@semantic-release/release-notes-generator@npm:9.0.3" + dependencies: + conventional-changelog-angular: ^5.0.0 + conventional-changelog-writer: ^4.0.0 + conventional-commits-filter: ^2.0.0 + conventional-commits-parser: ^3.0.0 + debug: ^4.0.0 + get-stream: ^6.0.0 + import-from: ^3.0.0 + into-stream: ^6.0.0 + lodash: ^4.17.4 + read-pkg-up: ^7.0.0 + peerDependencies: + semantic-release: ">=15.8.0 <18.0.0" + checksum: 01feb133489b4d73259466e91e6ba98d48dd93047fe6ac78924bd0ac8ad09ee86ae2eba3e02239819cd4edb43cd1adcac81312203318d0cdf75632c379dcd8a1 + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^0.14.0": + version: 0.14.0 + resolution: "@sindresorhus/is@npm:0.14.0" + checksum: 971e0441dd44ba3909b467219a5e242da0fc584048db5324cfb8048148fa8dcc9d44d71e3948972c4f6121d24e5da402ef191420d1266a95f713bb6d6e59c98a + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^2.0.0": + version: 2.1.1 + resolution: "@sindresorhus/is@npm:2.1.1" + checksum: cbae604a29931dd33a0ecb77ef50e7ac6f4b626939aad84e4d4da06ace624902f294bd652268939b94596c725ed1905a73c453a5574b8504010296f5619e44cc + languageName: node + linkType: hard + "@sindresorhus/is@npm:^4.0.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" @@ -1463,7 +2543,34 @@ __metadata: languageName: node linkType: hard -"@szmarczak/http-timer@npm:^4.0.5": +"@sinonjs/commons@npm:^1.7.0": + version: 1.8.3 + resolution: "@sinonjs/commons@npm:1.8.3" + dependencies: + type-detect: 4.0.8 + checksum: 6159726db5ce6bf9f2297f8427f7ca5b3dff45b31e5cee23496f1fa6ef0bb4eab878b23fb2c5e6446381f6a66aba4968ef2fc255c1180d753d4b8c271636a2e5 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^8.0.1": + version: 8.1.0 + resolution: "@sinonjs/fake-timers@npm:8.1.0" + dependencies: + "@sinonjs/commons": ^1.7.0 + checksum: 09b5a158ce013a6c37613258bad79ca4efeb99b1f59c41c73cca36cac00b258aefcf46eeea970fccf06b989414d86fe9f54c1102272c0c3bdd51a313cea80949 + languageName: node + linkType: hard + +"@szmarczak/http-timer@npm:^1.1.2": + version: 1.1.2 + resolution: "@szmarczak/http-timer@npm:1.1.2" + dependencies: + defer-to-connect: ^1.0.1 + checksum: 4d9158061c5f397c57b4988cde33a163244e4f02df16364f103971957a32886beb104d6180902cbe8b38cb940e234d9f98a4e486200deca621923f62f50a06fe + languageName: node + linkType: hard + +"@szmarczak/http-timer@npm:^4.0.0, @szmarczak/http-timer@npm:^4.0.5": version: 4.0.6 resolution: "@szmarczak/http-timer@npm:4.0.6" dependencies: @@ -1472,6 +2579,13 @@ __metadata: languageName: node linkType: hard +"@tootallnate/once@npm:1": + version: 1.1.2 + resolution: "@tootallnate/once@npm:1.1.2" + checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 + languageName: node + linkType: hard + "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -1479,6 +2593,75 @@ __metadata: languageName: node linkType: hard +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.8 + resolution: "@tsconfig/node10@npm:1.0.8" + checksum: b8d5fffbc6b17ef64ef74f7fdbccee02a809a063ade785c3648dae59406bc207f70ea2c4296f92749b33019fa36a5ae716e42e49cc7f1bbf0fd147be0d6b970a + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.9 + resolution: "@tsconfig/node12@npm:1.0.9" + checksum: a01b2400ab3582b86b589c6d31dcd0c0656f333adecde85d6d7d4086adb059808b82692380bb169546d189bf771ae21d02544a75b57bd6da4a5dd95f8567bec9 + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.1 + resolution: "@tsconfig/node14@npm:1.0.1" + checksum: 976345e896c0f059867f94f8d0f6ddb8b1844fb62bf36b727de8a9a68f024857e5db97ed51d3325e23e0616a5e48c034ff51a8d595b3fe7e955f3587540489be + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.2 + resolution: "@tsconfig/node16@npm:1.0.2" + checksum: ca94d3639714672bbfd55f03521d3f56bb6a25479bd425da81faf21f13e1e9d15f40f97377dedbbf477a5841c5b0c8f4cd1b391f33553d750b9202c54c2c07aa + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14": + version: 7.1.19 + resolution: "@types/babel__core@npm:7.1.19" + dependencies: + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + "@types/babel__generator": "*" + "@types/babel__template": "*" + "@types/babel__traverse": "*" + checksum: 8c9fa87a1c2224cbec251683a58bebb0d74c497118034166aaa0491a4e2627998a6621fc71f8a60ffd27d9c0c52097defedf7637adc6618d0331c15adb302338 + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.4 + resolution: "@types/babel__generator@npm:7.6.4" + dependencies: + "@babel/types": ^7.0.0 + checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.1 + resolution: "@types/babel__template@npm:7.4.1" + dependencies: + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6": + version: 7.14.2 + resolution: "@types/babel__traverse@npm:7.14.2" + dependencies: + "@babel/types": ^7.3.0 + checksum: a797ea09c72307569e3ee08aa3900ca744ce3091114084f2dc59b67a45ee7d01df7865252790dbfa787a7915ce892cdc820c9b920f3683292765fc656b08dc63 + languageName: node + linkType: hard + "@types/cacheable-request@npm:^6.0.1": version: 6.0.2 resolution: "@types/cacheable-request@npm:6.0.2" @@ -1500,6 +2683,20 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:*": + version: 0.0.51 + resolution: "@types/estree@npm:0.0.51" + checksum: e56a3bcf759fd9185e992e7fdb3c6a5f81e8ff120e871641607581fb3728d16c811702a7d40fa5f869b7f7b4437ab6a87eb8d98ffafeee51e85bbe955932a189 + languageName: node + linkType: hard + +"@types/estree@npm:0.0.39": + version: 0.0.39 + resolution: "@types/estree@npm:0.0.39" + checksum: 412fb5b9868f2c418126451821833414189b75cc6bf84361156feed733e3d92ec220b9d74a89e52722e03d5e241b2932732711b7497374a404fad49087adc248 + languageName: node + linkType: hard + "@types/file-saver@npm:^2.0.5": version: 2.0.5 resolution: "@types/file-saver@npm:2.0.5" @@ -1517,6 +2714,15 @@ __metadata: languageName: node linkType: hard +"@types/graceful-fs@npm:^4.1.2": + version: 4.1.5 + resolution: "@types/graceful-fs@npm:4.1.5" + dependencies: + "@types/node": "*" + checksum: d076bb61f45d0fc42dee496ef8b1c2f8742e15d5e47e90e20d0243386e426c04d4efd408a48875ab432f7960b4ce3414db20ed0fbbfc7bcc89d84e574f6e045a + languageName: node + linkType: hard + "@types/http-cache-semantics@npm:*": version: 4.0.1 resolution: "@types/http-cache-semantics@npm:4.0.1" @@ -1533,6 +2739,48 @@ __metadata: languageName: node linkType: hard +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.4 + resolution: "@types/istanbul-lib-coverage@npm:2.0.4" + checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.0 + resolution: "@types/istanbul-lib-report@npm:3.0.0" + dependencies: + "@types/istanbul-lib-coverage": "*" + checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.1 + resolution: "@types/istanbul-reports@npm:3.0.1" + dependencies: + "@types/istanbul-lib-report": "*" + checksum: f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 + languageName: node + linkType: hard + +"@types/jest@npm:^27.0.1": + version: 27.4.1 + resolution: "@types/jest@npm:27.4.1" + dependencies: + jest-matcher-utils: ^27.0.0 + pretty-format: ^27.0.0 + checksum: 5184f3eef4832d01ee8f59bed15eec45ccc8e29c724a5e6ce37bf74396b37bdf04f557000f45ba4fc38ae6075cf9cfcce3d7a75abc981023c61ceb27230a93e4 + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.7": + version: 7.0.11 + resolution: "@types/json-schema@npm:7.0.11" + checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d + languageName: node + linkType: hard + "@types/json-schema@npm:^7.0.9": version: 7.0.9 resolution: "@types/json-schema@npm:7.0.9" @@ -1556,6 +2804,15 @@ __metadata: languageName: node linkType: hard +"@types/keyv@npm:^3.1.1": + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" + dependencies: + "@types/node": "*" + checksum: e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d + languageName: node + linkType: hard + "@types/lodash@npm:^4.14.178": version: 4.14.180 resolution: "@types/lodash@npm:4.14.180" @@ -1594,6 +2851,13 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:>=12": + version: 17.0.23 + resolution: "@types/node@npm:17.0.23" + checksum: a3517554737cbb042e76c30d0e5482192ac4d9bea0eeb086e2622d9cabf460a0eb52a696b99fcd18e7fcc93c96db6cc7ae507f6608f256ef0b5c1d8c87a5a470 + languageName: node + linkType: hard + "@types/node@npm:^13.1.0": version: 13.13.52 resolution: "@types/node@npm:13.13.52" @@ -1601,6 +2865,20 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^14.14.20": + version: 14.18.12 + resolution: "@types/node@npm:14.18.12" + checksum: 8a0273caa0584020adb8802784fc7d4f18f05e6c205335b7f3818a91d6b0c22736b9f51da3428d5bc54076ad47f1a4d6d57990a3ce8489a520ac66b2b3ff24bc + languageName: node + linkType: hard + +"@types/node@npm:^16.7.8": + version: 16.11.26 + resolution: "@types/node@npm:16.11.26" + checksum: 57757caaba3f0d95de82198cb276a1002c49b710108c932a1d02d7c91ff2fa57cfe2dd19fde60853b6dd90b0964b3cf35557981d2628e20aed6a909057aedfe6 + languageName: node + linkType: hard + "@types/normalize-package-data@npm:^2.4.0": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" @@ -1622,7 +2900,14 @@ __metadata: languageName: node linkType: hard -"@types/rdf-js@npm:*": +"@types/prettier@npm:^2.1.5": + version: 2.6.0 + resolution: "@types/prettier@npm:2.6.0" + checksum: 946f1f82ce6f31664e023a5d65931c31b7d677b454f528f67dce851d72e7fcfe713076f4251b16c3646eecf1545f5f5b909b4962966341ed9ddf5b80113b3674 + languageName: node + linkType: hard + +"@types/rdf-js@npm:*, @types/rdf-js@npm:^4.0.0": version: 4.0.1 resolution: "@types/rdf-js@npm:4.0.1" dependencies: @@ -1631,6 +2916,16 @@ __metadata: languageName: node linkType: hard +"@types/rdf-validate-shacl@npm:^0.2.4": + version: 0.2.4 + resolution: "@types/rdf-validate-shacl@npm:0.2.4" + dependencies: + "@types/clownface": "*" + rdf-js: ^4.0.2 + checksum: 1866e0c86d9713b161948e488a211000dc5855981e7bab55be151f543415788742956420bf571129d9cc60899ff2a9919f7464171622b9543e98702c1ed246a8 + languageName: node + linkType: hard + "@types/rdf-validate-shacl@npm:^0.4.0": version: 0.4.0 resolution: "@types/rdf-validate-shacl@npm:0.4.0" @@ -1641,6 +2936,15 @@ __metadata: languageName: node linkType: hard +"@types/resolve@npm:1.17.1": + version: 1.17.1 + resolution: "@types/resolve@npm:1.17.1" + dependencies: + "@types/node": "*" + checksum: dc6a6df507656004e242dcb02c784479deca516d5f4b58a1707e708022b269ae147e1da0521f3e8ad0d63638869d87e0adc023f0bd5454aa6f72ac66c7525cf5 + languageName: node + linkType: hard + "@types/responselike@npm:*, @types/responselike@npm:^1.0.0": version: 1.0.0 resolution: "@types/responselike@npm:1.0.0" @@ -1666,6 +2970,13 @@ __metadata: languageName: node linkType: hard +"@types/stack-utils@npm:^2.0.0": + version: 2.0.1 + resolution: "@types/stack-utils@npm:2.0.1" + checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 + languageName: node + linkType: hard + "@types/throttle-debounce@npm:^2.1.0": version: 2.1.0 resolution: "@types/throttle-debounce@npm:2.1.0" @@ -1673,7 +2984,7 @@ __metadata: languageName: node linkType: hard -"@types/uuid@npm:^8.3.4": +"@types/uuid@npm:^8.3.1, @types/uuid@npm:^8.3.4": version: 8.3.4 resolution: "@types/uuid@npm:8.3.4" checksum: 6f11f3ff70f30210edaa8071422d405e9c1d4e53abbe50fdce365150d3c698fe7bbff65c1e71ae080cbfb8fded860dbb5e174da96fdbbdfcaa3fb3daa474d20f @@ -1689,7 +3000,7 @@ __metadata: languageName: node linkType: hard -"@types/vuelidate@npm:^0.7.15": +"@types/vuelidate@npm:^0.7.13, @types/vuelidate@npm:^0.7.15": version: 0.7.15 resolution: "@types/vuelidate@npm:0.7.15" dependencies: @@ -1698,6 +3009,44 @@ __metadata: languageName: node linkType: hard +"@types/yargs-parser@npm:*": + version: 21.0.0 + resolution: "@types/yargs-parser@npm:21.0.0" + checksum: b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 + languageName: node + linkType: hard + +"@types/yargs@npm:^16.0.0": + version: 16.0.4 + resolution: "@types/yargs@npm:16.0.4" + dependencies: + "@types/yargs-parser": "*" + checksum: caa21d2c957592fe2184a8368c8cbe5a82a6c2e2f2893722e489f842dc5963293d2f3120bc06fe3933d60a3a0d1e2eb269649fd6b1947fe1820f8841ba611dd9 + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:^4.0.1": + version: 4.33.0 + resolution: "@typescript-eslint/eslint-plugin@npm:4.33.0" + dependencies: + "@typescript-eslint/experimental-utils": 4.33.0 + "@typescript-eslint/scope-manager": 4.33.0 + debug: ^4.3.1 + functional-red-black-tree: ^1.0.1 + ignore: ^5.1.8 + regexpp: ^3.1.0 + semver: ^7.3.5 + tsutils: ^3.21.0 + peerDependencies: + "@typescript-eslint/parser": ^4.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: d74855d0a5ffe0b2f362ec02fcd9301d39a53fb4155b9bd0cb15a0a31d065143129ebf98df9d86af4b6f74de1d423a4c0d8c0095520844068117453afda5bc4f + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^5.15.0": version: 5.16.0 resolution: "@typescript-eslint/eslint-plugin@npm:5.16.0" @@ -1721,6 +3070,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/experimental-utils@npm:4.33.0, @typescript-eslint/experimental-utils@npm:^4.9.1": + version: 4.33.0 + resolution: "@typescript-eslint/experimental-utils@npm:4.33.0" + dependencies: + "@types/json-schema": ^7.0.7 + "@typescript-eslint/scope-manager": 4.33.0 + "@typescript-eslint/types": 4.33.0 + "@typescript-eslint/typescript-estree": 4.33.0 + eslint-scope: ^5.1.1 + eslint-utils: ^3.0.0 + peerDependencies: + eslint: "*" + checksum: f859800ada0884f92db6856f24efcb1d073ac9883ddc2b1aa9339f392215487895bed8447ebce3741e8141bb32e545244abef62b73193ba9a8a0527c523aabae + languageName: node + linkType: hard + "@typescript-eslint/experimental-utils@npm:^5.0.0": version: 5.15.0 resolution: "@typescript-eslint/experimental-utils@npm:5.15.0" @@ -1732,6 +3097,23 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:^4.0.1": + version: 4.33.0 + resolution: "@typescript-eslint/parser@npm:4.33.0" + dependencies: + "@typescript-eslint/scope-manager": 4.33.0 + "@typescript-eslint/types": 4.33.0 + "@typescript-eslint/typescript-estree": 4.33.0 + debug: ^4.3.1 + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 102457eae1acd516211098fea081c8a2ed728522bbda7f5a557b6ef23d88970514f9a0f6285d53fca134d3d4d7d17822b5d5e12438d5918df4d1f89cc9e67d57 + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^5.15.0": version: 5.16.0 resolution: "@typescript-eslint/parser@npm:5.16.0" @@ -1749,6 +3131,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:4.33.0": + version: 4.33.0 + resolution: "@typescript-eslint/scope-manager@npm:4.33.0" + dependencies: + "@typescript-eslint/types": 4.33.0 + "@typescript-eslint/visitor-keys": 4.33.0 + checksum: 9a25fb7ba7c725ea7227a24d315b0f6aacbad002e2549a049edf723c1d3615c22f5c301f0d7d615b377f2cdf2f3519d97e79af0c459de6ef8d2aaf0906dff13e + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:5.15.0": version: 5.15.0 resolution: "@typescript-eslint/scope-manager@npm:5.15.0" @@ -1785,6 +3177,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:4.33.0": + version: 4.33.0 + resolution: "@typescript-eslint/types@npm:4.33.0" + checksum: 3baae1ca35872421b4eb60f5d3f3f32dc1d513f2ae0a67dee28c7d159fd7a43ed0d11a8a5a0f0c2d38507ffa036fc7c511cb0f18a5e8ac524b3ebde77390ec53 + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.15.0": version: 5.15.0 resolution: "@typescript-eslint/types@npm:5.15.0" @@ -1799,6 +3198,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:4.33.0": + version: 4.33.0 + resolution: "@typescript-eslint/typescript-estree@npm:4.33.0" + dependencies: + "@typescript-eslint/types": 4.33.0 + "@typescript-eslint/visitor-keys": 4.33.0 + debug: ^4.3.1 + globby: ^11.0.3 + is-glob: ^4.0.1 + semver: ^7.3.5 + tsutils: ^3.21.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 2566984390c76bd95f43240057215c068c69769e406e27aba41e9f21fd300074d6772e4983fa58fe61e80eb5550af1548d2e31e80550d92ba1d051bb00fe6f5c + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.15.0": version: 5.15.0 resolution: "@typescript-eslint/typescript-estree@npm:5.15.0" @@ -1867,6 +3284,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:4.33.0": + version: 4.33.0 + resolution: "@typescript-eslint/visitor-keys@npm:4.33.0" + dependencies: + "@typescript-eslint/types": 4.33.0 + eslint-visitor-keys: ^2.0.0 + checksum: 59953e474ad4610c1aa23b2b1a964445e2c6201521da6367752f37939d854352bbfced5c04ea539274065e012b1337ba3ffa49c2647a240a4e87155378ba9873 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:5.15.0": version: 5.15.0 resolution: "@typescript-eslint/visitor-keys@npm:5.15.0" @@ -2369,6 +3796,13 @@ __metadata: languageName: node linkType: hard +"abab@npm:^2.0.3, abab@npm:^2.0.5": + version: 2.0.5 + resolution: "abab@npm:2.0.5" + checksum: 0ec951b46d5418c2c2f923021ec193eaebdb4e802ffd5506286781b454be722a13a8430f98085cd3e204918401d9130ec6cc8f5ae19be315b3a0e857d83196e1 + languageName: node + linkType: hard + "abbrev@npm:*, abbrev@npm:1, abbrev@npm:~1.1.1": version: 1.1.1 resolution: "abbrev@npm:1.1.1" @@ -2376,6 +3810,16 @@ __metadata: languageName: node linkType: hard +"acorn-globals@npm:^6.0.0": + version: 6.0.0 + resolution: "acorn-globals@npm:6.0.0" + dependencies: + acorn: ^7.1.1 + acorn-walk: ^7.1.1 + checksum: 72d95e5b5e585f9acd019b993ab8bbba68bb3cbc9d9b5c1ebb3c2f1fe5981f11deababfb4949f48e6262f9c57878837f5958c0cca396f81023814680ca878042 + languageName: node + linkType: hard + "acorn-jsx@npm:^5.2.0, acorn-jsx@npm:^5.3.1": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -2385,6 +3829,29 @@ __metadata: languageName: node linkType: hard +"acorn-walk@npm:^7.1.1": + version: 7.2.0 + resolution: "acorn-walk@npm:7.2.0" + checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f + languageName: node + linkType: hard + +"acorn-walk@npm:^8.1.1": + version: 8.2.0 + resolution: "acorn-walk@npm:8.2.0" + checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 + languageName: node + linkType: hard + +"acorn@npm:^5.7.3": + version: 5.7.4 + resolution: "acorn@npm:5.7.4" + bin: + acorn: bin/acorn + checksum: f51392a4d25c7705fadb890f784c59cde4ac1c5452ccd569fa59bd2191b7951b4a6398348ab7ea08a54f0bc0a56c13776710f4e1bae9de441e4d33e2015ad1e0 + languageName: node + linkType: hard + "acorn@npm:^6.4.1": version: 6.4.2 resolution: "acorn@npm:6.4.2" @@ -2394,7 +3861,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^7.1.1": +"acorn@npm:^7.1.1, acorn@npm:^7.4.0": version: 7.4.1 resolution: "acorn@npm:7.4.1" bin: @@ -2403,7 +3870,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.5.0, acorn@npm:^8.7.0": +"acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.0": version: 8.7.0 resolution: "acorn@npm:8.7.0" bin: @@ -2460,7 +3927,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.1.0, ajv@npm:^6.10.0, ajv@npm:^6.10.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4": +"ajv@npm:^6.1.0, ajv@npm:^6.10.0, ajv@npm:^6.10.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.6": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -2472,7 +3939,33 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": +"ajv@npm:^8.0.1": + version: 8.11.0 + resolution: "ajv@npm:8.11.0" + dependencies: + fast-deep-equal: ^3.1.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.2.2 + checksum: 5e0ff226806763be73e93dd7805b634f6f5921e3e90ca04acdf8db81eed9d8d3f0d4c5f1213047f45ebbf8047ffe0c840fa1ef2ec42c3a644899f69aa72b5bef + languageName: node + linkType: hard + +"ansi-colors@npm:^4.1.1": + version: 4.1.1 + resolution: "ansi-colors@npm:4.1.1" + checksum: 138d04a51076cb085da0a7e2d000c5c0bb09f6e772ed5c65c53cb118d37f6c5f1637506d7155fb5f330f0abcf6f12fa2e489ac3f8cdab9da393bf1bb4f9a32b0 + languageName: node + linkType: hard + +"ansi-escapes@npm:^3.2.0": + version: 3.2.0 + resolution: "ansi-escapes@npm:3.2.0" + checksum: 0f94695b677ea742f7f1eed961f7fd8d05670f744c6ad1f8f635362f6681dcfbc1575cb05b43abc7bb6d67e25a75fb8c7ea8f2a57330eb2c76b33f18cb2cef0a + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0, ansi-escapes@npm:^4.3.1": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" dependencies: @@ -2490,7 +3983,14 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^4.1.0": +"ansi-regex@npm:^3.0.0": + version: 3.0.1 + resolution: "ansi-regex@npm:3.0.1" + checksum: 09daf180c5f59af9850c7ac1bd7fda85ba596cc8cbeb210826e90755f06c818af86d9fa1e6e8322fab2c3b9e9b03f56c537b42241139f824dd75066a1e7257cc + languageName: node + linkType: hard + +"ansi-regex@npm:^4.1.0": version: 4.1.1 resolution: "ansi-regex@npm:4.1.1" checksum: b1a6ee44cb6ecdabaa770b2ed500542714d4395d71c7e5c25baa631f680fb2ad322eb9ba697548d498a6fd366949fc8b5bfcf48d49a32803611f648005b01888 @@ -2529,6 +4029,13 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 + languageName: node + linkType: hard + "ansi-styles@npm:^6.0.0": version: 6.1.0 resolution: "ansi-styles@npm:6.1.0" @@ -2550,6 +4057,13 @@ __metadata: languageName: node linkType: hard +"any-promise@npm:^1.1.0": + version: 1.3.0 + resolution: "any-promise@npm:1.3.0" + checksum: 0ee8a9bdbe882c90464d75d1f55cf027f5458650c4bd1f0467e65aec38ccccda07ca5844969ee77ed46d04e7dded3eaceb027e8d32f385688523fe305fa7e1de + languageName: node + linkType: hard + "anymatch@npm:^2.0.0": version: 2.0.0 resolution: "anymatch@npm:2.0.0" @@ -2560,7 +4074,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:~3.1.2": +"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": version: 3.1.2 resolution: "anymatch@npm:3.1.2" dependencies: @@ -2601,6 +4115,22 @@ __metadata: languageName: node linkType: hard +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 544af8dd3f60546d3e4aff084d451b96961d2267d668670199692f8d054f0415d86fc5497d0e641e91546f0aa920e7c29e5250e99fc89f5552a34b5d93b77f43 + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: ~1.0.2 + checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 + languageName: node + linkType: hard + "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" @@ -2636,6 +4166,13 @@ __metadata: languageName: node linkType: hard +"array-find-index@npm:^1.0.1": + version: 1.0.2 + resolution: "array-find-index@npm:1.0.2" + checksum: aac128bf369e1ac6c06ff0bb330788371c0e256f71279fb92d745e26fb4b9db8920e485b4ec25e841c93146bf71a34dcdbcefa115e7e0f96927a214d237b7081 + languageName: node + linkType: hard + "array-ify@npm:^1.0.0": version: 1.0.0 resolution: "array-ify@npm:1.0.0" @@ -2704,7 +4241,18 @@ __metadata: languageName: node linkType: hard -"arrify@npm:^1.0.1": +"array.prototype.flatmap@npm:^1.2.4": + version: 1.2.5 + resolution: "array.prototype.flatmap@npm:1.2.5" + dependencies: + call-bind: ^1.0.0 + define-properties: ^1.1.3 + es-abstract: ^1.19.0 + checksum: a14119a28e5687a13cf3fd6756a8e7810563a9e81cd4227e27a25c31d362df47ac72553f06a271fd728741e199047933ad43d561d64a28da0b4e1a26f74e939e + languageName: node + linkType: hard + +"arrify@npm:^1.0.0, arrify@npm:^1.0.1": version: 1.0.1 resolution: "arrify@npm:1.0.1" checksum: 745075dd4a4624ff0225c331dacb99be501a515d39bcb7c84d24660314a6ec28e68131b137e6f7e16318170842ce97538cd298fc4cd6b2cc798e0b957f2747e7 @@ -2777,6 +4325,20 @@ __metadata: languageName: node linkType: hard +"async@npm:~0.9.0": + version: 0.9.2 + resolution: "async@npm:0.9.2" + checksum: 87dbf129292b8a6c32a4e07f43f462498162aa86f404a7e11f978dbfdf75cfb163c26833684bb07b9d436083cd604cbbf730a57bfcbe436c6ae1ed266cdc56bb + languageName: node + linkType: hard + +"async@npm:~1.0.0": + version: 1.0.0 + resolution: "async@npm:1.0.0" + checksum: 04d4e57806b1a46b1635a3d821a9bcc06f893d6828a0468ceb494d1857b565754cbbaed22529aef79749dbbe7cf5080bfdb346b54be0e9cd35c41d7ef8d7911f + languageName: node + linkType: hard + "asynciterator@npm:^3.2.0": version: 3.4.0 resolution: "asynciterator@npm:3.4.0" @@ -2839,6 +4401,83 @@ __metadata: languageName: node linkType: hard +"babel-jest@npm:^27.5.1": + version: 27.5.1 + resolution: "babel-jest@npm:27.5.1" + dependencies: + "@jest/transform": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/babel__core": ^7.1.14 + babel-plugin-istanbul: ^6.1.1 + babel-preset-jest: ^27.5.1 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + slash: ^3.0.0 + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 4e93e6e9fb996cc5f1505e924eb8e8cc7b25c294ba9629762a2715390f48af6a4c14dbb84cd9730013ac0e03267a5a9aa2fb6318c544489cda7f50f4e506def4 + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@istanbuljs/load-nyc-config": ^1.0.0 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-instrument: ^5.0.4 + test-exclude: ^6.0.0 + checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^27.5.1": + version: 27.5.1 + resolution: "babel-plugin-jest-hoist@npm:27.5.1" + dependencies: + "@babel/template": ^7.3.3 + "@babel/types": ^7.3.3 + "@types/babel__core": ^7.0.0 + "@types/babel__traverse": ^7.0.6 + checksum: 709c17727aa8fd3be755d256fb514bf945a5c2ea6017f037d80280fc44ae5fe7dfeebf63d8412df53796455c2c216119d628d8cc90b099434fd819005943d058 + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.0.1 + resolution: "babel-preset-current-node-syntax@npm:1.0.1" + dependencies: + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-bigint": ^7.8.3 + "@babel/plugin-syntax-class-properties": ^7.8.3 + "@babel/plugin-syntax-import-meta": ^7.8.3 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.8.3 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.8.3 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-top-level-await": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: d118c2742498c5492c095bc8541f4076b253e705b5f1ad9a2e7d302d81a84866f0070346662355c8e25fc02caa28dc2da8d69bcd67794a0d60c4d6fab6913cc8 + languageName: node + linkType: hard + +"babel-preset-jest@npm:^27.5.1": + version: 27.5.1 + resolution: "babel-preset-jest@npm:27.5.1" + dependencies: + babel-plugin-jest-hoist: ^27.5.1 + babel-preset-current-node-syntax: ^1.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 251bcea11c18fd9672fec104eadb45b43f117ceeb326fa7345ced778d4c1feab29343cd7a87a1dcfae4997d6c851a8b386d7f7213792da6e23b74f4443a8976d + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -2956,20 +4595,20 @@ __metadata: languageName: node linkType: hard -"bootstrap-vue@npm:^2.20.1, bootstrap-vue@npm:^2.21.2": - version: 2.21.2 - resolution: "bootstrap-vue@npm:2.21.2" +"bootstrap-vue@npm:^2.22.0": + version: 2.22.0 + resolution: "bootstrap-vue@npm:2.22.0" dependencies: "@nuxt/opencollective": ^0.3.2 - bootstrap: ">=4.5.3 <5.0.0" + bootstrap: ^4.6.1 popper.js: ^1.16.1 portal-vue: ^2.1.7 vue-functional-data-merge: ^3.1.0 - checksum: cf49df1a38917d9fcfca7f015f2660880c11cae8b36da612cb485c995af3823ec9da9620b65f9f5a8dfaa1c88d8bf03dfeb4a7501a6c2c52abc92c6c3af97319 + checksum: 801f148de895b4e390d2d79629f0da5c2fd8fd6d002230f4572ff0354e64f70236363bb69496451009bcd582d9b4eea2c31055649c7c99b8971bce5b418a4f01 languageName: node linkType: hard -"bootstrap@npm:>=4.5.3 <5.0.0, bootstrap@npm:^4.6.1": +"bootstrap@npm:^4.6.1": version: 4.6.1 resolution: "bootstrap@npm:4.6.1" peerDependencies: @@ -3039,6 +4678,13 @@ __metadata: languageName: node linkType: hard +"browser-process-hrtime@npm:^1.0.0": + version: 1.0.0 + resolution: "browser-process-hrtime@npm:1.0.0" + checksum: e30f868cdb770b1201afb714ad1575dd86366b6e861900884665fb627109b3cc757c40067d3bfee1ff2a29c835257ea30725a8018a9afd02ac1c24b408b1e45f + languageName: node + linkType: hard + "browserify-aes@npm:^1.0.0, browserify-aes@npm:^1.0.4": version: 1.2.0 resolution: "browserify-aes@npm:1.2.0" @@ -3127,6 +4773,31 @@ __metadata: languageName: node linkType: hard +"bs-logger@npm:0.x": + version: 0.2.6 + resolution: "bs-logger@npm:0.2.6" + dependencies: + fast-json-stable-stringify: 2.x + checksum: d34bdaf68c64bd099ab97c3ea608c9ae7d3f5faa1178b3f3f345acd94e852e608b2d4f9103fb2e503f5e69780e98293df41691b84be909b41cf5045374d54606 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: ^0.4.0 + checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 + languageName: node + linkType: hard + +"buffer-es6@npm:^4.9.3": + version: 4.9.3 + resolution: "buffer-es6@npm:4.9.3" + checksum: dfc8ebb3c5c00166e6f81e6ec7ea876693ea6197a8d0b07b1a17482ffab0e5d3307bfb539f84862b1ae35cd70ad03835db0f3c7dc4e337cbd16c50bb4c7e5df7 + languageName: node + linkType: hard + "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -3152,6 +4823,13 @@ __metadata: languageName: node linkType: hard +"builtin-modules@npm:^3.1.0": + version: 3.2.0 + resolution: "builtin-modules@npm:3.2.0" + checksum: 0265aa1ba78e1a16f4e18668d815cb43fb364e6a6b8aa9189c6f44c7b894a551a43b323c40206959d2d4b2568c1f2805607ad6c88adc306a776ce6904cca6715 + languageName: node + linkType: hard + "builtin-status-codes@npm:^3.0.0": version: 3.0.0 resolution: "builtin-status-codes@npm:3.0.0" @@ -3284,6 +4962,16 @@ __metadata: languageName: node linkType: hard +"cacheable-lookup@npm:^2.0.0": + version: 2.0.1 + resolution: "cacheable-lookup@npm:2.0.1" + dependencies: + "@types/keyv": ^3.1.1 + keyv: ^4.0.0 + checksum: 6c2d0ca045aa6d9ffca54ace4ec8e9856678dcc55fd4506ad4078a3aab82fa2592f0c9316abbd6ddfabd1a785f34f289ccdcf4a565f329cd4aae55912b5ec1f8 + languageName: node + linkType: hard + "cacheable-lookup@npm:^5.0.3": version: 5.0.4 resolution: "cacheable-lookup@npm:5.0.4" @@ -3291,7 +4979,22 @@ __metadata: languageName: node linkType: hard -"cacheable-request@npm:^7.0.2": +"cacheable-request@npm:^6.0.0": + version: 6.1.0 + resolution: "cacheable-request@npm:6.1.0" + dependencies: + clone-response: ^1.0.2 + get-stream: ^5.1.0 + http-cache-semantics: ^4.0.0 + keyv: ^3.0.0 + lowercase-keys: ^2.0.0 + normalize-url: ^4.1.0 + responselike: ^1.0.2 + checksum: b510b237b18d17e89942e9ee2d2a077cb38db03f12167fd100932dfa8fc963424bfae0bfa1598df4ae16c944a5484e43e03df8f32105b04395ee9495e9e4e9f1 + languageName: node + linkType: hard + +"cacheable-request@npm:^7.0.1, cacheable-request@npm:^7.0.2": version: 7.0.2 resolution: "cacheable-request@npm:7.0.2" dependencies: @@ -3306,6 +5009,13 @@ __metadata: languageName: node linkType: hard +"cachedir@npm:2.2.0": + version: 2.2.0 + resolution: "cachedir@npm:2.2.0" + checksum: 7b55a54c312885dc497c19780ed5ec527f1ae9df61db4bdb939ba66d00a49a1f28ced3919f1f094b472eac36874c268d6d63f397a093caf8c534f34be78c6438 + languageName: node + linkType: hard + "call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" @@ -3330,6 +5040,27 @@ __metadata: languageName: node linkType: hard +"camelcase-keys@npm:^2.0.0": + version: 2.1.0 + resolution: "camelcase-keys@npm:2.1.0" + dependencies: + camelcase: ^2.0.0 + map-obj: ^1.0.0 + checksum: 97d2993da5db44d45e285910c70a54ce7f83a2be05afceaafd9831f7aeaf38a48dcdede5ca3aae2b2694852281d38dc459706e346942c5df0bf755f4133f5c39 + languageName: node + linkType: hard + +"camelcase-keys@npm:^4.0.0": + version: 4.2.0 + resolution: "camelcase-keys@npm:4.2.0" + dependencies: + camelcase: ^4.1.0 + map-obj: ^2.0.0 + quick-lru: ^1.0.0 + checksum: 8cb52633f2d335bf7efd9ec4169df3174047dbeadbe9b7604fb4a24cbc53a976bc26bb8557f6e9da5feff139bf94e36f40e2636b31225670f9524f586070c3ec + languageName: node + linkType: hard + "camelcase-keys@npm:^6.2.2": version: 6.2.2 resolution: "camelcase-keys@npm:6.2.2" @@ -3341,6 +5072,20 @@ __metadata: languageName: node linkType: hard +"camelcase@npm:^2.0.0": + version: 2.1.1 + resolution: "camelcase@npm:2.1.1" + checksum: 20a3ef08f348de832631d605362ffe447d883ada89617144a82649363ed5860923b021f8e09681624ef774afb93ff3597cfbcf8aaf0574f65af7648f1aea5e50 + languageName: node + linkType: hard + +"camelcase@npm:^4.1.0": + version: 4.1.0 + resolution: "camelcase@npm:4.1.0" + checksum: 9683356daf9b64fae4b30c91f8ceb1f34f22746e03d1804efdbe738357d38b47f206cdd71efcf2ed72018b2e88eeb8ec3f79adb09c02f1253a4b6d5d405ff2ae + languageName: node + linkType: hard + "camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": version: 5.3.1 resolution: "camelcase@npm:5.3.1" @@ -3348,6 +5093,13 @@ __metadata: languageName: node linkType: hard +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001313": version: 1.0.30001317 resolution: "caniuse-lite@npm:1.0.30001317" @@ -3388,7 +5140,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.0, chalk@npm:^2.0.1, chalk@npm:^2.3.2, chalk@npm:^2.4.2": +"chalk@npm:^2.0.0, chalk@npm:^2.0.1, chalk@npm:^2.3.2, chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -3409,6 +5161,13 @@ __metadata: languageName: node linkType: hard +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 + languageName: node + linkType: hard + "charcodes@npm:^0.2.0": version: 0.2.0 resolution: "charcodes@npm:0.2.0" @@ -3493,6 +5252,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^3.2.0": + version: 3.3.0 + resolution: "ci-info@npm:3.3.0" + checksum: c3d86fe374938ecda5093b1ba39acb535d8309185ba3f23587747c6a057e63f45419b406d880304dbc0e1d72392c9a33e42fe9a1e299209bc0ded5efaa232b66 + languageName: node + linkType: hard + "cidr-regex@npm:^3.1.1": version: 3.1.1 resolution: "cidr-regex@npm:3.1.1" @@ -3512,6 +5278,13 @@ __metadata: languageName: node linkType: hard +"cjs-module-lexer@npm:^1.0.0": + version: 1.2.2 + resolution: "cjs-module-lexer@npm:1.2.2" + checksum: 977f3f042bd4f08e368c890d91eecfbc4f91da0bc009a3c557bc4dfbf32022ad1141244ac1178d44de70fc9f3dea7add7cd9a658a34b9fae98a55d8f92331ce5 + languageName: node + linkType: hard + "class-utils@npm:^0.3.5": version: 0.3.6 resolution: "class-utils@npm:0.3.6" @@ -3566,7 +5339,7 @@ __metadata: languageName: node linkType: hard -"cli-table3@npm:*, cli-table3@npm:^0.6.1": +"cli-table3@npm:*, cli-table3@npm:^0.6.0, cli-table3@npm:^0.6.1": version: 0.6.1 resolution: "cli-table3@npm:0.6.1" dependencies: @@ -3579,7 +5352,7 @@ __metadata: languageName: node linkType: hard -"cli-truncate@npm:^2.1.0": +"cli-truncate@npm:2.1.0, cli-truncate@npm:^2.1.0": version: 2.1.0 resolution: "cli-truncate@npm:2.1.0" dependencies: @@ -3599,6 +5372,13 @@ __metadata: languageName: node linkType: hard +"cli-width@npm:^2.0.0": + version: 2.2.1 + resolution: "cli-width@npm:2.2.1" + checksum: 3c21b897a2ff551ae5b3c3ab32c866ed2965dcf7fb442f81adf0e27f4a397925c8f84619af7bcc6354821303f6ee9b2aa31d248306174f32c287986158cf4eed + languageName: node + linkType: hard + "cli-width@npm:^3.0.0": version: 3.0.0 resolution: "cli-width@npm:3.0.0" @@ -3662,6 +5442,20 @@ __metadata: languageName: node linkType: hard +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.1 + resolution: "collect-v8-coverage@npm:1.0.1" + checksum: 4efe0a1fccd517b65478a2364b33dadd0a43fc92a56f59aaece9b6186fe5177b2de471253587de7c91516f07c7268c2f6770b6cbcffc0e0ece353b766ec87e55 + languageName: node + linkType: hard + "collection-visit@npm:^1.0.0": version: 1.0.0 resolution: "collection-visit@npm:1.0.0" @@ -3713,6 +5507,13 @@ __metadata: languageName: node linkType: hard +"colorette@npm:^1.4.0": + version: 1.4.0 + resolution: "colorette@npm:1.4.0" + checksum: 01c3c16058b182a4ab4c126a65a75faa4d38a20fa7c845090b25453acec6c371bb2c5dceb0a2338511f17902b9d1a9af0cadd8509c9403894b79311032c256c3 + languageName: node + linkType: hard + "colorette@npm:^2.0.16": version: 2.0.16 resolution: "colorette@npm:2.0.16" @@ -3720,7 +5521,14 @@ __metadata: languageName: node linkType: hard -"colors@npm:1.4.0": +"colors@npm:1.0.x": + version: 1.0.3 + resolution: "colors@npm:1.0.3" + checksum: 234e8d3ab7e4003851cdd6a1f02eaa16dabc502ee5f4dc576ad7959c64b7477b15bd21177bab4055a4c0a66aa3d919753958030445f87c39a253d73b7a3637f5 + languageName: node + linkType: hard + +"colors@npm:1.4.0, colors@npm:^1.4.0": version: 1.4.0 resolution: "colors@npm:1.4.0" checksum: 98aa2c2418ad87dedf25d781be69dc5fc5908e279d9d30c34d8b702e586a0474605b3a189511482b9d5ed0d20c867515d22749537f7bc546256c6014f3ebdcec @@ -3753,7 +5561,14 @@ __metadata: languageName: node linkType: hard -"commander@npm:^8.3.0": +"commander@npm:^4.0.1": + version: 4.1.1 + resolution: "commander@npm:4.1.1" + checksum: d7b9913ff92cae20cb577a4ac6fcc121bd6223319e54a40f51a14740a681ad5c574fd29a57da478a5f234a6fa6c52cbf0b7c641353e03c648b1ae85ba670b977 + languageName: node + linkType: hard + +"commander@npm:^8.2.0, commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 @@ -3773,6 +5588,32 @@ __metadata: languageName: node linkType: hard +"commitizen@npm:^4.0.3, commitizen@npm:^4.2.4": + version: 4.2.4 + resolution: "commitizen@npm:4.2.4" + dependencies: + cachedir: 2.2.0 + cz-conventional-changelog: 3.2.0 + dedent: 0.7.0 + detect-indent: 6.0.0 + find-node-modules: ^2.1.2 + find-root: 1.1.0 + fs-extra: 8.1.0 + glob: 7.1.4 + inquirer: 6.5.2 + is-utf8: ^0.2.1 + lodash: ^4.17.20 + minimist: 1.2.5 + strip-bom: 4.0.0 + strip-json-comments: 3.0.1 + bin: + commitizen: bin/commitizen + cz: bin/git-cz + git-cz: bin/git-cz + checksum: 5b0ae7310e91616e5f3c5149e355b0e675b1132bbad4c3292afe04c91192be81859b2c22f8fef00887310b270ab01b9aef60c6fc4e9bc47fbf208c209f1d8ff5 + languageName: node + linkType: hard + "common-ancestor-path@npm:^1.0.1": version: 1.0.1 resolution: "common-ancestor-path@npm:1.0.1" @@ -3787,6 +5628,16 @@ __metadata: languageName: node linkType: hard +"compare-func@npm:^1.3.1": + version: 1.3.4 + resolution: "compare-func@npm:1.3.4" + dependencies: + array-ify: ^1.0.0 + dot-prop: ^3.0.0 + checksum: b3fccca2957d102cd2f00aa7941e6a6264db67fc0f1322dd2ea216ceeb92ea738797304ceb73644a9cfabaf6c1ecd39e793efd1a3804edbfdfaf507cc6804f7a + languageName: node + linkType: hard + "compare-func@npm:^2.0.0": version: 2.0.0 resolution: "compare-func@npm:2.0.0" @@ -3823,6 +5674,18 @@ __metadata: languageName: node linkType: hard +"concat-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "concat-stream@npm:2.0.0" + dependencies: + buffer-from: ^1.0.0 + inherits: ^2.0.3 + readable-stream: ^3.0.2 + typedarray: ^0.0.6 + checksum: d7f75d48f0ecd356c1545d87e22f57b488172811b1181d96021c7c4b14ab8855f5313280263dca44bb06e5222f274d047da3e290a38841ef87b59719bde967c7 + languageName: node + linkType: hard + "consola@npm:^2.15.0, consola@npm:^2.15.3": version: 2.15.3 resolution: "consola@npm:2.15.3" @@ -3869,7 +5732,17 @@ __metadata: languageName: node linkType: hard -"conventional-changelog-angular@npm:^5.0.0": +"conventional-changelog-angular@npm:^1.6.6": + version: 1.6.6 + resolution: "conventional-changelog-angular@npm:1.6.6" + dependencies: + compare-func: ^1.3.1 + q: ^1.5.1 + checksum: 14b6644d5ba8e792897f1ada32c615d544cbc6c6092295caedf81b71c1af631d25b370847efb3e49d2e4ba836a7bbbd0edb4a437a66e2e117130b6413032bad2 + languageName: node + linkType: hard + +"conventional-changelog-angular@npm:^5.0.0, conventional-changelog-angular@npm:^5.0.11": version: 5.0.13 resolution: "conventional-changelog-angular@npm:5.0.13" dependencies: @@ -3879,80 +5752,282 @@ __metadata: languageName: node linkType: hard -"conventional-changelog-eslint@npm:^3.0.9": - version: 3.0.9 - resolution: "conventional-changelog-eslint@npm:3.0.9" +"conventional-changelog-atom@npm:^2.0.0": + version: 2.0.8 + resolution: "conventional-changelog-atom@npm:2.0.8" dependencies: q: ^1.5.1 - checksum: 402ae73a8c5390405d4f902819f630f56fa7dfa8f6bef77b3b5f2fb7c8bd17f64ad83edbacc030cfef5b84400ab722d4f166dd906296a4d286e66205c1bd8a3f + checksum: 12ecbd928f8c261f9afaac067fcc0cf10ff6ac8505e4285dc3d9959ee072a8937ac942d505e850dce27c4527046009adb22b498ba0b10802916d2c7d2dc1f7bc languageName: node linkType: hard -"conventional-changelog-writer@npm:^5.0.0": - version: 5.0.1 - resolution: "conventional-changelog-writer@npm:5.0.1" +"conventional-changelog-codemirror@npm:^2.0.0": + version: 2.0.8 + resolution: "conventional-changelog-codemirror@npm:2.0.8" dependencies: - conventional-commits-filter: ^2.0.7 - dateformat: ^3.0.0 - handlebars: ^4.7.7 - json-stringify-safe: ^5.0.1 + q: ^1.5.1 + checksum: cf331db40cc54c2353b0189aba26a2b959cb08b059bf2a81245272027371519c9acc90d574295782985829c50f0c52da60c952c70ec6dbd70e9e17affeb61453 + languageName: node + linkType: hard + +"conventional-changelog-conventionalcommits@npm:^4.3.1": + version: 4.6.3 + resolution: "conventional-changelog-conventionalcommits@npm:4.6.3" + dependencies: + compare-func: ^2.0.0 lodash: ^4.17.15 - meow: ^8.0.0 - semver: ^6.0.0 - split: ^1.0.0 - through2: ^4.0.0 - bin: - conventional-changelog-writer: cli.js - checksum: 5c0129db44577f14b1f8de225b62a392a9927ba7fe3422cb21ad71a771b8472bd03badb7c87cb47419913abc3f2ce3759b69f59550cdc6f7a7b0459015b3b44c + q: ^1.5.1 + checksum: 7b8e8a21ebb56f9aaa510e12917b7c609202072c3e71089e0a09630c37c2e8146cdb04364809839b0e3eb55f807fe84d03b2079500b37f6186d505848be5c562 languageName: node linkType: hard -"conventional-commits-filter@npm:^2.0.0, conventional-commits-filter@npm:^2.0.7": - version: 2.0.7 - resolution: "conventional-commits-filter@npm:2.0.7" +"conventional-changelog-core@npm:^3.1.0": + version: 3.2.3 + resolution: "conventional-changelog-core@npm:3.2.3" dependencies: - lodash.ismatch: ^4.4.0 - modify-values: ^1.0.0 - checksum: feb567f680a6da1baaa1ef3cff393b3c56a5828f77ab9df5e70626475425d109a6fee0289b4979223c62bbd63bf9c98ef532baa6fcb1b66ee8b5f49077f5d46c + conventional-changelog-writer: ^4.0.6 + conventional-commits-parser: ^3.0.3 + dateformat: ^3.0.0 + get-pkg-repo: ^1.0.0 + git-raw-commits: 2.0.0 + git-remote-origin-url: ^2.0.0 + git-semver-tags: ^2.0.3 + lodash: ^4.2.1 + normalize-package-data: ^2.3.5 + q: ^1.5.1 + read-pkg: ^3.0.0 + read-pkg-up: ^3.0.0 + through2: ^3.0.0 + checksum: ef442eb12cbcbf41492d18328f7506cee09392cbe631e44e3c92c7b644199070a533c7ead35fec56b354069e0ca5a622636b9f3fb3ab94b3bb0ead643e7994d9 languageName: node linkType: hard -"conventional-commits-parser@npm:^3.2.3": - version: 3.2.4 - resolution: "conventional-commits-parser@npm:3.2.4" +"conventional-changelog-ember@npm:^2.0.1": + version: 2.0.9 + resolution: "conventional-changelog-ember@npm:2.0.9" dependencies: - JSONStream: ^1.0.4 - is-text-path: ^1.0.1 - lodash: ^4.17.15 - meow: ^8.0.0 - split2: ^3.0.0 - through2: ^4.0.0 - bin: - conventional-commits-parser: cli.js - checksum: 1627ff203bc9586d89e47a7fe63acecf339aba74903b9114e23d28094f79d4e2d6389bf146ae561461dcba8fc42e7bc228165d2b173f15756c43f1d32bc50bfd + q: ^1.5.1 + checksum: 30c7bd48ce995e39fc91bcd8c719b2bee10cb408c246a6a7de6cec44a3ca12afe5a86f57f55aa1fd2c64beb484c68013d16658047e6273f130c1c80e7dad38e9 languageName: node linkType: hard -"convert-source-map@npm:^1.7.0": - version: 1.8.0 - resolution: "convert-source-map@npm:1.8.0" +"conventional-changelog-eslint@npm:3.0.9, conventional-changelog-eslint@npm:^3.0.0, conventional-changelog-eslint@npm:^3.0.9": + version: 3.0.9 + resolution: "conventional-changelog-eslint@npm:3.0.9" dependencies: - safe-buffer: ~5.1.1 - checksum: 985d974a2d33e1a2543ada51c93e1ba2f73eaed608dc39f229afc78f71dcc4c8b7d7c684aa647e3c6a3a204027444d69e53e169ce94e8d1fa8d7dee80c9c8fed + q: ^1.5.1 + checksum: 402ae73a8c5390405d4f902819f630f56fa7dfa8f6bef77b3b5f2fb7c8bd17f64ad83edbacc030cfef5b84400ab722d4f166dd906296a4d286e66205c1bd8a3f languageName: node linkType: hard -"copy-concurrently@npm:^1.0.0": - version: 1.0.5 - resolution: "copy-concurrently@npm:1.0.5" +"conventional-changelog-express@npm:^2.0.0": + version: 2.0.6 + resolution: "conventional-changelog-express@npm:2.0.6" dependencies: - aproba: ^1.1.1 - fs-write-stream-atomic: ^1.0.8 - iferr: ^0.1.5 - mkdirp: ^0.5.1 - rimraf: ^2.5.4 - run-queue: ^1.0.0 - checksum: 63c169f582e09445260988f697b2d07793d439dfc31e97c8999707bd188dd94d1c7f2ca3533c7786fb75f03a3f2f54ad1ee08055f95f61bb8d2e862498c1d460 + q: ^1.5.1 + checksum: c139fa9878971455cce9904a195d92f770679d24a88ef07a016a6954e28f0f237ec59e45f2591b2fc9b8e10fd46c30150ddf0ce50a2cb03be85cae0ee64d4cdd + languageName: node + linkType: hard + +"conventional-changelog-jquery@npm:^0.1.0": + version: 0.1.0 + resolution: "conventional-changelog-jquery@npm:0.1.0" + dependencies: + q: ^1.4.1 + checksum: c4e80b3f4abea38ac4b2f6c78e5b5847561ebfb657c1c941e58373b33eefa3ba029ef6c258ecbf5737ef8e57122725f980dcee0b8c8cf8aa3d5809b0dd566a72 + languageName: node + linkType: hard + +"conventional-changelog-jscs@npm:^0.1.0": + version: 0.1.0 + resolution: "conventional-changelog-jscs@npm:0.1.0" + dependencies: + q: ^1.4.1 + checksum: 7de846a6ae013a85d880fc94110bb01ccbab9048542020e6c3252e51aea4f33193f4e94e5b5cd52a29a3d202de3ea9a195fee88a5c970fad88730272d1f1b6f1 + languageName: node + linkType: hard + +"conventional-changelog-jshint@npm:^2.0.0": + version: 2.0.9 + resolution: "conventional-changelog-jshint@npm:2.0.9" + dependencies: + compare-func: ^2.0.0 + q: ^1.5.1 + checksum: ec96144b75fdb84c4a6f7db9b671dc258d964cd7aa35f9b00539e42bbe05601a9127c17cf0dcc315ae81a0dd20fe795d9d41dd90373928d24b33f065728eb2e2 + languageName: node + linkType: hard + +"conventional-changelog-preset-loader@npm:^2.0.1, conventional-changelog-preset-loader@npm:^2.3.4": + version: 2.3.4 + resolution: "conventional-changelog-preset-loader@npm:2.3.4" + checksum: 23a889b7fcf6fe7653e61f32a048877b2f954dcc1e0daa2848c5422eb908e6f24c78372f8d0d2130b5ed941c02e7010c599dccf44b8552602c6c8db9cb227453 + languageName: node + linkType: hard + +"conventional-changelog-writer@npm:^4.0.0, conventional-changelog-writer@npm:^4.0.6": + version: 4.1.0 + resolution: "conventional-changelog-writer@npm:4.1.0" + dependencies: + compare-func: ^2.0.0 + conventional-commits-filter: ^2.0.7 + dateformat: ^3.0.0 + handlebars: ^4.7.6 + json-stringify-safe: ^5.0.1 + lodash: ^4.17.15 + meow: ^8.0.0 + semver: ^6.0.0 + split: ^1.0.0 + through2: ^4.0.0 + bin: + conventional-changelog-writer: cli.js + checksum: 6fce8f64f50bcabae1373ff7e84c2e6b71f5d050315f90f77ac7a847d36bbe8b60d83cb2e5c616b81d99bf34b9ab907e7e88840e82e6ab995081aaf561ee37d5 + languageName: node + linkType: hard + +"conventional-changelog-writer@npm:^5.0.0": + version: 5.0.1 + resolution: "conventional-changelog-writer@npm:5.0.1" + dependencies: + conventional-commits-filter: ^2.0.7 + dateformat: ^3.0.0 + handlebars: ^4.7.7 + json-stringify-safe: ^5.0.1 + lodash: ^4.17.15 + meow: ^8.0.0 + semver: ^6.0.0 + split: ^1.0.0 + through2: ^4.0.0 + bin: + conventional-changelog-writer: cli.js + checksum: 5c0129db44577f14b1f8de225b62a392a9927ba7fe3422cb21ad71a771b8472bd03badb7c87cb47419913abc3f2ce3759b69f59550cdc6f7a7b0459015b3b44c + languageName: node + linkType: hard + +"conventional-changelog@npm:^2.0.0": + version: 2.0.3 + resolution: "conventional-changelog@npm:2.0.3" + dependencies: + conventional-changelog-angular: ^1.6.6 + conventional-changelog-atom: ^2.0.0 + conventional-changelog-codemirror: ^2.0.0 + conventional-changelog-core: ^3.1.0 + conventional-changelog-ember: ^2.0.1 + conventional-changelog-eslint: ^3.0.0 + conventional-changelog-express: ^2.0.0 + conventional-changelog-jquery: ^0.1.0 + conventional-changelog-jscs: ^0.1.0 + conventional-changelog-jshint: ^2.0.0 + conventional-changelog-preset-loader: ^2.0.1 + checksum: c70042cca095a2a97212305042be79f3c608621299ebda8c811c94931aef18ae96585af9d3b72e84e99f9aa525d5bb34fe405d382b1664175696ae9abb682a4e + languageName: node + linkType: hard + +"conventional-commit-types@npm:^3.0.0": + version: 3.0.0 + resolution: "conventional-commit-types@npm:3.0.0" + checksum: b9552de6a310c91a271ee57a890ed70d2d94340e710fc33856aaca5b24928fb2162f04dda5484d155b68c1fbaa042d904014d7fad0b6751a6d68052a0616015d + languageName: node + linkType: hard + +"conventional-commits-detector@npm:^1.0.0": + version: 1.0.3 + resolution: "conventional-commits-detector@npm:1.0.3" + dependencies: + arrify: ^1.0.0 + git-raw-commits: ^2.0.0 + meow: ^7.0.0 + through2-concurrent: ^2.0.0 + bin: + conventional-commits-detector: src/cli.js + checksum: b7bd60c422bf93a943788b88eaf925fc2358d29a15dfd50da43c5a3b5f8df3eae18d5c3e9ef59f6ca5a270bcc7b5b173eca024ff77213b5f9f9999f0c2e56610 + languageName: node + linkType: hard + +"conventional-commits-filter@npm:^2.0.0, conventional-commits-filter@npm:^2.0.7": + version: 2.0.7 + resolution: "conventional-commits-filter@npm:2.0.7" + dependencies: + lodash.ismatch: ^4.4.0 + modify-values: ^1.0.0 + checksum: feb567f680a6da1baaa1ef3cff393b3c56a5828f77ab9df5e70626475425d109a6fee0289b4979223c62bbd63bf9c98ef532baa6fcb1b66ee8b5f49077f5d46c + languageName: node + linkType: hard + +"conventional-commits-parser@npm:^3.0.0, conventional-commits-parser@npm:^3.0.3, conventional-commits-parser@npm:^3.0.7, conventional-commits-parser@npm:^3.2.0, conventional-commits-parser@npm:^3.2.2, conventional-commits-parser@npm:^3.2.3": + version: 3.2.4 + resolution: "conventional-commits-parser@npm:3.2.4" + dependencies: + JSONStream: ^1.0.4 + is-text-path: ^1.0.1 + lodash: ^4.17.15 + meow: ^8.0.0 + split2: ^3.0.0 + through2: ^4.0.0 + bin: + conventional-commits-parser: cli.js + checksum: 1627ff203bc9586d89e47a7fe63acecf339aba74903b9114e23d28094f79d4e2d6389bf146ae561461dcba8fc42e7bc228165d2b173f15756c43f1d32bc50bfd + languageName: node + linkType: hard + +"conventional-gitlab-releaser@npm:^4.0.0": + version: 4.0.3 + resolution: "conventional-gitlab-releaser@npm:4.0.3" + dependencies: + conventional-changelog: ^2.0.0 + dateformat: ^3.0.0 + debug: ^3.1.0 + git-semver-tags: ^2.0.0 + gl-got: ^8.0.0 + lodash.merge: ^4.0.2 + meow: ^7.0.0 + object-assign: ^4.0.1 + q: ^1.4.1 + semver-regex: ^2.0.0 + through2: ^2.0.0 + bin: + conventional-gitlab-releaser: src/cli.js + checksum: bbbd2edf93bacb80215eb2395a990e5a15bbc6783ef9ef4fe096780836bd2f9653b1a48ec14d24036180559128da79043f4232969504c55323027450537a2d49 + languageName: node + linkType: hard + +"conventional-recommended-bump@npm:^6.0.5": + version: 6.1.0 + resolution: "conventional-recommended-bump@npm:6.1.0" + dependencies: + concat-stream: ^2.0.0 + conventional-changelog-preset-loader: ^2.3.4 + conventional-commits-filter: ^2.0.7 + conventional-commits-parser: ^3.2.0 + git-raw-commits: ^2.0.8 + git-semver-tags: ^4.1.1 + meow: ^8.0.0 + q: ^1.5.1 + bin: + conventional-recommended-bump: cli.js + checksum: da1d7a5f3b9f7706bede685cdcb3db67997fdaa43c310fd5bf340955c84a4b85dbb9427031522ee06dad290b730a54be987b08629d79c73720dbad3a2531146b + languageName: node + linkType: hard + +"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": + version: 1.8.0 + resolution: "convert-source-map@npm:1.8.0" + dependencies: + safe-buffer: ~5.1.1 + checksum: 985d974a2d33e1a2543ada51c93e1ba2f73eaed608dc39f229afc78f71dcc4c8b7d7c684aa647e3c6a3a204027444d69e53e169ce94e8d1fa8d7dee80c9c8fed + languageName: node + linkType: hard + +"copy-concurrently@npm:^1.0.0": + version: 1.0.5 + resolution: "copy-concurrently@npm:1.0.5" + dependencies: + aproba: ^1.1.1 + fs-write-stream-atomic: ^1.0.8 + iferr: ^0.1.5 + mkdirp: ^0.5.1 + rimraf: ^2.5.4 + run-queue: ^1.0.0 + checksum: 63c169f582e09445260988f697b2d07793d439dfc31e97c8999707bd188dd94d1c7f2ca3533c7786fb75f03a3f2f54ad1ee08055f95f61bb8d2e862498c1d460 languageName: node linkType: hard @@ -3963,7 +6038,7 @@ __metadata: languageName: node linkType: hard -"core-js@npm:^3.21.1": +"core-js@npm:^3.21.1, core-js@npm:^3.8.2": version: 3.21.1 resolution: "core-js@npm:3.21.1" checksum: d68eddd831340ad5b24ac29c72fda022a43b17f194c4278b6b875a843283d316502cb4abd07f28631d6ebc4387f66aa06e2b1b3c8fd7e08096a751b5c63f6889 @@ -3984,7 +6059,21 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^7.0.0": +"cosmiconfig-typescript-loader@npm:^1.0.0": + version: 1.0.9 + resolution: "cosmiconfig-typescript-loader@npm:1.0.9" + dependencies: + cosmiconfig: ^7 + ts-node: ^10.7.0 + peerDependencies: + "@types/node": "*" + cosmiconfig: ">=7" + typescript: ">=3" + checksum: 26a0198e03e81a9e7e1a6ce880d7309fdd056c7a3a23b587253e6d1d1224154d3f9edf727d9c0310628e89752353211b75de151b705298b4d0741fa1740c661e + languageName: node + linkType: hard + +"cosmiconfig@npm:^7, cosmiconfig@npm:^7.0.0, cosmiconfig@npm:^7.0.1": version: 7.0.1 resolution: "cosmiconfig@npm:7.0.1" dependencies: @@ -3997,6 +6086,21 @@ __metadata: languageName: node linkType: hard +"coveralls@npm:^3.1.1": + version: 3.1.1 + resolution: "coveralls@npm:3.1.1" + dependencies: + js-yaml: ^3.13.1 + lcov-parse: ^1.0.0 + log-driver: ^1.2.7 + minimist: ^1.2.5 + request: ^2.88.2 + bin: + coveralls: bin/coveralls.js + checksum: 70a208907c5c9182120e980392988245fb170889b1a5c7c4f6c7271026dd88caa2b5750b15b6f16d3a2ba4c718bada8c8dd4ed1e9503a42703c71af384de1abf + languageName: node + linkType: hard + "create-ecdh@npm:^4.0.0": version: 4.0.4 resolution: "create-ecdh@npm:4.0.4" @@ -4034,6 +6138,25 @@ __metadata: languageName: node linkType: hard +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff + languageName: node + linkType: hard + +"cross-env@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-env@npm:7.0.3" + dependencies: + cross-spawn: ^7.0.1 + bin: + cross-env: src/bin/cross-env.js + cross-env-shell: src/bin/cross-env-shell.js + checksum: 26f2f3ea2ab32617f57effb70d329c2070d2f5630adc800985d8b30b56e8bf7f5f439dd3a0358b79cee6f930afc23cf8e23515f17ccfb30092c6b62c6b630a79 + languageName: node + linkType: hard + "cross-fetch@npm:^3.0.5, cross-fetch@npm:^3.0.6": version: 3.1.5 resolution: "cross-fetch@npm:3.1.5" @@ -4067,7 +6190,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": +"cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: @@ -4113,6 +6236,45 @@ __metadata: languageName: node linkType: hard +"cssom@npm:^0.4.4": + version: 0.4.4 + resolution: "cssom@npm:0.4.4" + checksum: e3bc1076e7ee4213d4fef05e7ae03bfa83dc05f32611d8edc341f4ecc3d9647b89c8245474c7dd2cdcdb797a27c462e99da7ad00a34399694559f763478ff53f + languageName: node + linkType: hard + +"cssom@npm:~0.3.6": + version: 0.3.8 + resolution: "cssom@npm:0.3.8" + checksum: 24beb3087c76c0d52dd458be9ee1fbc80ac771478a9baef35dd258cdeb527c68eb43204dd439692bb2b1ae5272fa5f2946d10946edab0d04f1078f85e06bc7f6 + languageName: node + linkType: hard + +"cssstyle@npm:^2.3.0": + version: 2.3.0 + resolution: "cssstyle@npm:2.3.0" + dependencies: + cssom: ~0.3.6 + checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3 + languageName: node + linkType: hard + +"currently-unhandled@npm:^0.4.1": + version: 0.4.1 + resolution: "currently-unhandled@npm:0.4.1" + dependencies: + array-find-index: ^1.0.1 + checksum: 1f59fe10b5339b54b1a1eee110022f663f3495cf7cf2f480686e89edc7fa8bfe42dbab4b54f85034bc8b092a76cc7becbc2dad4f9adad332ab5831bec39ad540 + languageName: node + linkType: hard + +"cycle@npm:1.0.x": + version: 1.0.3 + resolution: "cycle@npm:1.0.3" + checksum: b9f131094fb832a8c4ba18c6d2dc9c87fc80d3242847a45f0a5f70911b2acab68abc1c25eb23e5155fcf2135a27d8fcc3635556745b03b488c4f360cfbc352df + languageName: node + linkType: hard + "cyclist@npm:^1.0.1": version: 1.0.1 resolution: "cyclist@npm:1.0.1" @@ -4120,6 +6282,58 @@ __metadata: languageName: node linkType: hard +"cz-conventional-changelog@npm:3.2.0": + version: 3.2.0 + resolution: "cz-conventional-changelog@npm:3.2.0" + dependencies: + "@commitlint/load": ">6.1.1" + chalk: ^2.4.1 + commitizen: ^4.0.3 + conventional-commit-types: ^3.0.0 + lodash.map: ^4.5.1 + longest: ^2.0.1 + word-wrap: ^1.0.3 + dependenciesMeta: + "@commitlint/load": + optional: true + checksum: 5512b2e28a4582a92a68323027cbb5df4a405647c0ddbdc8408c2bad3c520ae964f19978dca1641122b12dd9db692c445ec5859b1f6bdb74c4661d13c02e2c6e + languageName: node + linkType: hard + +"cz-conventional-changelog@npm:^3.3.0": + version: 3.3.0 + resolution: "cz-conventional-changelog@npm:3.3.0" + dependencies: + "@commitlint/load": ">6.1.1" + chalk: ^2.4.1 + commitizen: ^4.0.3 + conventional-commit-types: ^3.0.0 + lodash.map: ^4.5.1 + longest: ^2.0.1 + word-wrap: ^1.0.3 + dependenciesMeta: + "@commitlint/load": + optional: true + checksum: 8b766712092142ecec86c5c8a2a7206d0b2da46ae16e137303c6d75b42c048acd831c734fd542b9c3cbeb0fd8e7d1f5391494ed629dfba4459fee2d6f5d2c0ca + languageName: node + linkType: hard + +"dargs@npm:^4.0.1": + version: 4.1.0 + resolution: "dargs@npm:4.1.0" + dependencies: + number-is-nan: ^1.0.0 + checksum: 941e8fb09d5b26af3a8a065069216fa5170eef23b74f97822bcd2da6aeb33067c0fe10dd56800100755886795929e165ce4a7295ae67d471183f8e9a591e034a + languageName: node + linkType: hard + +"dargs@npm:^7.0.0": + version: 7.0.0 + resolution: "dargs@npm:7.0.0" + checksum: b8f1e3cba59c42e1f13a114ad4848c3fc1cf7470f633ee9e9f1043762429bc97d91ae31b826fb135eefde203a3fdb20deb0c0a0222ac29d937b8046085d668d1 + languageName: node + linkType: hard + "dashdash@npm:^1.12.0": version: 1.14.1 resolution: "dashdash@npm:1.14.1" @@ -4129,6 +6343,17 @@ __metadata: languageName: node linkType: hard +"data-urls@npm:^2.0.0": + version: 2.0.0 + resolution: "data-urls@npm:2.0.0" + dependencies: + abab: ^2.0.3 + whatwg-mimetype: ^2.3.0 + whatwg-url: ^8.0.0 + checksum: 97caf828aac25e25e04ba6869db0f99c75e6859bb5b424ada28d3e7841941ebf08ddff3c1b1bb4585986bd507a5d54c2a716853ea6cb98af877400e637393e71 + languageName: node + linkType: hard + "dateformat@npm:^3.0.0": version: 3.0.3 resolution: "dateformat@npm:3.0.3" @@ -4164,7 +6389,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.7": +"debug@npm:^3.1.0, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -4173,6 +6398,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.0.1": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + languageName: node + linkType: hard + "debuglog@npm:^1.0.1": version: 1.0.1 resolution: "debuglog@npm:1.0.1" @@ -4180,7 +6417,7 @@ __metadata: languageName: node linkType: hard -"decamelize-keys@npm:^1.1.0": +"decamelize-keys@npm:^1.0.0, decamelize-keys@npm:^1.1.0": version: 1.1.0 resolution: "decamelize-keys@npm:1.1.0" dependencies: @@ -4190,13 +6427,20 @@ __metadata: languageName: node linkType: hard -"decamelize@npm:^1.1.0": +"decamelize@npm:^1.1.0, decamelize@npm:^1.1.2, decamelize@npm:^1.2.0": version: 1.2.0 resolution: "decamelize@npm:1.2.0" checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa languageName: node linkType: hard +"decimal.js@npm:^10.2.1": + version: 10.3.1 + resolution: "decimal.js@npm:10.3.1" + checksum: 0351ac9f05fe050f23227aa6a4573bee2d58fa7378fcf28d969a8c789525032effb488a90320fd3fe86a66e17b4bc507d811b15eada5b7f0e7ec5d2af4c24a59 + languageName: node + linkType: hard + "decode-uri-component@npm:^0.2.0": version: 0.2.0 resolution: "decode-uri-component@npm:0.2.0" @@ -4204,6 +6448,24 @@ __metadata: languageName: node linkType: hard +"decompress-response@npm:^3.2.0, decompress-response@npm:^3.3.0": + version: 3.3.0 + resolution: "decompress-response@npm:3.3.0" + dependencies: + mimic-response: ^1.0.0 + checksum: 952552ac3bd7de2fc18015086b09468645c9638d98a551305e485230ada278c039c91116e946d07894b39ee53c0f0d5b6473f25a224029344354513b412d7380 + languageName: node + linkType: hard + +"decompress-response@npm:^5.0.0": + version: 5.0.0 + resolution: "decompress-response@npm:5.0.0" + dependencies: + mimic-response: ^2.0.0 + checksum: b46fe6c275b410e6dbf354083b42122b18eb6010c25aa19134f61934110269f715b2dfaf0089e3ef4e2acf5eb477193f8f5d42dbe3cc38adfc43fd090510c765 + languageName: node + linkType: hard + "decompress-response@npm:^6.0.0": version: 6.0.0 resolution: "decompress-response@npm:6.0.0" @@ -4213,6 +6475,13 @@ __metadata: languageName: node linkType: hard +"dedent@npm:0.7.0, dedent@npm:^0.7.0": + version: 0.7.0 + resolution: "dedent@npm:0.7.0" + checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 + languageName: node + linkType: hard + "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -4220,13 +6489,20 @@ __metadata: languageName: node linkType: hard -"deep-is@npm:^0.1.3": +"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 languageName: node linkType: hard +"deep-object-diff@npm:^1.1.7": + version: 1.1.7 + resolution: "deep-object-diff@npm:1.1.7" + checksum: 543fb1ae87b138ad260691e6949e72bf7dc144825084b7ad1886bb725d2ace1c19ed1ef1280f1116243e86bf2c6b942f45c670958b1468f644613f28c5dc97ea + languageName: node + linkType: hard + "deepmerge-ts@npm:^2.0.1": version: 2.0.1 resolution: "deepmerge-ts@npm:2.0.1" @@ -4236,6 +6512,13 @@ __metadata: languageName: node linkType: hard +"deepmerge@npm:^4.2.2": + version: 4.2.2 + resolution: "deepmerge@npm:4.2.2" + checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b + languageName: node + linkType: hard + "defaults@npm:^1.0.3": version: 1.0.3 resolution: "defaults@npm:1.0.3" @@ -4245,6 +6528,13 @@ __metadata: languageName: node linkType: hard +"defer-to-connect@npm:^1.0.1": + version: 1.1.3 + resolution: "defer-to-connect@npm:1.1.3" + checksum: 9491b301dcfa04956f989481ba7a43c2231044206269eb4ab64a52d6639ee15b1252262a789eb4239fb46ab63e44d4e408641bae8e0793d640aee55398cb3930 + languageName: node + linkType: hard + "defer-to-connect@npm:^2.0.0": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" @@ -4343,6 +6633,27 @@ __metadata: languageName: node linkType: hard +"detect-file@npm:^1.0.0": + version: 1.0.0 + resolution: "detect-file@npm:1.0.0" + checksum: 1861e4146128622e847abe0e1ed80fef01e78532665858a792267adf89032b7a9c698436137707fcc6f02956c2a6a0052d6a0cef5be3d4b76b1ff0da88e2158a + languageName: node + linkType: hard + +"detect-indent@npm:6.0.0": + version: 6.0.0 + resolution: "detect-indent@npm:6.0.0" + checksum: 0c38f362016e2d07af1c65b1ecd6ad8a91f06bfdd11383887c867a495ad286d04be2ab44027ac42444704d523982013115bd748c1541df7c9396ad76b22aaf5d + languageName: node + linkType: hard + +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 + languageName: node + linkType: hard + "dezalgo@npm:^1.0.0": version: 1.0.3 resolution: "dezalgo@npm:1.0.3" @@ -4353,8 +6664,22 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.0.0": - version: 5.0.0 +"diff-sequences@npm:^27.5.1": + version: 27.5.1 + resolution: "diff-sequences@npm:27.5.1" + checksum: a00db5554c9da7da225db2d2638d85f8e41124eccbd56cbaefb3b276dcbb1c1c2ad851c32defe2055a54a4806f030656cbf6638105fd6ce97bb87b90b32a33ca + languageName: node + linkType: hard + +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: f2c09b0ce4e6b301c221addd83bf3f454c0bc00caa3dd837cf6c127d6edf7223aa2bbe3b688feea110b7f262adbfc845b757c44c8a9f8c0c5b15d8fa9ce9d20d + languageName: node + linkType: hard + +"diff@npm:^5.0.0": + version: 5.0.0 resolution: "diff@npm:5.0.0" checksum: f19fe29284b633afdb2725c2a8bb7d25761ea54d321d8e67987ac851c5294be4afeab532bd84531e02583a3fe7f4014aa314a3eda84f5590e7a9e6b371ef3b46 languageName: node @@ -4432,6 +6757,15 @@ __metadata: languageName: node linkType: hard +"domexception@npm:^2.0.1": + version: 2.0.1 + resolution: "domexception@npm:2.0.1" + dependencies: + webidl-conversions: ^5.0.0 + checksum: d638e9cb05c52999f1b2eb87c374b03311ea5b1d69c2f875bc92da73e17db60c12142b45c950228642ff7f845c536b65305483350d080df59003a653da80b691 + languageName: node + linkType: hard + "domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": version: 4.3.1 resolution: "domhandler@npm:4.3.1" @@ -4452,6 +6786,15 @@ __metadata: languageName: node linkType: hard +"dot-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "dot-prop@npm:3.0.0" + dependencies: + is-obj: ^1.0.0 + checksum: 7bc2735afc0b76387ccb9a437f80300e96a82d2863eb5cb14b30b1d6583a221a8589fd3a86cfdb8d8c877f36e44599f38560d4068db51ef563094d04ad7dfe64 + languageName: node + linkType: hard + "dot-prop@npm:^5.1.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" @@ -4470,6 +6813,13 @@ __metadata: languageName: node linkType: hard +"duplexer3@npm:^0.1.4": + version: 0.1.4 + resolution: "duplexer3@npm:0.1.4" + checksum: c2fd6969314607d23439c583699aaa43c4100d66b3e161df55dccd731acc57d5c81a64bb4f250805fbe434ddb1d2623fee2386fb890f5886ca1298690ec53415 + languageName: node + linkType: hard + "duplexify@npm:^3.4.2, duplexify@npm:^3.6.0": version: 3.7.1 resolution: "duplexify@npm:3.7.1" @@ -4528,6 +6878,13 @@ __metadata: languageName: node linkType: hard +"emittery@npm:^0.8.1": + version: 0.8.1 + resolution: "emittery@npm:0.8.1" + checksum: 2457e8c7b0688bb006126f2c025b2655abe682f66b184954122a8a065b5277f9813d49d627896a10b076b81c513ec5f491fd9c14fbd42c04b95ca3c9f3c365ee + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -4578,6 +6935,15 @@ __metadata: languageName: node linkType: hard +"enquirer@npm:^2.3.5, enquirer@npm:^2.3.6": + version: 2.3.6 + resolution: "enquirer@npm:2.3.6" + dependencies: + ansi-colors: ^4.1.1 + checksum: 1c0911e14a6f8d26721c91e01db06092a5f7675159f0261d69c403396a385afd13dd76825e7678f66daffa930cfaa8d45f506fb35f818a2788463d022af1b884 + languageName: node + linkType: hard + "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" @@ -4621,7 +6987,7 @@ __metadata: languageName: node linkType: hard -"error-ex@npm:^1.3.1": +"error-ex@npm:^1.2.0, error-ex@npm:^1.3.1": version: 1.3.2 resolution: "error-ex@npm:1.3.2" dependencies: @@ -4894,6 +7260,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 + languageName: node + linkType: hard + "escape-string-regexp@npm:^3.0.0": version: 3.0.0 resolution: "escape-string-regexp@npm:3.0.0" @@ -4908,7 +7281,26 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^6.0.0": +"escodegen@npm:^2.0.0": + version: 2.0.0 + resolution: "escodegen@npm:2.0.0" + dependencies: + esprima: ^4.0.1 + estraverse: ^5.2.0 + esutils: ^2.0.2 + optionator: ^0.8.1 + source-map: ~0.6.1 + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef + languageName: node + linkType: hard + +"eslint-config-prettier@npm:^6.0.0, eslint-config-prettier@npm:^6.11.0": version: 6.15.0 resolution: "eslint-config-prettier@npm:6.15.0" dependencies: @@ -4947,7 +7339,7 @@ __metadata: languageName: node linkType: hard -"eslint-module-utils@npm:^2.7.2": +"eslint-module-utils@npm:^2.7.2, eslint-module-utils@npm:^2.7.3": version: 2.7.3 resolution: "eslint-module-utils@npm:2.7.3" dependencies: @@ -4969,6 +7361,28 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-functional@npm:^3.0.2": + version: 3.7.2 + resolution: "eslint-plugin-functional@npm:3.7.2" + dependencies: + "@typescript-eslint/experimental-utils": ^4.9.1 + array.prototype.flatmap: ^1.2.4 + deepmerge: ^4.2.2 + escape-string-regexp: ^4.0.0 + object.fromentries: ^2.0.3 + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + tsutils: ^3.0.0 + typescript: ^3.4.1 || ^4.0.0 + peerDependenciesMeta: + tsutils: + optional: true + typescript: + optional: true + checksum: 7aa0f4306627bf2a8f7ef486e8eb956b2fe161fc9ce5ffc011ec22a714c5a621316ae08c85f81061aa31c6ec94a234c2fdc1c97c99653b591a2778d161d5f90f + languageName: node + linkType: hard + "eslint-plugin-functional@npm:^4.2.0": version: 4.2.0 resolution: "eslint-plugin-functional@npm:4.2.0" @@ -4989,6 +7403,29 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-import@npm:^2.22.0": + version: 2.26.0 + resolution: "eslint-plugin-import@npm:2.26.0" + dependencies: + array-includes: ^3.1.4 + array.prototype.flat: ^1.2.5 + debug: ^2.6.9 + doctrine: ^2.1.0 + eslint-import-resolver-node: ^0.3.6 + eslint-module-utils: ^2.7.3 + has: ^1.0.3 + is-core-module: ^2.8.1 + is-glob: ^4.0.3 + minimatch: ^3.1.2 + object.values: ^1.1.5 + resolve: ^1.22.0 + tsconfig-paths: ^3.14.1 + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + checksum: 0bf77ad80339554481eafa2b1967449e1f816b94c7a6f9614ce33fb4083c4e6c050f10d241dd50b4975d47922880a34de1e42ea9d8e6fd663ebb768baa67e655 + languageName: node + linkType: hard + "eslint-plugin-import@npm:^2.25.4": version: 2.25.4 resolution: "eslint-plugin-import@npm:2.25.4" @@ -5071,6 +7508,15 @@ __metadata: languageName: node linkType: hard +"eslint-utils@npm:^2.1.0": + version: 2.1.0 + resolution: "eslint-utils@npm:2.1.0" + dependencies: + eslint-visitor-keys: ^1.1.0 + checksum: 27500938f348da42100d9e6ad03ae29b3de19ba757ae1a7f4a087bdcf83ac60949bbb54286492ca61fac1f5f3ac8692dd21537ce6214240bf95ad0122f24d71d + languageName: node + linkType: hard + "eslint-utils@npm:^3.0.0": version: 3.0.0 resolution: "eslint-utils@npm:3.0.0" @@ -5082,7 +7528,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^1.1.0": +"eslint-visitor-keys@npm:^1.1.0, eslint-visitor-keys@npm:^1.3.0": version: 1.3.0 resolution: "eslint-visitor-keys@npm:1.3.0" checksum: 37a19b712f42f4c9027e8ba98c2b06031c17e0c0a4c696cd429bd9ee04eb43889c446f2cd545e1ff51bef9593fcec94ecd2c2ef89129fcbbf3adadbef520376a @@ -5103,6 +7549,56 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^7.8.0": + version: 7.32.0 + resolution: "eslint@npm:7.32.0" + dependencies: + "@babel/code-frame": 7.12.11 + "@eslint/eslintrc": ^0.4.3 + "@humanwhocodes/config-array": ^0.5.0 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.0.1 + doctrine: ^3.0.0 + enquirer: ^2.3.5 + escape-string-regexp: ^4.0.0 + eslint-scope: ^5.1.1 + eslint-utils: ^2.1.0 + eslint-visitor-keys: ^2.0.0 + espree: ^7.3.1 + esquery: ^1.4.0 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + functional-red-black-tree: ^1.0.1 + glob-parent: ^5.1.2 + globals: ^13.6.0 + ignore: ^4.0.6 + import-fresh: ^3.0.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + js-yaml: ^3.13.1 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.0.4 + natural-compare: ^1.4.0 + optionator: ^0.9.1 + progress: ^2.0.0 + regexpp: ^3.1.0 + semver: ^7.2.1 + strip-ansi: ^6.0.0 + strip-json-comments: ^3.1.0 + table: ^6.0.9 + text-table: ^0.2.0 + v8-compile-cache: ^2.0.3 + bin: + eslint: bin/eslint.js + checksum: cc85af9985a3a11085c011f3d27abe8111006d34cc274291b3c4d7bea51a4e2ff6135780249becd919ba7f6d6d1ecc38a6b73dacb6a7be08d38453b344dc8d37 + languageName: node + linkType: hard + "eslint@npm:^8.11.0": version: 8.11.0 resolution: "eslint@npm:8.11.0" @@ -5159,6 +7655,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^7.3.0, espree@npm:^7.3.1": + version: 7.3.1 + resolution: "espree@npm:7.3.1" + dependencies: + acorn: ^7.4.0 + acorn-jsx: ^5.3.1 + eslint-visitor-keys: ^1.3.0 + checksum: aa9b50dcce883449af2e23bc2b8d9abb77118f96f4cb313935d6b220f77137eaef7724a83c3f6243b96bc0e4ab14766198e60818caad99f9519ae5a336a39b45 + languageName: node + linkType: hard + "espree@npm:^9.0.0, espree@npm:^9.3.1": version: 9.3.1 resolution: "espree@npm:9.3.1" @@ -5170,7 +7677,7 @@ __metadata: languageName: node linkType: hard -"esprima@npm:^4.0.1, esprima@npm:~4.0.0": +"esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0": version: 4.0.1 resolution: "esprima@npm:4.0.1" bin: @@ -5212,6 +7719,27 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^0.5.2": + version: 0.5.2 + resolution: "estree-walker@npm:0.5.2" + checksum: c0beb0a6c016c888337437204d0d0a2677aab623abd1da2d18bf4257fceb9ec38f9772b58b53d7144937e2a5324fd26bfe7a822c18b23f45061f74c5296ec96a + languageName: node + linkType: hard + +"estree-walker@npm:^0.6.1": + version: 0.6.1 + resolution: "estree-walker@npm:0.6.1" + checksum: 9d6f82a4921f11eec18f8089fb3cce6e53bcf45a8e545c42a2674d02d055fb30f25f90495f8be60803df6c39680c80dcee7f944526867eb7aa1fc9254883b23d + languageName: node + linkType: hard + +"estree-walker@npm:^1.0.1": + version: 1.0.1 + resolution: "estree-walker@npm:1.0.1" + checksum: 7e70da539691f6db03a08e7ce94f394ce2eef4180e136d251af299d41f92fb2d28ebcd9a6e393e3728d7970aeb5358705ddf7209d52fbcb2dd4693f95dcf925f + languageName: node + linkType: hard + "estree-walker@npm:^2.0.1": version: 2.0.2 resolution: "estree-walker@npm:2.0.2" @@ -5298,6 +7826,13 @@ __metadata: languageName: node linkType: hard +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 + languageName: node + linkType: hard + "expand-brackets@npm:^2.1.4": version: 2.1.4 resolution: "expand-brackets@npm:2.1.4" @@ -5313,6 +7848,27 @@ __metadata: languageName: node linkType: hard +"expand-tilde@npm:^2.0.0, expand-tilde@npm:^2.0.2": + version: 2.0.2 + resolution: "expand-tilde@npm:2.0.2" + dependencies: + homedir-polyfill: ^1.0.1 + checksum: 2efe6ed407d229981b1b6ceb552438fbc9e5c7d6a6751ad6ced3e0aa5cf12f0b299da695e90d6c2ac79191b5c53c613e508f7149e4573abfbb540698ddb7301a + languageName: node + linkType: hard + +"expect@npm:^27.5.1": + version: 27.5.1 + resolution: "expect@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + jest-get-type: ^27.5.1 + jest-matcher-utils: ^27.5.1 + jest-message-util: ^27.5.1 + checksum: b2c66beb52de53ef1872165aace40224e722bca3c2274c54cfa74b6d617d55cf0ccdbf36783ccd64dbea501b280098ed33fd0b207d4f15bc03cd3c7a24364a6a + languageName: node + linkType: hard + "extend-shallow@npm:^2.0.1": version: 2.0.1 resolution: "extend-shallow@npm:2.0.1" @@ -5380,6 +7936,13 @@ __metadata: languageName: node linkType: hard +"eyes@npm:0.1.x": + version: 0.1.8 + resolution: "eyes@npm:0.1.8" + checksum: c31703a92bf36ba75ee8d379ee7985c24ee6149f3a6175f44cec7a05b178c38bce9836d3ca48c9acb0329a960ac2c4b2ead4e60cdd4fe6e8c92cad7cd6913687 + languageName: node + linkType: hard + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -5421,14 +7984,14 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0": +"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6": +"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c @@ -5451,6 +8014,15 @@ __metadata: languageName: node linkType: hard +"fb-watchman@npm:^2.0.0": + version: 2.0.1 + resolution: "fb-watchman@npm:2.0.1" + dependencies: + bser: 2.1.1 + checksum: 8510230778ab3a51c27dffb1b76ef2c24fab672a42742d3c0a45c2e9d1e5f20210b1fbca33486088da4a9a3958bde96b5aec0a63aac9894b4e9df65c88b2cbd6 + languageName: node + linkType: hard + "figgy-pudding@npm:^3.5.1": version: 3.5.2 resolution: "figgy-pudding@npm:3.5.2" @@ -5549,6 +8121,34 @@ __metadata: languageName: node linkType: hard +"find-cache-dir@npm:^3.3.1": + version: 3.3.2 + resolution: "find-cache-dir@npm:3.3.2" + dependencies: + commondir: ^1.0.1 + make-dir: ^3.0.2 + pkg-dir: ^4.1.0 + checksum: 1e61c2e64f5c0b1c535bd85939ae73b0e5773142713273818cc0b393ee3555fb0fd44e1a5b161b8b6c3e03e98c2fcc9c227d784850a13a90a8ab576869576817 + languageName: node + linkType: hard + +"find-node-modules@npm:^2.1.2": + version: 2.1.3 + resolution: "find-node-modules@npm:2.1.3" + dependencies: + findup-sync: ^4.0.0 + merge: ^2.1.1 + checksum: 4b8a194ffd56ccf1a1033de35e2ee8209869b05cce68ff7c4ab0dbf04e63fd7196283383eee4c84596c7b311755b2836815209d558234cadc330a87881e5a3f4 + languageName: node + linkType: hard + +"find-root@npm:1.1.0": + version: 1.1.0 + resolution: "find-root@npm:1.1.0" + checksum: b2a59fe4b6c932eef36c45a048ae8f93c85640212ebe8363164814990ee20f154197505965f3f4f102efc33bfb1cbc26fd17c4a2fc739ebc51b886b137cbefaf + languageName: node + linkType: hard + "find-up@npm:^1.0.0": version: 1.1.2 resolution: "find-up@npm:1.1.2" @@ -5577,7 +8177,7 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^4.1.0": +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" dependencies: @@ -5587,6 +8187,16 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: ^6.0.0 + path-exists: ^4.0.0 + checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + languageName: node + linkType: hard + "find-versions@npm:^4.0.0": version: 4.0.0 resolution: "find-versions@npm:4.0.0" @@ -5596,6 +8206,18 @@ __metadata: languageName: node linkType: hard +"findup-sync@npm:^4.0.0": + version: 4.0.0 + resolution: "findup-sync@npm:4.0.0" + dependencies: + detect-file: ^1.0.0 + is-glob: ^4.0.0 + micromatch: ^4.0.2 + resolve-dir: ^1.0.1 + checksum: 94131e1107ad63790ed00c4c39ca131a93ea602607bd97afeffd92b69a9a63cf2c6f57d6db88cb753fe748ac7fde79e1e76768ff784247026b7c5ebf23ede3a0 + languageName: node + linkType: hard + "flat-cache@npm:^3.0.4": version: 3.0.4 resolution: "flat-cache@npm:3.0.4" @@ -5647,6 +8269,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^3.0.0": + version: 3.0.1 + resolution: "form-data@npm:3.0.1" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + mime-types: ^2.1.12 + checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d + languageName: node + linkType: hard + "form-data@npm:^4.0.0": version: 4.0.0 resolution: "form-data@npm:4.0.0" @@ -5695,6 +8328,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:8.1.0": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 + languageName: node + linkType: hard + "fs-extra@npm:^10.0.0": version: 10.0.1 resolution: "fs-extra@npm:10.0.1" @@ -5706,7 +8350,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^9.1.0": +"fs-extra@npm:^9.0.0, fs-extra@npm:^9.1.0": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" dependencies: @@ -5757,7 +8401,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:~2.3.2": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": version: 2.3.2 resolution: "fsevents@npm:2.3.2" dependencies: @@ -5777,7 +8421,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>": +"fsevents@patch:fsevents@^2.3.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>": version: 2.3.2 resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin<compat/fsevents>::version=2.3.2&hash=18f3a7" dependencies: @@ -5841,6 +8485,56 @@ __metadata: languageName: node linkType: hard +"get-own-enumerable-property-symbols@npm:^3.0.0": + version: 3.0.2 + resolution: "get-own-enumerable-property-symbols@npm:3.0.2" + checksum: 8f0331f14159f939830884799f937343c8c0a2c330506094bc12cbee3665d88337fe97a4ea35c002cc2bdba0f5d9975ad7ec3abb925015cdf2a93e76d4759ede + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 + languageName: node + linkType: hard + +"get-pkg-repo@npm:^1.0.0": + version: 1.4.0 + resolution: "get-pkg-repo@npm:1.4.0" + dependencies: + hosted-git-info: ^2.1.4 + meow: ^3.3.0 + normalize-package-data: ^2.3.0 + parse-github-repo-url: ^1.3.0 + through2: ^2.0.0 + bin: + get-pkg-repo: cli.js + checksum: c81dd33b33db7cc0bc5700440d678349773d8cf363935d71bae6a1a67f20dccb78c241a56587c36920a4372a3437571d93425819e7e6f030920d0a407c18fc34 + languageName: node + linkType: hard + +"get-pkg-repo@npm:^4.0.2": + version: 4.2.1 + resolution: "get-pkg-repo@npm:4.2.1" + dependencies: + "@hutson/parse-repository-url": ^3.0.0 + hosted-git-info: ^4.0.0 + through2: ^2.0.0 + yargs: ^16.2.0 + bin: + get-pkg-repo: src/cli.js + checksum: 5abf169137665e45b09a857b33ad2fdcf2f4a09f0ecbd0ebdd789a7ce78c39186a21f58621127eb724d2d4a3a7ee8e6bd4ac7715efda01ad5200665afc218e0d + languageName: node + linkType: hard + +"get-stdin@npm:^4.0.1": + version: 4.0.1 + resolution: "get-stdin@npm:4.0.1" + checksum: 4f73d3fe0516bc1f3dc7764466a68ad7c2ba809397a02f56c2a598120e028430fcff137a648a01876b2adfb486b4bc164119f98f1f7d7c0abd63385bdaa0113f + languageName: node + linkType: hard + "get-stdin@npm:^6.0.0": version: 6.0.0 resolution: "get-stdin@npm:6.0.0" @@ -5855,7 +8549,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^4.0.0": +"get-stream@npm:^4.0.0, get-stream@npm:^4.1.0": version: 4.1.0 resolution: "get-stream@npm:4.1.0" dependencies: @@ -5864,7 +8558,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^5.1.0": +"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" dependencies: @@ -5920,44 +8614,157 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^3.1.0": - version: 3.1.0 - resolution: "glob-parent@npm:3.1.0" +"git-raw-commits@npm:2.0.0": + version: 2.0.0 + resolution: "git-raw-commits@npm:2.0.0" dependencies: - is-glob: ^3.1.0 - path-dirname: ^1.0.0 - checksum: 653d559237e89a11b9934bef3f392ec42335602034c928590544d383ff5ef449f7b12f3cfa539708e74bc0a6c28ab1fe51d663cc07463cdf899ba92afd85a855 + dargs: ^4.0.1 + lodash.template: ^4.0.2 + meow: ^4.0.0 + split2: ^2.0.0 + through2: ^2.0.0 + bin: + git-raw-commits: cli.js + checksum: eeca8f4440bacfb9bda300583a4fa9b17183c46197ee5dda7369b30421ee9006ff311d18115db758262d55b48a52639a54ff9945444eb2590b9216deb8aa4ab2 languageName: node linkType: hard -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" +"git-raw-commits@npm:^2.0.0, git-raw-commits@npm:^2.0.8": + version: 2.0.11 + resolution: "git-raw-commits@npm:2.0.11" dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + dargs: ^7.0.0 + lodash: ^4.17.15 + meow: ^8.0.0 + split2: ^3.0.0 + through2: ^4.0.0 + bin: + git-raw-commits: cli.js + checksum: c178af43633684106179793b6e3473e1d2bb50bb41d04e2e285ea4eef342ca4090fee6bc8a737552fde879d22346c90de5c49f18c719a0f38d4c934f258a0f79 languageName: node linkType: hard -"glob-parent@npm:^6.0.1": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" +"git-remote-origin-url@npm:^2.0.0": + version: 2.0.0 + resolution: "git-remote-origin-url@npm:2.0.0" dependencies: - is-glob: ^4.0.3 - checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + gitconfiglocal: ^1.0.0 + pify: ^2.3.0 + checksum: 85263a09c044b5f4fe2acc45cbb3c5331ab2bd4484bb53dfe7f3dd593a4bf90a9786a2e00b9884524331f50b3da18e8c924f01c2944087fc7f342282c4437b73 languageName: node linkType: hard -"glob-to-regexp@npm:^0.3.0": - version: 0.3.0 - resolution: "glob-to-regexp@npm:0.3.0" - checksum: d34b3219d860042d508c4893b67617cd16e2668827e445ff39cff9f72ef70361d3dc24f429e003cdfb6607c75c9664b8eadc41d2eeb95690af0b0d3113c1b23b +"git-remote-origin-url@npm:^3.0.0": + version: 3.1.0 + resolution: "git-remote-origin-url@npm:3.1.0" + dependencies: + gitconfiglocal: ^2.1.0 + checksum: 32d5e1cb4f1fc7a3ac5b8a1d3f71ea1aa2020eeb6ed5bf0722d704a97cfeaf3681d861f89cd181508f4e3e943e0d0b750e008d99e9db5b65f4a2be223e2ea490 languageName: node linkType: hard -"glob@npm:*, glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.2.0": - version: 7.2.0 - resolution: "glob@npm:7.2.0" +"git-semver-tags@npm:^2.0.0, git-semver-tags@npm:^2.0.3": + version: 2.0.3 + resolution: "git-semver-tags@npm:2.0.3" + dependencies: + meow: ^4.0.0 + semver: ^6.0.0 + bin: + git-semver-tags: cli.js + checksum: b72483e7cafc469b9682c1dce6b758612052cac04fb29da123160d88ed4a68a870b707ae6da2b26e8f426a8224438f9d207b7ee244b615804927472dbb0bbb2e + languageName: node + linkType: hard + +"git-semver-tags@npm:^3.0.1": + version: 3.0.1 + resolution: "git-semver-tags@npm:3.0.1" + dependencies: + meow: ^5.0.0 + semver: ^6.0.0 + bin: + git-semver-tags: cli.js + checksum: 0c62643c5929082d145ca48106e869379d90604716defd7127dff1eebca7664a0d8695266aee0a0dd41a31d5297aea88cbd1cfb5d525416fbbd5d27131f7009e + languageName: node + linkType: hard + +"git-semver-tags@npm:^4.1.1": + version: 4.1.1 + resolution: "git-semver-tags@npm:4.1.1" + dependencies: + meow: ^8.0.0 + semver: ^6.0.0 + bin: + git-semver-tags: cli.js + checksum: e16d02a515c0f88289a28b5bf59bf42c0dc053765922d3b617ae4b50546bd4f74a25bf3ad53b91cb6c1159319a2e92533b160c573b856c2629125c8b26b3b0e3 + languageName: node + linkType: hard + +"gitconfiglocal@npm:^1.0.0": + version: 1.0.0 + resolution: "gitconfiglocal@npm:1.0.0" + dependencies: + ini: ^1.3.2 + checksum: e6d2764c15bbab6d1d1000d1181bb907f6b3796bb04f63614dba571b18369e0ecb1beaf27ce8da5b24307ef607e3a5f262a67cb9575510b9446aac697d421beb + languageName: node + linkType: hard + +"gitconfiglocal@npm:^2.1.0": + version: 2.1.0 + resolution: "gitconfiglocal@npm:2.1.0" + dependencies: + ini: ^1.3.2 + checksum: 4b4b44d992a6abf2900eec8cfe960dc36e0d3c2467d20ec69e0a0f13b6b7645b926daa004df42f94c34ad28a58529cf2522fa0bf261e4e7b95958fb451dcedda + languageName: node + linkType: hard + +"gl-got@npm:^8.0.0": + version: 8.0.0 + resolution: "gl-got@npm:8.0.0" + dependencies: + got: ^7.0.0 + is-plain-obj: ^1.1.0 + checksum: 6798ac28716f0257fdc1570f750d572739c039722dfa203467e3b987e2cc8669bc211f2d699b7f600bffb9443fbfe0eb55cc74195de7e7f3dc258e73f0e0cc32 + languageName: node + linkType: hard + +"glob-parent@npm:^3.1.0": + version: 3.1.0 + resolution: "glob-parent@npm:3.1.0" + dependencies: + is-glob: ^3.1.0 + path-dirname: ^1.0.0 + checksum: 653d559237e89a11b9934bef3f392ec42335602034c928590544d383ff5ef449f7b12f3cfa539708e74bc0a6c28ab1fe51d663cc07463cdf899ba92afd85a855 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: ^4.0.1 + checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.1": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: ^4.0.3 + checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.3.0": + version: 0.3.0 + resolution: "glob-to-regexp@npm:0.3.0" + checksum: d34b3219d860042d508c4893b67617cd16e2668827e445ff39cff9f72ef70361d3dc24f429e003cdfb6607c75c9664b8eadc41d2eeb95690af0b0d3113c1b23b + languageName: node + linkType: hard + +"glob@npm:*, glob@npm:^7.0.0, glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7, glob@npm:^7.2.0": + version: 7.2.0 + resolution: "glob@npm:7.2.0" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 @@ -5969,6 +8776,53 @@ __metadata: languageName: node linkType: hard +"glob@npm:7.1.4": + version: 7.1.4 + resolution: "glob@npm:7.1.4" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.0.4 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: f52480fc82b1e66e52990f0f2e7306447d12294c83fbbee0395e761ad1178172012a7cc0673dbf4810baac400fc09bf34484c08b5778c216403fd823db281716 + languageName: node + linkType: hard + +"global-dirs@npm:^0.1.1": + version: 0.1.1 + resolution: "global-dirs@npm:0.1.1" + dependencies: + ini: ^1.3.4 + checksum: 10624f5a8ddb8634c22804c6b24f93fb591c3639a6bc78e3584e01a238fc6f7b7965824184e57d63f6df36980b6c191484ad7bc6c35a1599b8f1d64be64c2a4a + languageName: node + linkType: hard + +"global-modules@npm:^1.0.0": + version: 1.0.0 + resolution: "global-modules@npm:1.0.0" + dependencies: + global-prefix: ^1.0.1 + is-windows: ^1.0.1 + resolve-dir: ^1.0.0 + checksum: 10be68796c1e1abc1e2ba87ec4ea507f5629873b119ab0cd29c07284ef2b930f1402d10df01beccb7391dedd9cd479611dd6a24311c71be58937beaf18edf85e + languageName: node + linkType: hard + +"global-prefix@npm:^1.0.1": + version: 1.0.2 + resolution: "global-prefix@npm:1.0.2" + dependencies: + expand-tilde: ^2.0.2 + homedir-polyfill: ^1.0.1 + ini: ^1.3.4 + is-windows: ^1.0.1 + which: ^1.2.14 + checksum: 061b43470fe498271bcd514e7746e8a8535032b17ab9570517014ae27d700ff0dca749f76bbde13ba384d185be4310d8ba5712cb0e74f7d54d59390db63dd9a0 + languageName: node + linkType: hard + "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -5985,7 +8839,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.0.0, globby@npm:^11.0.1, globby@npm:^11.0.4": +"globby@npm:^11.0.0, globby@npm:^11.0.1, globby@npm:^11.0.3, globby@npm:^11.0.4": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -6015,6 +8869,29 @@ __metadata: languageName: node linkType: hard +"got@npm:^10.5.2": + version: 10.7.0 + resolution: "got@npm:10.7.0" + dependencies: + "@sindresorhus/is": ^2.0.0 + "@szmarczak/http-timer": ^4.0.0 + "@types/cacheable-request": ^6.0.1 + cacheable-lookup: ^2.0.0 + cacheable-request: ^7.0.1 + decompress-response: ^5.0.0 + duplexer3: ^0.1.4 + get-stream: ^5.0.0 + lowercase-keys: ^2.0.0 + mimic-response: ^2.1.0 + p-cancelable: ^2.0.0 + p-event: ^4.0.0 + responselike: ^2.0.0 + to-readable-stream: ^2.0.0 + type-fest: ^0.10.0 + checksum: 66feaec071b2dac412bfff3786a67d144a4bf615115ef70ac7e1db1e2a640bd02dcfbc60c55de11c8ee00f069df06f1de9d462446e56b09e4ade332ca2db7cd0 + languageName: node + linkType: hard + "got@npm:^11.0.0": version: 11.8.3 resolution: "got@npm:11.8.3" @@ -6034,6 +8911,47 @@ __metadata: languageName: node linkType: hard +"got@npm:^7.0.0": + version: 7.1.0 + resolution: "got@npm:7.1.0" + dependencies: + decompress-response: ^3.2.0 + duplexer3: ^0.1.4 + get-stream: ^3.0.0 + is-plain-obj: ^1.1.0 + is-retry-allowed: ^1.0.0 + is-stream: ^1.0.0 + isurl: ^1.0.0-alpha5 + lowercase-keys: ^1.0.0 + p-cancelable: ^0.3.0 + p-timeout: ^1.1.1 + safe-buffer: ^5.0.1 + timed-out: ^4.0.0 + url-parse-lax: ^1.0.0 + url-to-options: ^1.0.1 + checksum: 0270472a389bdca67e60d36cccd014e502d1797d925c06ea2ef372fb41ae99c9e25ac4f187cc422760b4a66abb5478f8821b8134b4eaefe0bf5183daeded5e2f + languageName: node + linkType: hard + +"got@npm:^9.6.0": + version: 9.6.0 + resolution: "got@npm:9.6.0" + dependencies: + "@sindresorhus/is": ^0.14.0 + "@szmarczak/http-timer": ^1.1.2 + cacheable-request: ^6.0.0 + decompress-response: ^3.3.0 + duplexer3: ^0.1.4 + get-stream: ^4.1.0 + lowercase-keys: ^1.0.1 + mimic-response: ^1.0.1 + p-cancelable: ^1.0.0 + to-readable-stream: ^1.0.0 + url-parse-lax: ^3.0.0 + checksum: 941807bd9704bacf5eb401f0cc1212ffa1f67c6642f2d028fd75900471c221b1da2b8527f4553d2558f3faeda62ea1cf31665f8b002c6137f5de8732f07370b0 + languageName: node + linkType: hard + "graceful-fs@npm:*, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.9 resolution: "graceful-fs@npm:4.2.9" @@ -6041,7 +8959,7 @@ __metadata: languageName: node linkType: hard -"handlebars@npm:^4.7.7": +"handlebars@npm:^4.7.6, handlebars@npm:^4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" dependencies: @@ -6111,6 +9029,13 @@ __metadata: languageName: node linkType: hard +"has-symbol-support-x@npm:^1.4.1": + version: 1.4.2 + resolution: "has-symbol-support-x@npm:1.4.2" + checksum: ff06631d556d897424c00e8e79c10093ad34c93e88bb0563932d7837f148a4c90a4377abc5d8da000cb6637c0ecdb4acc9ae836c7cfd0ffc919986db32097609 + languageName: node + linkType: hard + "has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" @@ -6118,6 +9043,15 @@ __metadata: languageName: node linkType: hard +"has-to-string-tag-x@npm:^1.2.0": + version: 1.4.1 + resolution: "has-to-string-tag-x@npm:1.4.1" + dependencies: + has-symbol-support-x: ^1.4.1 + checksum: 804c4505727be7770f8b2f5e727ce31c9affc5b83df4ce12344f44b68d557fefb31f77751dbd739de900653126bcd71f8842fac06f97a3fae5422685ab0ce6f0 + languageName: node + linkType: hard + "has-tostringtag@npm:^1.0.0": version: 1.0.0 resolution: "has-tostringtag@npm:1.0.0" @@ -6237,6 +9171,15 @@ __metadata: languageName: node linkType: hard +"homedir-polyfill@npm:^1.0.1": + version: 1.0.3 + resolution: "homedir-polyfill@npm:1.0.3" + dependencies: + parse-passwd: ^1.0.0 + checksum: 18dd4db87052c6a2179d1813adea0c4bfcfa4f9996f0e226fefb29eb3d548e564350fa28ec46b0bf1fbc0a1d2d6922ceceb80093115ea45ff8842a4990139250 + languageName: node + linkType: hard + "hook-std@npm:^2.0.0": version: 2.0.0 resolution: "hook-std@npm:2.0.0" @@ -6269,6 +9212,22 @@ __metadata: languageName: node linkType: hard +"html-encoding-sniffer@npm:^2.0.1": + version: 2.0.1 + resolution: "html-encoding-sniffer@npm:2.0.1" + dependencies: + whatwg-encoding: ^1.0.5 + checksum: bf30cce461015ed7e365736fcd6a3063c7bc016a91f74398ef6158886970a96333938f7c02417ab3c12aa82e3e53b40822145facccb9ddfbcdc15a879ae4d7ba + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 + languageName: node + linkType: hard + "html-tags@npm:^2.0.0": version: 2.0.0 resolution: "html-tags@npm:2.0.0" @@ -6302,6 +9261,17 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^4.0.0, http-proxy-agent@npm:^4.0.1": + version: 4.0.1 + resolution: "http-proxy-agent@npm:4.0.1" + dependencies: + "@tootallnate/once": 1 + agent-base: 6 + debug: 4 + checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 + languageName: node + linkType: hard + "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -6374,7 +9344,16 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.4.24": +"husky@npm:^7.0.2": + version: 7.0.4 + resolution: "husky@npm:7.0.4" + bin: + husky: lib/bin.js + checksum: c6ec4af63da2c9522da8674a20ad9b48362cc92704896cc8a58c6a2a39d797feb2b806f93fbd83a6d653fbdceb2c3b6e0b602c6b2e8565206ffc2882ef7db9e9 + languageName: node + linkType: hard + +"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" dependencies: @@ -6415,7 +9394,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^4.0.3": +"ignore@npm:^4.0.3, ignore@npm:^4.0.6": version: 4.0.6 resolution: "ignore@npm:4.0.6" checksum: 248f82e50a430906f9ee7f35e1158e3ec4c3971451dd9f99c9bc1548261b4db2b99709f60ac6c6cac9333494384176cc4cc9b07acbe42d52ac6a09cad734d800 @@ -6453,6 +9432,15 @@ __metadata: languageName: node linkType: hard +"import-from@npm:^3.0.0": + version: 3.0.0 + resolution: "import-from@npm:3.0.0" + dependencies: + resolve-from: ^5.0.0 + checksum: 5040a7400e77e41e2c3bb6b1b123b52a15a284de1ffc03d605879942c00e3a87428499d8d031d554646108a0f77652549411167f6a7788e4fc7027eefccf3356 + languageName: node + linkType: hard + "import-from@npm:^4.0.0": version: 4.0.0 resolution: "import-from@npm:4.0.0" @@ -6460,6 +9448,18 @@ __metadata: languageName: node linkType: hard +"import-local@npm:^3.0.2": + version: 3.1.0 + resolution: "import-local@npm:3.1.0" + dependencies: + pkg-dir: ^4.2.0 + resolve-cwd: ^3.0.0 + bin: + import-local-fixture: fixtures/cli.js + checksum: bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -6467,6 +9467,22 @@ __metadata: languageName: node linkType: hard +"indent-string@npm:^2.1.0": + version: 2.1.0 + resolution: "indent-string@npm:2.1.0" + dependencies: + repeating: ^2.0.0 + checksum: 2fe7124311435f4d7a98f0a314d8259a4ec47ecb221110a58e2e2073e5f75c8d2b4f775f2ed199598fbe20638917e57423096539455ca8bff8eab113c9bee12c + languageName: node + linkType: hard + +"indent-string@npm:^3.0.0": + version: 3.2.0 + resolution: "indent-string@npm:3.2.0" + checksum: a0b72603bba6c985d367fda3a25aad16423d2056b22a7e83ee2dd9ce0ce3d03d1e078644b679087aa7edf1cfb457f0d96d9eeadc0b12f38582088cc00e995d2f + languageName: node + linkType: hard + "indent-string@npm:^4.0.0": version: 4.0.0 resolution: "indent-string@npm:4.0.0" @@ -6519,7 +9535,7 @@ __metadata: languageName: node linkType: hard -"ini@npm:~1.3.0": +"ini@npm:^1.3.2, ini@npm:^1.3.4, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 @@ -6556,6 +9572,27 @@ __metadata: languageName: node linkType: hard +"inquirer@npm:6.5.2": + version: 6.5.2 + resolution: "inquirer@npm:6.5.2" + dependencies: + ansi-escapes: ^3.2.0 + chalk: ^2.4.2 + cli-cursor: ^2.1.0 + cli-width: ^2.0.0 + external-editor: ^3.0.3 + figures: ^2.0.0 + lodash: ^4.17.12 + mute-stream: 0.0.7 + run-async: ^2.2.0 + rxjs: ^6.4.0 + string-width: ^2.1.0 + strip-ansi: ^5.1.0 + through: ^2.3.6 + checksum: 175ad4cd1ebed493b231b240185f1da5afeace5f4e8811dfa83cf55dcae59c3255eaed990aa71871b0fd31aa9dc212f43c44c50ed04fb529364405e72f484d28 + languageName: node + linkType: hard + "inquirer@npm:^7.1.0": version: 7.3.3 resolution: "inquirer@npm:7.3.3" @@ -6588,6 +9625,13 @@ __metadata: languageName: node linkType: hard +"interpret@npm:^1.0.0": + version: 1.4.0 + resolution: "interpret@npm:1.4.0" + checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155 + languageName: node + linkType: hard + "into-stream@npm:^6.0.0": version: 6.0.0 resolution: "into-stream@npm:6.0.0" @@ -6708,7 +9752,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.0, is-core-module@npm:^2.8.1": +"is-core-module@npm:^2.2.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.0, is-core-module@npm:^2.8.1": version: 2.8.1 resolution: "is-core-module@npm:2.8.1" dependencies: @@ -6789,6 +9833,20 @@ __metadata: languageName: node linkType: hard +"is-finite@npm:^1.0.0": + version: 1.1.0 + resolution: "is-finite@npm:1.1.0" + checksum: 532b97ed3d03e04c6bd203984d9e4ba3c0c390efee492bad5d1d1cd1802a68ab27adbd3ef6382f6312bed6c8bb1bd3e325ea79a8dc8fe080ed7a06f5f97b93e7 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^2.0.0": + version: 2.0.0 + resolution: "is-fullwidth-code-point@npm:2.0.0" + checksum: eef9c6e15f68085fec19ff6a978a6f1b8f48018fd1265035552078ee945573594933b09bbd6f562553e2a241561439f1ef5339276eba68d272001343084cfab8 + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -6803,6 +9861,13 @@ __metadata: languageName: node linkType: hard +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 + languageName: node + linkType: hard + "is-glob@npm:^3.1.0": version: 3.1.0 resolution: "is-glob@npm:3.1.0" @@ -6828,6 +9893,13 @@ __metadata: languageName: node linkType: hard +"is-module@npm:^1.0.0": + version: 1.0.0 + resolution: "is-module@npm:1.0.0" + checksum: 8cd5390730c7976fb4e8546dd0b38865ee6f7bacfa08dfbb2cc07219606755f0b01709d9361e01f13009bbbd8099fa2927a8ed665118a6105d66e40f1b838c3f + languageName: node + linkType: hard + "is-negative-zero@npm:^2.0.1": version: 2.0.2 resolution: "is-negative-zero@npm:2.0.2" @@ -6860,6 +9932,13 @@ __metadata: languageName: node linkType: hard +"is-obj@npm:^1.0.0, is-obj@npm:^1.0.1": + version: 1.0.1 + resolution: "is-obj@npm:1.0.1" + checksum: 3ccf0efdea12951e0b9c784e2b00e77e87b2f8bd30b42a498548a8afcc11b3287342a2030c308e473e93a7a19c9ea7854c99a8832a476591c727df2a9c79796c + languageName: node + linkType: hard + "is-obj@npm:^2.0.0": version: 2.0.0 resolution: "is-obj@npm:2.0.0" @@ -6867,6 +9946,13 @@ __metadata: languageName: node linkType: hard +"is-object@npm:^1.0.1": + version: 1.0.2 + resolution: "is-object@npm:1.0.2" + checksum: 971219c4b1985b9751f65e4c8296d3104f0457b0e8a70849e848a4a2208bc47317d73b3b85d4a369619cb2df8284dc22584cb2695a7d99aca5e8d0aa64fc075a + languageName: node + linkType: hard + "is-path-cwd@npm:^2.2.0": version: 2.2.0 resolution: "is-path-cwd@npm:2.2.0" @@ -6904,6 +9990,22 @@ __metadata: languageName: node linkType: hard +"is-potential-custom-element-name@npm:^1.0.1": + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab + languageName: node + linkType: hard + +"is-reference@npm:^1.2.1": + version: 1.2.1 + resolution: "is-reference@npm:1.2.1" + dependencies: + "@types/estree": "*" + checksum: e7b48149f8abda2c10849ea51965904d6a714193d68942ad74e30522231045acf06cbfae5a4be2702fede5d232e61bf50b3183acdc056e6e3afe07fcf4f4b2bc + languageName: node + linkType: hard + "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -6914,6 +10016,20 @@ __metadata: languageName: node linkType: hard +"is-regexp@npm:^1.0.0": + version: 1.0.0 + resolution: "is-regexp@npm:1.0.0" + checksum: be692828e24cba479ec33644326fa98959ec68ba77965e0291088c1a741feaea4919d79f8031708f85fd25e39de002b4520622b55460660b9c369e6f7187faef + languageName: node + linkType: hard + +"is-retry-allowed@npm:^1.0.0": + version: 1.2.0 + resolution: "is-retry-allowed@npm:1.2.0" + checksum: 50d700a89ae31926b1c91b3eb0104dbceeac8790d8b80d02f5c76d9a75c2056f1bb24b5268a8a018dead606bddf116b2262e5ac07401eb8b8783b266ed22558d + languageName: node + linkType: hard + "is-shared-array-buffer@npm:^1.0.1": version: 1.0.1 resolution: "is-shared-array-buffer@npm:1.0.1" @@ -6930,7 +10046,7 @@ __metadata: languageName: node linkType: hard -"is-stream@npm:^1.1.0": +"is-stream@npm:^1.0.0, is-stream@npm:^1.1.0": version: 1.1.0 resolution: "is-stream@npm:1.1.0" checksum: 063c6bec9d5647aa6d42108d4c59723d2bd4ae42135a2d4db6eadbd49b7ea05b750fd69d279e5c7c45cf9da753ad2c00d8978be354d65aa9f6bb434969c6a2ae @@ -6971,13 +10087,20 @@ __metadata: languageName: node linkType: hard -"is-typedarray@npm:~1.0.0": +"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 languageName: node linkType: hard +"is-utf8@npm:^0.2.0, is-utf8@npm:^0.2.1": + version: 0.2.1 + resolution: "is-utf8@npm:0.2.1" + checksum: 167ccd2be869fc228cc62c1a28df4b78c6b5485d15a29027d3b5dceb09b383e86a3522008b56dcac14b592b22f0a224388718c2505027a994fd8471465de54b3 + languageName: node + linkType: hard + "is-weakref@npm:^1.0.1": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" @@ -6987,7 +10110,7 @@ __metadata: languageName: node linkType: hard -"is-windows@npm:^1.0.2": +"is-windows@npm:^1.0.1, is-windows@npm:^1.0.2": version: 1.0.2 resolution: "is-windows@npm:1.0.2" checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 @@ -7022,46 +10145,597 @@ __metadata: languageName: node linkType: hard -"isobject@npm:^2.0.0": - version: 2.1.0 - resolution: "isobject@npm:2.1.0" +"isobject@npm:^2.0.0": + version: 2.1.0 + resolution: "isobject@npm:2.1.0" + dependencies: + isarray: 1.0.0 + checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f + languageName: node + linkType: hard + +"isobject@npm:^3.0.0, isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 + languageName: node + linkType: hard + +"isstream@npm:0.1.x, isstream@npm:~0.1.2": + version: 0.1.2 + resolution: "isstream@npm:0.1.2" + checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 + languageName: node + linkType: hard + +"issue-parser@npm:^6.0.0": + version: 6.0.0 + resolution: "issue-parser@npm:6.0.0" + dependencies: + lodash.capitalize: ^4.2.1 + lodash.escaperegexp: ^4.1.2 + lodash.isplainobject: ^4.0.6 + lodash.isstring: ^4.0.1 + lodash.uniqby: ^4.7.0 + checksum: 3357928af6c78c4803340f978bd55dc922b6b15b3f6c76aaa78a08999d39002729502ce1650863d1a9d728a7e31ccc0a865087244225ef6e8fc85aaf2f9c0f67 + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.0 + resolution: "istanbul-lib-coverage@npm:3.2.0" + checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": + version: 5.1.0 + resolution: "istanbul-lib-instrument@npm:5.1.0" + dependencies: + "@babel/core": ^7.12.3 + "@babel/parser": ^7.14.7 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.2.0 + semver: ^6.3.0 + checksum: 8b82e733c69fe9f94d2e21f3e5760c9bedb110329aa75df4bd40df95f1cac3bf38767e43f35b125cc547ceca7376b72ce7d95cc5238b7e9088345c7b589233d3 + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.0 + resolution: "istanbul-lib-report@npm:3.0.0" + dependencies: + istanbul-lib-coverage: ^3.0.0 + make-dir: ^3.0.0 + supports-color: ^7.1.0 + checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: ^4.1.1 + istanbul-lib-coverage: ^3.0.0 + source-map: ^0.6.1 + checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.4 + resolution: "istanbul-reports@npm:3.1.4" + dependencies: + html-escaper: ^2.0.0 + istanbul-lib-report: ^3.0.0 + checksum: 2132983355710c522f6b26808015cab9a0ee8b9f5ae0db0d3edeff40b886dd83cb670fb123cb7b32dbe59473d7c00cdde2ba6136bc0acdb20a865fccea64dfe1 + languageName: node + linkType: hard + +"isurl@npm:^1.0.0-alpha5": + version: 1.0.0 + resolution: "isurl@npm:1.0.0" + dependencies: + has-to-string-tag-x: ^1.2.0 + is-object: ^1.0.1 + checksum: 28a96e019269d57015fa5869f19dda5a3ed1f7b21e3e0c4ff695419bd0541547db352aa32ee4a3659e811a177b0e37a5bc1a036731e71939dd16b59808ab92bd + languageName: node + linkType: hard + +"java-properties@npm:^1.0.0": + version: 1.0.2 + resolution: "java-properties@npm:1.0.2" + checksum: 9a086778346e3adbe2395e370f5c779033ed60360055a15e2cead49e3d676d2c73786cf2f6563a1860277dea3dd0a859432e546ed89c03ee08c1f53e31a5d420 + languageName: node + linkType: hard + +"jest-changed-files@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-changed-files@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + execa: ^5.0.0 + throat: ^6.0.1 + checksum: 95e9dc74c3ca688ef85cfeab270f43f8902721a6c8ade6ac2459459a77890c85977f537d6fb809056deaa6d9c3f075fa7d2699ff5f3bf7d3fda17c3760b79b15 + languageName: node + linkType: hard + +"jest-circus@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-circus@npm:27.5.1" + dependencies: + "@jest/environment": ^27.5.1 + "@jest/test-result": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/node": "*" + chalk: ^4.0.0 + co: ^4.6.0 + dedent: ^0.7.0 + expect: ^27.5.1 + is-generator-fn: ^2.0.0 + jest-each: ^27.5.1 + jest-matcher-utils: ^27.5.1 + jest-message-util: ^27.5.1 + jest-runtime: ^27.5.1 + jest-snapshot: ^27.5.1 + jest-util: ^27.5.1 + pretty-format: ^27.5.1 + slash: ^3.0.0 + stack-utils: ^2.0.3 + throat: ^6.0.1 + checksum: 6192dccbccb3a6acfa361cbb97bdbabe94864ccf3d885932cfd41f19534329d40698078cf9be1489415e8234255d6ea9f9aff5396b79ad842a6fca6e6fc08fd0 + languageName: node + linkType: hard + +"jest-cli@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-cli@npm:27.5.1" + dependencies: + "@jest/core": ^27.5.1 + "@jest/test-result": ^27.5.1 + "@jest/types": ^27.5.1 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + import-local: ^3.0.2 + jest-config: ^27.5.1 + jest-util: ^27.5.1 + jest-validate: ^27.5.1 + prompts: ^2.0.1 + yargs: ^16.2.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 6c0a69fb48e500241409e09ff743ed72bc6578d7769e2c994724e7ef1e5587f6c1f85dc429e93b98ae38a365222993ee70f0acc2199358992120900984f349e5 + languageName: node + linkType: hard + +"jest-config@npm:^27.1.0, jest-config@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-config@npm:27.5.1" + dependencies: + "@babel/core": ^7.8.0 + "@jest/test-sequencer": ^27.5.1 + "@jest/types": ^27.5.1 + babel-jest: ^27.5.1 + chalk: ^4.0.0 + ci-info: ^3.2.0 + deepmerge: ^4.2.2 + glob: ^7.1.1 + graceful-fs: ^4.2.9 + jest-circus: ^27.5.1 + jest-environment-jsdom: ^27.5.1 + jest-environment-node: ^27.5.1 + jest-get-type: ^27.5.1 + jest-jasmine2: ^27.5.1 + jest-regex-util: ^27.5.1 + jest-resolve: ^27.5.1 + jest-runner: ^27.5.1 + jest-util: ^27.5.1 + jest-validate: ^27.5.1 + micromatch: ^4.0.4 + parse-json: ^5.2.0 + pretty-format: ^27.5.1 + slash: ^3.0.0 + strip-json-comments: ^3.1.1 + peerDependencies: + ts-node: ">=9.0.0" + peerDependenciesMeta: + ts-node: + optional: true + checksum: 1188fd46c0ed78cbe3175eb9ad6712ccf74a74be33d9f0d748e147c107f0889f8b701fbff1567f31836ae18597dacdc43d6a8fc30dd34ade6c9229cc6c7cb82d + languageName: node + linkType: hard + +"jest-diff@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-diff@npm:27.5.1" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^27.5.1 + jest-get-type: ^27.5.1 + pretty-format: ^27.5.1 + checksum: 8be27c1e1ee57b2bb2bef9c0b233c19621b4c43d53a3c26e2c00a4e805eb4ea11fe1694a06a9fb0e80ffdcfdc0d2b1cb0b85920b3f5c892327ecd1e7bd96b865 + languageName: node + linkType: hard + +"jest-docblock@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-docblock@npm:27.5.1" + dependencies: + detect-newline: ^3.0.0 + checksum: c0fed6d55b229d8bffdd8d03f121dd1a3be77c88f50552d374f9e1ea3bde57bf6bea017a0add04628d98abcb1bfb48b456438eeca8a74ef0053f4dae3b95d29c + languageName: node + linkType: hard + +"jest-each@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-each@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + chalk: ^4.0.0 + jest-get-type: ^27.5.1 + jest-util: ^27.5.1 + pretty-format: ^27.5.1 + checksum: b5a6d8730fd938982569c9e0b42bdf3c242f97b957ed8155a6473b5f7b540970f8685524e7f53963dc1805319f4b6602abfc56605590ca19d55bd7a87e467e63 + languageName: node + linkType: hard + +"jest-environment-jsdom@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-environment-jsdom@npm:27.5.1" + dependencies: + "@jest/environment": ^27.5.1 + "@jest/fake-timers": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/node": "*" + jest-mock: ^27.5.1 + jest-util: ^27.5.1 + jsdom: ^16.6.0 + checksum: bc104aef7d7530d0740402aa84ac812138b6d1e51fe58adecce679f82b99340ddab73e5ec68fa079f33f50c9ddec9728fc9f0ddcca2ad6f0b351eed2762cc555 + languageName: node + linkType: hard + +"jest-environment-node@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-environment-node@npm:27.5.1" + dependencies: + "@jest/environment": ^27.5.1 + "@jest/fake-timers": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/node": "*" + jest-mock: ^27.5.1 + jest-util: ^27.5.1 + checksum: 0f988330c4f3eec092e3fb37ea753b0c6f702e83cd8f4d770af9c2bf964a70bc45fbd34ec6fdb6d71ce98a778d9f54afd673e63f222e4667fff289e8069dba39 + languageName: node + linkType: hard + +"jest-get-type@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-get-type@npm:27.5.1" + checksum: 63064ab70195c21007d897c1157bf88ff94a790824a10f8c890392e7d17eda9c3900513cb291ca1c8d5722cad79169764e9a1279f7c8a9c4cd6e9109ff04bbc0 + languageName: node + linkType: hard + +"jest-haste-map@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-haste-map@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + "@types/graceful-fs": ^4.1.2 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.3.2 + graceful-fs: ^4.2.9 + jest-regex-util: ^27.5.1 + jest-serializer: ^27.5.1 + jest-util: ^27.5.1 + jest-worker: ^27.5.1 + micromatch: ^4.0.4 + walker: ^1.0.7 + dependenciesMeta: + fsevents: + optional: true + checksum: e092a1412829a9254b4725531ee72926de530f77fda7b0d9ea18008fb7623c16f72e772d8e93be71cac9e591b2c6843a669610887dd2c89bd9eb528856e3ab47 + languageName: node + linkType: hard + +"jest-jasmine2@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-jasmine2@npm:27.5.1" + dependencies: + "@jest/environment": ^27.5.1 + "@jest/source-map": ^27.5.1 + "@jest/test-result": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/node": "*" + chalk: ^4.0.0 + co: ^4.6.0 + expect: ^27.5.1 + is-generator-fn: ^2.0.0 + jest-each: ^27.5.1 + jest-matcher-utils: ^27.5.1 + jest-message-util: ^27.5.1 + jest-runtime: ^27.5.1 + jest-snapshot: ^27.5.1 + jest-util: ^27.5.1 + pretty-format: ^27.5.1 + throat: ^6.0.1 + checksum: b716adf253ceb73db661936153394ab90d7f3a8ba56d6189b7cd4df8e4e2a4153b4e63ebb5d36e29ceb0f4c211d5a6f36ab7048c6abbd881c8646567e2ab8e6d + languageName: node + linkType: hard + +"jest-leak-detector@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-leak-detector@npm:27.5.1" + dependencies: + jest-get-type: ^27.5.1 + pretty-format: ^27.5.1 + checksum: 5c9689060960567ddaf16c570d87afa760a461885765d2c71ef4f4857bbc3af1482c34e3cce88e50beefde1bf35e33530b020480752057a7e3dbb1ca0bae359f + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^27.0.0, jest-matcher-utils@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-matcher-utils@npm:27.5.1" + dependencies: + chalk: ^4.0.0 + jest-diff: ^27.5.1 + jest-get-type: ^27.5.1 + pretty-format: ^27.5.1 + checksum: bb2135fc48889ff3fe73888f6cc7168ddab9de28b51b3148f820c89fdfd2effdcad005f18be67d0b9be80eda208ad47290f62f03d0a33f848db2dd0273c8217a + languageName: node + linkType: hard + +"jest-message-util@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-message-util@npm:27.5.1" + dependencies: + "@babel/code-frame": ^7.12.13 + "@jest/types": ^27.5.1 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^27.5.1 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: eb6d637d1411c71646de578c49826b6da8e33dd293e501967011de9d1916d53d845afbfb52a5b661ff1c495be7c13f751c48c7f30781fd94fbd64842e8195796 + languageName: node + linkType: hard + +"jest-mock@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-mock@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + "@types/node": "*" + checksum: f5b5904bb1741b4a1687a5f492535b7b1758dc26534c72a5423305f8711292e96a601dec966df81bb313269fb52d47227e29f9c2e08324d79529172f67311be0 + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.2 + resolution: "jest-pnp-resolver@npm:1.2.2" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: bd85dcc0e76e0eb0c3d56382ec140f08d25ff4068cda9d0e360bb78fb176cb726d0beab82dc0e8694cafd09f55fee7622b8bcb240afa5fad301f4ed3eebb4f47 + languageName: node + linkType: hard + +"jest-regex-util@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-regex-util@npm:27.5.1" + checksum: d45ca7a9543616a34f7f3079337439cf07566e677a096472baa2810e274b9808b76767c97b0a4029b8a5b82b9d256dee28ef9ad4138b2b9e5933f6fac106c418 + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-resolve-dependencies@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + jest-regex-util: ^27.5.1 + jest-snapshot: ^27.5.1 + checksum: c67af97afad1da88f5530317c732bbd1262d1225f6cd7f4e4740a5db48f90ab0bd8564738ac70d1a43934894f9aef62205c1b8f8ee89e5c7a737e6a121ee4c25 + languageName: node + linkType: hard + +"jest-resolve@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-resolve@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^27.5.1 + jest-pnp-resolver: ^1.2.2 + jest-util: ^27.5.1 + jest-validate: ^27.5.1 + resolve: ^1.20.0 + resolve.exports: ^1.1.0 + slash: ^3.0.0 + checksum: 735830e7265b20a348029738680bb2f6e37f80ecea86cda869a4c318ba3a45d39c7a3a873a22f7f746d86258c50ead6e7f501de043e201c095d7ba628a1c440f + languageName: node + linkType: hard + +"jest-runner@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-runner@npm:27.5.1" + dependencies: + "@jest/console": ^27.5.1 + "@jest/environment": ^27.5.1 + "@jest/test-result": ^27.5.1 + "@jest/transform": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/node": "*" + chalk: ^4.0.0 + emittery: ^0.8.1 + graceful-fs: ^4.2.9 + jest-docblock: ^27.5.1 + jest-environment-jsdom: ^27.5.1 + jest-environment-node: ^27.5.1 + jest-haste-map: ^27.5.1 + jest-leak-detector: ^27.5.1 + jest-message-util: ^27.5.1 + jest-resolve: ^27.5.1 + jest-runtime: ^27.5.1 + jest-util: ^27.5.1 + jest-worker: ^27.5.1 + source-map-support: ^0.5.6 + throat: ^6.0.1 + checksum: 5bbe6cf847dd322b3332ec9d6977b54f91bd5f72ff620bc1a0192f0f129deda8aa7ca74c98922187a7aa87d8e0ce4f6c50e99a7ccb2a310bf4d94be2e0c3ce8e + languageName: node + linkType: hard + +"jest-runtime@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-runtime@npm:27.5.1" + dependencies: + "@jest/environment": ^27.5.1 + "@jest/fake-timers": ^27.5.1 + "@jest/globals": ^27.5.1 + "@jest/source-map": ^27.5.1 + "@jest/test-result": ^27.5.1 + "@jest/transform": ^27.5.1 + "@jest/types": ^27.5.1 + chalk: ^4.0.0 + cjs-module-lexer: ^1.0.0 + collect-v8-coverage: ^1.0.0 + execa: ^5.0.0 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + jest-haste-map: ^27.5.1 + jest-message-util: ^27.5.1 + jest-mock: ^27.5.1 + jest-regex-util: ^27.5.1 + jest-resolve: ^27.5.1 + jest-snapshot: ^27.5.1 + jest-util: ^27.5.1 + slash: ^3.0.0 + strip-bom: ^4.0.0 + checksum: 929e3df0c53dab43f831f2af4e2996b22aa8cb2d6d483919d6b0426cbc100098fd5b777b998c6568b77f8c4d860b2e83127514292ff61416064f5ef926492386 + languageName: node + linkType: hard + +"jest-serializer@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-serializer@npm:27.5.1" + dependencies: + "@types/node": "*" + graceful-fs: ^4.2.9 + checksum: 803e03a552278610edc6753c0dd9fa5bb5cd3ca47414a7b2918106efb62b79fd5e9ae785d0a21f12a299fa599fea8acc1fa6dd41283328cee43962cf7df9bb44 + languageName: node + linkType: hard + +"jest-snapshot@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-snapshot@npm:27.5.1" + dependencies: + "@babel/core": ^7.7.2 + "@babel/generator": ^7.7.2 + "@babel/plugin-syntax-typescript": ^7.7.2 + "@babel/traverse": ^7.7.2 + "@babel/types": ^7.0.0 + "@jest/transform": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/babel__traverse": ^7.0.4 + "@types/prettier": ^2.1.5 + babel-preset-current-node-syntax: ^1.0.0 + chalk: ^4.0.0 + expect: ^27.5.1 + graceful-fs: ^4.2.9 + jest-diff: ^27.5.1 + jest-get-type: ^27.5.1 + jest-haste-map: ^27.5.1 + jest-matcher-utils: ^27.5.1 + jest-message-util: ^27.5.1 + jest-util: ^27.5.1 + natural-compare: ^1.4.0 + pretty-format: ^27.5.1 + semver: ^7.3.2 + checksum: a5cfadf0d21cd76063925d1434bc076443ed6d87847d0e248f0b245f11db3d98ff13e45cc03b15404027dabecd712d925f47b6eae4f64986f688640a7d362514 + languageName: node + linkType: hard + +"jest-util@npm:^27.0.0, jest-util@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-util@npm:27.5.1" dependencies: - isarray: 1.0.0 - checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f + "@jest/types": ^27.5.1 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: ac8d122f6daf7a035dcea156641fd3701aeba245417c40836a77e35b3341b9c02ddc5d904cfcd4ddbaa00ab854da76d3b911870cafdcdbaff90ea471de26c7d7 languageName: node linkType: hard -"isobject@npm:^3.0.0, isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 +"jest-validate@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-validate@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + camelcase: ^6.2.0 + chalk: ^4.0.0 + jest-get-type: ^27.5.1 + leven: ^3.1.0 + pretty-format: ^27.5.1 + checksum: 82e870f8ee7e4fb949652711b1567f05ae31c54be346b0899e8353e5c20fad7692b511905b37966945e90af8dc0383eb41a74f3ffefb16140ea4f9164d841412 languageName: node linkType: hard -"isstream@npm:~0.1.2": - version: 0.1.2 - resolution: "isstream@npm:0.1.2" - checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 +"jest-watcher@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-watcher@npm:27.5.1" + dependencies: + "@jest/test-result": ^27.5.1 + "@jest/types": ^27.5.1 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + jest-util: ^27.5.1 + string-length: ^4.0.1 + checksum: 191c4e9c278c0902ade1a8a80883ac244963ba3e6e78607a3d5f729ccca9c6e71fb3b316f87883658132641c5d818aa84202585c76752e03c539e6cbecb820bd languageName: node linkType: hard -"issue-parser@npm:^6.0.0": - version: 6.0.0 - resolution: "issue-parser@npm:6.0.0" +"jest-worker@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" dependencies: - lodash.capitalize: ^4.2.1 - lodash.escaperegexp: ^4.1.2 - lodash.isplainobject: ^4.0.6 - lodash.isstring: ^4.0.1 - lodash.uniqby: ^4.7.0 - checksum: 3357928af6c78c4803340f978bd55dc922b6b15b3f6c76aaa78a08999d39002729502ce1650863d1a9d728a7e31ccc0a865087244225ef6e8fc85aaf2f9c0f67 + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 languageName: node linkType: hard -"java-properties@npm:^1.0.0": - version: 1.0.2 - resolution: "java-properties@npm:1.0.2" - checksum: 9a086778346e3adbe2395e370f5c779033ed60360055a15e2cead49e3d676d2c73786cf2f6563a1860277dea3dd0a859432e546ed89c03ee08c1f53e31a5d420 +"jest@npm:^27.1.0": + version: 27.5.1 + resolution: "jest@npm:27.5.1" + dependencies: + "@jest/core": ^27.5.1 + import-local: ^3.0.2 + jest-cli: ^27.5.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 96f1d69042b3c6dfc695f2a4e4b0db38af6fb78582ad1a02beaa57cfcd77cbd31567d7d865c1c85709b7c3e176eefa3b2035ffecd646005f15d8ef528eccf205 languageName: node linkType: hard @@ -7111,6 +10785,18 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: ^1.0.7 + esprima: ^4.0.0 + bin: + js-yaml: bin/js-yaml.js + checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c + languageName: node + linkType: hard + "js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" @@ -7129,6 +10815,46 @@ __metadata: languageName: node linkType: hard +"jsdom@npm:^16.6.0": + version: 16.7.0 + resolution: "jsdom@npm:16.7.0" + dependencies: + abab: ^2.0.5 + acorn: ^8.2.4 + acorn-globals: ^6.0.0 + cssom: ^0.4.4 + cssstyle: ^2.3.0 + data-urls: ^2.0.0 + decimal.js: ^10.2.1 + domexception: ^2.0.1 + escodegen: ^2.0.0 + form-data: ^3.0.0 + html-encoding-sniffer: ^2.0.1 + http-proxy-agent: ^4.0.1 + https-proxy-agent: ^5.0.0 + is-potential-custom-element-name: ^1.0.1 + nwsapi: ^2.2.0 + parse5: 6.0.1 + saxes: ^5.0.1 + symbol-tree: ^3.2.4 + tough-cookie: ^4.0.0 + w3c-hr-time: ^1.0.2 + w3c-xmlserializer: ^2.0.0 + webidl-conversions: ^6.1.0 + whatwg-encoding: ^1.0.5 + whatwg-mimetype: ^2.3.0 + whatwg-url: ^8.5.0 + ws: ^7.4.6 + xml-name-validator: ^3.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 454b83371857000763ed31130a049acd1b113e3b927e6dcd75c67ddc30cdd242d7ebcac5c2294b7a1a6428155cb1398709c573b3c6d809218692ea68edd93370 + languageName: node + linkType: hard + "jsesc@npm:^2.5.1": version: 2.5.2 resolution: "jsesc@npm:2.5.2" @@ -7138,6 +10864,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.0": + version: 3.0.0 + resolution: "json-buffer@npm:3.0.0" + checksum: 0cecacb8025370686a916069a2ff81f7d55167421b6aa7270ee74e244012650dd6bce22b0852202ea7ff8624fce50ff0ec1bdf95914ccb4553426e290d5a63fa + languageName: node + linkType: hard + "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -7166,6 +10899,13 @@ __metadata: languageName: node linkType: hard +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad + languageName: node + linkType: hard + "json-schema@npm:0.4.0": version: 0.4.0 resolution: "json-schema@npm:0.4.0" @@ -7194,6 +10934,15 @@ __metadata: languageName: node linkType: hard +"json5@npm:2.x, json5@npm:^2.2.1": + version: 2.2.1 + resolution: "json5@npm:2.2.1" + bin: + json5: lib/cli.js + checksum: 74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b + languageName: node + linkType: hard + "json5@npm:^1.0.1": version: 1.0.1 resolution: "json5@npm:1.0.1" @@ -7223,6 +10972,18 @@ __metadata: languageName: node linkType: hard +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" + dependencies: + graceful-fs: ^4.1.6 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e + languageName: node + linkType: hard + "jsonfile@npm:^6.0.1": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" @@ -7300,6 +11061,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^3.0.0": + version: 3.1.0 + resolution: "keyv@npm:3.1.0" + dependencies: + json-buffer: 3.0.0 + checksum: bb7e8f3acffdbafbc2dd5b63f377fe6ec4c0e2c44fc82720449ef8ab54f4a7ce3802671ed94c0f475ae0a8549703353a2124561fcf3317010c141b32ca1ce903 + languageName: node + linkType: hard + "keyv@npm:^4.0.0": version: 4.1.1 resolution: "keyv@npm:4.1.1" @@ -7341,6 +11111,13 @@ __metadata: languageName: node linkType: hard +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 + languageName: node + linkType: hard + "kolorist@npm:^1.5.1": version: 1.5.1 resolution: "kolorist@npm:1.5.1" @@ -7358,6 +11135,22 @@ __metadata: languageName: node linkType: hard +"lcov-parse@npm:^1.0.0": + version: 1.0.0 + resolution: "lcov-parse@npm:1.0.0" + bin: + lcov-parse: ./bin/cli.js + checksum: d4b14b5e33d8f7511dc62dea49252a79f04720aa837ce120235451c43653e8aeb7e330588691f2d584826c5ac8145a0aa778dd02f543cd71270f80374e5fcf20 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 + languageName: node + linkType: hard + "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -7368,6 +11161,16 @@ __metadata: languageName: node linkType: hard +"levn@npm:~0.3.0": + version: 0.3.0 + resolution: "levn@npm:0.3.0" + dependencies: + prelude-ls: ~1.1.2 + type-check: ~0.3.2 + checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e + languageName: node + linkType: hard + "libnpmaccess@npm:*": version: 6.0.1 resolution: "libnpmaccess@npm:6.0.1" @@ -7627,6 +11430,30 @@ __metadata: languageName: node linkType: hard +"lint-staged@npm:^11.1.2": + version: 11.2.6 + resolution: "lint-staged@npm:11.2.6" + dependencies: + cli-truncate: 2.1.0 + colorette: ^1.4.0 + commander: ^8.2.0 + cosmiconfig: ^7.0.1 + debug: ^4.3.2 + enquirer: ^2.3.6 + execa: ^5.1.1 + listr2: ^3.12.2 + micromatch: ^4.0.4 + normalize-path: ^3.0.0 + please-upgrade-node: ^3.2.0 + string-argv: 0.3.1 + stringify-object: 3.3.0 + supports-color: 8.1.1 + bin: + lint-staged: bin/lint-staged.js + checksum: b9071621db351c553579bd18df3d80fb753f851c4f1f72db0aaf12e713eab25b6d8a044dab2957817de7da02054a63f7725a49c763aee09295133f0d554f4d3f + languageName: node + linkType: hard + "lint-staged@npm:^12.3.5": version: 12.3.7 resolution: "lint-staged@npm:12.3.7" @@ -7651,6 +11478,27 @@ __metadata: languageName: node linkType: hard +"listr2@npm:^3.12.2": + version: 3.14.0 + resolution: "listr2@npm:3.14.0" + dependencies: + cli-truncate: ^2.1.0 + colorette: ^2.0.16 + log-update: ^4.0.0 + p-map: ^4.0.0 + rfdc: ^1.3.0 + rxjs: ^7.5.1 + through: ^2.3.8 + wrap-ansi: ^7.0.0 + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: fdb8b2d6bdf5df9371ebd5082bee46c6d0ca3d1e5f2b11fbb5a127839855d5f3da9d4968fce94f0a5ec67cac2459766abbb1faeef621065ebb1829b11ef9476d + languageName: node + linkType: hard + "listr2@npm:^4.0.1": version: 4.0.5 resolution: "listr2@npm:4.0.5" @@ -7672,6 +11520,19 @@ __metadata: languageName: node linkType: hard +"load-json-file@npm:^1.0.0": + version: 1.1.0 + resolution: "load-json-file@npm:1.1.0" + dependencies: + graceful-fs: ^4.1.2 + parse-json: ^2.2.0 + pify: ^2.0.0 + pinkie-promise: ^2.0.0 + strip-bom: ^2.0.0 + checksum: 0e4e4f380d897e13aa236246a917527ea5a14e4fc34d49e01ce4e7e2a1e08e2740ee463a03fb021c04f594f29a178f4adb994087549d7c1c5315fcd29bf9934b + languageName: node + linkType: hard + "load-json-file@npm:^4.0.0": version: 4.0.0 resolution: "load-json-file@npm:4.0.0" @@ -7748,6 +11609,29 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: ^5.0.0 + checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a + languageName: node + linkType: hard + +"lodash._reinterpolate@npm:^3.0.0": + version: 3.0.0 + resolution: "lodash._reinterpolate@npm:3.0.0" + checksum: 06d2d5f33169604fa5e9f27b6067ed9fb85d51a84202a656901e5ffb63b426781a601508466f039c720af111b0c685d12f1a5c14ff8df5d5f27e491e562784b2 + languageName: node + linkType: hard + +"lodash.camelcase@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.camelcase@npm:4.3.0" + checksum: cb9227612f71b83e42de93eccf1232feeb25e705bdb19ba26c04f91e885bfd3dd5c517c4a97137658190581d3493ea3973072ca010aab7e301046d90740393d1 + languageName: node + linkType: hard + "lodash.capitalize@npm:^4.2.1": version: 4.2.1 resolution: "lodash.capitalize@npm:4.2.1" @@ -7762,6 +11646,13 @@ __metadata: languageName: node linkType: hard +"lodash.get@npm:^4": + version: 4.4.2 + resolution: "lodash.get@npm:4.4.2" + checksum: e403047ddb03181c9d0e92df9556570e2b67e0f0a930fcbbbd779370972368f5568e914f913e93f3b08f6d492abc71e14d4e9b7a18916c31fa04bd2306efe545 + languageName: node + linkType: hard + "lodash.ismatch@npm:^4.4.0": version: 4.4.0 resolution: "lodash.ismatch@npm:4.4.0" @@ -7790,13 +11681,53 @@ __metadata: languageName: node linkType: hard -"lodash.merge@npm:^4.6.2": +"lodash.map@npm:^4.5.1": + version: 4.6.0 + resolution: "lodash.map@npm:4.6.0" + checksum: 7369a41d7d24d15ce3bbd02a7faa3a90f6266c38184e64932571b9b21b758bd10c04ffd117d1859be1a44156f29b94df5045eff172bf8a97fddf68bf1002d12f + languageName: node + linkType: hard + +"lodash.memoize@npm:4.x": + version: 4.1.2 + resolution: "lodash.memoize@npm:4.1.2" + checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.0.2, lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 languageName: node linkType: hard +"lodash.template@npm:^4.0.2": + version: 4.5.0 + resolution: "lodash.template@npm:4.5.0" + dependencies: + lodash._reinterpolate: ^3.0.0 + lodash.templatesettings: ^4.0.0 + checksum: ca64e5f07b6646c9d3dbc0fe3aaa995cb227c4918abd1cef7a9024cd9c924f2fa389a0ec4296aa6634667e029bc81d4bbdb8efbfde11df76d66085e6c529b450 + languageName: node + linkType: hard + +"lodash.templatesettings@npm:^4.0.0": + version: 4.2.0 + resolution: "lodash.templatesettings@npm:4.2.0" + dependencies: + lodash._reinterpolate: ^3.0.0 + checksum: 863e025478b092997e11a04e9d9e735875eeff1ffcd6c61742aa8272e3c2cddc89ce795eb9726c4e74cef5991f722897ff37df7738a125895f23fc7d12a7bb59 + languageName: node + linkType: hard + +"lodash.truncate@npm:^4.4.2": + version: 4.4.2 + resolution: "lodash.truncate@npm:4.4.2" + checksum: b463d8a382cfb5f0e71c504dcb6f807a7bd379ff1ea216669aa42c52fc28c54e404bfbd96791aa09e6df0de2c1d7b8f1b7f4b1a61f324d38fe98bc535aeee4f5 + languageName: node + linkType: hard + "lodash.uniqby@npm:^4.7.0": version: 4.7.0 resolution: "lodash.uniqby@npm:4.7.0" @@ -7804,13 +11735,20 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.11, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.21, lodash@npm:^4.17.4": +"lodash@npm:^4.17.11, lodash@npm:^4.17.12, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.2.1, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 languageName: node linkType: hard +"log-driver@npm:^1.2.7": + version: 1.2.7 + resolution: "log-driver@npm:1.2.7" + checksum: 14949119f830d897f52a0f83b058d8af3d13b9d21deedcc341c65c523091d4f95b0c151798b0bb988ed2712f487d9d44c302cd95b177708a80ac8e47a6a28a16 + languageName: node + linkType: hard + "log-symbols@npm:^2.2.0": version: 2.2.0 resolution: "log-symbols@npm:2.2.0" @@ -7832,6 +11770,23 @@ __metadata: languageName: node linkType: hard +"longest@npm:^2.0.1": + version: 2.0.1 + resolution: "longest@npm:2.0.1" + checksum: 9587c153919a883ecbcc33e9439bc2592aa6fdbbd2d343f8ab17d8d3e0373c4e4350e3b428566fd689d704800a23f2b4d145cbdcca4ef3fd35742e5927f919a9 + languageName: node + linkType: hard + +"loud-rejection@npm:^1.0.0": + version: 1.6.0 + resolution: "loud-rejection@npm:1.6.0" + dependencies: + currently-unhandled: ^0.4.1 + signal-exit: ^3.0.0 + checksum: 750e12defde34e8cbf263c2bff16f028a89b56e022ad6b368aa7c39495b5ac33f2349a8d00665a9b6d25c030b376396524d8a31eb0dde98aaa97956d7324f927 + languageName: node + linkType: hard + "lowdb@npm:^3.0.0": version: 3.0.0 resolution: "lowdb@npm:3.0.0" @@ -7841,6 +11796,13 @@ __metadata: languageName: node linkType: hard +"lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "lowercase-keys@npm:1.0.1" + checksum: 4d045026595936e09953e3867722e309415ff2c80d7701d067546d75ef698dac218a4f53c6d1d0e7368b47e45fd7529df47e6cb56fbb90523ba599f898b3d147 + languageName: node + linkType: hard + "lowercase-keys@npm:^2.0.0": version: 2.0.0 resolution: "lowercase-keys@npm:2.0.0" @@ -7883,6 +11845,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^7.4.0": + version: 7.8.1 + resolution: "lru-cache@npm:7.8.1" + checksum: 31ea67388c9774300331d70f4affd5a433869bcf0fae5405f967d19d7b447930b713b0566a2e95362c9082034a8b496f3671ccf8f0c061d8e8048412663f9432 + languageName: node + linkType: hard + "lru-cache@npm:^7.7.1": version: 7.7.1 resolution: "lru-cache@npm:7.7.1" @@ -7890,7 +11859,23 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.25.7": +"lunr@npm:^2.3.9": + version: 2.3.9 + resolution: "lunr@npm:2.3.9" + checksum: 176719e24fcce7d3cf1baccce9dd5633cd8bdc1f41ebe6a180112e5ee99d80373fe2454f5d4624d437e5a8319698ca6837b9950566e15d2cae5f2a543a3db4b8 + languageName: node + linkType: hard + +"magic-string@npm:^0.22.5": + version: 0.22.5 + resolution: "magic-string@npm:0.22.5" + dependencies: + vlq: ^0.2.2 + checksum: e4d8b2083ed81f139ca471c19f5d0505c0f9083e06b71f48835057b3295a9494a15aac6a111d335573b986a67d3932e41c726d2eb6c76af30d0391b5e254ced3 + languageName: node + linkType: hard + +"magic-string@npm:^0.25.3, magic-string@npm:^0.25.7": version: 0.25.9 resolution: "magic-string@npm:0.25.9" dependencies: @@ -7909,6 +11894,22 @@ __metadata: languageName: node linkType: hard +"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2": + version: 3.1.0 + resolution: "make-dir@npm:3.1.0" + dependencies: + semver: ^6.0.0 + checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 + languageName: node + linkType: hard + +"make-error@npm:1.x, make-error@npm:^1, make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 + languageName: node + linkType: hard + "make-fetch-happen@npm:*, make-fetch-happen@npm:^10.0.3, make-fetch-happen@npm:^10.0.6": version: 10.0.6 resolution: "make-fetch-happen@npm:10.0.6" @@ -7933,6 +11934,15 @@ __metadata: languageName: node linkType: hard +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: 1.0.5 + checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 + languageName: node + linkType: hard + "map-cache@npm:^0.2.2": version: 0.2.2 resolution: "map-cache@npm:0.2.2" @@ -7940,13 +11950,20 @@ __metadata: languageName: node linkType: hard -"map-obj@npm:^1.0.0": +"map-obj@npm:^1.0.0, map-obj@npm:^1.0.1": version: 1.0.1 resolution: "map-obj@npm:1.0.1" checksum: 9949e7baec2a336e63b8d4dc71018c117c3ce6e39d2451ccbfd3b8350c547c4f6af331a4cbe1c83193d7c6b786082b6256bde843db90cb7da2a21e8fcc28afed languageName: node linkType: hard +"map-obj@npm:^2.0.0": + version: 2.0.0 + resolution: "map-obj@npm:2.0.0" + checksum: 77d2b7b03398a71c84bd7df8ab7be2139e5459fc1e18dbb5f15055fe7284bec0fc37fe410185b5f8ca2e3c3e01fd0fd1f946c579607878adb26cad1cd75314aa + languageName: node + linkType: hard + "map-obj@npm:^4.0.0": version: 4.3.0 resolution: "map-obj@npm:4.3.0" @@ -7963,6 +11980,22 @@ __metadata: languageName: node linkType: hard +"marked-terminal@npm:^4.1.1": + version: 4.2.0 + resolution: "marked-terminal@npm:4.2.0" + dependencies: + ansi-escapes: ^4.3.1 + cardinal: ^2.1.1 + chalk: ^4.1.0 + cli-table3: ^0.6.0 + node-emoji: ^1.10.0 + supports-hyperlinks: ^2.1.0 + peerDependencies: + marked: ^1.0.0 || ^2.0.0 + checksum: a68a4cfd22b42f990a82e3234c68006ab4d1285a4a9bdd162f597740d9a55275c10c78ca21fa3927a76b2197589fe382e33af9baa2ccb2153812986c15aa73b8 + languageName: node + linkType: hard + "marked-terminal@npm:^5.0.0": version: 5.1.1 resolution: "marked-terminal@npm:5.1.1" @@ -7979,6 +12012,15 @@ __metadata: languageName: node linkType: hard +"marked@npm:^2.0.0": + version: 2.1.3 + resolution: "marked@npm:2.1.3" + bin: + marked: bin/marked + checksum: 21a5ecd4941bc760aba21dfd97185853ec3b464cf707ad971e3ddb3aeb2f44d0deeb36b0889932afdb6f734975a994d92f18815dd0fabadbd902bdaff997cc5b + languageName: node + linkType: hard + "marked@npm:^4.0.10": version: 4.0.12 resolution: "marked@npm:4.0.12" @@ -8019,6 +12061,77 @@ __metadata: languageName: node linkType: hard +"meow@npm:^3.3.0": + version: 3.7.0 + resolution: "meow@npm:3.7.0" + dependencies: + camelcase-keys: ^2.0.0 + decamelize: ^1.1.2 + loud-rejection: ^1.0.0 + map-obj: ^1.0.1 + minimist: ^1.1.3 + normalize-package-data: ^2.3.4 + object-assign: ^4.0.1 + read-pkg-up: ^1.0.1 + redent: ^1.0.0 + trim-newlines: ^1.0.0 + checksum: 65a412e5d0d643615508007a9292799bb3e4e690597d54c9e98eb0ca3adb7b8ca8899f41ea7cb7d8277129cdcd9a1a60202b31f88e0034e6aaae02894d80999a + languageName: node + linkType: hard + +"meow@npm:^4.0.0": + version: 4.0.1 + resolution: "meow@npm:4.0.1" + dependencies: + camelcase-keys: ^4.0.0 + decamelize-keys: ^1.0.0 + loud-rejection: ^1.0.0 + minimist: ^1.1.3 + minimist-options: ^3.0.1 + normalize-package-data: ^2.3.4 + read-pkg-up: ^3.0.0 + redent: ^2.0.0 + trim-newlines: ^2.0.0 + checksum: cde5539eb5bbacba01057fa8735834cbfd1cc00fd97a8ec7b1d427f0829ff1bb8f66b0a194cf213ab35ed1adba0680eb65f1aa28f6d7808c8fffaa674116a7ad + languageName: node + linkType: hard + +"meow@npm:^5.0.0": + version: 5.0.0 + resolution: "meow@npm:5.0.0" + dependencies: + camelcase-keys: ^4.0.0 + decamelize-keys: ^1.0.0 + loud-rejection: ^1.0.0 + minimist-options: ^3.0.1 + normalize-package-data: ^2.3.4 + read-pkg-up: ^3.0.0 + redent: ^2.0.0 + trim-newlines: ^2.0.0 + yargs-parser: ^10.0.0 + checksum: c00b6cdde2b1c1d8679eb0de46a51ed4eb1ee2c8785454d7383d09ddde1076e6928f17ef0d9111e28585d4d59cc15b4ba85668e274211b502f14bd1cf659fc46 + languageName: node + linkType: hard + +"meow@npm:^7.0.0": + version: 7.1.1 + resolution: "meow@npm:7.1.1" + dependencies: + "@types/minimist": ^1.2.0 + camelcase-keys: ^6.2.2 + decamelize-keys: ^1.1.0 + hard-rejection: ^2.1.0 + minimist-options: 4.1.0 + normalize-package-data: ^2.5.0 + read-pkg-up: ^7.0.1 + redent: ^3.0.0 + trim-newlines: ^3.0.0 + type-fest: ^0.13.1 + yargs-parser: ^18.1.3 + checksum: 87bba177ab858a9b606ee52220e6bf395277beebafefe8ab5dbdf178f5825274a24ca16dca7e0ddd41e5ac3533164ee52e3d0eec87b66d78aae796d24a817842 + languageName: node + linkType: hard + "meow@npm:^8.0.0": version: 8.1.2 resolution: "meow@npm:8.1.2" @@ -8061,6 +12174,13 @@ __metadata: languageName: node linkType: hard +"merge@npm:^2.1.1": + version: 2.1.1 + resolution: "merge@npm:2.1.1" + checksum: 9c36b0e25aa53b3f7305d7cf0f330397f1142cf311802b681e5619f12e986a790019b8246c1c0df21701c8652449f9046b0129551030097ef563d1958c823249 + languageName: node + linkType: hard + "microdata-rdf-streaming-parser@npm:^1.1.0": version: 1.2.0 resolution: "microdata-rdf-streaming-parser@npm:1.2.0" @@ -8132,6 +12252,15 @@ __metadata: languageName: node linkType: hard +"mime@npm:^2.4.3": + version: 2.6.0 + resolution: "mime@npm:2.6.0" + bin: + mime: cli.js + checksum: 1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 + languageName: node + linkType: hard + "mime@npm:^3.0.0": version: 3.0.0 resolution: "mime@npm:3.0.0" @@ -8155,13 +12284,20 @@ __metadata: languageName: node linkType: hard -"mimic-response@npm:^1.0.0": +"mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 languageName: node linkType: hard +"mimic-response@npm:^2.0.0, mimic-response@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-response@npm:2.1.0" + checksum: 014fad6ab936657e5f2f48bd87af62a8e928ebe84472aaf9e14fec4fcb31257a5edff77324d8ac13ddc6685ba5135cf16e381efac324e5f174fb4ddbf902bf07 + languageName: node + linkType: hard + "mimic-response@npm:^3.1.0": version: 3.1.0 resolution: "mimic-response@npm:3.1.0" @@ -8190,7 +12326,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4": +"minimatch@npm:^3.0.0, minimatch@npm:^3.0.4, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -8219,13 +12355,30 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.5": +"minimist-options@npm:^3.0.1": + version: 3.0.2 + resolution: "minimist-options@npm:3.0.2" + dependencies: + arrify: ^1.0.1 + is-plain-obj: ^1.1.0 + checksum: f111ff4a3371312f3827bc5a519d757bd5bd8406599193b6cd32b8137eeaee74dd8f1896b66778ac26069ecbaee0659dd0ca4b65c6ec9d0683b09a9573e4f389 + languageName: node + linkType: hard + +"minimist@npm:1.2.5, minimist@npm:^1.2.0, minimist@npm:^1.2.5": version: 1.2.5 resolution: "minimist@npm:1.2.5" checksum: 86706ce5b36c16bfc35c5fe3dbb01d5acdc9a22f2b6cc810b6680656a1d2c0e44a0159c9a3ba51fb072bb5c203e49e10b51dcd0eec39c481f4c42086719bae52 languageName: node linkType: hard +"minimist@npm:^1.1.3, minimist@npm:^1.2.6": + version: 1.2.6 + resolution: "minimist@npm:1.2.6" + checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb + languageName: node + linkType: hard + "minipass-collect@npm:^1.0.2": version: 1.0.2 resolution: "minipass-collect@npm:1.0.2" @@ -8414,6 +12567,13 @@ __metadata: languageName: node linkType: hard +"mute-stream@npm:0.0.7": + version: 0.0.7 + resolution: "mute-stream@npm:0.0.7" + checksum: a9d4772c1c84206aa37c218ed4751cd060239bf1d678893124f51e037f6f22f4a159b2918c030236c93252638a74beb29c9b1fd3267c9f24d4b3253cf1eaa86f + languageName: node + linkType: hard + "mute-stream@npm:0.0.8, mute-stream@npm:~0.0.4": version: 0.0.8 resolution: "mute-stream@npm:0.0.8" @@ -8503,7 +12663,7 @@ __metadata: languageName: node linkType: hard -"node-emoji@npm:^1.11.0": +"node-emoji@npm:^1.10.0, node-emoji@npm:^1.11.0": version: 1.11.0 resolution: "node-emoji@npm:1.11.0" dependencies: @@ -8546,6 +12706,13 @@ __metadata: languageName: node linkType: hard +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e + languageName: node + linkType: hard + "node-ipc@npm:9.2.1": version: 9.2.1 resolution: "node-ipc@npm:9.2.1" @@ -8606,7 +12773,7 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^2.5.0": +"normalize-package-data@npm:^2.3.0, normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.3.4, normalize-package-data@npm:^2.3.5, normalize-package-data@npm:^2.5.0": version: 2.5.0 resolution: "normalize-package-data@npm:2.5.0" dependencies: @@ -8665,6 +12832,13 @@ __metadata: languageName: node linkType: hard +"normalize-url@npm:^4.1.0": + version: 4.5.1 + resolution: "normalize-url@npm:4.5.1" + checksum: 9a9dee01df02ad23e171171893e56e22d752f7cff86fb96aafeae074819b572ea655b60f8302e2d85dbb834dc885c972cc1c573892fea24df46b2765065dd05a + languageName: node + linkType: hard + "normalize-url@npm:^6.0.0, normalize-url@npm:^6.0.1": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" @@ -8979,6 +13153,20 @@ __metadata: languageName: node linkType: hard +"number-is-nan@npm:^1.0.0": + version: 1.0.1 + resolution: "number-is-nan@npm:1.0.1" + checksum: 13656bc9aa771b96cef209ffca31c31a03b507ca6862ba7c3f638a283560620d723d52e626d57892c7fff475f4c36ac07f0600f14544692ff595abff214b9ffb + languageName: node + linkType: hard + +"nwsapi@npm:^2.2.0": + version: 2.2.0 + resolution: "nwsapi@npm:2.2.0" + checksum: 5ef4a9bc0c1a5b7f2e014aa6a4b359a257503b796618ed1ef0eb852098f77e772305bb0e92856e4bbfa3e6c75da48c0113505c76f144555ff38867229c2400a7 + languageName: node + linkType: hard + "oauth-sign@npm:~0.9.0": version: 0.9.0 resolution: "oauth-sign@npm:0.9.0" @@ -9046,6 +13234,17 @@ __metadata: languageName: node linkType: hard +"object.fromentries@npm:^2.0.3": + version: 2.0.5 + resolution: "object.fromentries@npm:2.0.5" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + es-abstract: ^1.19.1 + checksum: 61a0b565ded97b76df9e30b569729866e1824cce902f98e90bb106e84f378aea20163366f66dc75c9000e2aad2ed0caf65c6f530cb2abc4c0c0f6c982102db4b + languageName: node + linkType: hard + "object.pick@npm:^1.3.0": version: 1.3.0 resolution: "object.pick@npm:1.3.0" @@ -9111,6 +13310,20 @@ __metadata: languageName: node linkType: hard +"optionator@npm:^0.8.1": + version: 0.8.3 + resolution: "optionator@npm:0.8.3" + dependencies: + deep-is: ~0.1.3 + fast-levenshtein: ~2.0.6 + levn: ~0.3.0 + prelude-ls: ~1.1.2 + type-check: ~0.3.2 + word-wrap: ~1.2.3 + checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 + languageName: node + linkType: hard + "optionator@npm:^0.9.1": version: 0.9.1 resolution: "optionator@npm:0.9.1" @@ -9153,6 +13366,20 @@ __metadata: languageName: node linkType: hard +"p-cancelable@npm:^0.3.0": + version: 0.3.0 + resolution: "p-cancelable@npm:0.3.0" + checksum: 2b27639be8f7f8718f2854c1711f713c296db00acc4675975b1531ecb6253da197304b4a211a330a8e54e754d28d4b3f7feecb48f0566dd265e3ba6745cd4148 + languageName: node + linkType: hard + +"p-cancelable@npm:^1.0.0": + version: 1.1.0 + resolution: "p-cancelable@npm:1.1.0" + checksum: 2db3814fef6d9025787f30afaee4496a8857a28be3c5706432cbad76c688a6db1874308f48e364a42f5317f5e41e8e7b4f2ff5c8ff2256dbb6264bc361704ece + languageName: node + linkType: hard + "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" @@ -9167,6 +13394,15 @@ __metadata: languageName: node linkType: hard +"p-event@npm:^4.0.0": + version: 4.2.0 + resolution: "p-event@npm:4.2.0" + dependencies: + p-timeout: ^3.1.0 + checksum: 8a3588f7a816a20726a3262dfeee70a631e3997e4773d23219176333eda55cce9a76219e3d2b441b331eb746e14fdb381eb2694ab9ff2fcf87c846462696fe89 + languageName: node + linkType: hard + "p-filter@npm:^2.0.0": version: 2.1.0 resolution: "p-filter@npm:2.1.0" @@ -9208,6 +13444,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: ^0.1.0 + checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 + languageName: node + linkType: hard + "p-locate@npm:^2.0.0": version: 2.0.0 resolution: "p-locate@npm:2.0.0" @@ -9235,6 +13480,15 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: ^3.0.2 + checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 + languageName: node + linkType: hard + "p-map@npm:^2.0.0": version: 2.1.0 resolution: "p-map@npm:2.1.0" @@ -9268,6 +13522,24 @@ __metadata: languageName: node linkType: hard +"p-timeout@npm:^1.1.1": + version: 1.2.1 + resolution: "p-timeout@npm:1.2.1" + dependencies: + p-finally: ^1.0.0 + checksum: 65a456f49cca1328774a6bfba61aac98d854b36df9153c2887f82f078d4399e9a30463be8a479871c22ed350a23b34a66ff303ca652b9d81ed4ff5260ac660d2 + languageName: node + linkType: hard + +"p-timeout@npm:^3.1.0": + version: 3.2.0 + resolution: "p-timeout@npm:3.2.0" + dependencies: + p-finally: ^1.0.0 + checksum: 3dd0eaa048780a6f23e5855df3dd45c7beacff1f820476c1d0d1bcd6648e3298752ba2c877aa1c92f6453c7dd23faaf13d9f5149fc14c0598a142e2c5e8d649c + languageName: node + linkType: hard + "p-try@npm:^1.0.0": version: 1.0.0 resolution: "p-try@npm:1.0.0" @@ -9395,6 +13667,22 @@ __metadata: languageName: node linkType: hard +"parse-github-repo-url@npm:^1.3.0": + version: 1.4.1 + resolution: "parse-github-repo-url@npm:1.4.1" + checksum: 58d9facd65621267d2484d0bc88f0194e9142f4e42e333d9cd7322418279e186bac0ced67480dcd2d0695522c2c91b6d99f6fd3824ec113a17fd69bc893c173a + languageName: node + linkType: hard + +"parse-json@npm:^2.2.0": + version: 2.2.0 + resolution: "parse-json@npm:2.2.0" + dependencies: + error-ex: ^1.2.0 + checksum: dda78a63e57a47b713a038630868538f718a7ca0cd172a36887b0392ccf544ed0374902eb28f8bf3409e8b71d62b79d17062f8543afccf2745f9b0b2d2bb80ca + languageName: node + linkType: hard + "parse-json@npm:^4.0.0": version: 4.0.0 resolution: "parse-json@npm:4.0.0" @@ -9405,7 +13693,7 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^5.0.0": +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: @@ -9426,6 +13714,13 @@ __metadata: languageName: node linkType: hard +"parse-passwd@npm:^1.0.0": + version: 1.0.0 + resolution: "parse-passwd@npm:1.0.0" + checksum: 4e55e0231d58f828a41d0f1da2bf2ff7bcef8f4cb6146e69d16ce499190de58b06199e6bd9b17fbf0d4d8aef9052099cdf8c4f13a6294b1a522e8e958073066e + languageName: node + linkType: hard + "parse-path@npm:^4.0.0": version: 4.0.3 resolution: "parse-path@npm:4.0.3" @@ -9438,6 +13733,13 @@ __metadata: languageName: node linkType: hard +"parse5@npm:6.0.1": + version: 6.0.1 + resolution: "parse5@npm:6.0.1" + checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd + languageName: node + linkType: hard + "pascalcase@npm:^0.1.1": version: 0.1.1 resolution: "pascalcase@npm:0.1.1" @@ -9503,7 +13805,7 @@ __metadata: languageName: node linkType: hard -"path-parse@npm:^1.0.7": +"path-parse@npm:^1.0.6, path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a @@ -9519,6 +13821,17 @@ __metadata: languageName: node linkType: hard +"path-type@npm:^1.0.0": + version: 1.1.0 + resolution: "path-type@npm:1.1.0" + dependencies: + graceful-fs: ^4.1.2 + pify: ^2.0.0 + pinkie-promise: ^2.0.0 + checksum: 59a4b2c0e566baf4db3021a1ed4ec09a8b36fca960a490b54a6bcefdb9987dafe772852982b6011cd09579478a96e57960a01f75fa78a794192853c9d468fc79 + languageName: node + linkType: hard + "path-type@npm:^3.0.0": version: 3.0.0 resolution: "path-type@npm:3.0.0" @@ -9585,6 +13898,13 @@ __metadata: languageName: node linkType: hard +"pify@npm:^2.0.0, pify@npm:^2.3.0": + version: 2.3.0 + resolution: "pify@npm:2.3.0" + checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba + languageName: node + linkType: hard + "pify@npm:^3.0.0": version: 3.0.0 resolution: "pify@npm:3.0.0" @@ -9634,6 +13954,13 @@ __metadata: languageName: node linkType: hard +"pirates@npm:^4.0.4": + version: 4.0.5 + resolution: "pirates@npm:4.0.5" + checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 + languageName: node + linkType: hard + "pkg-conf@npm:^2.1.0": version: 2.1.0 resolution: "pkg-conf@npm:2.1.0" @@ -9662,6 +13989,24 @@ __metadata: languageName: node linkType: hard +"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: ^4.0.0 + checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 + languageName: node + linkType: hard + +"please-upgrade-node@npm:^3.2.0": + version: 3.2.0 + resolution: "please-upgrade-node@npm:3.2.0" + dependencies: + semver-compare: ^1.0.0 + checksum: d87c41581a2a022fbe25965a97006238cd9b8cbbf49b39f78d262548149a9d30bd2bdf35fec3d810e0001e630cd46ef13c7e19c389dea8de7e64db271a2381bb + languageName: node + linkType: hard + "popper.js@npm:^1.16.1": version: 1.16.1 resolution: "popper.js@npm:1.16.1" @@ -9723,6 +14068,27 @@ __metadata: languageName: node linkType: hard +"prelude-ls@npm:~1.1.2": + version: 1.1.2 + resolution: "prelude-ls@npm:1.1.2" + checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 + languageName: node + linkType: hard + +"prepend-http@npm:^1.0.1": + version: 1.0.4 + resolution: "prepend-http@npm:1.0.4" + checksum: 01e7baf4ad38af02257b99098543469332fc42ae50df33d97a124bf8172295907352fa6138c9b1610c10c6dd0847ca736e53fda736387cc5cf8fcffe96b47f29 + languageName: node + linkType: hard + +"prepend-http@npm:^2.0.0": + version: 2.0.0 + resolution: "prepend-http@npm:2.0.0" + checksum: 7694a9525405447662c1ffd352fcb41b6410c705b739b6f4e3a3e21cf5fdede8377890088e8934436b8b17ba55365a615f153960f30877bf0d0392f9e93503ea + languageName: node + linkType: hard + "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" @@ -9741,6 +14107,26 @@ __metadata: languageName: node linkType: hard +"prettier@npm:^2.3.2": + version: 2.6.2 + resolution: "prettier@npm:2.6.2" + bin: + prettier: bin-prettier.js + checksum: 48d08dde8e9fb1f5bccdd205baa7f192e9fc8bc98f86e1b97d919de804e28c806b0e6cc685e4a88211aa7987fa9668f30baae19580d87ced3ed0f2ec6572106f + languageName: node + linkType: hard + +"pretty-format@npm:^27.0.0, pretty-format@npm:^27.5.1": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" + dependencies: + ansi-regex: ^5.0.1 + ansi-styles: ^5.0.0 + react-is: ^17.0.1 + checksum: cf610cffcb793885d16f184a62162f2dd0df31642d9a18edf4ca298e909a8fe80bdbf556d5c9573992c102ce8bf948691da91bf9739bee0ffb6e79c8a8a6e088 + languageName: node + linkType: hard + "proc-log@npm:^2.0.0": version: 2.0.0 resolution: "proc-log@npm:2.0.0" @@ -9748,6 +14134,13 @@ __metadata: languageName: node linkType: hard +"process-es6@npm:^0.11.6": + version: 0.11.6 + resolution: "process-es6@npm:0.11.6" + checksum: 8849ea1a799a20a8e863fd3a5558d4085357ee59cae16b76f61327e3b3a27697b4e49c880742a6cc0f0c37eb0bd78fb0d4e382bd2e5318bb699b404b55a9b91e + languageName: node + linkType: hard + "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" @@ -9762,6 +14155,13 @@ __metadata: languageName: node linkType: hard +"progress@npm:^2.0.0, progress@npm:^2.0.3": + version: 2.0.3 + resolution: "progress@npm:2.0.3" + checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 + languageName: node + linkType: hard + "promise-all-reject-late@npm:^1.0.0": version: 1.0.1 resolution: "promise-all-reject-late@npm:1.0.1" @@ -9800,6 +14200,29 @@ __metadata: languageName: node linkType: hard +"prompt@npm:^1.2.0": + version: 1.2.2 + resolution: "prompt@npm:1.2.2" + dependencies: + "@colors/colors": 1.5.0 + async: ~0.9.0 + read: 1.0.x + revalidator: 0.1.x + winston: 2.x + checksum: 86731e2a7d49b02e380e4cf4d1d41c6c8dc706bf7016faf2dab49b90bd583a846e3947c8d5e3dbf404878d97ea89fe97b0ed7d1e8885479f9de46963508f85fa + languageName: node + linkType: hard + +"prompts@npm:^2.0.1": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: ^3.0.3 + sisteransi: ^1.0.5 + checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d + languageName: node + linkType: hard + "promzard@npm:^0.3.0": version: 0.3.0 resolution: "promzard@npm:0.3.0" @@ -9830,7 +14253,7 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.28": +"psl@npm:^1.1.28, psl@npm:^1.1.33": version: 1.8.0 resolution: "psl@npm:1.8.0" checksum: 6150048ed2da3f919478bee8a82f3828303bc0fc730fb015a48f83c9977682c7b28c60ab01425a72d82a2891a1681627aa530a991d50c086b48a3be27744bde7 @@ -9903,7 +14326,7 @@ __metadata: languageName: node linkType: hard -"q@npm:^1.5.1": +"q@npm:^1.4.1, q@npm:^1.5.1": version: 1.5.1 resolution: "q@npm:1.5.1" checksum: 147baa93c805bc1200ed698bdf9c72e9e42c05f96d007e33a558b5fdfd63e5ea130e99313f28efc1783e90e6bdb4e48b67a36fcc026b7b09202437ae88a1fb12 @@ -9975,6 +14398,13 @@ __metadata: languageName: node linkType: hard +"quick-lru@npm:^1.0.0": + version: 1.1.0 + resolution: "quick-lru@npm:1.1.0" + checksum: 7fd3fb3fb19dfc1d32bc0799c336f5867adc9ba3d9a662a50fdb463d2bb27d9c89b5e55b01a51fe09c3e251389ea858e1c38326bac8f550ff92dcebbf26665a3 + languageName: node + linkType: hard + "quick-lru@npm:^4.0.1": version: 4.0.1 resolution: "quick-lru@npm:4.0.1" @@ -10193,6 +14623,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^17.0.1": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 + languageName: node + linkType: hard + "read-cmd-shim@npm:^2.0.0": version: 2.0.0 resolution: "read-cmd-shim@npm:2.0.0" @@ -10234,6 +14671,26 @@ __metadata: languageName: node linkType: hard +"read-pkg-up@npm:^1.0.1": + version: 1.0.1 + resolution: "read-pkg-up@npm:1.0.1" + dependencies: + find-up: ^1.0.0 + read-pkg: ^1.0.0 + checksum: d18399a0f46e2da32beb2f041edd0cda49d2f2cc30195a05c759ef3ed9b5e6e19ba1ad1bae2362bdec8c6a9f2c3d18f4d5e8c369e808b03d498d5781cb9122c7 + languageName: node + linkType: hard + +"read-pkg-up@npm:^3.0.0": + version: 3.0.0 + resolution: "read-pkg-up@npm:3.0.0" + dependencies: + find-up: ^2.0.0 + read-pkg: ^3.0.0 + checksum: 16175573f2914ab9788897bcbe2a62b5728d0075e62285b3680cebe97059e2911e0134a062cf6e51ebe3e3775312bc788ac2039ed6af38ec68d2c10c6f2b30fb + languageName: node + linkType: hard + "read-pkg-up@npm:^7.0.0, read-pkg-up@npm:^7.0.1": version: 7.0.1 resolution: "read-pkg-up@npm:7.0.1" @@ -10245,6 +14702,28 @@ __metadata: languageName: node linkType: hard +"read-pkg@npm:^1.0.0": + version: 1.1.0 + resolution: "read-pkg@npm:1.1.0" + dependencies: + load-json-file: ^1.0.0 + normalize-package-data: ^2.3.2 + path-type: ^1.0.0 + checksum: a0f5d5e32227ec8e6a028dd5c5134eab229768dcb7a5d9a41a284ed28ad4b9284fecc47383dc1593b5694f4de603a7ffaee84b738956b9b77e0999567485a366 + languageName: node + linkType: hard + +"read-pkg@npm:^3.0.0": + version: 3.0.0 + resolution: "read-pkg@npm:3.0.0" + dependencies: + load-json-file: ^4.0.0 + normalize-package-data: ^2.3.2 + path-type: ^3.0.0 + checksum: 398903ebae6c7e9965419a1062924436cc0b6f516c42c4679a90290d2f87448ed8f977e7aa2dbba4aa1ac09248628c43e493ac25b2bc76640e946035200e34c6 + languageName: node + linkType: hard + "read-pkg@npm:^5.0.0, read-pkg@npm:^5.1.1, read-pkg@npm:^5.2.0": version: 5.2.0 resolution: "read-pkg@npm:5.2.0" @@ -10257,7 +14736,7 @@ __metadata: languageName: node linkType: hard -"read@npm:*, read@npm:1, read@npm:^1.0.7, read@npm:~1.0.7": +"read@npm:*, read@npm:1, read@npm:1.0.x, read@npm:^1.0.7, read@npm:~1.0.7": version: 1.0.7 resolution: "read@npm:1.0.7" dependencies: @@ -10288,7 +14767,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": +"readable-stream@npm:2 || 3, readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": version: 3.6.0 resolution: "readable-stream@npm:3.6.0" dependencies: @@ -10331,6 +14810,35 @@ __metadata: languageName: node linkType: hard +"rechoir@npm:^0.6.2": + version: 0.6.2 + resolution: "rechoir@npm:0.6.2" + dependencies: + resolve: ^1.1.6 + checksum: fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b + languageName: node + linkType: hard + +"redent@npm:^1.0.0": + version: 1.0.0 + resolution: "redent@npm:1.0.0" + dependencies: + indent-string: ^2.1.0 + strip-indent: ^1.0.1 + checksum: 2bb8f76fda9c9f44e26620047b0ba9dd1834b0a80309d0badcc23fdcf7bb27a7ca74e66b683baa0d4b8cb5db787f11be086504036d63447976f409dd3e73fd7d + languageName: node + linkType: hard + +"redent@npm:^2.0.0": + version: 2.0.0 + resolution: "redent@npm:2.0.0" + dependencies: + indent-string: ^3.0.0 + strip-indent: ^2.0.0 + checksum: c3bcea97de01023efbe826cd72abf2e5948e096acd808a498b4de5dd25e64ad8df0cb4218403197b4ea050ce73f2264a318bf469a27f87ba8ca31543892011d4 + languageName: node + linkType: hard + "redent@npm:^3.0.0": version: 3.0.0 resolution: "redent@npm:3.0.0" @@ -10360,7 +14868,7 @@ __metadata: languageName: node linkType: hard -"regexpp@npm:^3.2.0": +"regexpp@npm:^3.1.0, regexpp@npm:^3.2.0": version: 3.2.0 resolution: "regexpp@npm:3.2.0" checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 @@ -10404,6 +14912,28 @@ __metadata: languageName: node linkType: hard +"repeating@npm:^2.0.0": + version: 2.0.1 + resolution: "repeating@npm:2.0.1" + dependencies: + is-finite: ^1.0.0 + checksum: d2db0b69c5cb0c14dd750036e0abcd6b3c3f7b2da3ee179786b755cf737ca15fa0fff417ca72de33d6966056f4695440e680a352401fc02c95ade59899afbdd0 + languageName: node + linkType: hard + +"replace-in-file@npm:^6.2.0": + version: 6.3.2 + resolution: "replace-in-file@npm:6.3.2" + dependencies: + chalk: ^4.1.2 + glob: ^7.2.0 + yargs: ^17.2.1 + bin: + replace-in-file: bin/cli.js + checksum: ae3a0486711edfc1d7d769782764902934aeb327e54a56fbf8a92df22862a56312d86dbe0067274fb3666da668457576f6a775f814742acceea70f5aedb01f49 + languageName: node + linkType: hard + "request@npm:^2.88.2": version: 2.88.2 resolution: "request@npm:2.88.2" @@ -10432,17 +14962,50 @@ __metadata: languageName: node linkType: hard -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 + languageName: node + linkType: hard + +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b + languageName: node + linkType: hard + +"resolve-alpn@npm:^1.0.0": + version: 1.2.1 + resolution: "resolve-alpn@npm:1.2.1" + checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: ^5.0.0 + checksum: 546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 + languageName: node + linkType: hard + +"resolve-dir@npm:^1.0.0, resolve-dir@npm:^1.0.1": + version: 1.0.1 + resolution: "resolve-dir@npm:1.0.1" + dependencies: + expand-tilde: ^2.0.0 + global-modules: ^1.0.0 + checksum: ef736b8ed60d6645c3b573da17d329bfb50ec4e1d6c5ffd6df49e3497acef9226f9810ea6823b8ece1560e01dcb13f77a9f6180d4f242d00cc9a8f4de909c65c languageName: node linkType: hard -"resolve-alpn@npm:^1.0.0": - version: 1.2.1 - resolution: "resolve-alpn@npm:1.2.1" - checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 +"resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf languageName: node linkType: hard @@ -10453,10 +15016,12 @@ __metadata: languageName: node linkType: hard -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf +"resolve-global@npm:1.0.0, resolve-global@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-global@npm:1.0.0" + dependencies: + global-dirs: ^0.1.1 + checksum: c4e11d33e84bde7516b824503ffbe4b6cce863d5ce485680fd3db997b7c64da1df98321b1fd0703b58be8bc9bc83bc96bd83043f96194386b45eb47229efb6b6 languageName: node linkType: hard @@ -10467,7 +15032,24 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0": +"resolve.exports@npm:^1.1.0": + version: 1.1.0 + resolution: "resolve.exports@npm:1.1.0" + checksum: 52865af8edb088f6c7759a328584a5de6b226754f004b742523adcfe398cfbc4559515104bc2ae87b8e78b1e4de46c9baec400b3fb1f7d517b86d2d48a098a2d + languageName: node + linkType: hard + +"resolve@npm:1.20.0": + version: 1.20.0 + resolution: "resolve@npm:1.20.0" + dependencies: + is-core-module: ^2.2.0 + path-parse: ^1.0.6 + checksum: 40cf70b2cde00ef57f99daf2dc63c6a56d6c14a1b7fc51735d06a6f0a3b97cb67b4fb7ef6c747b4e13a7baba83b0ef625d7c4ce92a483cd5af923c3b65fd16fe + languageName: node + linkType: hard + +"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0": version: 1.22.0 resolution: "resolve@npm:1.22.0" dependencies: @@ -10480,7 +15062,17 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.0#~builtin<compat/resolve>": +"resolve@patch:resolve@1.20.0#~builtin<compat/resolve>": + version: 1.20.0 + resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin<compat/resolve>::version=1.20.0&hash=07638b" + dependencies: + is-core-module: ^2.2.0 + path-parse: ^1.0.6 + checksum: a0dd7d16a8e47af23afa9386df2dff10e3e0debb2c7299a42e581d9d9b04d7ad5d2c53f24f1e043f7b3c250cbdc71150063e53d0b6559683d37f790b7c8c3cd5 + languageName: node + linkType: hard + +"resolve@patch:resolve@^1.1.6#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.17.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.0#~builtin<compat/resolve>": version: 1.22.0 resolution: "resolve@patch:resolve@npm%3A1.22.0#~builtin<compat/resolve>::version=1.22.0&hash=07638b" dependencies: @@ -10493,6 +15085,15 @@ __metadata: languageName: node linkType: hard +"responselike@npm:^1.0.2": + version: 1.0.2 + resolution: "responselike@npm:1.0.2" + dependencies: + lowercase-keys: ^1.0.0 + checksum: 2e9e70f1dcca3da621a80ce71f2f9a9cad12c047145c6ece20df22f0743f051cf7c73505e109814915f23f9e34fb0d358e22827723ee3d56b623533cab8eafcd + languageName: node + linkType: hard + "responselike@npm:^2.0.0": version: 2.0.0 resolution: "responselike@npm:2.0.0" @@ -10550,6 +15151,13 @@ __metadata: languageName: node linkType: hard +"revalidator@npm:0.1.x": + version: 0.1.8 + resolution: "revalidator@npm:0.1.8" + checksum: 9ac69162ce8fc86f5fa77f37f3ad634d3797ea70eff4faff13619167ebbf3f3ccf2ec115ccd9c3c860658f8859426022d61d2a1e49183db095ba4f0a016905fe + languageName: node + linkType: hard + "rfdc@npm:^1.3.0": version: 1.3.0 resolution: "rfdc@npm:1.3.0" @@ -10589,7 +15197,93 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^2.58.0, rollup@npm:^2.59.0": +"rollup-plugin-inject@npm:^3.0.0": + version: 3.0.2 + resolution: "rollup-plugin-inject@npm:3.0.2" + dependencies: + estree-walker: ^0.6.1 + magic-string: ^0.25.3 + rollup-pluginutils: ^2.8.1 + checksum: a014972c80fe34b8c8154056fa2533a8440066a31de831e3793fc21b15d108d92c22d8f7f472397bd5783d7c5e04d8cbf112fb72c5a26e997726e4eb090edad1 + languageName: node + linkType: hard + +"rollup-plugin-node-globals@npm:^1.4.0": + version: 1.4.0 + resolution: "rollup-plugin-node-globals@npm:1.4.0" + dependencies: + acorn: ^5.7.3 + buffer-es6: ^4.9.3 + estree-walker: ^0.5.2 + magic-string: ^0.22.5 + process-es6: ^0.11.6 + rollup-pluginutils: ^2.3.1 + checksum: da3cd85ad2f3824a767dd242e484d5cd530eae9fa809c87aba1ff66d64b7a08c84ed76592694c91ee39cf7d5efe487b62e60d402d579001560f6e6de99105576 + languageName: node + linkType: hard + +"rollup-plugin-node-polyfills@npm:^0.2.1": + version: 0.2.1 + resolution: "rollup-plugin-node-polyfills@npm:0.2.1" + dependencies: + rollup-plugin-inject: ^3.0.0 + checksum: e84645212c443aca3cfae2ba69f01c6d8c5c250f0bf651416b69a4572b60aae9da7cdd687de3ab9b903f7a1ab96b06b71f0c4927d1b02a37485360d2b563937b + languageName: node + linkType: hard + +"rollup-plugin-polyfill-node@npm:^0.8.0": + version: 0.8.0 + resolution: "rollup-plugin-polyfill-node@npm:0.8.0" + dependencies: + "@rollup/plugin-inject": ^4.0.0 + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + checksum: ad6e451b1ae91f7b4370ab7b5dd03f578a67ebd42bcd3eec198ae6d4cd7caa1c454bd020ff8e80f3dcb02cdd9357da2b752c0aac3f84c56a28c23a6c0ffeffd5 + languageName: node + linkType: hard + +"rollup-plugin-sourcemaps@npm:^0.6.3": + version: 0.6.3 + resolution: "rollup-plugin-sourcemaps@npm:0.6.3" + dependencies: + "@rollup/pluginutils": ^3.0.9 + source-map-resolve: ^0.6.0 + peerDependencies: + "@types/node": ">=10.0.0" + rollup: ">=0.31.2" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: bb4909a90f2e824717a67ad146b2cccc40411ee54709ffa548c47c4dfe485bd55039a5850d7640ecb2691de9dc30e3fd57287e4d74331f36fed9c263d86dd4dc + languageName: node + linkType: hard + +"rollup-plugin-typescript2@npm:^0.30.0": + version: 0.30.0 + resolution: "rollup-plugin-typescript2@npm:0.30.0" + dependencies: + "@rollup/pluginutils": ^4.1.0 + find-cache-dir: ^3.3.1 + fs-extra: 8.1.0 + resolve: 1.20.0 + tslib: 2.1.0 + peerDependencies: + rollup: ">=1.26.3" + typescript: ">=2.4.0" + checksum: e3097bb25c00e78cca556ed6a77b3bdf2330e5e5647847d1f967ade67dc6b66009b52bb8810de2b2c40857310693e4e663900a13da4f711f082fabac5165091a + languageName: node + linkType: hard + +"rollup-pluginutils@npm:^2.3.1, rollup-pluginutils@npm:^2.8.1": + version: 2.8.2 + resolution: "rollup-pluginutils@npm:2.8.2" + dependencies: + estree-walker: ^0.6.1 + checksum: 339fdf866d8f4ff6e408fa274c0525412f7edb01dc46b5ccda51f575b7e0d20ad72965773376fb5db95a77a7fcfcab97bf841ec08dbadf5d6b08af02b7a2cf5e + languageName: node + linkType: hard + +"rollup@npm:^2.56.3, rollup@npm:^2.58.0, rollup@npm:^2.59.0": version: 2.70.1 resolution: "rollup@npm:2.70.1" dependencies: @@ -10603,7 +15297,7 @@ __metadata: languageName: node linkType: hard -"run-async@npm:^2.4.0": +"run-async@npm:^2.2.0, run-async@npm:^2.4.0": version: 2.4.1 resolution: "run-async@npm:2.4.1" checksum: a2c88aa15df176f091a2878eb840e68d0bdee319d8d97bbb89112223259cebecb94bc0defd735662b83c2f7a30bed8cddb7d1674eb48ae7322dc602b22d03797 @@ -10628,7 +15322,7 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^6.6.0": +"rxjs@npm:^6.4.0, rxjs@npm:^6.6.0": version: 6.6.7 resolution: "rxjs@npm:6.6.7" dependencies: @@ -10637,7 +15331,7 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^7.5.5": +"rxjs@npm:^7.5.1, rxjs@npm:^7.5.5": version: 7.5.5 resolution: "rxjs@npm:7.5.5" dependencies: @@ -10696,6 +15390,15 @@ __metadata: languageName: node linkType: hard +"saxes@npm:^5.0.1": + version: 5.0.1 + resolution: "saxes@npm:5.0.1" + dependencies: + xmlchars: ^2.2.0 + checksum: 5636b55cf15f7cf0baa73f2797bf992bdcf75d1b39d82c0aa4608555c774368f6ac321cb641fd5f3d3ceb87805122cd47540da6a7b5960fe0dbdb8f8c263f000 + languageName: node + linkType: hard + "schema-utils@npm:^1.0.0": version: 1.0.0 resolution: "schema-utils@npm:1.0.0" @@ -10707,6 +15410,44 @@ __metadata: languageName: node linkType: hard +"semantic-release@npm:^17.3.1, semantic-release@npm:^17.4.7": + version: 17.4.7 + resolution: "semantic-release@npm:17.4.7" + dependencies: + "@semantic-release/commit-analyzer": ^8.0.0 + "@semantic-release/error": ^2.2.0 + "@semantic-release/github": ^7.0.0 + "@semantic-release/npm": ^7.0.0 + "@semantic-release/release-notes-generator": ^9.0.0 + aggregate-error: ^3.0.0 + cosmiconfig: ^7.0.0 + debug: ^4.0.0 + env-ci: ^5.0.0 + execa: ^5.0.0 + figures: ^3.0.0 + find-versions: ^4.0.0 + get-stream: ^6.0.0 + git-log-parser: ^1.2.0 + hook-std: ^2.0.0 + hosted-git-info: ^4.0.0 + lodash: ^4.17.21 + marked: ^2.0.0 + marked-terminal: ^4.1.1 + micromatch: ^4.0.2 + p-each-series: ^2.1.0 + p-reduce: ^2.0.0 + read-pkg-up: ^7.0.0 + resolve-from: ^5.0.0 + semver: ^7.3.2 + semver-diff: ^3.1.1 + signale: ^1.2.1 + yargs: ^16.2.0 + bin: + semantic-release: bin/semantic-release.js + checksum: 9a6c222eb4298e85f8be27d486088f1e9358e1174f36225312701e01127557a722adc1a6dc84b66fa04d27a1470dc15ed48951408684d0ff3559f054f0452ba3 + languageName: node + linkType: hard + "semantic-release@npm:^19.0.2": version: 19.0.2 resolution: "semantic-release@npm:19.0.2" @@ -10745,6 +15486,13 @@ __metadata: languageName: node linkType: hard +"semver-compare@npm:^1.0.0": + version: 1.0.0 + resolution: "semver-compare@npm:1.0.0" + checksum: dd1d7e2909744cf2cf71864ac718efc990297f9de2913b68e41a214319e70174b1d1793ac16e31183b128c2b9812541300cb324db8168e6cf6b570703b171c68 + languageName: node + linkType: hard + "semver-diff@npm:^3.1.1": version: 3.1.1 resolution: "semver-diff@npm:3.1.1" @@ -10754,6 +15502,13 @@ __metadata: languageName: node linkType: hard +"semver-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "semver-regex@npm:2.0.0" + checksum: da7d6f5ceae80e2097933b1e4ea2815c2cfa2c50c6501db1a3d435a6063c0f23d66bc25fe8d06755048f3d7588d85339db6471446b2c91fea907e5c2ada5b0df + languageName: node + linkType: hard + "semver-regex@npm:^3.1.2": version: 3.1.3 resolution: "semver-regex@npm:3.1.3" @@ -10761,7 +15516,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:*, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5": +"semver@npm:*, semver@npm:7.3.5, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5": version: 7.3.5 resolution: "semver@npm:7.3.5" dependencies: @@ -10781,6 +15536,17 @@ __metadata: languageName: node linkType: hard +"semver@npm:7.x, semver@npm:^7.2.1": + version: 7.3.6 + resolution: "semver@npm:7.3.6" + dependencies: + lru-cache: ^7.4.0 + bin: + semver: bin/semver.js + checksum: 9845f96b22268190b30025e02feca391451f2bd49b2c51920c27cc56744f64cbe397df089018fdb347d4b4fd800eabbd85661870eb63eb28055d2b72e457f759 + languageName: node + linkType: hard + "semver@npm:^6.0.0, semver@npm:^6.1.0, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" @@ -10876,6 +15642,30 @@ __metadata: languageName: node linkType: hard +"shelljs@npm:^0.8.0, shelljs@npm:^0.8.4": + version: 0.8.5 + resolution: "shelljs@npm:0.8.5" + dependencies: + glob: ^7.0.0 + interpret: ^1.0.0 + rechoir: ^0.6.2 + bin: + shjs: bin/shjs + checksum: 7babc46f732a98f4c054ec1f048b55b9149b98aa2da32f6cf9844c434b43c6251efebd6eec120937bd0999e13811ebd45efe17410edb3ca938f82f9381302748 + languageName: node + linkType: hard + +"shiki@npm:^0.9.8": + version: 0.9.15 + resolution: "shiki@npm:0.9.15" + dependencies: + jsonc-parser: ^3.0.0 + vscode-oniguruma: ^1.6.1 + vscode-textmate: 5.2.0 + checksum: 58d1e3e106320252b67c63dc1269c4b834152e9c675a06a4565ec41db1c93aea2dd94e22640d7ec99334cb47cd41b914642d936577143b689ef2a0db7d938c13 + languageName: node + linkType: hard + "side-channel@npm:^1.0.4": version: 1.0.4 resolution: "side-channel@npm:1.0.4" @@ -10905,6 +15695,13 @@ __metadata: languageName: node linkType: hard +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 + languageName: node + linkType: hard + "slash@npm:^2.0.0": version: 2.0.0 resolution: "slash@npm:2.0.0" @@ -11042,7 +15839,17 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:~0.5.12": +"source-map-resolve@npm:^0.6.0": + version: 0.6.0 + resolution: "source-map-resolve@npm:0.6.0" + dependencies: + atob: ^2.1.2 + decode-uri-component: ^0.2.0 + checksum: fe503b9e5dac1c54be835282fcfec10879434e7b3ee08a9774f230299c724a8d403484d9531276d1670c87390e0e4d1d3f92b14cca6e4a2445ea3016b786ecd4 + languageName: node + linkType: hard + +"source-map-support@npm:^0.5.17, source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.12": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -11173,6 +15980,15 @@ __metadata: languageName: node linkType: hard +"split2@npm:^2.0.0": + version: 2.2.0 + resolution: "split2@npm:2.2.0" + dependencies: + through2: ^2.0.2 + checksum: 06a9fe364f1c37098539e8d9b460c8c2e00320600a5e040dd3fa006f6bdabbbe6ee983568a62a585f41862c61b9672f59b93ef0accf4add346c716edcd6d21b7 + languageName: node + linkType: hard + "split2@npm:^3.0.0": version: 3.2.2 resolution: "split2@npm:3.2.2" @@ -11200,6 +16016,13 @@ __metadata: languageName: node linkType: hard +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 + languageName: node + linkType: hard + "sshpk@npm:^1.7.0": version: 1.17.0 resolution: "sshpk@npm:1.17.0" @@ -11239,6 +16062,22 @@ __metadata: languageName: node linkType: hard +"stack-trace@npm:0.0.x": + version: 0.0.10 + resolution: "stack-trace@npm:0.0.10" + checksum: 473036ad32f8c00e889613153d6454f9be0536d430eb2358ca51cad6b95cea08a3cc33cc0e34de66b0dad221582b08ed2e61ef8e13f4087ab690f388362d6610 + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.3": + version: 2.0.5 + resolution: "stack-utils@npm:2.0.5" + dependencies: + escape-string-regexp: ^2.0.0 + checksum: 76b69da0f5b48a34a0f93c98ee2a96544d2c4ca2557f7eef5ddb961d3bdc33870b46f498a84a7c4f4ffb781df639840e7ebf6639164ed4da5e1aeb659615b9c7 + languageName: node + linkType: hard + "static-extend@npm:^0.1.1": version: 0.1.2 resolution: "static-extend@npm:0.1.2" @@ -11316,6 +16155,15 @@ __metadata: languageName: node linkType: hard +"stream-to-array@npm:^2.3.0": + version: 2.3.0 + resolution: "stream-to-array@npm:2.3.0" + dependencies: + any-promise: ^1.1.0 + checksum: 7feaf63b38399b850615e6ffcaa951e96e4c8f46745dbce4b553a94c5dc43966933813747014935a3ff97793e7f30a65270bde19f82b2932871a1879229a77cf + languageName: node + linkType: hard + "stream-to-string@npm:^1.2.0": version: 1.2.0 resolution: "stream-to-string@npm:1.2.0" @@ -11332,13 +16180,23 @@ __metadata: languageName: node linkType: hard -"string-argv@npm:^0.3.1": +"string-argv@npm:0.3.1, string-argv@npm:^0.3.1": version: 0.3.1 resolution: "string-argv@npm:0.3.1" checksum: efbd0289b599bee808ce80820dfe49c9635610715429c6b7cc50750f0437e3c2f697c81e5c390208c13b5d5d12d904a1546172a88579f6ee5cbaaaa4dc9ec5cf languageName: node linkType: hard +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: ^1.0.2 + strip-ansi: ^6.0.0 + checksum: ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 + languageName: node + linkType: hard + "string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -11350,6 +16208,16 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^2.1.0": + version: 2.1.1 + resolution: "string-width@npm:2.1.1" + dependencies: + is-fullwidth-code-point: ^2.0.0 + strip-ansi: ^4.0.0 + checksum: d6173abe088c615c8dffaf3861dc5d5906ed3dc2d6fd67ff2bd2e2b5dce7fd683c5240699cf0b1b8aa679a3b3bd6b28b5053c824cb89b813d7f6541d8f89064a + languageName: node + linkType: hard + "string-width@npm:^5.0.0": version: 5.1.2 resolution: "string-width@npm:5.1.2" @@ -11399,6 +16267,17 @@ __metadata: languageName: node linkType: hard +"stringify-object@npm:3.3.0": + version: 3.3.0 + resolution: "stringify-object@npm:3.3.0" + dependencies: + get-own-enumerable-property-symbols: ^3.0.0 + is-obj: ^1.0.1 + is-regexp: ^1.0.0 + checksum: 6827a3f35975cfa8572e8cd3ed4f7b262def260af18655c6fde549334acdac49ddba69f3c861ea5a6e9c5a4990fe4ae870b9c0e6c31019430504c94a83b7a154 + languageName: node + linkType: hard + "stringify-package@npm:^1.0.1": version: 1.0.1 resolution: "stringify-package@npm:1.0.1" @@ -11406,7 +16285,16 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^5.2.0": +"strip-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-ansi@npm:4.0.0" + dependencies: + ansi-regex: ^3.0.0 + checksum: d9186e6c0cf78f25274f6750ee5e4a5725fb91b70fdd79aa5fe648eab092a0ec5b9621b22d69d4534a56319f75d8944efbd84e3afa8d4ad1b9a9491f12c84eca + languageName: node + linkType: hard + +"strip-ansi@npm:^5.1.0, strip-ansi@npm:^5.2.0": version: 5.2.0 resolution: "strip-ansi@npm:5.2.0" dependencies: @@ -11433,6 +16321,22 @@ __metadata: languageName: node linkType: hard +"strip-bom@npm:4.0.0, strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 + languageName: node + linkType: hard + +"strip-bom@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-bom@npm:2.0.0" + dependencies: + is-utf8: ^0.2.0 + checksum: 08efb746bc67b10814cd03d79eb31bac633393a782e3f35efbc1b61b5165d3806d03332a97f362822cf0d4dd14ba2e12707fcff44fe1c870c48a063a0c9e4944 + languageName: node + linkType: hard + "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -11454,6 +16358,17 @@ __metadata: languageName: node linkType: hard +"strip-indent@npm:^1.0.1": + version: 1.0.1 + resolution: "strip-indent@npm:1.0.1" + dependencies: + get-stdin: ^4.0.1 + bin: + strip-indent: cli.js + checksum: 81ad9a0b8a558bdbd05b66c6c437b9ab364aa2b5479ed89969ca7908e680e21b043d40229558c434b22b3d640622e39b66288e0456d601981ac9289de9700fbd + languageName: node + linkType: hard + "strip-indent@npm:^2.0.0": version: 2.0.0 resolution: "strip-indent@npm:2.0.0" @@ -11470,6 +16385,13 @@ __metadata: languageName: node linkType: hard +"strip-json-comments@npm:3.0.1": + version: 3.0.1 + resolution: "strip-json-comments@npm:3.0.1" + checksum: 2b860124c04b9b4ac09ec63c17fea142c789ea99b30569240f63c91917c3a8fdc250fc799280bc80dbbad1cccbcfc5f662636f960f80ce660e230f770c3f3a95 + languageName: node + linkType: hard + "strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -11484,6 +16406,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:8.1.1, supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: ^4.0.0 + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + languageName: node + linkType: hard + "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -11509,7 +16440,7 @@ __metadata: languageName: node linkType: hard -"supports-hyperlinks@npm:^2.2.0": +"supports-hyperlinks@npm:^2.0.0, supports-hyperlinks@npm:^2.1.0, supports-hyperlinks@npm:^2.2.0": version: 2.2.0 resolution: "supports-hyperlinks@npm:2.2.0" dependencies: @@ -11533,6 +16464,26 @@ __metadata: languageName: node linkType: hard +"symbol-tree@npm:^3.2.4": + version: 3.2.4 + resolution: "symbol-tree@npm:3.2.4" + checksum: 6e8fc7e1486b8b54bea91199d9535bb72f10842e40c79e882fc94fb7b14b89866adf2fd79efa5ebb5b658bc07fb459ccce5ac0e99ef3d72f474e74aaf284029d + languageName: node + linkType: hard + +"table@npm:^6.0.9": + version: 6.8.0 + resolution: "table@npm:6.8.0" + dependencies: + ajv: ^8.0.1 + lodash.truncate: ^4.4.2 + slice-ansi: ^4.0.0 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + checksum: 5b07fe462ee03d2e1fac02cbb578efd2e0b55ac07e3d3db2e950aa9570ade5a4a2b8d3c15e9f25c89e4e50b646bc4269934601ee1eef4ca7968ad31960977690 + languageName: node + linkType: hard + "tapable@npm:^1.0.0, tapable@npm:^1.1.3": version: 1.1.3 resolution: "tapable@npm:1.1.3" @@ -11574,6 +16525,16 @@ __metadata: languageName: node linkType: hard +"terminal-link@npm:^2.0.0": + version: 2.1.1 + resolution: "terminal-link@npm:2.1.1" + dependencies: + ansi-escapes: ^4.2.1 + supports-hyperlinks: ^2.0.0 + checksum: ce3d2cd3a438c4a9453947aa664581519173ea40e77e2534d08c088ee6dda449eabdbe0a76d2a516b8b73c33262fedd10d5270ccf7576ae316e3db170ce6562f + languageName: node + linkType: hard + "terser-webpack-plugin@npm:^1.4.3": version: 1.4.5 resolution: "terser-webpack-plugin@npm:1.4.5" @@ -11606,6 +16567,17 @@ __metadata: languageName: node linkType: hard +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": ^0.1.2 + glob: ^7.1.4 + minimatch: ^3.0.4 + checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 + languageName: node + linkType: hard + "text-extensions@npm:^1.0.0": version: 1.9.0 resolution: "text-extensions@npm:1.9.0" @@ -11620,13 +16592,39 @@ __metadata: languageName: node linkType: hard -"through2@npm:^2.0.0, through2@npm:~2.0.0": +"throat@npm:^6.0.1": + version: 6.0.1 + resolution: "throat@npm:6.0.1" + checksum: 782d4171ee4e3cf947483ed2ff1af3e17cc4354c693b9d339284f61f99fbc401d171e0b0d2db3295bb7d447630333e9319c174ebd7ef315c6fb791db9675369c + languageName: node + linkType: hard + +"through2-concurrent@npm:^2.0.0": + version: 2.0.0 + resolution: "through2-concurrent@npm:2.0.0" + dependencies: + through2: ^2.0.0 + checksum: ea4609ab474d2a8ee7ca5ead7073bba10568f1013cabffd0895aa470f8d6c9e42dd02b29b0fac7e56f0a83c6129d4393829827de1c1162e2e9369b84ef6eb76b + languageName: node + linkType: hard + +"through2@npm:^2.0.0, through2@npm:^2.0.2, through2@npm:~2.0.0": version: 2.0.5 resolution: "through2@npm:2.0.5" dependencies: - readable-stream: ~2.3.6 - xtend: ~4.0.1 - checksum: beb0f338aa2931e5660ec7bf3ad949e6d2e068c31f4737b9525e5201b824ac40cac6a337224856b56bd1ddd866334bbfb92a9f57cd6f66bc3f18d3d86fc0fe50 + readable-stream: ~2.3.6 + xtend: ~4.0.1 + checksum: beb0f338aa2931e5660ec7bf3ad949e6d2e068c31f4737b9525e5201b824ac40cac6a337224856b56bd1ddd866334bbfb92a9f57cd6f66bc3f18d3d86fc0fe50 + languageName: node + linkType: hard + +"through2@npm:^3.0.0": + version: 3.0.2 + resolution: "through2@npm:3.0.2" + dependencies: + inherits: ^2.0.4 + readable-stream: 2 || 3 + checksum: 47c9586c735e7d9cbbc1029f3ff422108212f7cc42e06d5cc9fff7901e659c948143c790e0d0d41b1b5f89f1d1200bdd200c7b72ad34f42f9edbeb32ea49e8b7 languageName: node linkType: hard @@ -11646,6 +16644,13 @@ __metadata: languageName: node linkType: hard +"timed-out@npm:^4.0.0": + version: 4.0.1 + resolution: "timed-out@npm:4.0.1" + checksum: 98efc5d6fc0d2a329277bd4d34f65c1bf44d9ca2b14fd267495df92898f522e6f563c5e9e467c418e0836f5ca1f47a84ca3ee1de79b1cc6fe433834b7f02ec54 + languageName: node + linkType: hard + "timers-browserify@npm:^2.0.4": version: 2.0.12 resolution: "timers-browserify@npm:2.0.12" @@ -11671,6 +16676,13 @@ __metadata: languageName: node linkType: hard +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 + languageName: node + linkType: hard + "to-arraybuffer@npm:^1.0.0": version: 1.0.1 resolution: "to-arraybuffer@npm:1.0.1" @@ -11694,6 +16706,20 @@ __metadata: languageName: node linkType: hard +"to-readable-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "to-readable-stream@npm:1.0.0" + checksum: 2bd7778490b6214a2c40276065dd88949f4cf7037ce3964c76838b8cb212893aeb9cceaaf4352a4c486e3336214c350270f3263e1ce7a0c38863a715a4d9aeb5 + languageName: node + linkType: hard + +"to-readable-stream@npm:^2.0.0": + version: 2.1.0 + resolution: "to-readable-stream@npm:2.1.0" + checksum: 42039fb968a56af99a7201fe01debb0bc55a585a2ab0b1746e322c339c50f91043b1269cedcc6350d2a5f81ceaa6cff7960704f748a59542d1f2c50aca5ea7b9 + languageName: node + linkType: hard + "to-regex-range@npm:^2.1.0": version: 2.1.1 resolution: "to-regex-range@npm:2.1.1" @@ -11725,6 +16751,17 @@ __metadata: languageName: node linkType: hard +"tough-cookie@npm:^4.0.0": + version: 4.0.0 + resolution: "tough-cookie@npm:4.0.0" + dependencies: + psl: ^1.1.33 + punycode: ^2.1.1 + universalify: ^0.1.2 + checksum: 0891b37eb7d17faa3479d47f0dce2e3007f2583094ad272f2670d120fbcc3df3b0b0a631ba96ecad49f9e2297d93ff8995ce0d3292d08dd7eabe162f5b224d69 + languageName: node + linkType: hard + "tough-cookie@npm:~2.5.0": version: 2.5.0 resolution: "tough-cookie@npm:2.5.0" @@ -11735,6 +16772,15 @@ __metadata: languageName: node linkType: hard +"tr46@npm:^2.1.0": + version: 2.1.0 + resolution: "tr46@npm:2.1.0" + dependencies: + punycode: ^2.1.1 + checksum: ffe6049b9dca3ae329b059aada7f515b0f0064c611b39b51ff6b53897e954650f6f63d9319c6c008d36ead477c7b55e5f64c9dc60588ddc91ff720d64eb710b3 + languageName: node + linkType: hard + "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -11756,6 +16802,20 @@ __metadata: languageName: node linkType: hard +"trim-newlines@npm:^1.0.0": + version: 1.0.0 + resolution: "trim-newlines@npm:1.0.0" + checksum: ed96eea318581c6f894c0a98d0c4f16dcce11a41794ce140a79db55f1cab709cd9117578ee5e49a9b52f41e9cd93eaf3efa6c4bddbc77afbf91128b396fadbc1 + languageName: node + linkType: hard + +"trim-newlines@npm:^2.0.0": + version: 2.0.0 + resolution: "trim-newlines@npm:2.0.0" + checksum: 8a288a860f051f585bdda07ffb97e9e0791ca7c5c1c025b6af4badac185f2eed23ccedeb54da2a79e06ead69824d69b6c9c35c7a69c48e07ee56ac76f91c3096 + languageName: node + linkType: hard + "trim-newlines@npm:^3.0.0": version: 3.0.1 resolution: "trim-newlines@npm:3.0.1" @@ -11763,6 +16823,98 @@ __metadata: languageName: node linkType: hard +"ts-jest@npm:^27.0.5": + version: 27.1.4 + resolution: "ts-jest@npm:27.1.4" + dependencies: + bs-logger: 0.x + fast-json-stable-stringify: 2.x + jest-util: ^27.0.0 + json5: 2.x + lodash.memoize: 4.x + make-error: 1.x + semver: 7.x + yargs-parser: 20.x + peerDependencies: + "@babel/core": ">=7.0.0-beta.0 <8" + "@types/jest": ^27.0.0 + babel-jest: ">=27.0.0 <28" + jest: ^27.0.0 + typescript: ">=3.8 <5.0" + peerDependenciesMeta: + "@babel/core": + optional: true + "@types/jest": + optional: true + babel-jest: + optional: true + esbuild: + optional: true + bin: + ts-jest: cli.js + checksum: d2cc2719ed2884a880ab50d2c14c311834be9c88bc79d0064fa0189afce5c296d7676314d26cc3f7e82ddd52df272c2d4137a832c89616f30cbe8f43e30f9a29 + languageName: node + linkType: hard + +"ts-node@npm:^10.2.1, ts-node@npm:^10.7.0": + version: 10.7.0 + resolution: "ts-node@npm:10.7.0" + dependencies: + "@cspotcode/source-map-support": 0.7.0 + "@tsconfig/node10": ^1.0.7 + "@tsconfig/node12": ^1.0.7 + "@tsconfig/node14": ^1.0.0 + "@tsconfig/node16": ^1.0.2 + acorn: ^8.4.1 + acorn-walk: ^8.1.1 + arg: ^4.1.0 + create-require: ^1.1.0 + diff: ^4.0.1 + make-error: ^1.1.1 + v8-compile-cache-lib: ^3.0.0 + yn: 3.1.1 + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: 2a379e43f7478d0b79e1e63af91fe222d83857727957df4bd3bdf3c0a884de5097b12feb9bbf530074526b8874c0338b0e6328cf334f3a5e2c49c71e837273f7 + languageName: node + linkType: hard + +"ts-node@npm:^9": + version: 9.1.1 + resolution: "ts-node@npm:9.1.1" + dependencies: + arg: ^4.1.0 + create-require: ^1.1.0 + diff: ^4.0.1 + make-error: ^1.1.1 + source-map-support: ^0.5.17 + yn: 3.1.1 + peerDependencies: + typescript: ">=2.7" + bin: + ts-node: dist/bin.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: 356e2647b8b1e6ab00380c0537fa569b63bd9b6f006cc40fd650f81fae1817bd8fecc075300036950d8f45c1d85b95be33cd1e48a1a424a7d86c3dbb42bf60e5 + languageName: node + linkType: hard + "tsconfig-paths@npm:^3.12.0": version: 3.14.0 resolution: "tsconfig-paths@npm:3.14.0" @@ -11775,6 +16927,25 @@ __metadata: languageName: node linkType: hard +"tsconfig-paths@npm:^3.14.1": + version: 3.14.1 + resolution: "tsconfig-paths@npm:3.14.1" + dependencies: + "@types/json5": ^0.0.29 + json5: ^1.0.1 + minimist: ^1.2.6 + strip-bom: ^3.0.0 + checksum: 8afa01c673ebb4782ba53d3a12df97fa837ce524f8ad38ee4e2b2fd57f5ac79abc21c574e9e9eb014d93efe7fe8214001b96233b5c6ea75bd1ea82afe17a4c6d + languageName: node + linkType: hard + +"tslib@npm:2.1.0": + version: 2.1.0 + resolution: "tslib@npm:2.1.0" + checksum: aa189c8179de0427b0906da30926fd53c59d96ec239dff87d6e6bc831f608df0cbd6f77c61dabc074408bd0aa0b9ae4ec35cb2c15f729e32f37274db5730cb78 + languageName: node + linkType: hard + "tslib@npm:^1.8.1, tslib@npm:^1.9.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" @@ -11782,7 +16953,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.1.0": +"tslib@npm:^2, tslib@npm:^2.1.0, tslib@npm:^2.3.1": version: 2.3.1 resolution: "tslib@npm:2.3.1" checksum: de17a98d4614481f7fcb5cd53ffc1aaf8654313be0291e1bfaee4b4bb31a20494b7d218ff2e15017883e8ea9626599b3b0e0229c18383ba9dce89da2adf15cb9 @@ -11832,6 +17003,36 @@ __metadata: languageName: node linkType: hard +"type-check@npm:~0.3.2": + version: 0.3.2 + resolution: "type-check@npm:0.3.2" + dependencies: + prelude-ls: ~1.1.2 + checksum: dd3b1495642731bc0e1fc40abe5e977e0263005551ac83342ecb6f4f89551d106b368ec32ad3fb2da19b3bd7b2d1f64330da2ea9176d8ddbfe389fb286eb5124 + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 + languageName: node + linkType: hard + +"type-fest@npm:^0.10.0": + version: 0.10.0 + resolution: "type-fest@npm:0.10.0" + checksum: 83411824cac9aa3b130704ea53de8ab3a0607e20eca3590a73a4bb79a5a1eaccc502181b86916e9d1965d48dfc8343a2fe373c2262322d1d8e00f65c14bab506 + languageName: node + linkType: hard + +"type-fest@npm:^0.13.1": + version: 0.13.1 + resolution: "type-fest@npm:0.13.1" + checksum: e6bf2e3c449f27d4ef5d56faf8b86feafbc3aec3025fc9a5fbe2db0a2587c44714521f9c30d8516a833c8c506d6263f5cc11267522b10c6ccdb6cc55b0a9d1c4 + languageName: node + linkType: hard + "type-fest@npm:^0.16.0": version: 0.16.0 resolution: "type-fest@npm:0.16.0" @@ -11881,6 +17082,15 @@ __metadata: languageName: node linkType: hard +"typedarray-to-buffer@npm:^3.1.5": + version: 3.1.5 + resolution: "typedarray-to-buffer@npm:3.1.5" + dependencies: + is-typedarray: ^1.0.0 + checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 + languageName: node + linkType: hard + "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -11888,6 +17098,43 @@ __metadata: languageName: node linkType: hard +"typedoc-default-themes@npm:^0.12.10": + version: 0.12.10 + resolution: "typedoc-default-themes@npm:0.12.10" + checksum: 4c19a0fecdf24777bd153c6ae4a4f2b23c95521a83483cdbee89aaeef985d7e37f2665b37d55f809ef36d0eb4433a921209dc45a1055791d81464bffeea77dfd + languageName: node + linkType: hard + +"typedoc@npm:^0.21.9": + version: 0.21.10 + resolution: "typedoc@npm:0.21.10" + dependencies: + glob: ^7.1.7 + handlebars: ^4.7.7 + lunr: ^2.3.9 + marked: ^4.0.10 + minimatch: ^3.0.0 + progress: ^2.0.3 + shiki: ^0.9.8 + typedoc-default-themes: ^0.12.10 + peerDependencies: + typescript: 4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x + bin: + typedoc: bin/typedoc + checksum: b4f957ad4b3db9e83ecf030629ec45661c2080ab6b91df0a9af6aeb889ade3c5d54b6169cf0db67a6dbc563c3f7cd972c5525aa605c628c51a59175195281f96 + languageName: node + linkType: hard + +"typescript@npm:^4.4.3": + version: 4.6.3 + resolution: "typescript@npm:4.6.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 255bb26c8cb846ca689dd1c3a56587af4f69055907aa2c154796ea28ee0dea871535b1c78f85a6212c77f2657843a269c3a742d09d81495b97b914bf7920415b + languageName: node + linkType: hard + "typescript@npm:^4.5.4": version: 4.6.2 resolution: "typescript@npm:4.6.2" @@ -11898,6 +17145,26 @@ __metadata: languageName: node linkType: hard +"typescript@npm:~4.4.3, typescript@npm:~4.4.4": + version: 4.4.4 + resolution: "typescript@npm:4.4.4" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 89ecb8436bb48ef5594d49289f5f89103071716b6e4844278f4fb3362856e31203e187a9c76d205c3f0b674d221a058fd28310dbcbcf5d95e9a57229bb5203f1 + languageName: node + linkType: hard + +"typescript@patch:typescript@^4.4.3#~builtin<compat/typescript>": + version: 4.6.3 + resolution: "typescript@patch:typescript@npm%3A4.6.3#~builtin<compat/typescript>::version=4.6.3&hash=bda367" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 6bf45caf847062420592e711bc9c28bf5f9a9a7fa8245343b81493e4ededae33f1774009d1234d911422d1646a2c839f44e1a23ecb111b40a60ac2ea4c1482a8 + languageName: node + linkType: hard + "typescript@patch:typescript@^4.5.4#~builtin<compat/typescript>": version: 4.6.2 resolution: "typescript@patch:typescript@npm%3A4.6.2#~builtin<compat/typescript>::version=4.6.2&hash=bda367" @@ -11908,6 +17175,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@~4.4.3#~builtin<compat/typescript>, typescript@patch:typescript@~4.4.4#~builtin<compat/typescript>": + version: 4.4.4 + resolution: "typescript@patch:typescript@npm%3A4.4.4#~builtin<compat/typescript>::version=4.4.4&hash=bda367" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 3d1b04449662193544b81d055479d03b4c5dca95f1a82f8922596f089d894c9fefbe16639d1d9dfe26a7054419645530cef44001bc17aed1fe1eb3c237e9b3c7 + languageName: node + linkType: hard + "uglify-js@npm:^3.1.4": version: 3.15.3 resolution: "uglify-js@npm:3.15.3" @@ -11944,9 +17221,10 @@ __metadata: axios: ^0.26.1 bootstrap: ^4.6.1 bootstrap-icons: ^1.8.1 - bootstrap-vue: ^2.21.2 + bootstrap-vue: ^2.22.0 conventional-changelog-eslint: ^3.0.9 core-js: ^3.21.1 + deep-object-diff: ^1.1.7 eslint: ^8.11.0 eslint-import-resolver-node: ^0.3.6 eslint-plugin-eslint-comments: ^3.2.0 @@ -12043,6 +17321,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^0.1.0, universalify@npm:^0.1.2": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff + languageName: node + linkType: hard + "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" @@ -12137,6 +17422,31 @@ __metadata: languageName: node linkType: hard +"url-parse-lax@npm:^1.0.0": + version: 1.0.0 + resolution: "url-parse-lax@npm:1.0.0" + dependencies: + prepend-http: ^1.0.1 + checksum: 03316acff753845329652258c16d1688765ee34f7d242a94dadf9ff6e43ea567ec062cec7aa27c37f76f2c57f95e0660695afff32fb97b527591c7340a3090fa + languageName: node + linkType: hard + +"url-parse-lax@npm:^3.0.0": + version: 3.0.0 + resolution: "url-parse-lax@npm:3.0.0" + dependencies: + prepend-http: ^2.0.0 + checksum: 1040e357750451173132228036aff1fd04abbd43eac1fb3e4fca7495a078bcb8d33cb765fe71ad7e473d9c94d98fd67adca63bd2716c815a2da066198dd37217 + languageName: node + linkType: hard + +"url-to-options@npm:^1.0.1": + version: 1.0.1 + resolution: "url-to-options@npm:1.0.1" + checksum: 20e59f4578525fb0d30ffc22b13b5aa60bc9e57cefd4f5842720f5b57211b6dec54abeae2d675381ac4486fd1a2e987f1318725dea996e503ff89f8c8ce2c17e + languageName: node + linkType: hard + "url@npm:^0.11.0": version: 0.11.0 resolution: "url@npm:0.11.0" @@ -12197,6 +17507,13 @@ __metadata: languageName: node linkType: hard +"v8-compile-cache-lib@npm:^3.0.0": + version: 3.0.0 + resolution: "v8-compile-cache-lib@npm:3.0.0" + checksum: 674e312bbca796584b61dc915f33c7e7dc4e06d196e0048cb772c8964493a1ec723f1dd014d9419fd55c24a6eae148f60769da23f622e05cd13268063fa1ed6b + languageName: node + linkType: hard + "v8-compile-cache@npm:^2.0.3": version: 2.3.0 resolution: "v8-compile-cache@npm:2.3.0" @@ -12204,6 +17521,17 @@ __metadata: languageName: node linkType: hard +"v8-to-istanbul@npm:^8.1.0": + version: 8.1.1 + resolution: "v8-to-istanbul@npm:8.1.1" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.1 + convert-source-map: ^1.6.0 + source-map: ^0.7.3 + checksum: 54ce92bec2727879626f623d02c8d193f0c7e919941fa373ec135189a8382265117f5316ea317a1e12a5f9c13d84d8449052a731fe3306fa4beaafbfa4cab229 + languageName: node + linkType: hard + "validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" @@ -12322,6 +17650,13 @@ __metadata: languageName: node linkType: hard +"vlq@npm:^0.2.2": + version: 0.2.3 + resolution: "vlq@npm:0.2.3" + checksum: 2231d8caeb5b2c1a438677ab029e9a94aa6fb61ab05819c72691b792aea0456dab29576aff5ae29309ee45bad0a309e832dc45173119bca1393f3b87709d8f8d + languageName: node + linkType: hard + "vm-browserify@npm:^1.0.1": version: 1.1.2 resolution: "vm-browserify@npm:1.1.2" @@ -12329,6 +17664,20 @@ __metadata: languageName: node linkType: hard +"vscode-oniguruma@npm:^1.6.1": + version: 1.6.2 + resolution: "vscode-oniguruma@npm:1.6.2" + checksum: 6b754acdafd5b68242ea5938bb00a32effc16c77f471d4f0f337d879d0e8e592622998e2441f42d9a7ff799c1593f31c11f26ca8d9bf9917e3ca881d3c1f3e19 + languageName: node + linkType: hard + +"vscode-textmate@npm:5.2.0": + version: 5.2.0 + resolution: "vscode-textmate@npm:5.2.0" + checksum: 5449b42d451080f6f3649b66948f4b5ee4643c4e88cfe3558a3b31c84c78060cfdd288c4958c1690eaa5cd65d09992fa6b7c3bef9d4aa72b3651054a04624d20 + languageName: node + linkType: hard + "vue-demi@npm:*, vue-demi@npm:^0.12.1": version: 0.12.2 resolution: "vue-demi@npm:0.12.2" @@ -12471,6 +17820,24 @@ __metadata: languageName: node linkType: hard +"w3c-hr-time@npm:^1.0.2": + version: 1.0.2 + resolution: "w3c-hr-time@npm:1.0.2" + dependencies: + browser-process-hrtime: ^1.0.0 + checksum: ec3c2dacbf8050d917bbf89537a101a08c2e333b4c19155f7d3bedde43529d4339db6b3d049d9610789cb915f9515f8be037e0c54c079e9d4735c50b37ed52b9 + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^2.0.0": + version: 2.0.0 + resolution: "w3c-xmlserializer@npm:2.0.0" + dependencies: + xml-name-validator: ^3.0.0 + checksum: ae25c51cf71f1fb2516df1ab33a481f83461a117565b95e3d0927432522323f93b1b2846cbb60196d337970c421adb604fc2d0d180c6a47a839da01db5b9973b + languageName: node + linkType: hard + "walk-up-path@npm:^1.0.0": version: 1.0.0 resolution: "walk-up-path@npm:1.0.0" @@ -12478,6 +17845,15 @@ __metadata: languageName: node linkType: hard +"walker@npm:^1.0.7": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: 1.0.12 + checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c + languageName: node + linkType: hard + "watchpack-chokidar2@npm:^2.0.1": version: 2.0.1 resolution: "watchpack-chokidar2@npm:2.0.1" @@ -12538,6 +17914,20 @@ __metadata: languageName: node linkType: hard +"webidl-conversions@npm:^5.0.0": + version: 5.0.0 + resolution: "webidl-conversions@npm:5.0.0" + checksum: ccf1ec2ca7c0b5671e5440ace4a66806ae09c49016ab821481bec0c05b1b82695082dc0a27d1fe9d804d475a408ba0c691e6803fd21be608e710955d4589cd69 + languageName: node + linkType: hard + +"webidl-conversions@npm:^6.1.0": + version: 6.1.0 + resolution: "webidl-conversions@npm:6.1.0" + checksum: 1f526507aa491f972a0c1409d07f8444e1d28778dfa269a9971f2e157182f3d496dc33296e4ed45b157fdb3bf535bb90c90bf10c50dcf1dd6caacb2a34cc84fb + languageName: node + linkType: hard + "webpack-sources@npm:^1.4.0, webpack-sources@npm:^1.4.1": version: 1.4.3 resolution: "webpack-sources@npm:1.4.3" @@ -12593,6 +17983,22 @@ __metadata: languageName: node linkType: hard +"whatwg-encoding@npm:^1.0.5": + version: 1.0.5 + resolution: "whatwg-encoding@npm:1.0.5" + dependencies: + iconv-lite: 0.4.24 + checksum: 5be4efe111dce29ddee3448d3915477fcc3b28f991d9cf1300b4e50d6d189010d47bca2f51140a844cf9b726e8f066f4aee72a04d687bfe4f2ee2767b2f5b1e6 + languageName: node + linkType: hard + +"whatwg-mimetype@npm:^2.3.0": + version: 2.3.0 + resolution: "whatwg-mimetype@npm:2.3.0" + checksum: 23eb885940bcbcca4ff841c40a78e9cbb893ec42743993a42bf7aed16085b048b44b06f3402018931687153550f9a32d259dfa524e4f03577ab898b6965e5383 + languageName: node + linkType: hard + "whatwg-url@npm:^5.0.0": version: 5.0.0 resolution: "whatwg-url@npm:5.0.0" @@ -12603,6 +18009,17 @@ __metadata: languageName: node linkType: hard +"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": + version: 8.7.0 + resolution: "whatwg-url@npm:8.7.0" + dependencies: + lodash: ^4.7.0 + tr46: ^2.1.0 + webidl-conversions: ^6.1.0 + checksum: a87abcc6cefcece5311eb642858c8fdb234e51ec74196bfacf8def2edae1bfbffdf6acb251646ed6301f8cee44262642d8769c707256125a91387e33f405dd1e + languageName: node + linkType: hard + "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" @@ -12627,7 +18044,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.9": +"which@npm:^1.2.14, which@npm:^1.2.9": version: 1.3.1 resolution: "which@npm:1.3.1" dependencies: @@ -12656,7 +18073,21 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.3": +"winston@npm:2.x": + version: 2.4.5 + resolution: "winston@npm:2.4.5" + dependencies: + async: ~1.0.0 + colors: 1.0.x + cycle: 1.0.x + eyes: 0.1.x + isstream: 0.1.x + stack-trace: 0.0.x + checksum: aba54cae4c97df6f01c6ad98b5ecbf79eaa79326b5f99c379063e91a9bd6dd961b2958768d850546b7a54ef159ecc67bcaf08a6fec4029592be7436d955460f0 + languageName: node + linkType: hard + +"word-wrap@npm:^1.0.3, word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": version: 1.2.3 resolution: "word-wrap@npm:1.2.3" checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f @@ -12718,6 +18149,47 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^3.0.0": + version: 3.0.3 + resolution: "write-file-atomic@npm:3.0.3" + dependencies: + imurmurhash: ^0.1.4 + is-typedarray: ^1.0.0 + signal-exit: ^3.0.2 + typedarray-to-buffer: ^3.1.5 + checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 + languageName: node + linkType: hard + +"ws@npm:^7.4.6": + version: 7.5.7 + resolution: "ws@npm:7.5.7" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 5c1f669a166fb57560b4e07f201375137fa31d9186afde78b1508926345ce546332f109081574ddc4e38cc474c5406b5fc71c18d71eb75f6e2d2245576976cba + languageName: node + linkType: hard + +"xml-name-validator@npm:^3.0.0": + version: 3.0.0 + resolution: "xml-name-validator@npm:3.0.0" + checksum: b3ac459afed783c285bb98e4960bd1f3ba12754fd4f2320efa0f9181ca28928c53cc75ca660d15d205e81f92304419afe94c531c7cfb3e0649aa6d140d53ecb0 + languageName: node + linkType: hard + +"xmlchars@npm:^2.2.0": + version: 2.2.0 + resolution: "xmlchars@npm:2.2.0" + checksum: 8c70ac94070ccca03f47a81fcce3b271bd1f37a591bf5424e787ae313fcb9c212f5f6786e1fa82076a2c632c0141552babcd85698c437506dfa6ae2d58723062 + languageName: node + linkType: hard + "xtend@npm:^4.0.0, xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" @@ -12767,13 +18239,39 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": +"yargs-parser@npm:20.x, yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 languageName: node linkType: hard +"yargs-parser@npm:^10.0.0": + version: 10.1.0 + resolution: "yargs-parser@npm:10.1.0" + dependencies: + camelcase: ^4.1.0 + checksum: 4cd46207839192785675893ae2d69ebc9acb31237f0f1a4016002fecdd92715656fd44facc27172e437ac503dbd5793f534cb2d412347e525b426ffcac727080 + languageName: node + linkType: hard + +"yargs-parser@npm:^18.1.3": + version: 18.1.3 + resolution: "yargs-parser@npm:18.1.3" + dependencies: + camelcase: ^5.0.0 + decamelize: ^1.2.0 + checksum: 60e8c7d1b85814594d3719300ecad4e6ae3796748b0926137bfec1f3042581b8646d67e83c6fc80a692ef08b8390f21ddcacb9464476c39bbdf52e34961dd4d9 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.0.0": + version: 21.0.1 + resolution: "yargs-parser@npm:21.0.1" + checksum: c3ea2ed12cad0377ce3096b3f138df8267edf7b1aa7d710cd502fe16af417bafe4443dd71b28158c22fcd1be5dfd0e86319597e47badf42ff83815485887323a + languageName: node + linkType: hard + "yargs@npm:^16.2.0": version: 16.2.0 resolution: "yargs@npm:16.2.0" @@ -12789,6 +18287,35 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^17.0.0, yargs@npm:^17.2.1": + version: 17.4.1 + resolution: "yargs@npm:17.4.1" + dependencies: + cliui: ^7.0.2 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.3 + y18n: ^5.0.5 + yargs-parser: ^21.0.0 + checksum: e9012322870d7e4e912a6ae1f63b203e365f911c0cf158be92c36edefddfb3bd38ce17eb9ef0d18858a4777f047c50589ea22dacb44bd949169ba37dc6d34bee + languageName: node + linkType: hard + +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 + languageName: node + linkType: hard + "yorkie@npm:^2.0.0": version: 2.0.0 resolution: "yorkie@npm:2.0.0"