mirror of
https://github.com/strapi/strapi.git
synced 2025-12-25 14:14:10 +00:00
Merge branch 'main' into feature/relations-reordering
This commit is contained in:
commit
99f1b3a8b6
@ -72,12 +72,12 @@ Community leaders will follow these Community Impact Guidelines in determining t
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][mozilla coc].
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations].
|
||||
For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][faq]. Translations are available at [https://www.contributor-covenant.org/translations][translations].
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[mozilla coc]: https://github.com/mozilla/diversity
|
||||
[faq]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
|
||||
103
docs/docs/core/hooks/use-fetch-client.mdx
Normal file
103
docs/docs/core/hooks/use-fetch-client.mdx
Normal file
@ -0,0 +1,103 @@
|
||||
---
|
||||
title: useFetchClient
|
||||
slug: /hooks/use-fetch-client
|
||||
description: API reference for the useFetchClient hook in Strapi
|
||||
tags:
|
||||
- hooks
|
||||
- axios
|
||||
- data
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
The following example shows a basic way to use the `useFetchClient` hook to make a get request to a Strapi backend endpoint:
|
||||
|
||||
```jsx
|
||||
import {useState} from "react"
|
||||
import useFetchClient from '@strapi/admin/admin/src/hooks/useFetchClient';
|
||||
|
||||
const Component = () => {
|
||||
const [items, setItems] = useState([]);
|
||||
const { get } = useFetchClient();
|
||||
const requestURL = "/some-endpoint";
|
||||
|
||||
const handleGetData = async () => {
|
||||
const { data } = await get(requestURL);
|
||||
setItems(data.items);
|
||||
}
|
||||
|
||||
return(
|
||||
<div>
|
||||
<div>
|
||||
{
|
||||
items && items.map(item => <h2 key={item.uuid}>{item.name}</h2>))
|
||||
}
|
||||
</div>
|
||||
<button onClick={handleGetData}>Show Items</button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
```
|
||||
|
||||
## Methods
|
||||
|
||||
Essentially, this is an abstraction around the axios instance exposed by a hook. It provides a simple interface to handle API calls to the Strapi backend.
|
||||
It handles request cancellations inside the hook with an [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController). This is typically triggered when the component is unmounted so all the requests that it is currently making are aborted.
|
||||
|
||||
The hook exposes four methods:
|
||||
|
||||
- **get(url, config)**: requires a relative url (`string`) and makes a `GET` request to the Strapi backend with an optional configuration `object` passed as second parameter.
|
||||
- **post(url, data, config)**: requires a relative url (`string`) and makes a `POST` request with the required data `object` to the Strapi backend with the optional configuration `object` passed as third parameter.
|
||||
- **put(url, data, config)**: requires a relative url (`string`) and makes a `PUT` request with the required data `object` to the Strapi backend with the optional configuration `object` passed as third parameter.
|
||||
- **del(url, config)**: requires a relative url (`string`) and makes a `DELETE` request to the Strapi backend with an optional configuration `object` passed as second parameter.
|
||||
|
||||
## Implementation details
|
||||
|
||||
The following information is the internal additions we've added to the axios instance via two request interceptors. As well as an explanation of the `baseUrl`.
|
||||
|
||||
### Base URL
|
||||
|
||||
The default URL will be the one defined in the environment variable: `STRAPI_ADMIN_BACKEND_URL`.
|
||||
|
||||
### Interceptors
|
||||
|
||||
#### Request
|
||||
|
||||
The request interceptor adds the following parameters to the header:
|
||||
|
||||
```js
|
||||
{
|
||||
Authorization: `Bearer <AUTH_TOKEN>`,
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
```
|
||||
|
||||
#### Response
|
||||
|
||||
If everything works correctly, the response is returned as it comes from the backend. However, if it contains a **status code of 401** the authentication details will be removed from
|
||||
the application storage and the window will be reloaded.
|
||||
|
||||
:::caution
|
||||
Have this in mind if using this hook in pages where the auth token is not available, such as `login`, because it will create an infinite loop. See the [Troubleshooting](#troubleshooting) section for more information.
|
||||
:::
|
||||
|
||||
## Further Reading
|
||||
|
||||
- [axios instance API](https://axios-http.com/docs/instance)
|
||||
- [AbortController](https://axios-http.com/docs/cancellation)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Authentication problems
|
||||
|
||||
Trying to access a protected route from a context where the auth token is not available may lead to an infinite loop due to the response interceptor that
|
||||
reloads the page when obtaining a 401 response. One option to avoid this from happening is to not consider a 401 response as an error, see below:
|
||||
|
||||
```js
|
||||
const {
|
||||
data: { data: properties },
|
||||
} = await get(`/protected-endpoint`, {
|
||||
validateStatus: (status) => status < 500,
|
||||
});
|
||||
```
|
||||
@ -50,6 +50,17 @@ const sidebars = {
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Hooks',
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'useFetchClient',
|
||||
id: 'core/hooks/use-fetch-client',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Content Type Builder',
|
||||
|
||||
@ -57,10 +57,10 @@
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,md,css,scss,yaml,yml}": [
|
||||
"prettier --write"
|
||||
"prettier --cache --cache-strategy content --write"
|
||||
],
|
||||
"*.js": [
|
||||
"eslint --fix"
|
||||
"eslint --cache --cache-strategy content --cache-location ./node_modules/.cache/eslint --fix"
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@ -284,7 +284,8 @@ const createYupSchemaAttribute = (type, validations, options) => {
|
||||
}
|
||||
|
||||
if (type === 'boolean') {
|
||||
return value !== null;
|
||||
// Boolean value can be undefined/unset in modifiedData when generated in a new component
|
||||
return value !== null && value !== undefined;
|
||||
}
|
||||
|
||||
if (type === 'date' || type === 'datetime') {
|
||||
|
||||
@ -22,7 +22,9 @@ import getTrad from '../../../utils/getTrad';
|
||||
import { makeSelectModelLinks } from '../selectors';
|
||||
|
||||
const matchByTitle = (links, search) =>
|
||||
matchSorter(links, toLower(search), { keys: [(item) => toLower(item.title)] });
|
||||
search
|
||||
? matchSorter(links, toLower(search), { keys: [(item) => toLower(item.title)] })
|
||||
: sortBy(links, (object) => object.title.toLowerCase());
|
||||
|
||||
const LeftMenu = () => {
|
||||
const [search, setSearch] = useState('');
|
||||
@ -52,9 +54,7 @@ const LeftMenu = () => {
|
||||
defaultMessage: 'Collection Types',
|
||||
},
|
||||
searchable: true,
|
||||
links: sortBy(matchByTitle(intlCollectionTypeLinks, search), (object) =>
|
||||
object.title.toLowerCase()
|
||||
),
|
||||
links: matchByTitle(intlCollectionTypeLinks, search),
|
||||
},
|
||||
{
|
||||
id: 'singleTypes',
|
||||
@ -63,9 +63,7 @@ const LeftMenu = () => {
|
||||
defaultMessage: 'Single Types',
|
||||
},
|
||||
searchable: true,
|
||||
links: sortBy(matchByTitle(intlSingleTypeLinks, search), (object) =>
|
||||
object.title.toLowerCase()
|
||||
),
|
||||
links: matchByTitle(intlSingleTypeLinks, search),
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import isEqual from 'lodash/isEqual';
|
||||
import upperFirst from 'lodash/upperFirst';
|
||||
import pick from 'lodash/pick';
|
||||
import get from 'lodash/get';
|
||||
import isEmpty from 'lodash/isEmpty';
|
||||
import { stringify } from 'qs';
|
||||
import { useNotification, useTracking, ConfirmDialog, Link } from '@strapi/helper-plugin';
|
||||
import { useIntl } from 'react-intl';
|
||||
@ -35,12 +36,12 @@ const ListSettingsView = ({ layout, slug }) => {
|
||||
|
||||
const [showWarningSubmit, setWarningSubmit] = useState(false);
|
||||
const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);
|
||||
const [isModalFormOpen, setIsModalFormOpen] = useState(false);
|
||||
const toggleModalForm = () => setIsModalFormOpen((prevState) => !prevState);
|
||||
const [reducerState, dispatch] = useReducer(reducer, initialState, () =>
|
||||
init(initialState, layout)
|
||||
);
|
||||
const { fieldToEdit, fieldForm, initialData, modifiedData } = reducerState;
|
||||
const isModalFormOpen = !isEmpty(fieldForm);
|
||||
|
||||
const { attributes } = layout;
|
||||
const displayedFields = modifiedData.layouts.list;
|
||||
|
||||
@ -110,19 +111,16 @@ const ListSettingsView = ({ layout, slug }) => {
|
||||
type: 'SET_FIELD_TO_EDIT',
|
||||
fieldToEdit,
|
||||
});
|
||||
toggleModalForm();
|
||||
};
|
||||
|
||||
const handleCloseModal = () => {
|
||||
dispatch({
|
||||
type: 'UNSET_FIELD_TO_EDIT',
|
||||
});
|
||||
toggleModalForm();
|
||||
};
|
||||
|
||||
const handleSubmitFieldEdit = (e) => {
|
||||
e.preventDefault();
|
||||
toggleModalForm();
|
||||
dispatch({
|
||||
type: 'SUBMIT_FIELD_FORM',
|
||||
});
|
||||
|
||||
@ -728,6 +728,13 @@
|
||||
"content-manager.popUpWarning.warning.publish-question": "Do you still want to publish?",
|
||||
"content-manager.popUpwarning.warning.has-draft-relations.button-confirm": "Yes, publish",
|
||||
"content-manager.popUpwarning.warning.has-draft-relations.message": "<b>{count, plural, one { relation is } other { relations are } }</b> not published yet and might lead to unexpected behavior.",
|
||||
"content-manager.relation.loadMore": "Load More",
|
||||
"content-manager.relation.disconnect": "Remove",
|
||||
"content-manager.relation.isLoading": "Relations are loading",
|
||||
"content-manager.relation.notAvailable": "No relations available",
|
||||
"content-manager.relation.add": "Add relation",
|
||||
"content-manager.relation.publicationState.draft": "Draft",
|
||||
"content-manager.relation.publicationState.published": "Published",
|
||||
"form.button.continue": "Continue",
|
||||
"form.button.done": "Done",
|
||||
"global.search": "Search",
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
"Auth.components.Oops.text": "A fiókodat felfüggesztettük",
|
||||
"Auth.components.Oops.text.admin": "Amennyiben ez hiba, kérjük vegye fel a kapcsolatot az adminisztrátorokkal!",
|
||||
"Auth.components.Oops.title": "Oops...",
|
||||
"Auth.form.active.label": "Aktív",
|
||||
"Auth.form.button.forgot-password": "Email küldése",
|
||||
"Auth.form.button.go-home": "Vissza a kezdőlapra",
|
||||
"Auth.form.button.login": "Bejelentkezés",
|
||||
@ -30,11 +31,11 @@
|
||||
"Auth.form.error.user.not-exist": "Ez az email nem létezik.",
|
||||
"Auth.form.error.username.taken": "A felhasználónév foglalt.",
|
||||
"Auth.form.firstname.label": "Keresztnév",
|
||||
"Auth.form.firstname.placeholder": "e.g. Kai",
|
||||
"Auth.form.firstname.placeholder": "pl. Elek",
|
||||
"Auth.form.forgot-password.email.label": "Adja meg az email címét",
|
||||
"Auth.form.forgot-password.email.label.success": "Az email-t sikeresen kiküldtük",
|
||||
"Auth.form.lastname.label": "Vezetéknév",
|
||||
"Auth.form.lastname.placeholder": "e.g. Doe",
|
||||
"Auth.form.lastname.placeholder": "pl. Teszt",
|
||||
"Auth.form.password.hide-password": "Jelszó elrejtése",
|
||||
"Auth.form.password.hint": "A jelszónak legalább 8 karaktert, 1 nagybetűt, 1 kisbetűt és 1 számot kell tartalmaznia.",
|
||||
"Auth.form.password.show-password": "Jelszó megjelenítése",
|
||||
@ -54,6 +55,7 @@
|
||||
"Auth.login.sso.subtitle": "Bejelentkezés a fiókjába SSO-val",
|
||||
"Auth.privacy-policy-agreement.policy": "adatvédelmi nyilatkozat",
|
||||
"Auth.privacy-policy-agreement.terms": "felhasználási feltételek",
|
||||
"Auth.reset-password.title": "Jelszó visszaállítása",
|
||||
"Content Manager": "Tartalom Menedzser",
|
||||
"Content Type Builder": "Tartalomtípus építő",
|
||||
"Documentation": "Dokumentáció",
|
||||
@ -74,6 +76,7 @@
|
||||
"Roles.ListPage.notification.delete-all-not-allowed": "Egyes szerepkörök nem törölhetők, mivel felhasználókhoz vannak társítva",
|
||||
"Roles.ListPage.notification.delete-not-allowed": "A felhasználókhoz társított szerepkör nem törölhető",
|
||||
"Roles.RoleRow.select-all": "{name} kiválasztása tömeges műveletekhez",
|
||||
"Roles.RoleRow.user-count": "{number, plural, =0 {# felhasználó} one {# felhasználó} other {# felhasználók}}",
|
||||
"Roles.components.List.empty.withSearch": "Nincs a keresésnek megfelelő szerepkör ({search})...",
|
||||
"Settings.PageTitle": "Beállítások - {name}",
|
||||
"Settings.apiTokens.addFirstToken": "Első API Token hozzáadása",
|
||||
@ -84,10 +87,28 @@
|
||||
"Settings.apiTokens.create": "Új hozzáadása",
|
||||
"Settings.apiTokens.description": "Az API felhasználásához generált tokenek listája",
|
||||
"Settings.apiTokens.emptyStateLayout": "Még nincs tartalom hozzáadva...",
|
||||
"Settings.apiTokens.ListView.headers.name": "Név",
|
||||
"Settings.apiTokens.ListView.headers.description": "Leírás",
|
||||
"Settings.apiTokens.ListView.headers.type": "Token típusa",
|
||||
"Settings.apiTokens.ListView.headers.createdAt": "Létrehozva",
|
||||
"Settings.apiTokens.ListView.headers.lastUsedAt": "Utoljára használva",
|
||||
"Settings.apiTokens.notification.copied": "Token a vágólapra másolva.",
|
||||
"Settings.apiTokens.title": "API Token-ek",
|
||||
"Settings.apiTokens.types.full-access": "Teljes hozzáférés",
|
||||
"Settings.apiTokens.types.read-only": "Csak olvasható",
|
||||
"Settings.apiTokens.duration.7-days": "7 nap",
|
||||
"Settings.apiTokens.duration.30-days": "30 nap",
|
||||
"Settings.apiTokens.duration.90-days": "90 nap",
|
||||
"Settings.apiTokens.duration.unlimited": "Korlátlan",
|
||||
"Settings.apiTokens.form.duration": "Token időtartama",
|
||||
"Settings.apiTokens.form.type": "Token típusa",
|
||||
"Settings.apiTokens.duration.expiration-date": "Lejárati dátum",
|
||||
"Settings.apiTokens.createPage.permissions.title": "Engedélyek",
|
||||
"Settings.apiTokens.createPage.permissions.description": "Csak az útvonalakhoz kötött műveletek szerepelnek az alábbiakban.",
|
||||
"Settings.apiTokens.RegenerateDialog.title": "Token újragenerálása",
|
||||
"Settings.apiTokens.popUpWarning.message": "Biztosan újragenerálod ezt a token-t?",
|
||||
"Settings.apiTokens.Button.cancel": "Mégse",
|
||||
"Settings.apiTokens.Button.regenerate": "Újragenerálás",
|
||||
"Settings.application.description": "Az adminisztrációs panel globális információi",
|
||||
"Settings.application.edition-title": "Aktuális csomag",
|
||||
"Settings.application.get-help": "Kérje segítségünket",
|
||||
@ -97,6 +118,31 @@
|
||||
"Settings.application.strapi-version": "strapi verzió",
|
||||
"Settings.application.strapiVersion": "strapi verzió",
|
||||
"Settings.application.title": "Áttekintés",
|
||||
"Settings.application.customization": "Testreszabás",
|
||||
"Settings.application.customization.carousel.title": "Logó",
|
||||
"Settings.application.customization.carousel.change-action": "Logó módosítása",
|
||||
"Settings.application.customization.carousel.reset-action": "Logó visszaállítása",
|
||||
"Settings.application.customization.carousel-slide.label": "Logó diasor",
|
||||
"Settings.application.customization.carousel-hint": "Változtasd meg az admin panel logóját (Max méret: {dimension}x{dimension}, Max fájlméret: {size}KB)",
|
||||
"Settings.application.customization.modal.cancel": "Mégse",
|
||||
"Settings.application.customization.modal.upload": "Logó feltöltése",
|
||||
"Settings.application.customization.modal.tab.label": "Hogyan szeretnéd feltölteni az állományaidat?",
|
||||
"Settings.application.customization.modal.upload.from-computer": "Számítógépről",
|
||||
"Settings.application.customization.modal.upload.file-validation": "Max méret: {dimension}x{dimension}, Max méret: {size}KB",
|
||||
"Settings.application.customization.modal.upload.error-format": "Rossz formátumot töltöttél fel (csak a következő formátumokat fogadja el: jpeg, jpg, png, svg).",
|
||||
"Settings.application.customization.modal.upload.error-size": "A feltöltött fájl túl nagy (max méret: {dimension}x{dimension}, max fájlméret: {size}KB)",
|
||||
"Settings.application.customization.modal.upload.error-network": "Hálózati hiba",
|
||||
"Settings.application.customization.modal.upload.cta.browse": "Fájlok tallózása",
|
||||
"Settings.application.customization.modal.upload.drag-drop": "Húzz és ejtsd ide vagy",
|
||||
"Settings.application.customization.modal.upload.from-url": "URL-ről",
|
||||
"Settings.application.customization.modal.upload.from-url.input-label": "URL",
|
||||
"Settings.application.customization.modal.upload.next": "Következő",
|
||||
"Settings.application.customization.modal.pending": "Függőben lévő logó",
|
||||
"Settings.application.customization.modal.pending.choose-another": "Válassz másik logót",
|
||||
"Settings.application.customization.modal.pending.title": "Logó készen áll a feltöltésre",
|
||||
"Settings.application.customization.modal.pending.subtitle": "Kezeljed a kiválasztott logót a feltöltés előtt",
|
||||
"Settings.application.customization.modal.pending.upload": "Logó feltöltése",
|
||||
"Settings.application.customization.modal.pending.card-badge": "kép",
|
||||
"Settings.error": "Hiba",
|
||||
"Settings.global": "Globális Beállítások",
|
||||
"Settings.permissions": "Adminisztrációs panel",
|
||||
@ -117,16 +163,30 @@
|
||||
"Settings.permissions.users.email": "Email",
|
||||
"Settings.permissions.users.firstname": "Keresztnév",
|
||||
"Settings.permissions.users.lastname": "Vezetéknév",
|
||||
"Settings.permissions.users.user-status": "Felhasználói állapot",
|
||||
"Settings.permissions.users.roles": "Szerepek",
|
||||
"Settings.permissions.users.username": "Felhasználónév",
|
||||
"Settings.permissions.users.active": "Aktív",
|
||||
"Settings.permissions.users.inactive": "Inaktív",
|
||||
"Settings.permissions.users.form.sso": "Csatlakozas SSO-val",
|
||||
"Settings.permissions.users.form.sso.description": "Ha engedélyezve van (ON), a felhasználók bejelentkezhetnek SSO-n keresztül",
|
||||
"Settings.permissions.users.listview.header.subtitle": "Minden felhasználó, aki hozzáfér a Strapi adminisztrációs panelhez",
|
||||
"Settings.permissions.users.tabs.label": "Hozzáférések Tab",
|
||||
"Settings.permissions.users.strapi-super-admin": "Super Adminisztrátor",
|
||||
"Settings.permissions.users.strapi-editor": "Szerkesztő",
|
||||
"Settings.permissions.users.strapi-author": "Szerző",
|
||||
"Settings.profile.form.notify.data.loaded": "Profiladatok betöltve",
|
||||
"Settings.profile.form.section.experience.clear.select": "A kiválasztott felület nyelvének törlése",
|
||||
"Settings.profile.form.section.experience.here": "dokumentáció",
|
||||
"Settings.profile.form.section.experience.here": "itt",
|
||||
"Settings.profile.form.section.experience.documentation": "dokumentáció",
|
||||
"Settings.profile.form.section.experience.interfaceLanguage": "A felület nyelve",
|
||||
"Settings.profile.form.section.experience.interfaceLanguage.hint": "Ez csak a saját felületét jeleníti meg a kiválasztott nyelven.",
|
||||
"Settings.profile.form.section.experience.interfaceLanguageHelp": "A kiválasztás csak az Ön számára módosítja a felület nyelvét. Kérjük, olvassa el ezt a {here}, hogy más nyelveket a csapata számára is elérhetővé tehesse.",
|
||||
"Settings.profile.form.section.experience.interfaceLanguageHelp": "A kiválasztás csak az Ön számára módosítja a felület nyelvét. Kérjük, olvassa el ezt a {document}, hogy más nyelveket a csapata számára is elérhetővé tehesse.",
|
||||
"Settings.profile.form.section.experience.mode.label": "Felület mód",
|
||||
"Settings.profile.form.section.experience.mode.hint": "Megjeleníti a felhasználói felületedet a kiválasztott módban.",
|
||||
"Settings.profile.form.section.experience.mode.option-label": "{name} mód",
|
||||
"light": "Világos",
|
||||
"dark": "Sötét",
|
||||
"Settings.profile.form.section.experience.title": "Tapasztalat",
|
||||
"Settings.profile.form.section.helmet.title": "Felhasználói profil",
|
||||
"Settings.profile.form.section.profile.page.title": "Profil oldal",
|
||||
@ -134,6 +194,7 @@
|
||||
"Settings.roles.create.title": "Szerepkör létrehozása",
|
||||
"Settings.roles.created": "A szerepkör létrejött",
|
||||
"Settings.roles.edit.title": "Szerepkör módosítása",
|
||||
"Settings.roles.form.button.users-with-role": "{number, plural, =0 {# felhasználó} one {# felhasználó} other {# felhasználók}} ezzel a szereppel",
|
||||
"Settings.roles.form.created": "Létrehozva",
|
||||
"Settings.roles.form.description": "A szerepkör neve és leírása",
|
||||
"Settings.roles.form.permission.property-label": "{label} hozzáfére's",
|
||||
@ -173,6 +234,7 @@
|
||||
"Settings.webhooks.list.th.status": "Státusz",
|
||||
"Settings.webhooks.singular": "webhook",
|
||||
"Settings.webhooks.title": "Webhook-ok",
|
||||
"Settings.webhooks.to.delete": "{webhooksToDeleteLength, plural, one {# elem} other {# elemek}} kiválasztva",
|
||||
"Settings.webhooks.trigger": "Kapcsoló",
|
||||
"Settings.webhooks.trigger.cancel": "Kapcsoló törlése",
|
||||
"Settings.webhooks.trigger.pending": "Folyamatban…",
|
||||
@ -182,6 +244,15 @@
|
||||
"Settings.webhooks.trigger.test": "Teszt-kapcsoló",
|
||||
"Settings.webhooks.trigger.title": "Először mentsen",
|
||||
"Settings.webhooks.value": "Érték",
|
||||
"Usecase.back-end": "Back-end fejlesztő",
|
||||
"Usecase.button.skip": "Kérdezés kihagyása",
|
||||
"Usecase.content-creator": "Tartalomkészítő",
|
||||
"Usecase.front-end": "Front-end fejlesztő",
|
||||
"Usecase.full-stack": "Teljeskörű fejlesztő",
|
||||
"Usecase.input.work-type": "Milyen típusú munkát végzel?",
|
||||
"Usecase.notification.success.project-created": "A projekt sikeresen létrehozva",
|
||||
"Usecase.other": "Egyéb",
|
||||
"Usecase.title": "Mesélj egy kicsit magadról",
|
||||
"Username": "Felhasználónév",
|
||||
"Users": "Felhasználók",
|
||||
"Users & Permissions": "Felhasználók & Engedélyek",
|
||||
@ -189,8 +260,45 @@
|
||||
"Users.components.List.empty.withFilters": "Nincs a beállított szűrőknek megfelelő felhasználó..",
|
||||
"Users.components.List.empty.withSearch": "Nincs a keresének megfelelő felhasználó ({search})...",
|
||||
"admin.pages.MarketPlacePage.helmet": "Piactér - Plugin-ok",
|
||||
"admin.pages.MarketPlacePage.offline.title": "Ön offline állapotban van",
|
||||
"admin.pages.MarketPlacePage.offline.subtitle": "Csatlakoznia kell az internethez a Strapi Market eléréséhez.",
|
||||
"admin.pages.MarketPlacePage.plugins": "Bővítmények",
|
||||
"admin.pages.MarketPlacePage.plugin.copy": "Telepítési parancs másolása",
|
||||
"admin.pages.MarketPlacePage.plugin.copy.success": "A telepítési parancs készen áll a terminálba való bemásolásra",
|
||||
"admin.pages.MarketPlacePage.plugin.info": "További információk",
|
||||
"admin.pages.MarketPlacePage.plugin.info.label": "{pluginName} bővítmény további információi",
|
||||
"admin.pages.MarketPlacePage.plugin.info.text": "További információk",
|
||||
"admin.pages.MarketPlacePage.plugin.installed": "Telepítve",
|
||||
"admin.pages.MarketPlacePage.plugin.tooltip.madeByStrapi": "Készítette: Strapi",
|
||||
"admin.pages.MarketPlacePage.plugin.tooltip.verified": "Bővítmény hitelesítve a Strapi által",
|
||||
"admin.pages.MarketPlacePage.plugin.version": "Frissítsd a Strapi verziód: \"{strapiAppVersion}\" erre: \"{versionRange}\"",
|
||||
"admin.pages.MarketPlacePage.plugin.version.null": "Nem sikerült ellenőrizni a kompatibilitást a Strapi verzióddal: \"{strapiAppVersion}\"",
|
||||
"admin.pages.MarketPlacePage.plugin.githubStars": "Ezt a plugint {starsCount} csillagra jelölték a GitHub-on",
|
||||
"admin.pages.MarketPlacePage.plugin.downloads": "Ezt a plugint hetente {downloadsCount} alkalommal töltik le",
|
||||
"admin.pages.MarketPlacePage.providers": "Szolgáltatók",
|
||||
"admin.pages.MarketPlacePage.provider.githubStars": "Ezt a szolgáltatót {starsCount} csillagra jelölték a GitHub-on",
|
||||
"admin.pages.MarketPlacePage.provider.downloads": "Ezt a szolgáltatót hetente {downloadsCount} alkalommal töltik le",
|
||||
"admin.pages.MarketPlacePage.search.clear": "Keresés törlése",
|
||||
"admin.pages.MarketPlacePage.search.empty": "Nincs találat erre: \"{target}\"",
|
||||
"admin.pages.MarketPlacePage.search.placeholder": "Keresés",
|
||||
"admin.pages.MarketPlacePage.submit.plugin.link": "Plugin küldése",
|
||||
"admin.pages.MarketPlacePage.submit.provider.link": "Provider beküldése",
|
||||
"admin.pages.MarketPlacePage.subtitle": "Hozzon ki többet a Strapi-ból",
|
||||
"admin.pages.MarketPlacePage.tab-group.label": "Strapi pluginek és szolgáltatók",
|
||||
"admin.pages.MarketPlacePage.missingPlugin.title": "Hiányzik egy plugin?",
|
||||
"admin.pages.MarketPlacePage.missingPlugin.description": "Mondd el, milyen pluginra van szükséged, és tájékoztatjuk a közösségi plugin fejlesztőinket, hogy esetleg ötletet meríthessenek belőle!",
|
||||
"admin.pages.MarketPlacePage.sort.alphabetical": "Betűrendes rendezés",
|
||||
"admin.pages.MarketPlacePage.sort.newest": "Legújabb",
|
||||
"admin.pages.MarketPlacePage.sort.alphabetical.selected": "Rendezés betűrend szerint",
|
||||
"admin.pages.MarketPlacePage.sort.newest.selected": "Rendezés legújabbak szerint",
|
||||
"admin.pages.MarketPlacePage.sort.githubStars": "GitHub csillagok száma",
|
||||
"admin.pages.MarketPlacePage.sort.githubStars.selected": "Rendezés GitHub csillagok szerint",
|
||||
"admin.pages.MarketPlacePage.sort.npmDownloads": "Letöltések száma",
|
||||
"admin.pages.MarketPlacePage.sort.npmDownloads.selected": "Rendezés npm letöltések szerint",
|
||||
"admin.pages.MarketPlacePage.filters.collections": "Gyűjtemények",
|
||||
"admin.pages.MarketPlacePage.filters.collectionsSelected": "{count, plural, =0 {Nincsenek gyűjtemények} one {# gyűjtemény} other {# gyűjtemények}} kiválasztva",
|
||||
"admin.pages.MarketPlacePage.filters.categories": "Kategóriák",
|
||||
"admin.pages.MarketPlacePage.filters.categoriesSelected": "{count, plural, =0 {Nincsenek kategóriák} one {# kategória} other {# kategóriák}} kiválasztva",
|
||||
"anErrorOccurred": "Hoppá! Valami elromlott. Kérlek próbáld újra.",
|
||||
"app.component.CopyToClipboard.label": "Másolás a vágólapra",
|
||||
"app.component.search.label": "{target} keresése",
|
||||
@ -214,6 +322,29 @@
|
||||
"app.components.EmptyAttributes.title": "Még nincsenek mezők",
|
||||
"app.components.EmptyStateLayout.content-document": "Nem található tartalom",
|
||||
"app.components.EmptyStateLayout.content-permissions": "Nincs megfelelő jogosultsága a tartalomhozhoz",
|
||||
"app.components.GuidedTour.CM.create.content": "<p>Hozz létre és kezelj minden tartalmat itt a Tartalomkezelőben.</p><p>Például: A Blog weboldal példáját folytatva, írhatsz egy Cikket, mentheted és publikálhatod úgy, ahogy szeretnéd.</p><p>💡 Gyors tipp - Ne felejtsd el publikálni a létrehozott tartalmat.</p>",
|
||||
"app.components.GuidedTour.CM.create.title": "⚡️ Tartalom létrehozása",
|
||||
"app.components.GuidedTour.CM.success.content": "<p>Szuper, még egy lépés van hátra!</p><b>🚀 Lásd a tartalmat működés közben</b>",
|
||||
"app.components.GuidedTour.CM.success.cta.title": "API tesztelése",
|
||||
"app.components.GuidedTour.CM.success.title": "2. lépés: Kész ✅",
|
||||
"app.components.GuidedTour.CTB.create.content": "<p>A Gyűjtemény típusok segítségével több bejegyzést tudsz kezelni, míg az Egy típusok a csak egy bejegyzés kezelésére alkalmasak.</p> <p>Például: Egy Blog weboldalnál a Cikkek lennek egy Gyűjtemény típus, míg a Honlap lenne egy Egy típus.</p>",
|
||||
"app.components.GuidedTour.CTB.create.cta.title": "Hozz létre egy Gyűjtemény típust",
|
||||
"app.components.GuidedTour.CTB.create.title": "🧠 Hozz létre első Gyűjtemény típust",
|
||||
"app.components.GuidedTour.CTB.success.content": "<p>Jól haladsz!</p><b>⚡️ Mit szeretnél megosztani a világgal?</b>",
|
||||
"app.components.GuidedTour.CTB.success.title": "1. lépés: Kész ✅",
|
||||
"app.components.GuidedTour.apiTokens.create.content": "<p>Hozz létre itt egy hitelesítési token-t, és töltsd le az általad létrehozott tartalmat.</p>",
|
||||
"app.components.GuidedTour.apiTokens.create.cta.title": "API Token generálása",
|
||||
"app.components.GuidedTour.apiTokens.create.title": "🚀 Lásd a tartalmat működés közben",
|
||||
"app.components.GuidedTour.apiTokens.success.content": "<p>Lásd a tartalmat működés közben az HTTP kéréssel:</p><ul><li><p>Erre a URL-re: <light>https://'<'YOUR_DOMAIN'>'/api/'<'YOUR_CT'>'</light></p></li><li><p>Ezzel a fejléccel: <light>Authorization: bearer '<'YOUR_API_TOKEN'>'</light></p></li></ul><p>További lehetőségek a tartalommal való interakcióhoz, lásd a <documentationLink>dokumentációt</documentationLink>.</p>",
|
||||
"app.components.GuidedTour.apiTokens.success.cta.title": "Menj vissza a főoldalra",
|
||||
"app.components.GuidedTour.apiTokens.success.title": "3. lépés: befejezve ✅",
|
||||
"app.components.GuidedTour.create-content": "Tartalom létrehozása",
|
||||
"app.components.GuidedTour.home.CM.title": "⚡️ Mire szeretnéd megosztani a világgal?",
|
||||
"app.components.GuidedTour.home.CTB.cta.title": "Menj a Content type Builder-be",
|
||||
"app.components.GuidedTour.home.CTB.title": "🧠 Építsd fel a tartalom struktúráját",
|
||||
"app.components.GuidedTour.home.apiTokens.cta.title": "API tesztelése",
|
||||
"app.components.GuidedTour.skip": "A túra átugrása",
|
||||
"app.components.GuidedTour.title": "3 lépés a kezdéshez",
|
||||
"app.components.HomePage.button.blog": "Bővebben a blogon",
|
||||
"app.components.HomePage.community": "Csatlakozz a közösséghez",
|
||||
"app.components.HomePage.community.content": "Beszélgessen a csapattagokkal, a közreműködőkkel és a fejlesztőkkel különböző csatornákon.",
|
||||
@ -237,7 +368,10 @@
|
||||
"app.components.InstallPluginPage.description": "Bővítse alkalmazását erőfeszítés nélkül.",
|
||||
"app.components.LeftMenu.collapse": "A navigációs sáv összecsukása",
|
||||
"app.components.LeftMenu.expand": "A navigációs sáv kinyitása",
|
||||
"app.components.LeftMenu.general": "Általános",
|
||||
"app.components.LeftMenu.logout": "Kijelentkezés",
|
||||
"app.components.LeftMenu.logo.alt": "Alkalmazás logó",
|
||||
"app.components.LeftMenu.plugins": "Bővítmények",
|
||||
"app.components.LeftMenu.navbrand.title": "Strapi Műszerfal",
|
||||
"app.components.LeftMenu.navbrand.workplace": "Munkaterület",
|
||||
"app.components.LeftMenuFooter.help": "Segítség",
|
||||
@ -307,6 +441,7 @@
|
||||
"app.containers.Users.EditPage.roles-bloc-title": "A hozzárendelt szerepkörök",
|
||||
"app.containers.Users.ModalForm.footer.button-success": "Felhasználó meghívása",
|
||||
"app.links.configure-view": "A nézet testreszabása",
|
||||
"app.page.not.found": "Hoppá! Úgy tűnik, nem találjuk a keresett oldalt...",
|
||||
"app.static.links.cheatsheet": "Puska",
|
||||
"app.utils.SelectOption.defaultMessage": " ",
|
||||
"app.utils.add-filter": "Szűrő hozzáadása",
|
||||
@ -398,6 +533,8 @@
|
||||
"components.popUpWarning.title": "Erősítse meg",
|
||||
"content-manager.App.schemas.data-loaded": "A sémák sikeresen betöltve",
|
||||
"content-manager.DynamicTable.relation-loaded": "A kapcsolatok betöltődtek",
|
||||
"content-manager.DynamicTable.relation-loading": "Relations are loading",
|
||||
"content-manager.DynamicTable.relation-more": "This relation contains more entities than displayed",
|
||||
"content-manager.EditRelations.title": "Relációs adatok",
|
||||
"content-manager.HeaderLayout.button.label-add-entry": "Új bejegyzés létrehozása",
|
||||
"content-manager.api.id": "API ID",
|
||||
@ -565,6 +702,7 @@
|
||||
"content-manager.notification.info.minimumFields": "Legalább egy mezőt meg kell jeleníteni",
|
||||
"content-manager.notification.upload.error": "Hiba történt a fájlok feltöltése közben",
|
||||
"content-manager.pageNotFound": "Az oldal nem található",
|
||||
"content-manager.pages.ListView.header-subtitle": "{number, plural, =0 {# bejegyzés} one {# bejegyzés} other {# bejegyzés}} található",
|
||||
"content-manager.pages.NoContentType.button": "Tartalomtípus létrehozása",
|
||||
"content-manager.pages.NoContentType.text": "Még nincs tartalom, javasoljuk, hogy hozza létre az első tartalomtípust.",
|
||||
"content-manager.permissions.not-allowed.create": "Nem hozhat létre dokumentumot",
|
||||
@ -572,15 +710,68 @@
|
||||
"content-manager.plugin.description.long": "Gyors mód az adatbázisban lévő adatok megtekintéséhez, szerkesztéséhez és törléséhez.",
|
||||
"content-manager.plugin.description.short": "Gyors mód az adatbázisban lévő adatok megtekintéséhez, szerkesztéséhez és törléséhez.",
|
||||
"content-manager.popover.display-relations.label": "Kapcsolatok megjelenítése",
|
||||
"content-manager.select.currently.selected": "jelenleg {count} kiválasztva",
|
||||
"content-manager.success.record.delete": "Törölve",
|
||||
"content-manager.success.record.publish": "Közzétéve",
|
||||
"content-manager.success.record.save": "Mentett",
|
||||
"content-manager.success.record.unpublish": "Nem közzétett",
|
||||
"content-manager.utils.data-loaded": "{number} elem sikeresen betöltődött",
|
||||
"content-manager.apiError.This attribute must be unique": "{field} értékének egyedinek kell lennie",
|
||||
"content-manager.popUpWarning.warning.has-draft-relations.title": "Megerősítés",
|
||||
"content-manager.popUpWarning.warning.publish-question": "Biztosan közzé akarja tenni?",
|
||||
"content-manager.popUpwarning.warning.has-draft-relations.button-confirm": "Igen, közzététel",
|
||||
"content-manager.popUpwarning.warning.has-draft-relations.message": "<b>{count, plural, one { reláció még nincs } other { reláció még nincs } }</b> publikálva, és nem várt viselkedést okozhat.",
|
||||
"form.button.continue": "Folytatás",
|
||||
"form.button.done": "Kész",
|
||||
"global.search": "Keresés",
|
||||
"global.actions": "Műveletek",
|
||||
"global.back": "Vissza",
|
||||
"global.cancel": "Mégsem",
|
||||
"global.change-password": "Jelszó megváltoztatása",
|
||||
"global.content-manager": "Tartalomkezelő",
|
||||
"global.continue": "Folytatás",
|
||||
"global.delete": "Törlés",
|
||||
"global.delete-target": "{target} törlése",
|
||||
"global.description": "Leírás",
|
||||
"global.details": "Részletek",
|
||||
"global.disabled": "Letiltva",
|
||||
"global.documentation": "Dokumentáció",
|
||||
"global.enabled": "Engedélyezve",
|
||||
"global.finish": "Befejezés",
|
||||
"global.marketplace": "Piactér",
|
||||
"global.name": "Név",
|
||||
"global.none": "Nincs",
|
||||
"global.password": "Jelszó",
|
||||
"global.plugins": "Bővítmények",
|
||||
"global.plugins.content-manager": "Tartalomkezelő",
|
||||
"global.plugins.content-manager.description": "Gyors módja annak, hogy megtekintse, szerkesztse és törölje az adatokat az adatbázisában.",
|
||||
"global.plugins.content-type-builder": "Tartalomtípus-építő",
|
||||
"global.plugins.content-type-builder.description": "Modellezze az API adatszerkezetét. Hozzon létre új mezőket és relationokat csak egy perc alatt. A fájlok automatikusan létrehozódnak és frissülnek a projektjében.",
|
||||
"global.plugins.email": "E-mail",
|
||||
"global.plugins.email.description": "Állítsa be az alkalmazást, hogy e-maileket küldjön.",
|
||||
"global.plugins.upload": "Médiatár",
|
||||
"global.plugins.upload.description": "Médiafájlok kezelése.",
|
||||
"global.plugins.graphql": "GraphQL",
|
||||
"global.plugins.graphql.description": "GraphQL végpont hozzáadása alapértelmezett API metódusokkal.",
|
||||
"global.plugins.documentation": "Dokumentáció",
|
||||
"global.plugins.documentation.description": "OpenAPI Dokumentum létrehozása és API megjelenítése SWAGGER UI-val.",
|
||||
"global.plugins.i18n": "Nemzetköziítés",
|
||||
"global.plugins.i18n.description": "Ez a plugin lehetővé teszi különböző nyelveken történő tartalom létrehozását, olvasását és frissítését, tanto az Admin Panelból, mint az API-ból.",
|
||||
"global.plugins.sentry": "Sentry",
|
||||
"global.plugins.sentry.description": "Strapi hibaesemények küldése a Sentry-be.",
|
||||
"global.plugins.users-permissions": "Szerepek & Engedélyek",
|
||||
"global.plugins.users-permissions.description": "API védelme teljes hitelesítési folyamattal JWT alapján. Ez a plugin egyúttal olyan ACL stratégiát is tartalmaz, amely lehetővé teszi a felhasználói csoportok közötti engedélyek kezelését.",
|
||||
"global.profile": "Profil",
|
||||
"global.prompt.unsaved": "Biztos, hogy elhagyja ezt az oldalt? Az összes módosítása elveszik",
|
||||
"global.reset-password": "Jelszó visszaállítása",
|
||||
"global.roles": "Szerepek",
|
||||
"global.save": "Mentés",
|
||||
"global.see-more": "Továbbiak megtekintése",
|
||||
"global.select": "Kiválasztás",
|
||||
"global.select-all-entries": "Az összes bejegyzés kiválasztása",
|
||||
"global.settings": "Beállítások",
|
||||
"global.type": "Típus",
|
||||
"global.users": "Felhasználók",
|
||||
"notification.contentType.relations.conflict": "A tartalomtípusnak ellenkező kapcsolatai vannak",
|
||||
"notification.default.title": "Információ:",
|
||||
"notification.error": "Hiba lépett fel",
|
||||
@ -592,8 +783,12 @@
|
||||
"notification.success.delete": "Az elemet törölték",
|
||||
"notification.success.saved": "Mentve",
|
||||
"notification.success.title": "Sikeres:",
|
||||
"notification.success.tokencreated": "API Token sikeresen létrehozva",
|
||||
"notification.success.tokenedited": "API Token sikeresen szerkesztve",
|
||||
"notification.error.tokennamenotunique": "Név már hozzárendelve egy másik tokenhez",
|
||||
"notification.version.update.message": "Megjelent a Strapi új verziója!",
|
||||
"notification.warning.title": "Figyelmeztetés:",
|
||||
"notification.warning.404": "404 - Nem található",
|
||||
"or": "Vagy",
|
||||
"request.error.model.unknown": "Ez a modell nem létezik",
|
||||
"skipToContent": "Kihagyás",
|
||||
|
||||
@ -717,6 +717,13 @@
|
||||
"content-manager.popUpWarning.warning.publish-question": "您依然要發布它嗎?",
|
||||
"content-manager.popUpwarning.warning.has-draft-relations.button-confirm": "是, 發布",
|
||||
"content-manager.popUpwarning.warning.has-draft-relations.message": "<b>{count, plural, =0 { 個內容關聯} one { 個內容關聯} other { 個內容關聯}}</b> 還沒有發佈。<br></br>它可能會在您的項目中產生關聯失效和錯誤。",
|
||||
"content-manager.relation.loadMore": "載入更多",
|
||||
"content-manager.relation.disconnect": "刪除",
|
||||
"content-manager.relation.isLoading": "關聯載入中",
|
||||
"content-manager.relation.notAvailable": "沒有可用關聯",
|
||||
"content-manager.relation.add": "加入關聯",
|
||||
"content-manager.relation.publicationState.draft": "草稿",
|
||||
"content-manager.relation.publicationState.published": "已發布",
|
||||
"form.button.continue": "繼續",
|
||||
"form.button.done": "完成",
|
||||
"global.search": "搜尋",
|
||||
|
||||
@ -59,7 +59,7 @@
|
||||
"bcryptjs": "2.4.3",
|
||||
"chalk": "^4.1.1",
|
||||
"chokidar": "^3.5.1",
|
||||
"codemirror": "^5.65.8",
|
||||
"codemirror": "^5.65.11",
|
||||
"cross-env": "^7.0.3",
|
||||
"css-loader": "6.7.2",
|
||||
"date-fns": "2.29.3",
|
||||
|
||||
@ -162,7 +162,7 @@ const useContentTypeBuilderMenu = () => {
|
||||
];
|
||||
|
||||
const matchByTitle = (links) =>
|
||||
matchSorter(links, toLower(search), { keys: [(item) => toLower(item.title)] });
|
||||
search ? matchSorter(links, toLower(search), { keys: [(item) => toLower(item.title)] }) : links;
|
||||
|
||||
const getMenu = () => {
|
||||
// Maybe we can do it simpler with matchsorter wildcards ?
|
||||
|
||||
@ -20,6 +20,7 @@ import { ModalLayout, ModalBody, ModalFooter } from '@strapi/design-system/Modal
|
||||
import { Tabs, Tab, TabGroup, TabPanels, TabPanel } from '@strapi/design-system/Tabs';
|
||||
import { Flex } from '@strapi/design-system/Flex';
|
||||
import { Stack } from '@strapi/design-system/Stack';
|
||||
import { isEqual } from 'lodash';
|
||||
import pluginId from '../../pluginId';
|
||||
import useDataManager from '../../hooks/useDataManager';
|
||||
import useFormModalNavigation from '../../hooks/useFormModalNavigation';
|
||||
@ -790,13 +791,35 @@ const FormModal = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const handleConfirmClose = () => {
|
||||
// eslint-disable-next-line no-alert
|
||||
const confirm = window.confirm(
|
||||
formatMessage({
|
||||
id: 'window.confirm.close-modal.file',
|
||||
defaultMessage: 'Are you sure? Your changes will be lost.',
|
||||
})
|
||||
);
|
||||
|
||||
if (confirm) {
|
||||
onCloseModal();
|
||||
|
||||
dispatch({
|
||||
type: RESET_PROPS,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const handleClosed = () => {
|
||||
// Close the modal
|
||||
onCloseModal();
|
||||
// Reset the reducer
|
||||
dispatch({
|
||||
type: RESET_PROPS,
|
||||
});
|
||||
if (!isEqual(modifiedData, initialData)) {
|
||||
handleConfirmClose();
|
||||
} else {
|
||||
onCloseModal();
|
||||
// Reset the reducer
|
||||
dispatch({
|
||||
type: RESET_PROPS,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const sendAdvancedTabEvent = (tab) => {
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
'use strict';
|
||||
|
||||
const _ = require('lodash');
|
||||
const {
|
||||
template: { createStrictInterpolationRegExp },
|
||||
keysDeep,
|
||||
} = require('@strapi/utils/');
|
||||
|
||||
const getProviderSettings = () => {
|
||||
return strapi.config.get('plugin.email');
|
||||
@ -26,10 +30,19 @@ const sendTemplatedEmail = (emailOptions = {}, emailTemplate = {}, data = {}) =>
|
||||
);
|
||||
}
|
||||
|
||||
const allowedInterpolationVariables = keysDeep(data);
|
||||
const interpolate = createStrictInterpolationRegExp(allowedInterpolationVariables, 'g');
|
||||
|
||||
const templatedAttributes = attributes.reduce(
|
||||
(compiled, attribute) =>
|
||||
emailTemplate[attribute]
|
||||
? Object.assign(compiled, { [attribute]: _.template(emailTemplate[attribute])(data) })
|
||||
? Object.assign(compiled, {
|
||||
[attribute]: _.template(emailTemplate[attribute], {
|
||||
interpolate,
|
||||
evaluate: false,
|
||||
escape: false,
|
||||
})(data),
|
||||
})
|
||||
: compiled,
|
||||
{}
|
||||
);
|
||||
|
||||
@ -61,7 +61,7 @@
|
||||
"@storybook/addon-actions": "6.5.10",
|
||||
"@storybook/addon-essentials": "6.5.10",
|
||||
"@storybook/addon-links": "6.5.10",
|
||||
"@storybook/builder-webpack5": "6.5.9",
|
||||
"@storybook/builder-webpack5": "6.5.15",
|
||||
"@storybook/manager-webpack5": "6.4.10",
|
||||
"@storybook/react": "^6.5.10",
|
||||
"@strapi/design-system": "1.4.1",
|
||||
|
||||
@ -24,7 +24,7 @@ const {
|
||||
joinBy,
|
||||
toKebabCase,
|
||||
} = require('./string-formatting');
|
||||
const { removeUndefined } = require('./object-formatting');
|
||||
const { removeUndefined, keysDeep } = require('./object-formatting');
|
||||
const { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } = require('./config');
|
||||
const { generateTimestampCode } = require('./code-generator');
|
||||
const contentTypes = require('./content-types');
|
||||
@ -40,6 +40,7 @@ const traverseEntity = require('./traverse-entity');
|
||||
const pipeAsync = require('./pipe-async');
|
||||
const convertQueryParams = require('./convert-query-params');
|
||||
const importDefault = require('./import-default');
|
||||
const template = require('./template');
|
||||
|
||||
module.exports = {
|
||||
yup,
|
||||
@ -61,11 +62,13 @@ module.exports = {
|
||||
getConfigUrls,
|
||||
escapeQuery,
|
||||
removeUndefined,
|
||||
keysDeep,
|
||||
getAbsoluteAdminUrl,
|
||||
getAbsoluteServerUrl,
|
||||
generateTimestampCode,
|
||||
stringIncludes,
|
||||
stringEquals,
|
||||
template,
|
||||
isKebabCase,
|
||||
isCamelCase,
|
||||
toKebabCase,
|
||||
|
||||
@ -4,6 +4,12 @@ const _ = require('lodash');
|
||||
|
||||
const removeUndefined = (obj) => _.pickBy(obj, (value) => typeof value !== 'undefined');
|
||||
|
||||
const keysDeep = (obj, path = []) =>
|
||||
!_.isObject(obj)
|
||||
? path.join('.')
|
||||
: _.reduce(obj, (acc, next, key) => _.concat(acc, keysDeep(next, [...path, key])), []);
|
||||
|
||||
module.exports = {
|
||||
removeUndefined,
|
||||
keysDeep,
|
||||
};
|
||||
|
||||
28
packages/core/utils/lib/template.js
Normal file
28
packages/core/utils/lib/template.js
Normal file
@ -0,0 +1,28 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Create a strict interpolation RegExp based on the given variables' name
|
||||
*
|
||||
* @param {string[]} allowedVariableNames - The list of allowed variables
|
||||
* @param {string} [flags] - The RegExp flags
|
||||
*/
|
||||
const createStrictInterpolationRegExp = (allowedVariableNames, flags) => {
|
||||
const oneOfVariables = allowedVariableNames.join('|');
|
||||
|
||||
// 1. We need to match the delimiters: <%= ... %>
|
||||
// 2. We accept any number of whitespaces characters before and/or after the variable name: \s* ... \s*
|
||||
// 3. We only accept values from the variable list as interpolation variables' name: : (${oneOfVariables})
|
||||
return new RegExp(`<%=\\s*(${oneOfVariables})\\s*%>`, flags);
|
||||
};
|
||||
|
||||
/**
|
||||
* Create a loose interpolation RegExp to match as many groups as possible
|
||||
*
|
||||
* @param {string} [flags] - The RegExp flags
|
||||
*/
|
||||
const createLooseInterpolationRegExp = (flags) => new RegExp(/<%=([\s\S]+?)%>/, flags);
|
||||
|
||||
module.exports = {
|
||||
createStrictInterpolationRegExp,
|
||||
createLooseInterpolationRegExp,
|
||||
};
|
||||
@ -68,10 +68,7 @@ try {
|
||||
// Your code here
|
||||
} catch (error) {
|
||||
// Either send a simple error
|
||||
strapi
|
||||
.plugin('sentry')
|
||||
.service('sentry')
|
||||
.sendError(error);
|
||||
strapi.plugin('sentry').service('sentry').sendError(error);
|
||||
|
||||
// Or send an error with a customized Sentry scope
|
||||
strapi
|
||||
@ -92,16 +89,13 @@ Use it if you need direct access to the Sentry instance, which should already al
|
||||
**Example**
|
||||
|
||||
```js
|
||||
const sentryInstance = strapi
|
||||
.plugin('sentry')
|
||||
.service('sentry')
|
||||
.getInstance();
|
||||
const sentryInstance = strapi.plugin('sentry').service('sentry').getInstance();
|
||||
```
|
||||
|
||||
## Disabling for non-production environments
|
||||
|
||||
If the `dsn` property is set to a nil value (`null` or `undefined`) while `enabled` is true, the Sentry plugin will be available to use in the running Strapi instance, but the service will not actually send errors to Sentry. That allows you to write code that runs on every environment without additional checks, but only send errors to Sentry in production.
|
||||
|
||||
|
||||
When you start Strapi with a nil `dsn` config property, the plugin will print a warning:
|
||||
`info: @strapi/plugin-sentry is disabled because no Sentry DSN was provided`
|
||||
|
||||
@ -137,7 +131,7 @@ Like every other plugin, you can also disable this plugin in the plugins configu
|
||||
module.exports = ({ env }) => ({
|
||||
// ...
|
||||
sentry: {
|
||||
enabled: false
|
||||
enabled: false,
|
||||
},
|
||||
// ...
|
||||
});
|
||||
|
||||
@ -17,6 +17,11 @@ describe('isValidEmailTemplate', () => {
|
||||
expect(isValidEmailTemplate('<%CODE%>')).toBe(false);
|
||||
expect(isValidEmailTemplate('${CODE}')).toBe(false);
|
||||
expect(isValidEmailTemplate('${ CODE }')).toBe(false);
|
||||
expect(
|
||||
isValidEmailTemplate(
|
||||
'<%=`${ console.log({ "remote-execution": { "foo": "bar" }/*<>%=*/ }) }`%>'
|
||||
)
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
test('Fails on non authorized keys', () => {
|
||||
|
||||
@ -1,8 +1,17 @@
|
||||
'use strict';
|
||||
|
||||
const _ = require('lodash');
|
||||
const { trim } = require('lodash/fp');
|
||||
const {
|
||||
template: { createLooseInterpolationRegExp, createStrictInterpolationRegExp },
|
||||
} = require('@strapi/utils');
|
||||
|
||||
const invalidPatternsRegexes = [
|
||||
// Ignore "evaluation" patterns: <% ... %>
|
||||
/<%[^=]([\s\S]*?)%>/m,
|
||||
// Ignore basic string interpolations
|
||||
/\${([^{}]*)}/m,
|
||||
];
|
||||
|
||||
const invalidPatternsRegexes = [/<%[^=]([^<>%]*)%>/m, /\${([^{}]*)}/m];
|
||||
const authorizedKeys = [
|
||||
'URL',
|
||||
'ADMIN_URL',
|
||||
@ -19,27 +28,42 @@ const matchAll = (pattern, src) => {
|
||||
let match;
|
||||
|
||||
const regexPatternWithGlobal = RegExp(pattern, 'g');
|
||||
|
||||
// eslint-disable-next-line no-cond-assign
|
||||
while ((match = regexPatternWithGlobal.exec(src))) {
|
||||
const [, group] = match;
|
||||
|
||||
matches.push(_.trim(group));
|
||||
matches.push(trim(group));
|
||||
}
|
||||
|
||||
return matches;
|
||||
};
|
||||
|
||||
const isValidEmailTemplate = (template) => {
|
||||
// Check for known invalid patterns
|
||||
for (const reg of invalidPatternsRegexes) {
|
||||
if (reg.test(template)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
const matches = matchAll(/<%=([^<>%=]*)%>/, template);
|
||||
for (const match of matches) {
|
||||
if (!authorizedKeys.includes(match)) {
|
||||
return false;
|
||||
}
|
||||
const interpolation = {
|
||||
// Strict interpolation pattern to match only valid groups
|
||||
strict: createStrictInterpolationRegExp(authorizedKeys),
|
||||
// Weak interpolation pattern to match as many group as possible.
|
||||
loose: createLooseInterpolationRegExp(),
|
||||
};
|
||||
|
||||
// Compute both strict & loose matches
|
||||
const strictMatches = matchAll(interpolation.strict, template);
|
||||
const looseMatches = matchAll(interpolation.loose, template);
|
||||
|
||||
// If we have more matches with the loose RegExp than with the strict one,
|
||||
// then it means that at least one of the interpolation group is invalid
|
||||
// Note: In the future, if we wanted to give more details for error formatting
|
||||
// purposes, we could return the difference between the two arrays
|
||||
if (looseMatches.length > strictMatches.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@ -109,17 +109,25 @@ module.exports = ({ strapi }) => ({
|
||||
await this.edit(user.id, { confirmationToken });
|
||||
|
||||
const apiPrefix = strapi.config.get('api.rest.prefix');
|
||||
settings.message = await userPermissionService.template(settings.message, {
|
||||
URL: urlJoin(getAbsoluteServerUrl(strapi.config), apiPrefix, '/auth/email-confirmation'),
|
||||
SERVER_URL: getAbsoluteServerUrl(strapi.config),
|
||||
ADMIN_URL: getAbsoluteAdminUrl(strapi.config),
|
||||
USER: sanitizedUserInfo,
|
||||
CODE: confirmationToken,
|
||||
});
|
||||
|
||||
settings.object = await userPermissionService.template(settings.object, {
|
||||
USER: sanitizedUserInfo,
|
||||
});
|
||||
try {
|
||||
settings.message = await userPermissionService.template(settings.message, {
|
||||
URL: urlJoin(getAbsoluteServerUrl(strapi.config), apiPrefix, '/auth/email-confirmation'),
|
||||
SERVER_URL: getAbsoluteServerUrl(strapi.config),
|
||||
ADMIN_URL: getAbsoluteAdminUrl(strapi.config),
|
||||
USER: sanitizedUserInfo,
|
||||
CODE: confirmationToken,
|
||||
});
|
||||
|
||||
settings.object = await userPermissionService.template(settings.object, {
|
||||
USER: sanitizedUserInfo,
|
||||
});
|
||||
} catch {
|
||||
strapi.log.error(
|
||||
'[plugin::users-permissions.sendConfirmationEmail]: Failed to generate a template for "user confirmation email". Please make sure your email template is valid and does not contain invalid characters or patterns'
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// Send an email to the user.
|
||||
await strapi
|
||||
|
||||
@ -3,6 +3,11 @@
|
||||
const _ = require('lodash');
|
||||
const { filter, map, pipe, prop } = require('lodash/fp');
|
||||
const urlJoin = require('url-join');
|
||||
const {
|
||||
template: { createStrictInterpolationRegExp },
|
||||
errors,
|
||||
keysDeep,
|
||||
} = require('@strapi/utils');
|
||||
|
||||
const { getService } = require('../utils');
|
||||
|
||||
@ -230,7 +235,15 @@ module.exports = ({ strapi }) => ({
|
||||
},
|
||||
|
||||
template(layout, data) {
|
||||
const compiledObject = _.template(layout);
|
||||
return compiledObject(data);
|
||||
const allowedTemplateVariables = keysDeep(data);
|
||||
|
||||
// Create a strict interpolation RegExp based on possible variable names
|
||||
const interpolate = createStrictInterpolationRegExp(allowedTemplateVariables, 'g');
|
||||
|
||||
try {
|
||||
return _.template(layout, { interpolate, evaluate: false, escape: false })(data);
|
||||
} catch (e) {
|
||||
throw new errors.ApplicationError('Invalid email template');
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@ -112,16 +112,13 @@ module.exports = ({ env }) => ({
|
||||
To send an email from anywhere inside Strapi:
|
||||
|
||||
```js
|
||||
await strapi
|
||||
.plugin('email')
|
||||
.service('email')
|
||||
.send({
|
||||
to: 'someone@example.com',
|
||||
from: 'someone2@example.com',
|
||||
subject: 'Hello world',
|
||||
text: 'Hello world',
|
||||
html: `<h4>Hello world</h4>`,
|
||||
});
|
||||
await strapi.plugin('email').service('email').send({
|
||||
to: 'someone@example.com',
|
||||
from: 'someone2@example.com',
|
||||
subject: 'Hello world',
|
||||
text: 'Hello world',
|
||||
html: `<h4>Hello world</h4>`,
|
||||
});
|
||||
```
|
||||
|
||||
The following fields are supported:
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
"test": "echo \"no tests yet\""
|
||||
},
|
||||
"dependencies": {
|
||||
"aws-sdk": "2.1260.0",
|
||||
"aws-sdk": "2.1287.0",
|
||||
"lodash": "4.17.21"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
401
yarn.lock
401
yarn.lock
@ -190,7 +190,7 @@
|
||||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/core@7.18.10", "@babel/core@^7.17.9":
|
||||
"@babel/core@7.18.10":
|
||||
version "7.18.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8"
|
||||
integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==
|
||||
@ -211,7 +211,7 @@
|
||||
json5 "^2.2.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.7.5":
|
||||
"@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.17.9", "@babel/core@^7.7.5":
|
||||
version "7.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.0.tgz#d2f5f4f2033c00de8096be3c9f45772563e150c3"
|
||||
integrity sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ==
|
||||
@ -232,48 +232,6 @@
|
||||
json5 "^2.2.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/core@^7.11.6":
|
||||
version "7.18.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac"
|
||||
integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A==
|
||||
dependencies:
|
||||
"@ampproject/remapping" "^2.1.0"
|
||||
"@babel/code-frame" "^7.18.6"
|
||||
"@babel/generator" "^7.18.13"
|
||||
"@babel/helper-compilation-targets" "^7.18.9"
|
||||
"@babel/helper-module-transforms" "^7.18.9"
|
||||
"@babel/helpers" "^7.18.9"
|
||||
"@babel/parser" "^7.18.13"
|
||||
"@babel/template" "^7.18.10"
|
||||
"@babel/traverse" "^7.18.13"
|
||||
"@babel/types" "^7.18.13"
|
||||
convert-source-map "^1.7.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.2"
|
||||
json5 "^2.2.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/core@^7.12.3":
|
||||
version "7.18.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000"
|
||||
integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==
|
||||
dependencies:
|
||||
"@ampproject/remapping" "^2.1.0"
|
||||
"@babel/code-frame" "^7.16.7"
|
||||
"@babel/generator" "^7.18.2"
|
||||
"@babel/helper-compilation-targets" "^7.18.2"
|
||||
"@babel/helper-module-transforms" "^7.18.0"
|
||||
"@babel/helpers" "^7.18.2"
|
||||
"@babel/parser" "^7.18.5"
|
||||
"@babel/template" "^7.16.7"
|
||||
"@babel/traverse" "^7.18.5"
|
||||
"@babel/types" "^7.18.4"
|
||||
convert-source-map "^1.7.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.2"
|
||||
json5 "^2.2.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/eslint-parser@7.18.9", "@babel/eslint-parser@^7.18.9":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz#255a63796819a97b7578751bb08ab9f2a375a031"
|
||||
@ -301,7 +259,7 @@
|
||||
"@jridgewell/gen-mapping" "^0.3.2"
|
||||
jsesc "^2.5.1"
|
||||
|
||||
"@babel/generator@^7.17.9", "@babel/generator@^7.18.10", "@babel/generator@^7.18.2":
|
||||
"@babel/generator@^7.17.9", "@babel/generator@^7.18.10":
|
||||
version "7.18.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.10.tgz#794f328bfabdcbaf0ebf9bf91b5b57b61fa77a2a"
|
||||
integrity sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==
|
||||
@ -353,7 +311,7 @@
|
||||
browserslist "^4.20.2"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.2", "@babel/helper-compilation-targets@^7.18.9":
|
||||
"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf"
|
||||
integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==
|
||||
@ -509,7 +467,7 @@
|
||||
"@babel/traverse" "^7.19.0"
|
||||
"@babel/types" "^7.19.0"
|
||||
|
||||
"@babel/helper-module-transforms@^7.18.0", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9":
|
||||
"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712"
|
||||
integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==
|
||||
@ -621,15 +579,6 @@
|
||||
"@babel/traverse" "^7.19.0"
|
||||
"@babel/types" "^7.19.0"
|
||||
|
||||
"@babel/helpers@^7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384"
|
||||
integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==
|
||||
dependencies:
|
||||
"@babel/template" "^7.16.7"
|
||||
"@babel/traverse" "^7.18.2"
|
||||
"@babel/types" "^7.18.2"
|
||||
|
||||
"@babel/helpers@^7.18.9":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9"
|
||||
@ -653,7 +602,7 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4"
|
||||
integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==
|
||||
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.17.9", "@babel/parser@^7.18.10", "@babel/parser@^7.18.13", "@babel/parser@^7.18.5", "@babel/parser@^7.18.9", "@babel/parser@^7.19.0", "@babel/parser@^7.7.0", "@babel/parser@^7.8.3":
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.17.9", "@babel/parser@^7.18.10", "@babel/parser@^7.18.13", "@babel/parser@^7.18.9", "@babel/parser@^7.19.0", "@babel/parser@^7.7.0", "@babel/parser@^7.8.3":
|
||||
version "7.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c"
|
||||
integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==
|
||||
@ -1628,7 +1577,7 @@
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.11"
|
||||
|
||||
"@babel/template@7.18.10", "@babel/template@^7.12.7", "@babel/template@^7.16.7", "@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3":
|
||||
"@babel/template@7.18.10", "@babel/template@^7.12.7", "@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3":
|
||||
version "7.18.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71"
|
||||
integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==
|
||||
@ -1653,7 +1602,7 @@
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5":
|
||||
"@babel/traverse@^7.18.10":
|
||||
version "7.18.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.10.tgz#37ad97d1cb00efa869b91dd5d1950f8a6cf0cb08"
|
||||
integrity sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g==
|
||||
@ -1669,22 +1618,6 @@
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/traverse@^7.18.13", "@babel/traverse@^7.7.2":
|
||||
version "7.18.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68"
|
||||
integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.18.6"
|
||||
"@babel/generator" "^7.18.13"
|
||||
"@babel/helper-environment-visitor" "^7.18.9"
|
||||
"@babel/helper-function-name" "^7.18.9"
|
||||
"@babel/helper-hoist-variables" "^7.18.6"
|
||||
"@babel/helper-split-export-declaration" "^7.18.6"
|
||||
"@babel/parser" "^7.18.13"
|
||||
"@babel/types" "^7.18.13"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/traverse@^7.18.9":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98"
|
||||
@ -1717,7 +1650,23 @@
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
|
||||
"@babel/traverse@^7.7.2":
|
||||
version "7.18.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68"
|
||||
integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.18.6"
|
||||
"@babel/generator" "^7.18.13"
|
||||
"@babel/helper-environment-visitor" "^7.18.9"
|
||||
"@babel/helper-function-name" "^7.18.9"
|
||||
"@babel/helper-hoist-variables" "^7.18.6"
|
||||
"@babel/helper-split-export-declaration" "^7.18.6"
|
||||
"@babel/parser" "^7.18.13"
|
||||
"@babel/types" "^7.18.13"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
|
||||
version "7.18.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.8.tgz#c5af199951bf41ba4a6a9a6d0d8ad722b30cd42f"
|
||||
integrity sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==
|
||||
@ -2563,7 +2512,7 @@
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
|
||||
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
|
||||
|
||||
"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9":
|
||||
"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.9":
|
||||
version "0.3.14"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed"
|
||||
integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==
|
||||
@ -4273,18 +4222,18 @@
|
||||
global "^4.4.0"
|
||||
regenerator-runtime "^0.13.7"
|
||||
|
||||
"@storybook/addons@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.5.9.tgz#5a9d7395c579a9cbc44dfc122362fb3c95dfb9d5"
|
||||
integrity sha512-adwdiXg+mntfPocLc1KXjZXyLgGk7Aac699Fwe+OUYPEC5tW347Rm/kFatcE556d42o5czcRiq3ZSIGWnm9ieQ==
|
||||
"@storybook/addons@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.5.15.tgz#3c3fafbf3c9ce2182d652cb6682f6581ba6580e1"
|
||||
integrity sha512-xT31SuSX+kYGyxCNK2nqL7WTxucs3rSmhiCLovJcUjYk+QquV3c2c53Ki7lwwdDbzfXFcNAe0HJ4hoTN4jhn0Q==
|
||||
dependencies:
|
||||
"@storybook/api" "6.5.9"
|
||||
"@storybook/channels" "6.5.9"
|
||||
"@storybook/client-logger" "6.5.9"
|
||||
"@storybook/core-events" "6.5.9"
|
||||
"@storybook/api" "6.5.15"
|
||||
"@storybook/channels" "6.5.15"
|
||||
"@storybook/client-logger" "6.5.15"
|
||||
"@storybook/core-events" "6.5.15"
|
||||
"@storybook/csf" "0.0.2--canary.4566f4d.1"
|
||||
"@storybook/router" "6.5.9"
|
||||
"@storybook/theming" "6.5.9"
|
||||
"@storybook/router" "6.5.15"
|
||||
"@storybook/theming" "6.5.15"
|
||||
"@types/webpack-env" "^1.16.0"
|
||||
core-js "^3.8.2"
|
||||
global "^4.4.0"
|
||||
@ -4359,18 +4308,18 @@
|
||||
ts-dedent "^2.0.0"
|
||||
util-deprecate "^1.0.2"
|
||||
|
||||
"@storybook/api@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.5.9.tgz#303733214c9de0422d162f7c54ae05d088b89bf9"
|
||||
integrity sha512-9ylztnty4Y+ALU/ehW3BML9czjCAFsWvrwuCi6UgcwNjswwjSX3VRLhfD1KT3pl16ho//95LgZ0LnSwROCcPOA==
|
||||
"@storybook/api@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.5.15.tgz#a189dac82a57ae9cfac43c887207b1075a2a2e96"
|
||||
integrity sha512-BBE0KXKvj1/3jTghbIoWfrcDM0t+xO7EYtWWAXD6XlhGsZVD2Dy82Z52ONyLulMDRpMWl0OYy3h6A1YnFUH25w==
|
||||
dependencies:
|
||||
"@storybook/channels" "6.5.9"
|
||||
"@storybook/client-logger" "6.5.9"
|
||||
"@storybook/core-events" "6.5.9"
|
||||
"@storybook/channels" "6.5.15"
|
||||
"@storybook/client-logger" "6.5.15"
|
||||
"@storybook/core-events" "6.5.15"
|
||||
"@storybook/csf" "0.0.2--canary.4566f4d.1"
|
||||
"@storybook/router" "6.5.9"
|
||||
"@storybook/router" "6.5.15"
|
||||
"@storybook/semver" "^7.3.2"
|
||||
"@storybook/theming" "6.5.9"
|
||||
"@storybook/theming" "6.5.15"
|
||||
core-js "^3.8.2"
|
||||
fast-deep-equal "^3.1.3"
|
||||
global "^4.4.0"
|
||||
@ -4435,27 +4384,27 @@
|
||||
webpack-hot-middleware "^2.25.1"
|
||||
webpack-virtual-modules "^0.2.2"
|
||||
|
||||
"@storybook/builder-webpack5@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-6.5.9.tgz#30b4e08622daff104bcccd015d3ee7902f99dd99"
|
||||
integrity sha512-NUVZ4Qci6HWPuoH8U/zQkdBO5soGgu7QYrGC/LWU0tRfmmZxkjr7IUU14ppDpGPYgx3r7jkaQI1J/E1YEmSCWQ==
|
||||
"@storybook/builder-webpack5@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-6.5.15.tgz#0c45ed6699d88a9d51f00c8c312750fcd707c37d"
|
||||
integrity sha512-BnSoAmI02pvbGBSyzCx+voXb/d5EopQ78zx/lYv4CeOspBFOYEfGvAgYHILFo04V12S2/k8aSOc/tCYw5AqPtw==
|
||||
dependencies:
|
||||
"@babel/core" "^7.12.10"
|
||||
"@storybook/addons" "6.5.9"
|
||||
"@storybook/api" "6.5.9"
|
||||
"@storybook/channel-postmessage" "6.5.9"
|
||||
"@storybook/channels" "6.5.9"
|
||||
"@storybook/client-api" "6.5.9"
|
||||
"@storybook/client-logger" "6.5.9"
|
||||
"@storybook/components" "6.5.9"
|
||||
"@storybook/core-common" "6.5.9"
|
||||
"@storybook/core-events" "6.5.9"
|
||||
"@storybook/node-logger" "6.5.9"
|
||||
"@storybook/preview-web" "6.5.9"
|
||||
"@storybook/router" "6.5.9"
|
||||
"@storybook/addons" "6.5.15"
|
||||
"@storybook/api" "6.5.15"
|
||||
"@storybook/channel-postmessage" "6.5.15"
|
||||
"@storybook/channels" "6.5.15"
|
||||
"@storybook/client-api" "6.5.15"
|
||||
"@storybook/client-logger" "6.5.15"
|
||||
"@storybook/components" "6.5.15"
|
||||
"@storybook/core-common" "6.5.15"
|
||||
"@storybook/core-events" "6.5.15"
|
||||
"@storybook/node-logger" "6.5.15"
|
||||
"@storybook/preview-web" "6.5.15"
|
||||
"@storybook/router" "6.5.15"
|
||||
"@storybook/semver" "^7.3.2"
|
||||
"@storybook/store" "6.5.9"
|
||||
"@storybook/theming" "6.5.9"
|
||||
"@storybook/store" "6.5.15"
|
||||
"@storybook/theming" "6.5.15"
|
||||
"@types/node" "^14.0.10 || ^16.0.0"
|
||||
babel-loader "^8.0.0"
|
||||
babel-plugin-named-exports-order "^0.0.2"
|
||||
@ -4518,14 +4467,14 @@
|
||||
qs "^6.10.0"
|
||||
telejson "^6.0.8"
|
||||
|
||||
"@storybook/channel-postmessage@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.5.9.tgz#9cf4530f0364cee0d5e58f92d6fb5ce98e10257b"
|
||||
integrity sha512-pX/0R8UW7ezBhCrafRaL20OvMRcmESYvQQCDgjqSzJyHkcG51GOhsd6Ge93eJ6QvRMm9+w0Zs93N2VKjVtz0Qw==
|
||||
"@storybook/channel-postmessage@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.5.15.tgz#a9d614be56bededf7cec41b833c46d35958b6d2b"
|
||||
integrity sha512-gMpA8LWT8lC4z5KWnaMh03aazEwtDO7GtY5kZVru+EEMgExGmaR82qgekwmLmgLj2nRJEv0o138o9IqYUcou8w==
|
||||
dependencies:
|
||||
"@storybook/channels" "6.5.9"
|
||||
"@storybook/client-logger" "6.5.9"
|
||||
"@storybook/core-events" "6.5.9"
|
||||
"@storybook/channels" "6.5.15"
|
||||
"@storybook/client-logger" "6.5.15"
|
||||
"@storybook/core-events" "6.5.15"
|
||||
core-js "^3.8.2"
|
||||
global "^4.4.0"
|
||||
qs "^6.10.0"
|
||||
@ -4580,10 +4529,10 @@
|
||||
ts-dedent "^2.0.0"
|
||||
util-deprecate "^1.0.2"
|
||||
|
||||
"@storybook/channels@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.5.9.tgz#abfab89a6587a2688e9926d4aafeb11c9d8b2e79"
|
||||
integrity sha512-FvGA35nV38UPXWOl9ERapFTJaxwSTamQ339s2Ev7E9riyRG+GRkgTWzf5kECJgS1PAYKd/7m/RqKJT9BVv6A5g==
|
||||
"@storybook/channels@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.5.15.tgz#586681b6ec458124da084c39bc8c518d9e96b10b"
|
||||
integrity sha512-gPpsBgirv2NCXbH4WbYqdkI0JLE96aiVuu7UEWfn9yu071pQ9CLHbhXGD9fSFNrfOkyBBY10ppSE7uCXw3Wexg==
|
||||
dependencies:
|
||||
core-js "^3.8.2"
|
||||
ts-dedent "^2.0.0"
|
||||
@ -4641,18 +4590,18 @@
|
||||
ts-dedent "^2.0.0"
|
||||
util-deprecate "^1.0.2"
|
||||
|
||||
"@storybook/client-api@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.5.9.tgz#3e4a8ec1d277fd81325c5d959c553161a85fa182"
|
||||
integrity sha512-pc7JKJoWLesixUKvG2nV36HukUuYoGRyAgD3PpIV7qSBS4JixqZ3VAHFUtqV1UzfOSQTovLSl4a0rIRnpie6gA==
|
||||
"@storybook/client-api@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.5.15.tgz#70f3ced6d0fcc7b71217cae858bf81c3b2c50eba"
|
||||
integrity sha512-0ZGpRgVz7rdbCguBqBpwObXbsVY5qlSTWDzzIBpmz8EkxW/MtK5wEyeq+0L0O+DTn41FwvH5yCGLAENpzWD8BQ==
|
||||
dependencies:
|
||||
"@storybook/addons" "6.5.9"
|
||||
"@storybook/channel-postmessage" "6.5.9"
|
||||
"@storybook/channels" "6.5.9"
|
||||
"@storybook/client-logger" "6.5.9"
|
||||
"@storybook/core-events" "6.5.9"
|
||||
"@storybook/addons" "6.5.15"
|
||||
"@storybook/channel-postmessage" "6.5.15"
|
||||
"@storybook/channels" "6.5.15"
|
||||
"@storybook/client-logger" "6.5.15"
|
||||
"@storybook/core-events" "6.5.15"
|
||||
"@storybook/csf" "0.0.2--canary.4566f4d.1"
|
||||
"@storybook/store" "6.5.9"
|
||||
"@storybook/store" "6.5.15"
|
||||
"@types/qs" "^6.9.5"
|
||||
"@types/webpack-env" "^1.16.0"
|
||||
core-js "^3.8.2"
|
||||
@ -4691,10 +4640,10 @@
|
||||
core-js "^3.8.2"
|
||||
global "^4.4.0"
|
||||
|
||||
"@storybook/client-logger@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.5.9.tgz#dc1669abe8c45af1cc38f74c6f4b15ff33e63014"
|
||||
integrity sha512-DOHL6p0uiDd3gV/Sb2FR+Vh6OiPrrf8BrA06uvXWsMRIIvEEvnparxv9EvPg7FlmUX0T3nq7d3juwjx4F8Wbcg==
|
||||
"@storybook/client-logger@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.5.15.tgz#0d9878af893a3493b6ee108cc097ae1436d7da4d"
|
||||
integrity sha512-0uyxKvodq+FycGv6aUwC1wUR6suXf2+7ywMFAOlYolI4UvNj8NyU/5AfgKT5XnxYAgPmoCiAjOE700TrfHrosw==
|
||||
dependencies:
|
||||
core-js "^3.8.2"
|
||||
global "^4.4.0"
|
||||
@ -4757,19 +4706,17 @@
|
||||
regenerator-runtime "^0.13.7"
|
||||
util-deprecate "^1.0.2"
|
||||
|
||||
"@storybook/components@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.5.9.tgz#97e07ffe11ab76c01ccee380888991bd161f75b2"
|
||||
integrity sha512-BhfX980O9zn/1J4FNMeDo8ZvL1m5Ml3T4HRpfYmEBnf8oW5b5BeF6S2K2cwFStZRjWqm1feUcwNpZxCBVMkQnQ==
|
||||
"@storybook/components@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.5.15.tgz#8145be807bf48c1d010f29114411f390a9e3228f"
|
||||
integrity sha512-bHTT0Oa3s4g+MBMaLBbX9ofMtb1AW59AzIUNGrfqW1XqJMGuUHMiJ7TSo+i5dRSFpbFygnwMEG9LfHxpR2Z0Dw==
|
||||
dependencies:
|
||||
"@storybook/client-logger" "6.5.9"
|
||||
"@storybook/client-logger" "6.5.15"
|
||||
"@storybook/csf" "0.0.2--canary.4566f4d.1"
|
||||
"@storybook/theming" "6.5.9"
|
||||
"@types/react-syntax-highlighter" "11.0.5"
|
||||
"@storybook/theming" "6.5.15"
|
||||
core-js "^3.8.2"
|
||||
memoizerific "^1.11.3"
|
||||
qs "^6.10.0"
|
||||
react-syntax-highlighter "^15.4.5"
|
||||
regenerator-runtime "^0.13.7"
|
||||
util-deprecate "^1.0.2"
|
||||
|
||||
@ -4992,10 +4939,10 @@
|
||||
util-deprecate "^1.0.2"
|
||||
webpack "4"
|
||||
|
||||
"@storybook/core-common@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-6.5.9.tgz#7ca8258ea2634b1d64695c1e4262f71cc7457989"
|
||||
integrity sha512-NxOK0mrOCo0TWZ7Npc5HU66EKoRHlrtg18/ZixblLDWQMIqY9XCck8K1kJ8QYpYCHla+aHIsYUArFe2vhlEfZA==
|
||||
"@storybook/core-common@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-6.5.15.tgz#3ab524c7abdae52024caeb5c0349a764cb08769f"
|
||||
integrity sha512-uits9o6qwHTPnjsNZP25f7hWmUBGRJ7FXtxxtEaNSmtiwk50KWxBaro7wt505lJ1Gb9vOhpNPhS7y3IxdsXNmQ==
|
||||
dependencies:
|
||||
"@babel/core" "^7.12.10"
|
||||
"@babel/plugin-proposal-class-properties" "^7.12.1"
|
||||
@ -5019,7 +4966,7 @@
|
||||
"@babel/preset-react" "^7.12.10"
|
||||
"@babel/preset-typescript" "^7.12.7"
|
||||
"@babel/register" "^7.12.1"
|
||||
"@storybook/node-logger" "6.5.9"
|
||||
"@storybook/node-logger" "6.5.15"
|
||||
"@storybook/semver" "^7.3.2"
|
||||
"@types/node" "^14.0.10 || ^16.0.0"
|
||||
"@types/pretty-hrtime" "^1.0.0"
|
||||
@ -5069,10 +5016,10 @@
|
||||
dependencies:
|
||||
core-js "^3.8.2"
|
||||
|
||||
"@storybook/core-events@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.5.9.tgz#5b0783c7d22a586c0f5e927a61fe1b1223e19637"
|
||||
integrity sha512-tXt7a3ZvJOCeEKpNa/B5rQM5VI7UJLlOh3IHOImWn4HqoBRrZvbourmac+PRZAtXpos0h3c6554Hjapj/Sny5Q==
|
||||
"@storybook/core-events@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.5.15.tgz#c12f645b50231c50eb9b26038aa67ab92b1ba24e"
|
||||
integrity sha512-B1Ba6l5W7MeNclclqMMTMHgYgfdpB5SIhNCQFnzIz8blynzRhNFMdxvbAl6Je5G0S4xydYYd7Lno2kXQebs7HA==
|
||||
dependencies:
|
||||
core-js "^3.8.2"
|
||||
|
||||
@ -5324,10 +5271,10 @@
|
||||
npmlog "^5.0.1"
|
||||
pretty-hrtime "^1.0.3"
|
||||
|
||||
"@storybook/node-logger@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.5.9.tgz#129cfe0d0f79cab4f6a2ba194d39516680b1626f"
|
||||
integrity sha512-nZZNZG2Wtwv6Trxi3FrnIqUmB55xO+X/WQGPT5iKlqNjdRIu/T72mE7addcp4rbuWCQfZUhcDDGpBOwKtBxaGg==
|
||||
"@storybook/node-logger@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.5.15.tgz#d99695e8d5f8cf434e8fdcca719b5b5fa5c88e2e"
|
||||
integrity sha512-LQjjbfMuUXm7wZTBKb+iGeCNnej4r1Jb2NxG3Svu2bVhaoB6u33jHAcbmhXpXW1jghzW3kQwOU7BoLuJiRRFIw==
|
||||
dependencies:
|
||||
"@types/npmlog" "^4.1.2"
|
||||
chalk "^4.1.0"
|
||||
@ -5408,17 +5355,17 @@
|
||||
unfetch "^4.2.0"
|
||||
util-deprecate "^1.0.2"
|
||||
|
||||
"@storybook/preview-web@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/preview-web/-/preview-web-6.5.9.tgz#557d919e6df50d66259521aa36ebf4055bbd236e"
|
||||
integrity sha512-4eMrO2HJyZUYyL/j+gUaDvry6iGedshwT5MQqe7J9FaA+Q2pNARQRB1X53f410w7S4sObRmYIAIluWPYdWym9w==
|
||||
"@storybook/preview-web@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/preview-web/-/preview-web-6.5.15.tgz#5f47899dff1580ed3dc1b5a7bfdf67d6574536fc"
|
||||
integrity sha512-gIHABSAD0JS0iRaG67BnSDq/q8Zf4fFwEWBQOSYgcEx2TzhAUeSkhGZUQHdlOTCwuA2PpXT0/cWDH8u2Ev+msg==
|
||||
dependencies:
|
||||
"@storybook/addons" "6.5.9"
|
||||
"@storybook/channel-postmessage" "6.5.9"
|
||||
"@storybook/client-logger" "6.5.9"
|
||||
"@storybook/core-events" "6.5.9"
|
||||
"@storybook/addons" "6.5.15"
|
||||
"@storybook/channel-postmessage" "6.5.15"
|
||||
"@storybook/client-logger" "6.5.15"
|
||||
"@storybook/core-events" "6.5.15"
|
||||
"@storybook/csf" "0.0.2--canary.4566f4d.1"
|
||||
"@storybook/store" "6.5.9"
|
||||
"@storybook/store" "6.5.15"
|
||||
ansi-to-html "^0.6.11"
|
||||
core-js "^3.8.2"
|
||||
global "^4.4.0"
|
||||
@ -5523,12 +5470,12 @@
|
||||
qs "^6.10.0"
|
||||
regenerator-runtime "^0.13.7"
|
||||
|
||||
"@storybook/router@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.5.9.tgz#4740248f8517425b2056273fb366ace8a17c65e8"
|
||||
integrity sha512-G2Xp/2r8vU2O34eelE+G5VbEEVFDeHcCURrVJEROh6dq2asFJAPbzslVXSeCqgOTNLSpRDJ2NcN5BckkNqmqJg==
|
||||
"@storybook/router@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.5.15.tgz#bf01d35bdd4603bf188629a6578489e313a312fd"
|
||||
integrity sha512-9t8rI8t7/Krolau29gsdjdbRQ66orONIyP0efp0EukVgv6reNFzb/U14ARrl0uHys6Tl5Xyece9FoakQUdn8Kg==
|
||||
dependencies:
|
||||
"@storybook/client-logger" "6.5.9"
|
||||
"@storybook/client-logger" "6.5.15"
|
||||
core-js "^3.8.2"
|
||||
memoizerific "^1.11.3"
|
||||
qs "^6.10.0"
|
||||
@ -5621,14 +5568,14 @@
|
||||
ts-dedent "^2.0.0"
|
||||
util-deprecate "^1.0.2"
|
||||
|
||||
"@storybook/store@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/store/-/store-6.5.9.tgz#dc9963fc013636569082bd8f7200804866373735"
|
||||
integrity sha512-80pcDTcCwK6wUA63aWOp13urI77jfipIVee9mpVvbNyfrNN8kGv1BS0z/JHDxuV6rC4g7LG1fb+BurR0yki7BA==
|
||||
"@storybook/store@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/store/-/store-6.5.15.tgz#d6ca7a3165442aabfde335f243bdd179d53bca1a"
|
||||
integrity sha512-r6cYTf6GtbqgdI4ZG3xuWdJAAu5fJ3xAWMiDkHyoK2u+R2TeYXIsJvgn0BPrW87sZhELIkg4ckdFECmATs3kpQ==
|
||||
dependencies:
|
||||
"@storybook/addons" "6.5.9"
|
||||
"@storybook/client-logger" "6.5.9"
|
||||
"@storybook/core-events" "6.5.9"
|
||||
"@storybook/addons" "6.5.15"
|
||||
"@storybook/client-logger" "6.5.15"
|
||||
"@storybook/core-events" "6.5.15"
|
||||
"@storybook/csf" "0.0.2--canary.4566f4d.1"
|
||||
core-js "^3.8.2"
|
||||
fast-deep-equal "^3.1.3"
|
||||
@ -5698,12 +5645,12 @@
|
||||
memoizerific "^1.11.3"
|
||||
regenerator-runtime "^0.13.7"
|
||||
|
||||
"@storybook/theming@6.5.9":
|
||||
version "6.5.9"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.5.9.tgz#13f60a3a3cd73ceb5caf9f188e1627e79f1891aa"
|
||||
integrity sha512-KM0AMP5jMQPAdaO8tlbFCYqx9uYM/hZXGSVUhznhLYu7bhNAIK7ZVmXxyE/z/khM++8eUHzRoZGiO/cwCkg9Xw==
|
||||
"@storybook/theming@6.5.15":
|
||||
version "6.5.15"
|
||||
resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.5.15.tgz#048461b37ad0c29dc8d91a065a6bf1c90067524c"
|
||||
integrity sha512-pgdW0lVZKKXQ4VhIfLHycMmwFSVOY7vLTKnytag4Y8Yz+aXm0bwDN/QxPntFzDH47F1Rcy2ywNnvty8ooDTvuA==
|
||||
dependencies:
|
||||
"@storybook/client-logger" "6.5.9"
|
||||
"@storybook/client-logger" "6.5.15"
|
||||
core-js "^3.8.2"
|
||||
memoizerific "^1.11.3"
|
||||
regenerator-runtime "^0.13.7"
|
||||
@ -7855,10 +7802,10 @@ available-typed-arrays@^1.0.5:
|
||||
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
|
||||
integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
|
||||
|
||||
aws-sdk@2.1260.0:
|
||||
version "2.1260.0"
|
||||
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1260.0.tgz#3dc18f49dd4aaa18e4e9787c62f1ad02e5aaac4c"
|
||||
integrity sha512-iciXVukPbhmh44xcF+5/CO15jtESqRkXuEH54XaU8IpCzbYkAcPBaS29vLRN2SRuN1Dy2S3X7SaZZxFJWLAHrg==
|
||||
aws-sdk@2.1287.0:
|
||||
version "2.1287.0"
|
||||
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1287.0.tgz#40296aadf34e7550e058f73f3363130d65ffb1c0"
|
||||
integrity sha512-mtfDstUdFNn8FnBaXs2KAaQ0cgDIiwlqwC2UptUKWWrugjZHAoRacfD/6bnah1Kwhu43F9CDEe5QLHnQtymNkw==
|
||||
dependencies:
|
||||
buffer "4.9.2"
|
||||
events "1.1.1"
|
||||
@ -9267,10 +9214,10 @@ co@^4.6.0:
|
||||
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
||||
integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
|
||||
|
||||
codemirror@^5.65.8:
|
||||
version "5.65.8"
|
||||
resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.8.tgz#50f145ba7eb725091110c31f3a7c1fdef6bdc721"
|
||||
integrity sha512-TNGkSkkoAsmZSf6W6g35LMVQJBHKasc2CKwhr/fTxSYun7cn6J+CbtyNjV/MYlFVkNTsqZoviegyCZimWhoMMA==
|
||||
codemirror@^5.65.11:
|
||||
version "5.65.11"
|
||||
resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.11.tgz#c818edc3274788c008f636520c5490a1f7009b4f"
|
||||
integrity sha512-Gp62g2eKSCHYt10axmGhKq3WoJSvVpvhXmowNq7pZdRVowwtvBR/hi2LSP5srtctKkRT33T6/n8Kv1UGp7JW4A==
|
||||
|
||||
collapse-white-space@^1.0.2:
|
||||
version "1.0.6"
|
||||
@ -9758,7 +9705,7 @@ core-js-pure@^3.8.2:
|
||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.1.tgz#79546518ae87cc362c991d9c2d211f45107991ee"
|
||||
integrity sha512-7Fr74bliUDdeJCBMxkkIuQ4xfxn/SwrVg+HkJUAoNEXVqYLv55l6Af0dJ5Lq2YBUW9yKqSkLXaS5SYPK6MGa/A==
|
||||
|
||||
core-js@3.26.1:
|
||||
core-js@3.26.1, core-js@^3.0.4, core-js@^3.6.5, core-js@^3.8.2:
|
||||
version "3.26.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.1.tgz#7a9816dabd9ee846c1c0fe0e8fcad68f3709134e"
|
||||
integrity sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==
|
||||
@ -9768,11 +9715,6 @@ core-js@3.6.5:
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
|
||||
integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
|
||||
|
||||
core-js@^3.0.4, core-js@^3.6.5, core-js@^3.8.2:
|
||||
version "3.25.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.1.tgz#5818e09de0db8956e16bf10e2a7141e931b7c69c"
|
||||
integrity sha512-sr0FY4lnO1hkQ4gLDr24K0DGnweGO1QwSj5BpfQjpSJPdqWalja4cTps29Y/PJVG/P7FYlPDkH3hO+Tr0CvDgQ==
|
||||
|
||||
core-util-is@1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||
@ -15091,9 +15033,9 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
|
||||
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
|
||||
|
||||
json5@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
|
||||
integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
|
||||
integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
|
||||
dependencies:
|
||||
minimist "^1.2.0"
|
||||
|
||||
@ -15907,7 +15849,7 @@ lowercase-keys@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
|
||||
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
|
||||
|
||||
lowlight@^1.14.0, lowlight@^1.17.0:
|
||||
lowlight@^1.14.0:
|
||||
version "1.20.0"
|
||||
resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888"
|
||||
integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==
|
||||
@ -16540,12 +16482,7 @@ minimist-options@4.1.0:
|
||||
is-plain-obj "^1.1.0"
|
||||
kind-of "^6.0.3"
|
||||
|
||||
minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6:
|
||||
version "1.2.6"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
|
||||
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
|
||||
|
||||
minimist@^1.2.0:
|
||||
minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
|
||||
integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
|
||||
@ -18748,7 +18685,7 @@ pretty-time@^1.1.0:
|
||||
resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e"
|
||||
integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==
|
||||
|
||||
prismjs@^1.21.0, prismjs@^1.27.0:
|
||||
prismjs@^1.21.0:
|
||||
version "1.29.0"
|
||||
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12"
|
||||
integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
|
||||
@ -19382,17 +19319,6 @@ react-syntax-highlighter@^13.5.3:
|
||||
prismjs "^1.21.0"
|
||||
refractor "^3.1.0"
|
||||
|
||||
react-syntax-highlighter@^15.4.5:
|
||||
version "15.5.0"
|
||||
resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz#4b3eccc2325fa2ec8eff1e2d6c18fa4a9e07ab20"
|
||||
integrity sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.3.1"
|
||||
highlight.js "^10.4.1"
|
||||
lowlight "^1.17.0"
|
||||
prismjs "^1.27.0"
|
||||
refractor "^3.6.0"
|
||||
|
||||
react-test-renderer@^17.0.2:
|
||||
version "17.0.2"
|
||||
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-17.0.2.tgz#4cd4ae5ef1ad5670fc0ef776e8cc7e1231d9866c"
|
||||
@ -19630,7 +19556,7 @@ redux@^4.0.0, redux@^4.0.1, redux@^4.1.1, redux@^4.1.2:
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
|
||||
refractor@^3.1.0, refractor@^3.6.0:
|
||||
refractor@^3.1.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a"
|
||||
integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==
|
||||
@ -21635,7 +21561,7 @@ terser-webpack-plugin@^4.2.3:
|
||||
terser "^5.3.4"
|
||||
webpack-sources "^1.4.3"
|
||||
|
||||
terser-webpack-plugin@^5.0.3:
|
||||
terser-webpack-plugin@^5.0.3, terser-webpack-plugin@^5.1.3:
|
||||
version "5.3.6"
|
||||
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c"
|
||||
integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==
|
||||
@ -21646,17 +21572,6 @@ terser-webpack-plugin@^5.0.3:
|
||||
serialize-javascript "^6.0.0"
|
||||
terser "^5.14.1"
|
||||
|
||||
terser-webpack-plugin@^5.1.3:
|
||||
version "5.3.3"
|
||||
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90"
|
||||
integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==
|
||||
dependencies:
|
||||
"@jridgewell/trace-mapping" "^0.3.7"
|
||||
jest-worker "^27.4.5"
|
||||
schema-utils "^3.1.1"
|
||||
serialize-javascript "^6.0.0"
|
||||
terser "^5.7.2"
|
||||
|
||||
terser@^4.1.2, terser@^4.6.3:
|
||||
version "4.8.1"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f"
|
||||
@ -21666,7 +21581,7 @@ terser@^4.1.2, terser@^4.6.3:
|
||||
source-map "~0.6.1"
|
||||
source-map-support "~0.5.12"
|
||||
|
||||
terser@^5.10.0, terser@^5.7.2:
|
||||
terser@^5.10.0:
|
||||
version "5.14.2"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10"
|
||||
integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==
|
||||
@ -22466,19 +22381,7 @@ util@^0.11.0:
|
||||
dependencies:
|
||||
inherits "2.0.3"
|
||||
|
||||
util@^0.12.0, util@^0.12.4:
|
||||
version "0.12.4"
|
||||
resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253"
|
||||
integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==
|
||||
dependencies:
|
||||
inherits "^2.0.3"
|
||||
is-arguments "^1.0.4"
|
||||
is-generator-function "^1.0.7"
|
||||
is-typed-array "^1.1.3"
|
||||
safe-buffer "^5.1.2"
|
||||
which-typed-array "^1.1.2"
|
||||
|
||||
util@^0.12.3:
|
||||
util@^0.12.0, util@^0.12.3, util@^0.12.4:
|
||||
version "0.12.5"
|
||||
resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc"
|
||||
integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user